[llvm] [DAG][RISCV] Use vp_reduce_* when widening illegal types for reductions (PR #105455)
Luke Lau via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 21 03:22:42 PDT 2024
================
@@ -7259,9 +7259,38 @@ SDValue DAGTypeLegalizer::WidenVecOp_STRICT_FSETCC(SDNode *N) {
return DAG.getBuildVector(VT, dl, Scalars);
}
+static unsigned getExtendForIntVecReduction(SDNode *N) {
+ switch (N->getOpcode()) {
+ default:
+ llvm_unreachable("Expected integer vector reduction");
+ case ISD::VECREDUCE_ADD:
+ case ISD::VECREDUCE_MUL:
+ case ISD::VECREDUCE_AND:
+ case ISD::VECREDUCE_OR:
+ case ISD::VECREDUCE_XOR:
+ case ISD::VP_REDUCE_ADD:
+ case ISD::VP_REDUCE_MUL:
+ case ISD::VP_REDUCE_AND:
+ case ISD::VP_REDUCE_OR:
+ case ISD::VP_REDUCE_XOR:
+ return ISD::ANY_EXTEND;
+ case ISD::VECREDUCE_SMAX:
+ case ISD::VECREDUCE_SMIN:
+ case ISD::VP_REDUCE_SMAX:
+ case ISD::VP_REDUCE_SMIN:
+ return ISD::SIGN_EXTEND;
+ case ISD::VECREDUCE_UMAX:
+ case ISD::VECREDUCE_UMIN:
+ case ISD::VP_REDUCE_UMAX:
+ case ISD::VP_REDUCE_UMIN:
+ return ISD::ZERO_EXTEND;
+ }
+}
+
----------------
lukel97 wrote:
Is this the same as getExtendForIntVecReduction in LegalizeIntegerTypes.cpp? If so is there a way to deduplicate it
https://github.com/llvm/llvm-project/pull/105455
More information about the llvm-commits
mailing list