This is an archive of the discontinued LLVM Phabricator instance.

[SVE][CodeGen] Lower scalable masked scatters
ClosedPublic

Authored by kmclaughlin on Nov 6 2020, 6:50 AM.

Details

Summary

Lowers the llvm.masked.scatter intrinsics (scalar plus vector addressing mode only)

Changes included in this patch:

  • 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.
  • Added the getCanonicalIndexType function to convert redundant addressing modes (e.g. scaling is redundant when accessing bytes)
  • Tests with 32 & 64-bit scaled & unscaled offsets

Diff Detail

Event Timeline

kmclaughlin created this revision.Nov 6 2020, 6:50 AM

Can you please run your patch through clang-format?

llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
1869

nit: indentation seems off.

llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
2542 ↗(On Diff #303436)

should these change here in SplitVecOp_MSCATTER be part of D90939?

llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
7442

nit: Please change these names to match LLVM's coding style, as suggested by clang-tidy.

kmclaughlin marked 3 inline comments as done.
  • Moved SplitVecOp_MSCATTER changes to the parent patch, D90939
  • Applied changes suggested by clang-format
sdesmalen accepted this revision.Nov 10 2020, 8:47 AM

Thanks for simplifying this patch by splitting up D89576. LGTM!

This revision is now accepted and ready to land.Nov 10 2020, 8:47 AM
This revision was automatically updated to reflect the committed changes.