I continue to support different VF interleaved and in this pass for this patch, I added the vf64 stride3 support for both load and store.
Details
Diff Detail
Event Timeline
lib/Target/X86/X86InterleavedAccess.cpp | ||
---|---|---|
143 | I see this patch assumes we have support for both loads and stores which is not the case on ToT, so can you please modify the parent patch accordingly so that the path of patches leading from ToT to this patch can be understood? |
lib/Target/X86/X86InterleavedAccess.cpp | ||
---|---|---|
83 | Make these methods static const or even better move them out of the class | |
186 | To be consistent with the existing code, maybe 'VecWidth' is a better name. | |
461 | Probably more efficient to use a static array and pass a partial chunk as needed: static uint32_t Concat[] = {0, 1, ... 63}; makeArrayRef(Concat, 32); Same for reorder below | |
479 | If we reach this point, can VecElems be other than 64? | |
593 | When you get a chance, please make change Mask to an ArrayRef in a separate NFC commit | |
625 | VPShuf and Vec should be ArrayRef | |
653 | Wouldn't this be better? if (VecElems == 32) { |
lib/Target/X86/X86InterleavedAccess.cpp | ||
---|---|---|
479 | In theory, yes, but I block all the other cases with the if supported stage so in practice, the answer is no. Do you prefer to add an assertion? |
LGTM, and yes please add the assert
lib/Target/X86/X86InterleavedAccess.cpp | ||
---|---|---|
479 | I think we should since the path > 64 is not tested |
Make these methods static const or even better move them out of the class