[llvm] [X86] Add custom ISD::VEC_REDUCE_*MIN/MAX lowering (PR #194848)
Phoebe Wang via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 29 07:27:48 PDT 2026
================
@@ -29826,6 +29835,88 @@ static SDValue LowerMINMAX(SDValue Op, const X86Subtarget &Subtarget,
return SDValue();
}
+// Attempt to replace an min/max v8i16/v16i8 horizontal reduction with
+// PHMINPOSUW.
+static SDValue LowerMINMAX_REDUCE(SDValue Op, const X86Subtarget &Subtarget,
+ SelectionDAG &DAG) {
+ EVT ExtractVT = Op.getValueType();
+ if (ExtractVT != MVT::i16 && ExtractVT != MVT::i8)
+ return SDValue();
+
+ // Check for SMAX/SMIN/UMAX/UMIN horizontal reduction patterns.
+ ISD::NodeType BinOp = ISD::getVecReduceBaseOpcode(Op.getOpcode());
+
+ SDValue Src = Op.getOperand(0);
+ EVT SrcVT = Src.getValueType();
+ EVT SrcSVT = SrcVT.getScalarType();
+ if (SrcSVT != ExtractVT || (SrcVT.getSizeInBits() % 128) != 0)
----------------
phoebewang wrote:
Does `SrcSVT != ExtractVT` exist?
https://github.com/llvm/llvm-project/pull/194848
More information about the llvm-commits
mailing list