Which selector to use?
When starting a new backend in the LLVM infrastructure, you must choose which selector framework you want to implement. You can decide to implement all selectors, but this is probably not a good use of your time!
In this section, we try to paint an objective view of the world so that you can decide which selector is the best suited for your case.
FastISel
FastISel is great if you know that the space of your input LLVM IR is narrow and you want fast compile time. FastISel can also generate great code depending on how much effort you put into it. In other words, you can produce the best selector in the world with just FastISel. The flip side is you are mostly on your own. FastISel is like a complete C++ implementation of a full selector.
Realistically, there is little to no chance that FastISel alone can fit all your needs without significant effort, so having a full implementation of SDISel will be mandatory if you take this road.