1 # RUN: llc -march=amdgcn -mcpu=gfx1010 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefix=GCN %s
3 # GCN-LABEL: name: flat_atomic_fcmpswap_to_s_denorm_mode
4 # GCN: FLAT_ATOMIC_FCMPSWAP
8 # GCN-NEXT: S_DENORM_MODE
10 name: flat_atomic_fcmpswap_to_s_denorm_mode
13 FLAT_ATOMIC_FCMPSWAP undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
17 # GCN-LABEL: name: flat_atomic_fcmpswap_x2_to_s_denorm_mode
18 # GCN: FLAT_ATOMIC_FCMPSWAP_X2
22 # GCN-NEXT: S_DENORM_MODE
24 name: flat_atomic_fcmpswap_x2_to_s_denorm_mode
27 FLAT_ATOMIC_FCMPSWAP_X2 undef %0:vreg_64, undef %1:vreg_128, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
31 # GCN-LABEL: name: flat_atomic_fmax_to_s_denorm_mode
32 # GCN: FLAT_ATOMIC_FMAX
36 # GCN-NEXT: S_DENORM_MODE
38 name: flat_atomic_fmax_to_s_denorm_mode
41 FLAT_ATOMIC_FMAX undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
45 # GCN-LABEL: name: flat_atomic_fmax_x2_to_s_denorm_mode
46 # GCN: FLAT_ATOMIC_FMAX_X2
50 # GCN-NEXT: S_DENORM_MODE
52 name: flat_atomic_fmax_x2_to_s_denorm_mode
55 FLAT_ATOMIC_FMAX_X2 undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
59 # GCN-LABEL: name: flat_atomic_fmin_to_s_denorm_mode
60 # GCN: FLAT_ATOMIC_FMIN
64 # GCN-NEXT: S_DENORM_MODE
66 name: flat_atomic_fmin_to_s_denorm_mode
69 FLAT_ATOMIC_FMIN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
73 # GCN-LABEL: name: flat_atomic_fmin_x2_to_s_denorm_mode
74 # GCN: FLAT_ATOMIC_FMIN_X2
78 # GCN-NEXT: S_DENORM_MODE
80 name: flat_atomic_fmin_x2_to_s_denorm_mode
83 FLAT_ATOMIC_FMIN_X2 undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
87 # GCN-LABEL: name: flat_atomic_fcmpswap_x2_rtn_to_s_denorm_mode
88 # GCN: FLAT_ATOMIC_FCMPSWAP_X2_RTN
92 # GCN-NEXT: S_DENORM_MODE
94 name: flat_atomic_fcmpswap_x2_rtn_to_s_denorm_mode
97 %2:vreg_64 = FLAT_ATOMIC_FCMPSWAP_X2_RTN undef %0:vreg_64, undef %1:vreg_128, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
101 # GCN-LABEL: name: flat_atomic_fmax_rtn_to_s_denorm_mode
102 # GCN: FLAT_ATOMIC_FMAX_RTN
106 # GCN-NEXT: S_DENORM_MODE
108 name: flat_atomic_fmax_rtn_to_s_denorm_mode
111 %2:vgpr_32 = FLAT_ATOMIC_FMAX_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
115 # GCN-LABEL: name: flat_atomic_fmax_x2_rtn_to_s_denorm_mode
116 # GCN: FLAT_ATOMIC_FMAX_X2_RTN
120 # GCN-NEXT: S_DENORM_MODE
122 name: flat_atomic_fmax_x2_rtn_to_s_denorm_mode
125 %2:vreg_64 = FLAT_ATOMIC_FMAX_X2_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
129 # GCN-LABEL: name: flat_atomic_fmin_rtn_to_s_denorm_mode
130 # GCN: FLAT_ATOMIC_FMIN_RTN
134 # GCN-NEXT: S_DENORM_MODE
136 name: flat_atomic_fmin_rtn_to_s_denorm_mode
139 %2:vgpr_32 = FLAT_ATOMIC_FMIN_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
143 # GCN-LABEL: name: flat_atomic_fmin_x2_rtn_to_s_denorm_mode
144 # GCN: FLAT_ATOMIC_FMIN_X2_RTN
148 # GCN-NEXT: S_DENORM_MODE
150 name: flat_atomic_fmin_x2_rtn_to_s_denorm_mode
153 %2:vreg_64 = FLAT_ATOMIC_FMIN_X2_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
157 # GCN-LABEL: name: flat_atomic_fcmpswap_rtn_to_s_denorm_mode
158 # GCN: FLAT_ATOMIC_FCMPSWAP_RTN
162 # GCN-NEXT: S_DENORM_MODE
164 name: flat_atomic_fcmpswap_rtn_to_s_denorm_mode
167 %2:vgpr_32 = FLAT_ATOMIC_FCMPSWAP_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
171 # GCN-LABEL: name: global_atomic_fcmpswap_to_s_denorm_mode
172 # GCN: GLOBAL_ATOMIC_FCMPSWAP
176 # GCN-NEXT: S_DENORM_MODE
178 name: global_atomic_fcmpswap_to_s_denorm_mode
181 GLOBAL_ATOMIC_FCMPSWAP undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
185 # GCN-LABEL: name: global_atomic_fcmpswap_x2_to_s_denorm_mode
186 # GCN: GLOBAL_ATOMIC_FCMPSWAP_X2
190 # GCN-NEXT: S_DENORM_MODE
192 name: global_atomic_fcmpswap_x2_to_s_denorm_mode
195 GLOBAL_ATOMIC_FCMPSWAP_X2 undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
199 # GCN-LABEL: name: global_atomic_fmax_to_s_denorm_mode
200 # GCN: GLOBAL_ATOMIC_FMAX
204 # GCN-NEXT: S_DENORM_MODE
206 name: global_atomic_fmax_to_s_denorm_mode
209 GLOBAL_ATOMIC_FMAX undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
213 # GCN-LABEL: name: global_atomic_fmax_x2_to_s_denorm_mode
214 # GCN: GLOBAL_ATOMIC_FMAX_X2
218 # GCN-NEXT: S_DENORM_MODE
220 name: global_atomic_fmax_x2_to_s_denorm_mode
223 GLOBAL_ATOMIC_FMAX_X2 undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
227 # GCN-LABEL: name: global_atomic_fmin_to_s_denorm_mode
228 # GCN: GLOBAL_ATOMIC_FMIN
232 # GCN-NEXT: S_DENORM_MODE
234 name: global_atomic_fmin_to_s_denorm_mode
237 GLOBAL_ATOMIC_FMIN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
241 # GCN-LABEL: name: global_atomic_fmin_x2_to_s_denorm_mode
242 # GCN: GLOBAL_ATOMIC_FMIN_X2
246 # GCN-NEXT: S_DENORM_MODE
248 name: global_atomic_fmin_x2_to_s_denorm_mode
251 GLOBAL_ATOMIC_FMIN_X2 undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
255 # GCN-LABEL: name: global_atomic_fcmpswap_rtn_to_s_denorm_mode
256 # GCN: GLOBAL_ATOMIC_FCMPSWAP_RTN
260 # GCN-NEXT: S_DENORM_MODE
262 name: global_atomic_fcmpswap_rtn_to_s_denorm_mode
265 %2:vgpr_32 = GLOBAL_ATOMIC_FCMPSWAP_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
269 # GCN-LABEL: name: global_atomic_fcmpswap_x2_rtn_to_s_denorm_mode
270 # GCN: GLOBAL_ATOMIC_FCMPSWAP_X2_RTN
274 # GCN-NEXT: S_DENORM_MODE
276 name: global_atomic_fcmpswap_x2_rtn_to_s_denorm_mode
279 %2:vreg_64 = GLOBAL_ATOMIC_FCMPSWAP_X2_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
283 # GCN-LABEL: name: global_atomic_fmax_rtn_to_s_denorm_mode
284 # GCN: GLOBAL_ATOMIC_FMAX_RTN
288 # GCN-NEXT: S_DENORM_MODE
290 name: global_atomic_fmax_rtn_to_s_denorm_mode
293 %2:vgpr_32 = GLOBAL_ATOMIC_FMAX_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
297 # GCN-LABEL: name: global_atomic_fmax_x2_rtn_to_s_denorm_mode
298 # GCN: GLOBAL_ATOMIC_FMAX_X2_RTN
302 # GCN-NEXT: S_DENORM_MODE
304 name: global_atomic_fmax_x2_rtn_to_s_denorm_mode
307 %2:vreg_64 = GLOBAL_ATOMIC_FMAX_X2_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
311 # GCN-LABEL: name: global_atomic_fmin_rtn_to_s_denorm_mode
312 # GCN: GLOBAL_ATOMIC_FMIN_RTN
316 # GCN-NEXT: S_DENORM_MODE
318 name: global_atomic_fmin_rtn_to_s_denorm_mode
321 %2:vgpr_32 = GLOBAL_ATOMIC_FMIN_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
325 # GCN-LABEL: name: global_atomic_fmin_x2_rtn_to_s_denorm_mode
326 # GCN: GLOBAL_ATOMIC_FMIN_X2_RTN
330 # GCN-NEXT: S_DENORM_MODE
332 name: global_atomic_fmin_x2_rtn_to_s_denorm_mode
335 %2:vreg_64 = GLOBAL_ATOMIC_FMIN_X2_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
339 # GCN-LABEL: name: global_atomic_fcmpswap_saddr_to_s_denorm_mode
340 # GCN: GLOBAL_ATOMIC_FCMPSWAP_SADDR
344 # GCN-NEXT: S_DENORM_MODE
346 name: global_atomic_fcmpswap_saddr_to_s_denorm_mode
349 GLOBAL_ATOMIC_FCMPSWAP_SADDR undef %0:vreg_64, undef %1:vgpr_32, undef %3:sgpr_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
353 # GCN-LABEL: name: global_atomic_fcmpswap_x2_saddr_rtn_to_s_denorm_mode
354 # GCN: GLOBAL_ATOMIC_FCMPSWAP_X2_SADDR_RTN
358 # GCN-NEXT: S_DENORM_MODE
360 name: global_atomic_fcmpswap_x2_saddr_rtn_to_s_denorm_mode
363 %2:vreg_64 = GLOBAL_ATOMIC_FCMPSWAP_X2_SADDR_RTN undef %0:vreg_64, undef %1:vreg_64, undef %3:sgpr_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
367 # GCN-LABEL: name: global_atomic_fmax_saddr_rtn_to_s_denorm_mode
368 # GCN: GLOBAL_ATOMIC_FMAX_SADDR_RTN
372 # GCN-NEXT: S_DENORM_MODE
374 name: global_atomic_fmax_saddr_rtn_to_s_denorm_mode
377 %2:vgpr_32 = GLOBAL_ATOMIC_FMAX_SADDR_RTN undef %0:vreg_64, undef %1:vgpr_32, undef %3:sgpr_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
381 # GCN-LABEL: name: global_atomic_fmax_x2_saddr_rtn_to_s_denorm_mode
382 # GCN: GLOBAL_ATOMIC_FMAX_X2_SADDR_RTN
386 # GCN-NEXT: S_DENORM_MODE
388 name: global_atomic_fmax_x2_saddr_rtn_to_s_denorm_mode
391 %2:vreg_64 = GLOBAL_ATOMIC_FMAX_X2_SADDR_RTN undef %0:vreg_64, undef %1:vreg_64, undef %3:sgpr_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
395 # GCN-LABEL: name: global_atomic_fmin_saddr_rtn_to_s_denorm_mode
396 # GCN: GLOBAL_ATOMIC_FMIN_SADDR_RTN
400 # GCN-NEXT: S_DENORM_MODE
402 name: global_atomic_fmin_saddr_rtn_to_s_denorm_mode
405 %2:vgpr_32 = GLOBAL_ATOMIC_FMIN_SADDR_RTN undef %0:vreg_64, undef %1:vgpr_32, undef %3:sgpr_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
409 # GCN-LABEL: name: global_atomic_fmin_x2_saddr_rtn_to_s_denorm_mode
410 # GCN: GLOBAL_ATOMIC_FMIN_X2_SADDR_RTN
414 # GCN-NEXT: S_DENORM_MODE
416 name: global_atomic_fmin_x2_saddr_rtn_to_s_denorm_mode
419 %2:vreg_64 = GLOBAL_ATOMIC_FMIN_X2_SADDR_RTN undef %0:vreg_64, undef %1:vreg_64, undef %3:sgpr_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
423 # GCN-LABEL: name: flat_fp_atomic_to_s_denorm_mode_waitcnt
424 # GCN: FLAT_ATOMIC_FMIN
425 # GCN-NEXT: S_WAITCNT
426 # GCN-NEXT: S_DENORM_MODE
428 name: flat_fp_atomic_to_s_denorm_mode_waitcnt
431 FLAT_ATOMIC_FMIN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
436 # GCN-LABEL: name: flat_fp_atomic_to_s_denorm_mode_valu
437 # GCN: FLAT_ATOMIC_FMIN
438 # GCN-NEXT: V_ADD_F32_e32
439 # GCN-NEXT: S_DENORM_MODE
441 name: flat_fp_atomic_to_s_denorm_mode_valu
444 FLAT_ATOMIC_FMIN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst 4 on `float addrspace(1)* undef`)
445 %2:vgpr_32 = V_ADD_F32_e32 undef %1:vgpr_32, undef %1:vgpr_32, implicit $exec