@@ -158,36 +158,18 @@ def SIbuffer_store_format_d16 : SDNode <"AMDGPUISD::BUFFER_STORE_FORMAT_D16",
158
158
SDTBufferStore,
159
159
[SDNPMayStore, SDNPMemOperand, SDNPHasChain]>;
160
160
161
- class SDBufferAtomic<string opcode> : SDNode <opcode,
162
- SDTypeProfile<1, 8,
163
- [SDTCisVT<2, v4i32>, // rsrc
164
- SDTCisVT<3, i32>, // vindex(VGPR)
165
- SDTCisVT<4, i32>, // voffset(VGPR)
166
- SDTCisVT<5, i32>, // soffset(SGPR)
167
- SDTCisVT<6, i32>, // offset(imm)
168
- SDTCisVT<7, i32>, // cachepolicy(imm)
169
- SDTCisVT<8, i1>]>, // idxen(imm)
170
- [SDNPMemOperand, SDNPHasChain, SDNPMayLoad, SDNPMayStore]
171
- >;
172
-
173
- def SIbuffer_atomic_swap : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_SWAP">;
174
- def SIbuffer_atomic_add : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_ADD">;
175
- def SIbuffer_atomic_sub : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_SUB">;
176
- def SIbuffer_atomic_smin : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_SMIN">;
177
- def SIbuffer_atomic_umin : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_UMIN">;
178
- def SIbuffer_atomic_smax : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_SMAX">;
179
- def SIbuffer_atomic_umax : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_UMAX">;
180
- def SIbuffer_atomic_and : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_AND">;
181
- def SIbuffer_atomic_or : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_OR">;
182
- def SIbuffer_atomic_xor : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_XOR">;
183
- def SIbuffer_atomic_inc : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_INC">;
184
- def SIbuffer_atomic_dec : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_DEC">;
185
- def SIbuffer_atomic_csub : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_CSUB">;
186
- def SIbuffer_atomic_fadd : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_FADD">;
187
- def SIbuffer_atomic_fmin : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_FMIN">;
188
- def SIbuffer_atomic_fmax : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_FMAX">;
189
-
190
- multiclass SDBufferAtomicNoRet {
161
+ multiclass SDBufferAtomic<string opcode> {
162
+ def "" : SDNode <opcode,
163
+ SDTypeProfile<1, 8,
164
+ [SDTCisVT<2, v4i32>, // rsrc
165
+ SDTCisVT<3, i32>, // vindex(VGPR)
166
+ SDTCisVT<4, i32>, // voffset(VGPR)
167
+ SDTCisVT<5, i32>, // soffset(SGPR)
168
+ SDTCisVT<6, i32>, // offset(imm)
169
+ SDTCisVT<7, i32>, // cachepolicy(imm)
170
+ SDTCisVT<8, i1>]>, // idxen(imm)
171
+ [SDNPMemOperand, SDNPHasChain, SDNPMayLoad, SDNPMayStore]
172
+ >;
191
173
def "_noret" : PatFrag<
192
174
(ops node:$vdata_in, node:$rsrc, node:$vindex, node:$voffset, node:$soffset,
193
175
node:$offset, node:$cachepolicy, node:$idxen),
@@ -198,22 +180,22 @@ multiclass SDBufferAtomicNoRet {
198
180
}
199
181
}
200
182
201
- defm SIbuffer_atomic_swap : SDBufferAtomicNoRet ;
202
- defm SIbuffer_atomic_add : SDBufferAtomicNoRet ;
203
- defm SIbuffer_atomic_sub : SDBufferAtomicNoRet ;
204
- defm SIbuffer_atomic_smin : SDBufferAtomicNoRet ;
205
- defm SIbuffer_atomic_umin : SDBufferAtomicNoRet ;
206
- defm SIbuffer_atomic_smax : SDBufferAtomicNoRet ;
207
- defm SIbuffer_atomic_umax : SDBufferAtomicNoRet ;
208
- defm SIbuffer_atomic_and : SDBufferAtomicNoRet ;
209
- defm SIbuffer_atomic_or : SDBufferAtomicNoRet ;
210
- defm SIbuffer_atomic_xor : SDBufferAtomicNoRet ;
211
- defm SIbuffer_atomic_inc : SDBufferAtomicNoRet ;
212
- defm SIbuffer_atomic_dec : SDBufferAtomicNoRet ;
213
- defm SIbuffer_atomic_csub : SDBufferAtomicNoRet ;
214
- defm SIbuffer_atomic_fadd : SDBufferAtomicNoRet ;
215
- defm SIbuffer_atomic_fmin : SDBufferAtomicNoRet ;
216
- defm SIbuffer_atomic_fmax : SDBufferAtomicNoRet ;
183
+ defm SIbuffer_atomic_swap : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_SWAP"> ;
184
+ defm SIbuffer_atomic_add : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_ADD"> ;
185
+ defm SIbuffer_atomic_sub : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_SUB"> ;
186
+ defm SIbuffer_atomic_smin : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_SMIN"> ;
187
+ defm SIbuffer_atomic_umin : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_UMIN"> ;
188
+ defm SIbuffer_atomic_smax : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_SMAX"> ;
189
+ defm SIbuffer_atomic_umax : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_UMAX"> ;
190
+ defm SIbuffer_atomic_and : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_AND"> ;
191
+ defm SIbuffer_atomic_or : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_OR"> ;
192
+ defm SIbuffer_atomic_xor : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_XOR"> ;
193
+ defm SIbuffer_atomic_inc : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_INC"> ;
194
+ defm SIbuffer_atomic_dec : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_DEC"> ;
195
+ defm SIbuffer_atomic_csub : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_CSUB"> ;
196
+ defm SIbuffer_atomic_fadd : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_FADD"> ;
197
+ defm SIbuffer_atomic_fmin : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_FMIN"> ;
198
+ defm SIbuffer_atomic_fmax : SDBufferAtomic <"AMDGPUISD::BUFFER_ATOMIC_FMAX"> ;
217
199
218
200
def SIbuffer_atomic_cmpswap : SDNode <"AMDGPUISD::BUFFER_ATOMIC_CMPSWAP",
219
201
SDTypeProfile<1, 9,
0 commit comments