[llvm] [AMDGPU] Recognise bitmask operations as srcmods (PR #149110)
Janek van Oirschot via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 18 06:52:41 PDT 2025
================
@@ -3036,6 +3036,41 @@ bool AMDGPUDAGToDAGISel::SelectVOP3ModsImpl(SDValue In, SDValue &Src,
Src = Src.getOperand(0);
}
+ // Convert various sign-bit masks to src mods. Currently disabled for 16-bit
+ // types as the codegen replaces the operand without adding a srcmod.
+ // This is intentionally finding the cases where we are performing float neg
+ // and abs on int types, the goal is not to obtain two's complement neg or
+ // abs.
+ // TODO: Add 16-bit support.
+ unsigned Opc = Src->getOpcode();
+ EVT VT = Src.getValueType();
+ if ((Opc != ISD::AND && Opc != ISD::OR && Opc != ISD::XOR) ||
----------------
JanekvO wrote:
Yeah, that's the reason I still suggested it in my own comment. The alternative which you could use is to check for 2 operands (i.e., binary op) to ensure operand(1) exists
https://github.com/llvm/llvm-project/pull/149110
More information about the llvm-commits
mailing list