Convert ARMCodeGenPrepare into a generic type promotion pass by:
- Removing the insertion of arm specific intrinsics to handle narrow types, as we weren't using these.
- Removing ARMSubtarget references.
- Now query a generic TLI object to know which types should be promoted and what they should be promoted to.
- Move all codegen tests into Transforms folder and testing using opt and not llc, which is how they should have been written in the first place... This had the added advantage of running Alive2 on them.
Are these two lines needed? The pointer element type should match the result type of the load right? Only asking because this code will need to be updated if we ever move to opaque pointers.