[llvm] [AMDGPU] Reject illegal image atomic data widths in SelectionDAG (PR #210366)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 17 09:35:07 PDT 2026
================
@@ -10373,6 +10373,24 @@ SDValue SITargetLowering::lowerImage(SDValue Op,
IntrOpcode == AMDGPU::IMAGE_ATOMIC_PK_ADD_BF16 ||
IntrOpcode == AMDGPU::IMAGE_ATOMIC_PK_ADD_BF16_NORTN);
+ if (!IsAtomicPacked16Bit && VData.getValueSizeInBits() != 32 &&
+ VData.getValueSizeInBits() != 64) {
+ DAG.getContext()->diagnose(DiagnosticInfoUnsupported(
+ DAG.getMachineFunction().getFunction(),
+ "unsupported image atomic data type", DL.getDebugLoc()));
+
+ unsigned Idx = 0;
+ SmallVector<SDValue, 3> RetValues(OrigResultTypes.size());
+ for (EVT VT : OrigResultTypes) {
+ if (VT == MVT::Other)
+ RetValues[Idx++] = Op.getOperand(0); // Chain
+ else
+ RetValues[Idx++] = DAG.getPOISON(VT);
+ }
+
+ return DAG.getMergeValues(RetValues, DL);
----------------
arsenm wrote:
There needs to be a utility function for this. We have at least 3 copies of this, one was recently added to SelectionDAGBuilder
https://github.com/llvm/llvm-project/pull/210366
More information about the llvm-commits
mailing list