[PATCH] D78723: [AArch64][SVE] Custom lowering of floating-point reductions
Eli Friedman via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 27 15:07:19 PDT 2020
efriedma added a comment.
Can you split the extractelement support into a separate patch?
================
Comment at: llvm/include/llvm/IR/IntrinsicsAArch64.td:904
[IntrNoMem]>;
class AdvSIMD_SVE_ReduceWithInit_Intrinsic
----------------
Please commit this separately.
================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:893
for (MVT VT : MVT::fp_scalable_vector_valuetypes()) {
+ setOperationAction(ISD::EXTRACT_VECTOR_ELT, VT, Custom);
+
----------------
Is there some reason to mark EXTRACT_VECTOR_ELT "Custom" when the type isn't legal?
================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:8430
+ // The requested element is within the NEON part of the SVE register so
+ // we can use more efficient NEON instructions to do the work.
+ auto Bottom128 =
----------------
Is there some reason we should do this transform as part of legalization, as opposed to just writing a few isel patterns?
================
Comment at: llvm/utils/TableGen/CodeGenDAGPatterns.cpp:628
return false;
+ // Logically <k x i32> is a valid subvector of <n x m x i32> when
+ // k <= m.
----------------
Do you mean `<vscale x m x i32>`?
================
Comment at: llvm/utils/TableGen/CodeGenDAGPatterns.cpp:631
+ if (!B.isScalableVector() && P.isScalableVector())
+ return (B.getVectorNumElements() <= P.getVectorNumElements());
return B.getVectorNumElements() < P.getVectorNumElements();
----------------
Please don't use getVectorNumElements() on scalable vectors.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D78723/new/
https://reviews.llvm.org/D78723
More information about the llvm-commits
mailing list