Skip to content

Commit bff17f9

Browse files
authored
[AMDGPU] Remove support for no-return buffer atomic intrinsics. NFC. (llvm#69326)
Thsi removes some of the machinery added by D85268, which was unused since D87719 changed all buffer atomic intrinsics to return a value.
1 parent 509b570 commit bff17f9

File tree

3 files changed

+23
-34
lines changed

3 files changed

+23
-34
lines changed

llvm/include/llvm/IR/IntrinsicsAMDGPU.td

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1174,9 +1174,9 @@ class AMDGPUStructPtrBufferStore<LLVMType data_ty = llvm_any_ty> : DefaultAttrsI
11741174
def int_amdgcn_struct_ptr_buffer_store_format : AMDGPUStructPtrBufferStore;
11751175
def int_amdgcn_struct_ptr_buffer_store : AMDGPUStructPtrBufferStore;
11761176

1177-
class AMDGPURawBufferAtomic<LLVMType data_ty = llvm_any_ty, bit NoRtn = false> : Intrinsic <
1178-
!if(NoRtn, [], [data_ty]),
1179-
[!if(NoRtn, data_ty, LLVMMatchType<0>), // vdata(VGPR)
1177+
class AMDGPURawBufferAtomic<LLVMType data_ty = llvm_any_ty> : Intrinsic <
1178+
[data_ty],
1179+
[LLVMMatchType<0>, // vdata(VGPR)
11801180
llvm_v4i32_ty, // rsrc(SGPR)
11811181
llvm_i32_ty, // offset(VGPR/imm, included in bounds checking and swizzling)
11821182
llvm_i32_ty, // soffset(SGPR/imm, excluded from bounds checking and swizzling)
@@ -1208,9 +1208,9 @@ def int_amdgcn_raw_buffer_atomic_cmpswap : Intrinsic<
12081208
[ImmArg<ArgIndex<5>>, IntrWillReturn, IntrNoCallback, IntrNoFree], "", [SDNPMemOperand]>,
12091209
AMDGPURsrcIntrinsic<2, 0>;
12101210

1211-
class AMDGPURawPtrBufferAtomic<LLVMType data_ty = llvm_any_ty, bit NoRtn = false> : Intrinsic <
1212-
!if(NoRtn, [], [data_ty]),
1213-
[!if(NoRtn, data_ty, LLVMMatchType<0>), // vdata(VGPR)
1211+
class AMDGPURawPtrBufferAtomic<LLVMType data_ty = llvm_any_ty> : Intrinsic <
1212+
[data_ty],
1213+
[LLVMMatchType<0>, // vdata(VGPR)
12141214
AMDGPUBufferRsrcTy, // rsrc(SGPR)
12151215
llvm_i32_ty, // offset(VGPR/imm, included in bounds checking and swizzling)
12161216
llvm_i32_ty, // soffset(SGPR/imm, excluded from bounds checking and swizzling)
@@ -1249,9 +1249,9 @@ def int_amdgcn_raw_ptr_buffer_atomic_cmpswap : Intrinsic<
12491249
def int_amdgcn_raw_buffer_atomic_fadd : AMDGPURawBufferAtomic<llvm_anyfloat_ty>;
12501250
def int_amdgcn_raw_ptr_buffer_atomic_fadd : AMDGPURawPtrBufferAtomic<llvm_anyfloat_ty>;
12511251

1252-
class AMDGPUStructBufferAtomic<LLVMType data_ty = llvm_any_ty, bit NoRtn = false> : Intrinsic <
1253-
!if(NoRtn, [], [data_ty]),
1254-
[!if(NoRtn, data_ty, LLVMMatchType<0>), // vdata(VGPR)
1252+
class AMDGPUStructBufferAtomic<LLVMType data_ty = llvm_any_ty> : Intrinsic <
1253+
[data_ty],
1254+
[LLVMMatchType<0>, // vdata(VGPR)
12551255
llvm_v4i32_ty, // rsrc(SGPR)
12561256
llvm_i32_ty, // vindex(VGPR)
12571257
llvm_i32_ty, // offset(VGPR/imm, included in bounds checking and swizzling)
@@ -1283,9 +1283,9 @@ def int_amdgcn_struct_buffer_atomic_cmpswap : Intrinsic<
12831283
[ImmArg<ArgIndex<6>>, IntrWillReturn, IntrNoCallback, IntrNoFree], "", [SDNPMemOperand]>,
12841284
AMDGPURsrcIntrinsic<2, 0>;
12851285

1286-
class AMDGPUStructPtrBufferAtomic<LLVMType data_ty = llvm_any_ty, bit NoRtn = false> : Intrinsic <
1287-
!if(NoRtn, [], [data_ty]),
1288-
[!if(NoRtn, data_ty, LLVMMatchType<0>), // vdata(VGPR)
1286+
class AMDGPUStructPtrBufferAtomic<LLVMType data_ty = llvm_any_ty> : Intrinsic <
1287+
[data_ty],
1288+
[LLVMMatchType<0>, // vdata(VGPR)
12891289
AMDGPUBufferRsrcTy, // rsrc(SGPR)
12901290
llvm_i32_ty, // vindex(VGPR)
12911291
llvm_i32_ty, // offset(VGPR/imm, included in bounds checking and swizzling)

llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5879,31 +5879,23 @@ bool AMDGPULegalizerInfo::legalizeBufferAtomic(MachineInstr &MI,
58795879
IID == Intrinsic::amdgcn_struct_buffer_atomic_cmpswap ||
58805880
IID == Intrinsic::amdgcn_raw_ptr_buffer_atomic_cmpswap ||
58815881
IID == Intrinsic::amdgcn_struct_ptr_buffer_atomic_cmpswap;
5882-
const bool HasReturn = MI.getNumExplicitDefs() != 0;
5883-
5884-
Register Dst;
5885-
5886-
int OpOffset = 0;
5887-
if (HasReturn) {
5888-
// A few FP atomics do not support return values.
5889-
Dst = MI.getOperand(0).getReg();
5890-
} else {
5891-
OpOffset = -1;
5892-
}
58935882

5883+
Register Dst = MI.getOperand(0).getReg();
58945884
// Since we don't have 128-bit atomics, we don't need to handle the case of
58955885
// p8 argmunents to the atomic itself
5896-
Register VData = MI.getOperand(2 + OpOffset).getReg();
5886+
Register VData = MI.getOperand(2).getReg();
5887+
58975888
Register CmpVal;
5889+
int OpOffset = 0;
58985890

58995891
if (IsCmpSwap) {
5900-
CmpVal = MI.getOperand(3 + OpOffset).getReg();
5892+
CmpVal = MI.getOperand(3).getReg();
59015893
++OpOffset;
59025894
}
59035895

59045896
castBufferRsrcArgToV4I32(MI, B, 3 + OpOffset);
59055897
Register RSrc = MI.getOperand(3 + OpOffset).getReg();
5906-
const unsigned NumVIndexOps = (IsCmpSwap ? 8 : 7) + HasReturn;
5898+
const unsigned NumVIndexOps = IsCmpSwap ? 9 : 8;
59075899

59085900
// The struct intrinsic variants add one additional operand over raw.
59095901
const bool HasVIndex = MI.getNumOperands() == NumVIndexOps;
@@ -5924,12 +5916,9 @@ bool AMDGPULegalizerInfo::legalizeBufferAtomic(MachineInstr &MI,
59245916
unsigned ImmOffset;
59255917
std::tie(VOffset, ImmOffset) = splitBufferOffsets(B, VOffset);
59265918

5927-
auto MIB = B.buildInstr(getBufferAtomicPseudo(IID));
5928-
5929-
if (HasReturn)
5930-
MIB.addDef(Dst);
5931-
5932-
MIB.addUse(VData); // vdata
5919+
auto MIB = B.buildInstr(getBufferAtomicPseudo(IID))
5920+
.addDef(Dst)
5921+
.addUse(VData); // vdata
59335922

59345923
if (IsCmpSwap)
59355924
MIB.addReg(CmpVal);

llvm/lib/Target/AMDGPU/SIInstructions.td

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3572,8 +3572,8 @@ def G_AMDGPU_ATOMIC_FMIN : G_ATOMICRMW_OP;
35723572
def G_AMDGPU_ATOMIC_FMAX : G_ATOMICRMW_OP;
35733573
}
35743574

3575-
class BufferAtomicGenericInstruction<bit NoRtn = 0> : AMDGPUGenericInstruction {
3576-
let OutOperandList = !if(NoRtn, (outs), (outs type0:$dst));
3575+
class BufferAtomicGenericInstruction : AMDGPUGenericInstruction {
3576+
let OutOperandList = (outs type0:$dst);
35773577
let InOperandList = (ins type0:$vdata, type1:$rsrc, type2:$vindex, type2:$voffset,
35783578
type2:$soffset, untyped_imm_0:$offset,
35793579
untyped_imm_0:$cachepolicy, untyped_imm_0:$idxen);

0 commit comments

Comments
 (0)