I'm asking to review the CodeGen part of masked gather and scatter. I know that the patch is big, I just don't see how to split it.
Just to remind the syntax:
<4 x double> @masked.gather.v4f64 (<4 x double*> %Ptrs, i32 8, <4 x i1> %Mask, <4 x double> %PassTru)
void @masked.scatter.v4f64 (<4 x double> %Val, <4 x double*> %Ptrs, i32 8, <4 x i1> %Mask)
In the target independent part - I build MGATHER and MSCATTER nodes and legalize vector types.
X86 specific:
- the both X86 gather and scatter instructions kill mask register (implicitly)
- the memory operand is in base-index-scale form, where the "index" is a vector of indices
Loop vectorizer, cost model, target transform changes are next in the pipe.
For these nodes (and also the MLOAD/MSTORE nodes above), we need comments explaining what the operands are.