[llvm] [AMDGPU] Promote uniform i16 ABS to i32 (PR #204526)
Jay Foad via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 19 08:54:33 PDT 2026
================
@@ -8826,6 +8828,27 @@ static unsigned getExtOpcodeForPromotedOp(SDValue Op) {
}
}
+SDValue SITargetLowering::promoteUniformABSToI32(SDValue Op,
+ DAGCombinerInfo &DCI) const {
+ assert(Op.getOpcode() == ISD::ABS);
+
+ EVT OpTy = Op.getValueType();
+ auto &DAG = DCI.DAG;
+ EVT ExtTy = OpTy.changeElementType(*DAG.getContext(), MVT::i32);
+
+ if (isNarrowingProfitable(Op.getNode(), ExtTy, OpTy))
+ return SDValue();
+
+ SDLoc DL(Op);
+ SDValue Input = Op.getOperand(0);
+ const unsigned ExtOp = getExtOpcodeForPromotedOp(Op);
+ Input = DAG.getNode(ExtOp, DL, ExtTy, Input);
+
+ SDValue NewVal = DAG.getNode(ISD::ABS, DL, ExtTy, Input);
+
+ return DAG.getZExtOrTrunc(NewVal, DL, OpTy);
----------------
jayfoad wrote:
This was pre-existing in promoteUniformOpToI32
https://github.com/llvm/llvm-project/pull/204526
More information about the llvm-commits
mailing list