[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