This patch enables the use of the experimental reduction intrinsics from D30086 for AArch64.
The existing idiom recognition for the shufflevector sequence is removed and tests updated to use the new form.
Paths
| Differential D32247
Switch AArch64 to use reduction intrinsics ClosedPublic Authored by aemerson on Apr 19 2017, 2:47 PM.
Details Summary This patch enables the use of the experimental reduction intrinsics from D30086 for AArch64. The existing idiom recognition for the shufflevector sequence is removed and tests updated to use the new form.
Diff Detail
Event TimelineComment Actions As soon as the dependency patch is approved, this one looks ok. Did you submit the patch that will make the MC layer recognise these patterns into the actual instructions?
Comment Actions No changes are needed on the MC side. The same target-specific reduction DAG nodes (e.g. AArch64ISD::UADDV) should be created and from then on everything should work as before.
Comment Actions New patch, rebased on latest ToT and using the different API implemented in the previous patch in D30086. Marking this as accepted based on Renato's earlier approval, I'm just updating this review for future reference. This revision is now accepted and ready to land.May 10 2017, 8:01 AM Closed by commit rL302678: [AArch64] Enable use of reduction intrinsics. (authored by aemerson). · Explain WhyMay 10 2017, 8:28 AM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 98464 llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.h
llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.h
llvm/trunk/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
llvm/trunk/test/CodeGen/AArch64/aarch64-addv.ll
llvm/trunk/test/CodeGen/AArch64/aarch64-minmaxv.ll
llvm/trunk/test/CodeGen/AArch64/arm64-vabs.ll
llvm/trunk/test/Transforms/LoopVectorize/AArch64/reduction-small-size.ll
llvm/trunk/test/Transforms/SLPVectorizer/AArch64/gather-root.ll
|