[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / fp-atomic-to-s_denormmode.mir
blobc4de9f36236578a960bb69a75582d3a68df2b575
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
5 # GCN-NEXT: S_NOP 2
6 # GCN-NEXT: S_DENORM_MODE
7 ---
8 name:            flat_atomic_fcmpswap_to_s_denorm_mode
9 body:            |
10   bb.0:
11     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 (s32) on `float addrspace(1)* undef`)
12     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
13 ...
15 # GCN-LABEL: name: flat_atomic_fcmpswap_x2_to_s_denorm_mode
16 # GCN:      FLAT_ATOMIC_FCMPSWAP_X2
17 # GCN-NEXT: S_NOP 2
18 # GCN-NEXT: S_DENORM_MODE
19 ---
20 name:            flat_atomic_fcmpswap_x2_to_s_denorm_mode
21 body:            |
22   bb.0:
23     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 (s32) on `float addrspace(1)* undef`)
24     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
25 ...
27 # GCN-LABEL: name: flat_atomic_fmax_to_s_denorm_mode
28 # GCN:      FLAT_ATOMIC_FMAX
29 # GCN-NEXT: S_NOP 2
30 # GCN-NEXT: S_DENORM_MODE
31 ---
32 name:            flat_atomic_fmax_to_s_denorm_mode
33 body:            |
34   bb.0:
35     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 (s32) on `float addrspace(1)* undef`)
36     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
37 ...
39 # GCN-LABEL: name: flat_atomic_fmax_x2_to_s_denorm_mode
40 # GCN:      FLAT_ATOMIC_FMAX_X2
41 # GCN-NEXT: S_NOP 2
42 # GCN-NEXT: S_DENORM_MODE
43 ---
44 name:            flat_atomic_fmax_x2_to_s_denorm_mode
45 body:            |
46   bb.0:
47     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 (s32) on `float addrspace(1)* undef`)
48     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
49 ...
51 # GCN-LABEL: name: flat_atomic_fmin_to_s_denorm_mode
52 # GCN:      FLAT_ATOMIC_FMIN
53 # GCN-NEXT: S_NOP 2
54 # GCN-NEXT: S_DENORM_MODE
55 ---
56 name:            flat_atomic_fmin_to_s_denorm_mode
57 body:            |
58   bb.0:
59     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 (s32) on `float addrspace(1)* undef`)
60     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
61 ...
63 # GCN-LABEL: name: flat_atomic_fmin_x2_to_s_denorm_mode
64 # GCN:      FLAT_ATOMIC_FMIN_X2
65 # GCN-NEXT: S_NOP 2
66 # GCN-NEXT: S_DENORM_MODE
67 ---
68 name:            flat_atomic_fmin_x2_to_s_denorm_mode
69 body:            |
70   bb.0:
71     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 (s32) on `float addrspace(1)* undef`)
72     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
73 ...
75 # GCN-LABEL: name: flat_atomic_fcmpswap_x2_rtn_to_s_denorm_mode
76 # GCN:      FLAT_ATOMIC_FCMPSWAP_X2_RTN
77 # GCN-NEXT: S_NOP 2
78 # GCN-NEXT: S_DENORM_MODE
79 ---
80 name:            flat_atomic_fcmpswap_x2_rtn_to_s_denorm_mode
81 body:            |
82   bb.0:
83     %2:vreg_64 = FLAT_ATOMIC_FCMPSWAP_X2_RTN undef %0:vreg_64, undef %1:vreg_128, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
84     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
85 ...
87 # GCN-LABEL: name: flat_atomic_fmax_rtn_to_s_denorm_mode
88 # GCN:      FLAT_ATOMIC_FMAX_RTN
89 # GCN-NEXT: S_NOP 2
90 # GCN-NEXT: S_DENORM_MODE
91 ---
92 name:            flat_atomic_fmax_rtn_to_s_denorm_mode
93 body:            |
94   bb.0:
95     %2:vgpr_32 = FLAT_ATOMIC_FMAX_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
96     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
97 ...
99 # GCN-LABEL: name: flat_atomic_fmax_x2_rtn_to_s_denorm_mode
100 # GCN:      FLAT_ATOMIC_FMAX_X2_RTN
101 # GCN-NEXT: S_NOP 2
102 # GCN-NEXT: S_DENORM_MODE
104 name:            flat_atomic_fmax_x2_rtn_to_s_denorm_mode
105 body:            |
106   bb.0:
107     %2:vreg_64 = FLAT_ATOMIC_FMAX_X2_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
108     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
111 # GCN-LABEL: name: flat_atomic_fmin_rtn_to_s_denorm_mode
112 # GCN:      FLAT_ATOMIC_FMIN_RTN
113 # GCN-NEXT: S_NOP 2
114 # GCN-NEXT: S_DENORM_MODE
116 name:            flat_atomic_fmin_rtn_to_s_denorm_mode
117 body:            |
118   bb.0:
119     %2:vgpr_32 = FLAT_ATOMIC_FMIN_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
120     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
123 # GCN-LABEL: name: flat_atomic_fmin_x2_rtn_to_s_denorm_mode
124 # GCN:      FLAT_ATOMIC_FMIN_X2_RTN
125 # GCN-NEXT: S_NOP 2
126 # GCN-NEXT: S_DENORM_MODE
128 name:            flat_atomic_fmin_x2_rtn_to_s_denorm_mode
129 body:            |
130   bb.0:
131     %2:vreg_64 = FLAT_ATOMIC_FMIN_X2_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
132     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
135 # GCN-LABEL: name: flat_atomic_fcmpswap_rtn_to_s_denorm_mode
136 # GCN:      FLAT_ATOMIC_FCMPSWAP_RTN
137 # GCN-NEXT: S_NOP 2
138 # GCN-NEXT: S_DENORM_MODE
140 name:            flat_atomic_fcmpswap_rtn_to_s_denorm_mode
141 body:            |
142   bb.0:
143     %2:vgpr_32 = FLAT_ATOMIC_FCMPSWAP_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec, implicit $flat_scr :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
144     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
147 # GCN-LABEL: name: global_atomic_fcmpswap_to_s_denorm_mode
148 # GCN:      GLOBAL_ATOMIC_FCMPSWAP
149 # GCN-NEXT: S_NOP 2
150 # GCN-NEXT: S_DENORM_MODE
152 name:            global_atomic_fcmpswap_to_s_denorm_mode
153 body:            |
154   bb.0:
155     GLOBAL_ATOMIC_FCMPSWAP undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
156     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
159 # GCN-LABEL: name: global_atomic_fcmpswap_x2_to_s_denorm_mode
160 # GCN:      GLOBAL_ATOMIC_FCMPSWAP_X2
161 # GCN-NEXT: S_NOP 2
162 # GCN-NEXT: S_DENORM_MODE
164 name:            global_atomic_fcmpswap_x2_to_s_denorm_mode
165 body:            |
166   bb.0:
167     GLOBAL_ATOMIC_FCMPSWAP_X2 undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
168     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
171 # GCN-LABEL: name: global_atomic_fmax_to_s_denorm_mode
172 # GCN:      GLOBAL_ATOMIC_FMAX
173 # GCN-NEXT: S_NOP 2
174 # GCN-NEXT: S_DENORM_MODE
176 name:            global_atomic_fmax_to_s_denorm_mode
177 body:            |
178   bb.0:
179     GLOBAL_ATOMIC_FMAX undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
180     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
183 # GCN-LABEL: name: global_atomic_fmax_x2_to_s_denorm_mode
184 # GCN:      GLOBAL_ATOMIC_FMAX_X2
185 # GCN-NEXT: S_NOP 2
186 # GCN-NEXT: S_DENORM_MODE
188 name:            global_atomic_fmax_x2_to_s_denorm_mode
189 body:            |
190   bb.0:
191     GLOBAL_ATOMIC_FMAX_X2 undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
192     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
195 # GCN-LABEL: name: global_atomic_fmin_to_s_denorm_mode
196 # GCN:      GLOBAL_ATOMIC_FMIN
197 # GCN-NEXT: S_NOP 2
198 # GCN-NEXT: S_DENORM_MODE
200 name:            global_atomic_fmin_to_s_denorm_mode
201 body:            |
202   bb.0:
203     GLOBAL_ATOMIC_FMIN undef %0:vreg_64, undef %1:vgpr_32, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
204     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
207 # GCN-LABEL: name: global_atomic_fmin_x2_to_s_denorm_mode
208 # GCN:      GLOBAL_ATOMIC_FMIN_X2
209 # GCN-NEXT: S_NOP 2
210 # GCN-NEXT: S_DENORM_MODE
212 name:            global_atomic_fmin_x2_to_s_denorm_mode
213 body:            |
214   bb.0:
215     GLOBAL_ATOMIC_FMIN_X2 undef %0:vreg_64, undef %1:vreg_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
216     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
219 # GCN-LABEL: name: global_atomic_fcmpswap_rtn_to_s_denorm_mode
220 # GCN:      GLOBAL_ATOMIC_FCMPSWAP_RTN
221 # GCN-NEXT: S_NOP 2
222 # GCN-NEXT: S_DENORM_MODE
224 name:            global_atomic_fcmpswap_rtn_to_s_denorm_mode
225 body:            |
226   bb.0:
227     %2:vgpr_32 = GLOBAL_ATOMIC_FCMPSWAP_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
228     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
231 # GCN-LABEL: name: global_atomic_fcmpswap_x2_rtn_to_s_denorm_mode
232 # GCN:      GLOBAL_ATOMIC_FCMPSWAP_X2_RTN
233 # GCN-NEXT: S_NOP 2
234 # GCN-NEXT: S_DENORM_MODE
236 name:            global_atomic_fcmpswap_x2_rtn_to_s_denorm_mode
237 body:            |
238   bb.0:
239     %2:vreg_64 = GLOBAL_ATOMIC_FCMPSWAP_X2_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
240     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
243 # GCN-LABEL: name: global_atomic_fmax_rtn_to_s_denorm_mode
244 # GCN:      GLOBAL_ATOMIC_FMAX_RTN
245 # GCN-NEXT: S_NOP 2
246 # GCN-NEXT: S_DENORM_MODE
248 name:            global_atomic_fmax_rtn_to_s_denorm_mode
249 body:            |
250   bb.0:
251     %2:vgpr_32 = GLOBAL_ATOMIC_FMAX_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
252     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
255 # GCN-LABEL: name: global_atomic_fmax_x2_rtn_to_s_denorm_mode
256 # GCN:      GLOBAL_ATOMIC_FMAX_X2_RTN
257 # GCN-NEXT: S_NOP 2
258 # GCN-NEXT: S_DENORM_MODE
260 name:            global_atomic_fmax_x2_rtn_to_s_denorm_mode
261 body:            |
262   bb.0:
263     %2:vreg_64 = GLOBAL_ATOMIC_FMAX_X2_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
264     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
267 # GCN-LABEL: name: global_atomic_fmin_rtn_to_s_denorm_mode
268 # GCN:      GLOBAL_ATOMIC_FMIN_RTN
269 # GCN-NEXT: S_NOP 2
270 # GCN-NEXT: S_DENORM_MODE
272 name:            global_atomic_fmin_rtn_to_s_denorm_mode
273 body:            |
274   bb.0:
275     %2:vgpr_32 = GLOBAL_ATOMIC_FMIN_RTN undef %0:vreg_64, undef %1:vgpr_32, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
276     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
279 # GCN-LABEL: name: global_atomic_fmin_x2_rtn_to_s_denorm_mode
280 # GCN:      GLOBAL_ATOMIC_FMIN_X2_RTN
281 # GCN-NEXT: S_NOP 2
282 # GCN-NEXT: S_DENORM_MODE
284 name:            global_atomic_fmin_x2_rtn_to_s_denorm_mode
285 body:            |
286   bb.0:
287     %2:vreg_64 = GLOBAL_ATOMIC_FMIN_X2_RTN undef %0:vreg_64, undef %1:vreg_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
288     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
291 # GCN-LABEL: name: global_atomic_fcmpswap_saddr_to_s_denorm_mode
292 # GCN:      GLOBAL_ATOMIC_FCMPSWAP_SADDR
293 # GCN-NEXT: S_NOP 2
294 # GCN-NEXT: S_DENORM_MODE
296 name:            global_atomic_fcmpswap_saddr_to_s_denorm_mode
297 body:            |
298   bb.0:
299     GLOBAL_ATOMIC_FCMPSWAP_SADDR undef %0:vgpr_32, undef %1:vgpr_32, undef %3:sgpr_64, 0, 0, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
300     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
303 # GCN-LABEL: name: global_atomic_fcmpswap_x2_saddr_rtn_to_s_denorm_mode
304 # GCN:      GLOBAL_ATOMIC_FCMPSWAP_X2_SADDR_RTN
305 # GCN-NEXT: S_NOP 2
306 # GCN-NEXT: S_DENORM_MODE
308 name:            global_atomic_fcmpswap_x2_saddr_rtn_to_s_denorm_mode
309 body:            |
310   bb.0:
311     %2:vreg_64 = GLOBAL_ATOMIC_FCMPSWAP_X2_SADDR_RTN undef %0:vgpr_32, undef %1:vreg_64, undef %3:sgpr_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
312     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
315 # GCN-LABEL: name: global_atomic_fmax_saddr_rtn_to_s_denorm_mode
316 # GCN:      GLOBAL_ATOMIC_FMAX_SADDR_RTN
317 # GCN-NEXT: S_NOP 2
318 # GCN-NEXT: S_DENORM_MODE
320 name:            global_atomic_fmax_saddr_rtn_to_s_denorm_mode
321 body:            |
322   bb.0:
323     %2:vgpr_32 = GLOBAL_ATOMIC_FMAX_SADDR_RTN undef %0:vgpr_32, undef %1:vgpr_32, undef %3:sgpr_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
324     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
327 # GCN-LABEL: name: global_atomic_fmax_x2_saddr_rtn_to_s_denorm_mode
328 # GCN:      GLOBAL_ATOMIC_FMAX_X2_SADDR_RTN
329 # GCN-NEXT: S_NOP 2
330 # GCN-NEXT: S_DENORM_MODE
332 name:            global_atomic_fmax_x2_saddr_rtn_to_s_denorm_mode
333 body:            |
334   bb.0:
335     %2:vreg_64 = GLOBAL_ATOMIC_FMAX_X2_SADDR_RTN undef %0:vgpr_32, undef %1:vreg_64, undef %3:sgpr_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
336     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
339 # GCN-LABEL: name: global_atomic_fmin_saddr_rtn_to_s_denorm_mode
340 # GCN:      GLOBAL_ATOMIC_FMIN_SADDR_RTN
341 # GCN-NEXT: S_NOP 2
342 # GCN-NEXT: S_DENORM_MODE
344 name:            global_atomic_fmin_saddr_rtn_to_s_denorm_mode
345 body:            |
346   bb.0:
347     %2:vgpr_32 = GLOBAL_ATOMIC_FMIN_SADDR_RTN undef %0:vgpr_32, undef %1:vgpr_32, undef %3:sgpr_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
348     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
351 # GCN-LABEL: name: global_atomic_fmin_x2_saddr_rtn_to_s_denorm_mode
352 # GCN:      GLOBAL_ATOMIC_FMIN_X2_SADDR_RTN
353 # GCN-NEXT: S_NOP 2
354 # GCN-NEXT: S_DENORM_MODE
356 name:            global_atomic_fmin_x2_saddr_rtn_to_s_denorm_mode
357 body:            |
358   bb.0:
359     %2:vreg_64 = GLOBAL_ATOMIC_FMIN_X2_SADDR_RTN undef %0:vgpr_32, undef %1:vreg_64, undef %3:sgpr_64, 0, 1, implicit $exec :: (volatile load store seq_cst seq_cst (s32) on `float addrspace(1)* undef`)
360     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
363 # GCN-LABEL: name: flat_fp_atomic_to_s_denorm_mode_waitcnt
364 # GCN:      FLAT_ATOMIC_FMIN
365 # GCN-NEXT: S_WAITCNT
366 # GCN-NEXT: S_DENORM_MODE
368 name:            flat_fp_atomic_to_s_denorm_mode_waitcnt
369 body:            |
370   bb.0:
371     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 (s32) on `float addrspace(1)* undef`)
372     S_WAITCNT 0
373     S_DENORM_MODE 0, implicit-def $mode, implicit $mode
376 # GCN-LABEL: name: flat_fp_atomic_to_s_denorm_mode_valu
377 # GCN:      FLAT_ATOMIC_FMIN
378 # GCN-NEXT: V_ADD_F32_e32
379 # GCN-NEXT: S_DENORM_MODE
381 name:            flat_fp_atomic_to_s_denorm_mode_valu
382 body:            |
383   bb.0:
384     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 (s32) on `float addrspace(1)* undef`)
385     %2:vgpr_32 = V_ADD_F32_e32 undef %1:vgpr_32, undef %1:vgpr_32, implicit $mode, implicit $exec
386     S_DENORM_MODE 0, implicit-def $mode, implicit $mode