Lowers the llvm.masked.scatter intrinsics (scalar plus vector addressing mode only)
Changes included in this patch:
- Adds the IsTruncatingStore flag to MaskedScatterSDNode, set by getMaskedScatter()
- Added refineIndexType() to DAGCombine which folds a sext/zext of the index into the index type. Also added refineUniformBase() which gets the base pointer and index from an add + splat_vector.
- Custom lowering for MSCATTER, which chooses the appropriate scatter store opcode to use. Floating-point scatters are cast to integer, with patterns added to match FP reinterpret_casts.
- Print details of MaskedScatterSDNodes (is truncating, signed or scaled) in SelectionDAGDumper
- Tests with 32 & 64-bit scaled & unscaled offsets