Lines Matching refs:CU
4 …sa -mcpu=gfx1010 -mattr=+cumode -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX10-CU %s
11 …sa -mcpu=gfx1100 -mattr=+cumode -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX11-CU %s
40 ; GFX10-CU-LABEL: flat_workgroup_unordered_load:
41 ; GFX10-CU: ; %bb.0: ; %entry
42 ; GFX10-CU-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
43 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
44 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
45 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
46 ; GFX10-CU-NEXT: flat_load_dword v2, v[0:1]
47 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s2
48 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s3
49 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
50 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
51 ; GFX10-CU-NEXT: s_endpgm
130 ; GFX11-CU-LABEL: flat_workgroup_unordered_load:
131 ; GFX11-CU: ; %bb.0: ; %entry
132 ; GFX11-CU-NEXT: s_load_b128 s[0:3], s[0:1], 0x0
133 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
134 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
135 ; GFX11-CU-NEXT: flat_load_b32 v2, v[0:1]
136 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
137 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
138 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
139 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
140 ; GFX11-CU-NEXT: s_endpgm
175 ; GFX10-CU-LABEL: flat_workgroup_monotonic_load:
176 ; GFX10-CU: ; %bb.0: ; %entry
177 ; GFX10-CU-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
178 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
179 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
180 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
181 ; GFX10-CU-NEXT: flat_load_dword v2, v[0:1]
182 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s2
183 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s3
184 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
185 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
186 ; GFX10-CU-NEXT: s_endpgm
265 ; GFX11-CU-LABEL: flat_workgroup_monotonic_load:
266 ; GFX11-CU: ; %bb.0: ; %entry
267 ; GFX11-CU-NEXT: s_load_b128 s[0:3], s[0:1], 0x0
268 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
269 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
270 ; GFX11-CU-NEXT: flat_load_b32 v2, v[0:1]
271 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
272 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
273 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
274 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
275 ; GFX11-CU-NEXT: s_endpgm
312 ; GFX10-CU-LABEL: flat_workgroup_acquire_load:
313 ; GFX10-CU: ; %bb.0: ; %entry
314 ; GFX10-CU-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
315 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
316 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
317 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
318 ; GFX10-CU-NEXT: flat_load_dword v2, v[0:1]
319 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
320 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s2
321 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s3
322 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
323 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
324 ; GFX10-CU-NEXT: s_endpgm
409 ; GFX11-CU-LABEL: flat_workgroup_acquire_load:
410 ; GFX11-CU: ; %bb.0: ; %entry
411 ; GFX11-CU-NEXT: s_load_b128 s[0:3], s[0:1], 0x0
412 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
413 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
414 ; GFX11-CU-NEXT: flat_load_b32 v2, v[0:1]
415 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
416 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
417 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0)
418 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
419 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
420 ; GFX11-CU-NEXT: s_endpgm
460 ; GFX10-CU-LABEL: flat_workgroup_seq_cst_load:
461 ; GFX10-CU: ; %bb.0: ; %entry
462 ; GFX10-CU-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
463 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
464 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
465 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
466 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
467 ; GFX10-CU-NEXT: flat_load_dword v2, v[0:1]
468 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
469 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s2
470 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s3
471 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
472 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
473 ; GFX10-CU-NEXT: s_endpgm
565 ; GFX11-CU-LABEL: flat_workgroup_seq_cst_load:
566 ; GFX11-CU: ; %bb.0: ; %entry
567 ; GFX11-CU-NEXT: s_load_b128 s[0:3], s[0:1], 0x0
568 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
569 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
570 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
571 ; GFX11-CU-NEXT: flat_load_b32 v2, v[0:1]
572 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
573 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
574 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0)
575 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
576 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
577 ; GFX11-CU-NEXT: s_endpgm
609 ; GFX10-CU-LABEL: flat_workgroup_unordered_store:
610 ; GFX10-CU: ; %bb.0: ; %entry
611 ; GFX10-CU-NEXT: s_clause 0x1
612 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8
613 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x0
614 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
615 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
616 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
617 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
618 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
619 ; GFX10-CU-NEXT: s_endpgm
684 ; GFX11-CU-LABEL: flat_workgroup_unordered_store:
685 ; GFX11-CU: ; %bb.0: ; %entry
686 ; GFX11-CU-NEXT: s_clause 0x1
687 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x8
688 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x0
689 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
690 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
691 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
692 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
693 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
694 ; GFX11-CU-NEXT: s_endpgm
725 ; GFX10-CU-LABEL: flat_workgroup_monotonic_store:
726 ; GFX10-CU: ; %bb.0: ; %entry
727 ; GFX10-CU-NEXT: s_clause 0x1
728 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8
729 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x0
730 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
731 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
732 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
733 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
734 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
735 ; GFX10-CU-NEXT: s_endpgm
800 ; GFX11-CU-LABEL: flat_workgroup_monotonic_store:
801 ; GFX11-CU: ; %bb.0: ; %entry
802 ; GFX11-CU-NEXT: s_clause 0x1
803 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x8
804 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x0
805 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
806 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
807 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
808 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
809 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
810 ; GFX11-CU-NEXT: s_endpgm
844 ; GFX10-CU-LABEL: flat_workgroup_release_store:
845 ; GFX10-CU: ; %bb.0: ; %entry
846 ; GFX10-CU-NEXT: s_clause 0x1
847 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8
848 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x0
849 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
850 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
851 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
852 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
853 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
854 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
855 ; GFX10-CU-NEXT: s_endpgm
927 ; GFX11-CU-LABEL: flat_workgroup_release_store:
928 ; GFX11-CU: ; %bb.0: ; %entry
929 ; GFX11-CU-NEXT: s_clause 0x1
930 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x8
931 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x0
932 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
933 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
934 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
935 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
936 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
937 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
938 ; GFX11-CU-NEXT: s_endpgm
972 ; GFX10-CU-LABEL: flat_workgroup_seq_cst_store:
973 ; GFX10-CU: ; %bb.0: ; %entry
974 ; GFX10-CU-NEXT: s_clause 0x1
975 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8
976 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x0
977 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
978 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
979 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
980 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
981 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
982 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
983 ; GFX10-CU-NEXT: s_endpgm
1055 ; GFX11-CU-LABEL: flat_workgroup_seq_cst_store:
1056 ; GFX11-CU: ; %bb.0: ; %entry
1057 ; GFX11-CU-NEXT: s_clause 0x1
1058 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x8
1059 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x0
1060 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
1061 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
1062 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
1063 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
1064 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
1065 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1066 ; GFX11-CU-NEXT: s_endpgm
1097 ; GFX10-CU-LABEL: flat_workgroup_monotonic_atomicrmw:
1098 ; GFX10-CU: ; %bb.0: ; %entry
1099 ; GFX10-CU-NEXT: s_clause 0x1
1100 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
1101 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x8
1102 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
1103 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
1104 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
1105 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
1106 ; GFX10-CU-NEXT: flat_atomic_swap v[0:1], v2
1107 ; GFX10-CU-NEXT: s_endpgm
1172 ; GFX11-CU-LABEL: flat_workgroup_monotonic_atomicrmw:
1173 ; GFX11-CU: ; %bb.0: ; %entry
1174 ; GFX11-CU-NEXT: s_clause 0x1
1175 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
1176 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x8
1177 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
1178 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
1179 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
1180 ; GFX11-CU-NEXT: flat_atomic_swap_b32 v[0:1], v2
1181 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1182 ; GFX11-CU-NEXT: s_endpgm
1217 ; GFX10-CU-LABEL: flat_workgroup_acquire_atomicrmw:
1218 ; GFX10-CU: ; %bb.0: ; %entry
1219 ; GFX10-CU-NEXT: s_clause 0x1
1220 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
1221 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x8
1222 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
1223 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
1224 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
1225 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
1226 ; GFX10-CU-NEXT: flat_atomic_swap v[0:1], v2
1227 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
1228 ; GFX10-CU-NEXT: s_endpgm
1302 ; GFX11-CU-LABEL: flat_workgroup_acquire_atomicrmw:
1303 ; GFX11-CU: ; %bb.0: ; %entry
1304 ; GFX11-CU-NEXT: s_clause 0x1
1305 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
1306 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x8
1307 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
1308 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
1309 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
1310 ; GFX11-CU-NEXT: flat_atomic_swap_b32 v[0:1], v2
1311 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
1312 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1313 ; GFX11-CU-NEXT: s_endpgm
1347 ; GFX10-CU-LABEL: flat_workgroup_release_atomicrmw:
1348 ; GFX10-CU: ; %bb.0: ; %entry
1349 ; GFX10-CU-NEXT: s_clause 0x1
1350 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
1351 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x8
1352 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
1353 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
1354 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
1355 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
1356 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
1357 ; GFX10-CU-NEXT: flat_atomic_swap v[0:1], v2
1358 ; GFX10-CU-NEXT: s_endpgm
1430 ; GFX11-CU-LABEL: flat_workgroup_release_atomicrmw:
1431 ; GFX11-CU: ; %bb.0: ; %entry
1432 ; GFX11-CU-NEXT: s_clause 0x1
1433 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
1434 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x8
1435 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
1436 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
1437 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
1438 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
1439 ; GFX11-CU-NEXT: flat_atomic_swap_b32 v[0:1], v2
1440 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1441 ; GFX11-CU-NEXT: s_endpgm
1479 ; GFX10-CU-LABEL: flat_workgroup_acq_rel_atomicrmw:
1480 ; GFX10-CU: ; %bb.0: ; %entry
1481 ; GFX10-CU-NEXT: s_clause 0x1
1482 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
1483 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x8
1484 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
1485 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
1486 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
1487 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
1488 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
1489 ; GFX10-CU-NEXT: flat_atomic_swap v[0:1], v2
1490 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
1491 ; GFX10-CU-NEXT: s_endpgm
1572 ; GFX11-CU-LABEL: flat_workgroup_acq_rel_atomicrmw:
1573 ; GFX11-CU: ; %bb.0: ; %entry
1574 ; GFX11-CU-NEXT: s_clause 0x1
1575 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
1576 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x8
1577 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
1578 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
1579 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
1580 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
1581 ; GFX11-CU-NEXT: flat_atomic_swap_b32 v[0:1], v2
1582 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
1583 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1584 ; GFX11-CU-NEXT: s_endpgm
1622 ; GFX10-CU-LABEL: flat_workgroup_seq_cst_atomicrmw:
1623 ; GFX10-CU: ; %bb.0: ; %entry
1624 ; GFX10-CU-NEXT: s_clause 0x1
1625 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
1626 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x8
1627 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
1628 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
1629 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
1630 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
1631 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
1632 ; GFX10-CU-NEXT: flat_atomic_swap v[0:1], v2
1633 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
1634 ; GFX10-CU-NEXT: s_endpgm
1715 ; GFX11-CU-LABEL: flat_workgroup_seq_cst_atomicrmw:
1716 ; GFX11-CU: ; %bb.0: ; %entry
1717 ; GFX11-CU-NEXT: s_clause 0x1
1718 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
1719 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x8
1720 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
1721 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
1722 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
1723 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
1724 ; GFX11-CU-NEXT: flat_atomic_swap_b32 v[0:1], v2
1725 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
1726 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1727 ; GFX11-CU-NEXT: s_endpgm
1763 ; GFX10-CU-LABEL: flat_workgroup_acquire_ret_atomicrmw:
1764 ; GFX10-CU: ; %bb.0: ; %entry
1765 ; GFX10-CU-NEXT: s_clause 0x1
1766 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
1767 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x8
1768 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
1769 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
1770 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
1771 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
1772 ; GFX10-CU-NEXT: flat_atomic_swap v2, v[0:1], v2 glc
1773 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
1774 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
1775 ; GFX10-CU-NEXT: s_endpgm
1855 ; GFX11-CU-LABEL: flat_workgroup_acquire_ret_atomicrmw:
1856 ; GFX11-CU: ; %bb.0: ; %entry
1857 ; GFX11-CU-NEXT: s_clause 0x1
1858 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
1859 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x8
1860 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
1861 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
1862 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
1863 ; GFX11-CU-NEXT: flat_atomic_swap_b32 v2, v[0:1], v2 glc
1864 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
1865 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
1866 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1867 ; GFX11-CU-NEXT: s_endpgm
1907 ; GFX10-CU-LABEL: flat_workgroup_acq_rel_ret_atomicrmw:
1908 ; GFX10-CU: ; %bb.0: ; %entry
1909 ; GFX10-CU-NEXT: s_clause 0x1
1910 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
1911 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x8
1912 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
1913 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
1914 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
1915 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
1916 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
1917 ; GFX10-CU-NEXT: flat_atomic_swap v2, v[0:1], v2 glc
1918 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
1919 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
1920 ; GFX10-CU-NEXT: s_endpgm
2007 ; GFX11-CU-LABEL: flat_workgroup_acq_rel_ret_atomicrmw:
2008 ; GFX11-CU: ; %bb.0: ; %entry
2009 ; GFX11-CU-NEXT: s_clause 0x1
2010 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
2011 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x8
2012 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
2013 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
2014 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
2015 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
2016 ; GFX11-CU-NEXT: flat_atomic_swap_b32 v2, v[0:1], v2 glc
2017 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
2018 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
2019 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2020 ; GFX11-CU-NEXT: s_endpgm
2060 ; GFX10-CU-LABEL: flat_workgroup_seq_cst_ret_atomicrmw:
2061 ; GFX10-CU: ; %bb.0: ; %entry
2062 ; GFX10-CU-NEXT: s_clause 0x1
2063 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
2064 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x8
2065 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
2066 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
2067 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
2068 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
2069 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
2070 ; GFX10-CU-NEXT: flat_atomic_swap v2, v[0:1], v2 glc
2071 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
2072 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
2073 ; GFX10-CU-NEXT: s_endpgm
2160 ; GFX11-CU-LABEL: flat_workgroup_seq_cst_ret_atomicrmw:
2161 ; GFX11-CU: ; %bb.0: ; %entry
2162 ; GFX11-CU-NEXT: s_clause 0x1
2163 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
2164 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x8
2165 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
2166 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
2167 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
2168 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
2169 ; GFX11-CU-NEXT: flat_atomic_swap_b32 v2, v[0:1], v2 glc
2170 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
2171 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
2172 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2173 ; GFX11-CU-NEXT: s_endpgm
2211 ; GFX10-CU-LABEL: flat_workgroup_monotonic_monotonic_cmpxchg:
2212 ; GFX10-CU: ; %bb.0: ; %entry
2213 ; GFX10-CU-NEXT: s_clause 0x1
2214 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
2215 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
2216 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
2217 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
2218 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
2219 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
2220 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
2221 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
2222 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
2223 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
2224 ; GFX10-CU-NEXT: s_endpgm
2292 ; GFX11-CU-LABEL: flat_workgroup_monotonic_monotonic_cmpxchg:
2293 ; GFX11-CU: ; %bb.0: ; %entry
2294 ; GFX11-CU-NEXT: s_clause 0x1
2295 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
2296 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
2297 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
2298 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
2299 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
2300 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
2301 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2302 ; GFX11-CU-NEXT: s_endpgm
2344 ; GFX10-CU-LABEL: flat_workgroup_acquire_monotonic_cmpxchg:
2345 ; GFX10-CU: ; %bb.0: ; %entry
2346 ; GFX10-CU-NEXT: s_clause 0x1
2347 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
2348 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
2349 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
2350 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
2351 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
2352 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
2353 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
2354 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
2355 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
2356 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
2357 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
2358 ; GFX10-CU-NEXT: s_endpgm
2435 ; GFX11-CU-LABEL: flat_workgroup_acquire_monotonic_cmpxchg:
2436 ; GFX11-CU: ; %bb.0: ; %entry
2437 ; GFX11-CU-NEXT: s_clause 0x1
2438 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
2439 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
2440 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
2441 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
2442 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
2443 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
2444 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
2445 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2446 ; GFX11-CU-NEXT: s_endpgm
2487 ; GFX10-CU-LABEL: flat_workgroup_release_monotonic_cmpxchg:
2488 ; GFX10-CU: ; %bb.0: ; %entry
2489 ; GFX10-CU-NEXT: s_clause 0x1
2490 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
2491 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
2492 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
2493 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
2494 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
2495 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
2496 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
2497 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
2498 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
2499 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
2500 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
2501 ; GFX10-CU-NEXT: s_endpgm
2576 ; GFX11-CU-LABEL: flat_workgroup_release_monotonic_cmpxchg:
2577 ; GFX11-CU: ; %bb.0: ; %entry
2578 ; GFX11-CU-NEXT: s_clause 0x1
2579 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
2580 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
2581 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
2582 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
2583 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
2584 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
2585 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
2586 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2587 ; GFX11-CU-NEXT: s_endpgm
2632 ; GFX10-CU-LABEL: flat_workgroup_acq_rel_monotonic_cmpxchg:
2633 ; GFX10-CU: ; %bb.0: ; %entry
2634 ; GFX10-CU-NEXT: s_clause 0x1
2635 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
2636 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
2637 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
2638 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
2639 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
2640 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
2641 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
2642 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
2643 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
2644 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
2645 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
2646 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
2647 ; GFX10-CU-NEXT: s_endpgm
2731 ; GFX11-CU-LABEL: flat_workgroup_acq_rel_monotonic_cmpxchg:
2732 ; GFX11-CU: ; %bb.0: ; %entry
2733 ; GFX11-CU-NEXT: s_clause 0x1
2734 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
2735 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
2736 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
2737 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
2738 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
2739 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
2740 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
2741 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
2742 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2743 ; GFX11-CU-NEXT: s_endpgm
2788 ; GFX10-CU-LABEL: flat_workgroup_seq_cst_monotonic_cmpxchg:
2789 ; GFX10-CU: ; %bb.0: ; %entry
2790 ; GFX10-CU-NEXT: s_clause 0x1
2791 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
2792 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
2793 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
2794 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
2795 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
2796 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
2797 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
2798 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
2799 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
2800 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
2801 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
2802 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
2803 ; GFX10-CU-NEXT: s_endpgm
2887 ; GFX11-CU-LABEL: flat_workgroup_seq_cst_monotonic_cmpxchg:
2888 ; GFX11-CU: ; %bb.0: ; %entry
2889 ; GFX11-CU-NEXT: s_clause 0x1
2890 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
2891 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
2892 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
2893 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
2894 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
2895 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
2896 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
2897 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
2898 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2899 ; GFX11-CU-NEXT: s_endpgm
2941 ; GFX10-CU-LABEL: flat_workgroup_monotonic_acquire_cmpxchg:
2942 ; GFX10-CU: ; %bb.0: ; %entry
2943 ; GFX10-CU-NEXT: s_clause 0x1
2944 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
2945 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
2946 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
2947 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
2948 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
2949 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
2950 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
2951 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
2952 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
2953 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
2954 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
2955 ; GFX10-CU-NEXT: s_endpgm
3032 ; GFX11-CU-LABEL: flat_workgroup_monotonic_acquire_cmpxchg:
3033 ; GFX11-CU: ; %bb.0: ; %entry
3034 ; GFX11-CU-NEXT: s_clause 0x1
3035 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
3036 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
3037 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
3038 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
3039 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
3040 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
3041 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
3042 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
3043 ; GFX11-CU-NEXT: s_endpgm
3085 ; GFX10-CU-LABEL: flat_workgroup_acquire_acquire_cmpxchg:
3086 ; GFX10-CU: ; %bb.0: ; %entry
3087 ; GFX10-CU-NEXT: s_clause 0x1
3088 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
3089 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
3090 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
3091 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
3092 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
3093 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
3094 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
3095 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
3096 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
3097 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
3098 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
3099 ; GFX10-CU-NEXT: s_endpgm
3176 ; GFX11-CU-LABEL: flat_workgroup_acquire_acquire_cmpxchg:
3177 ; GFX11-CU: ; %bb.0: ; %entry
3178 ; GFX11-CU-NEXT: s_clause 0x1
3179 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
3180 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
3181 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
3182 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
3183 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
3184 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
3185 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
3186 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
3187 ; GFX11-CU-NEXT: s_endpgm
3232 ; GFX10-CU-LABEL: flat_workgroup_release_acquire_cmpxchg:
3233 ; GFX10-CU: ; %bb.0: ; %entry
3234 ; GFX10-CU-NEXT: s_clause 0x1
3235 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
3236 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
3237 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
3238 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
3239 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
3240 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
3241 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
3242 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
3243 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
3244 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
3245 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
3246 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
3247 ; GFX10-CU-NEXT: s_endpgm
3331 ; GFX11-CU-LABEL: flat_workgroup_release_acquire_cmpxchg:
3332 ; GFX11-CU: ; %bb.0: ; %entry
3333 ; GFX11-CU-NEXT: s_clause 0x1
3334 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
3335 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
3336 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
3337 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
3338 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
3339 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
3340 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
3341 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
3342 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
3343 ; GFX11-CU-NEXT: s_endpgm
3388 ; GFX10-CU-LABEL: flat_workgroup_acq_rel_acquire_cmpxchg:
3389 ; GFX10-CU: ; %bb.0: ; %entry
3390 ; GFX10-CU-NEXT: s_clause 0x1
3391 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
3392 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
3393 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
3394 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
3395 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
3396 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
3397 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
3398 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
3399 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
3400 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
3401 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
3402 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
3403 ; GFX10-CU-NEXT: s_endpgm
3487 ; GFX11-CU-LABEL: flat_workgroup_acq_rel_acquire_cmpxchg:
3488 ; GFX11-CU: ; %bb.0: ; %entry
3489 ; GFX11-CU-NEXT: s_clause 0x1
3490 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
3491 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
3492 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
3493 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
3494 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
3495 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
3496 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
3497 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
3498 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
3499 ; GFX11-CU-NEXT: s_endpgm
3544 ; GFX10-CU-LABEL: flat_workgroup_seq_cst_acquire_cmpxchg:
3545 ; GFX10-CU: ; %bb.0: ; %entry
3546 ; GFX10-CU-NEXT: s_clause 0x1
3547 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
3548 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
3549 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
3550 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
3551 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
3552 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
3553 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
3554 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
3555 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
3556 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
3557 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
3558 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
3559 ; GFX10-CU-NEXT: s_endpgm
3643 ; GFX11-CU-LABEL: flat_workgroup_seq_cst_acquire_cmpxchg:
3644 ; GFX11-CU: ; %bb.0: ; %entry
3645 ; GFX11-CU-NEXT: s_clause 0x1
3646 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
3647 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
3648 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
3649 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
3650 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
3651 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
3652 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
3653 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
3654 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
3655 ; GFX11-CU-NEXT: s_endpgm
3700 ; GFX10-CU-LABEL: flat_workgroup_seq_cst_seq_cst_cmpxchg:
3701 ; GFX10-CU: ; %bb.0: ; %entry
3702 ; GFX10-CU-NEXT: s_clause 0x1
3703 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
3704 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
3705 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
3706 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
3707 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
3708 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
3709 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
3710 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
3711 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
3712 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
3713 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
3714 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
3715 ; GFX10-CU-NEXT: s_endpgm
3799 ; GFX11-CU-LABEL: flat_workgroup_seq_cst_seq_cst_cmpxchg:
3800 ; GFX11-CU: ; %bb.0: ; %entry
3801 ; GFX11-CU-NEXT: s_clause 0x1
3802 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
3803 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
3804 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
3805 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
3806 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
3807 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
3808 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
3809 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
3810 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
3811 ; GFX11-CU-NEXT: s_endpgm
3857 ; GFX10-CU-LABEL: flat_workgroup_monotonic_monotonic_ret_cmpxchg:
3858 ; GFX10-CU: ; %bb.0: ; %entry
3859 ; GFX10-CU-NEXT: s_clause 0x1
3860 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
3861 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
3862 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
3863 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
3864 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
3865 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
3866 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
3867 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
3868 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
3869 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
3870 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
3871 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
3872 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
3873 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
3874 ; GFX10-CU-NEXT: s_endpgm
3956 ; GFX11-CU-LABEL: flat_workgroup_monotonic_monotonic_ret_cmpxchg:
3957 ; GFX11-CU: ; %bb.0: ; %entry
3958 ; GFX11-CU-NEXT: s_clause 0x1
3959 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
3960 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
3961 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
3962 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
3963 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
3964 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
3965 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
3966 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
3967 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
3968 ; GFX11-CU-NEXT: s_endpgm
4018 ; GFX10-CU-LABEL: flat_workgroup_acquire_monotonic_ret_cmpxchg:
4019 ; GFX10-CU: ; %bb.0: ; %entry
4020 ; GFX10-CU-NEXT: s_clause 0x1
4021 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
4022 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
4023 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
4024 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
4025 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
4026 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
4027 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
4028 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
4029 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
4030 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
4031 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
4032 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
4033 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
4034 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
4035 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
4036 ; GFX10-CU-NEXT: s_endpgm
4122 ; GFX11-CU-LABEL: flat_workgroup_acquire_monotonic_ret_cmpxchg:
4123 ; GFX11-CU: ; %bb.0: ; %entry
4124 ; GFX11-CU-NEXT: s_clause 0x1
4125 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
4126 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
4127 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
4128 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
4129 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
4130 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
4131 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
4132 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
4133 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
4134 ; GFX11-CU-NEXT: s_endpgm
4185 ; GFX10-CU-LABEL: flat_workgroup_release_monotonic_ret_cmpxchg:
4186 ; GFX10-CU: ; %bb.0: ; %entry
4187 ; GFX10-CU-NEXT: s_clause 0x1
4188 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
4189 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
4190 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
4191 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
4192 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
4193 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
4194 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
4195 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
4196 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
4197 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
4198 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
4199 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
4200 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
4201 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
4202 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
4203 ; GFX10-CU-NEXT: s_endpgm
4292 ; GFX11-CU-LABEL: flat_workgroup_release_monotonic_ret_cmpxchg:
4293 ; GFX11-CU: ; %bb.0: ; %entry
4294 ; GFX11-CU-NEXT: s_clause 0x1
4295 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
4296 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
4297 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
4298 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
4299 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
4300 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
4301 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
4302 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
4303 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
4304 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
4305 ; GFX11-CU-NEXT: s_endpgm
4358 ; GFX10-CU-LABEL: flat_workgroup_acq_rel_monotonic_ret_cmpxchg:
4359 ; GFX10-CU: ; %bb.0: ; %entry
4360 ; GFX10-CU-NEXT: s_clause 0x1
4361 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
4362 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
4363 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
4364 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
4365 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
4366 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
4367 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
4368 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
4369 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
4370 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
4371 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
4372 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
4373 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
4374 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
4375 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
4376 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
4377 ; GFX10-CU-NEXT: s_endpgm
4470 ; GFX11-CU-LABEL: flat_workgroup_acq_rel_monotonic_ret_cmpxchg:
4471 ; GFX11-CU: ; %bb.0: ; %entry
4472 ; GFX11-CU-NEXT: s_clause 0x1
4473 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
4474 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
4475 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
4476 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
4477 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
4478 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
4479 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
4480 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
4481 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
4482 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
4483 ; GFX11-CU-NEXT: s_endpgm
4536 ; GFX10-CU-LABEL: flat_workgroup_seq_cst_monotonic_ret_cmpxchg:
4537 ; GFX10-CU: ; %bb.0: ; %entry
4538 ; GFX10-CU-NEXT: s_clause 0x1
4539 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
4540 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
4541 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
4542 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
4543 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
4544 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
4545 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
4546 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
4547 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
4548 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
4549 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
4550 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
4551 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
4552 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
4553 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
4554 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
4555 ; GFX10-CU-NEXT: s_endpgm
4648 ; GFX11-CU-LABEL: flat_workgroup_seq_cst_monotonic_ret_cmpxchg:
4649 ; GFX11-CU: ; %bb.0: ; %entry
4650 ; GFX11-CU-NEXT: s_clause 0x1
4651 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
4652 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
4653 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
4654 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
4655 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
4656 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
4657 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
4658 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
4659 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
4660 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
4661 ; GFX11-CU-NEXT: s_endpgm
4711 ; GFX10-CU-LABEL: flat_workgroup_monotonic_acquire_ret_cmpxchg:
4712 ; GFX10-CU: ; %bb.0: ; %entry
4713 ; GFX10-CU-NEXT: s_clause 0x1
4714 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
4715 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
4716 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
4717 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
4718 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
4719 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
4720 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
4721 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
4722 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
4723 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
4724 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
4725 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
4726 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
4727 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
4728 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
4729 ; GFX10-CU-NEXT: s_endpgm
4815 ; GFX11-CU-LABEL: flat_workgroup_monotonic_acquire_ret_cmpxchg:
4816 ; GFX11-CU: ; %bb.0: ; %entry
4817 ; GFX11-CU-NEXT: s_clause 0x1
4818 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
4819 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
4820 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
4821 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
4822 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
4823 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
4824 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
4825 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
4826 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
4827 ; GFX11-CU-NEXT: s_endpgm
4877 ; GFX10-CU-LABEL: flat_workgroup_acquire_acquire_ret_cmpxchg:
4878 ; GFX10-CU: ; %bb.0: ; %entry
4879 ; GFX10-CU-NEXT: s_clause 0x1
4880 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
4881 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
4882 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
4883 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
4884 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
4885 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
4886 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
4887 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
4888 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
4889 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
4890 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
4891 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
4892 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
4893 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
4894 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
4895 ; GFX10-CU-NEXT: s_endpgm
4981 ; GFX11-CU-LABEL: flat_workgroup_acquire_acquire_ret_cmpxchg:
4982 ; GFX11-CU: ; %bb.0: ; %entry
4983 ; GFX11-CU-NEXT: s_clause 0x1
4984 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
4985 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
4986 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
4987 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
4988 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
4989 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
4990 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
4991 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
4992 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
4993 ; GFX11-CU-NEXT: s_endpgm
5046 ; GFX10-CU-LABEL: flat_workgroup_release_acquire_ret_cmpxchg:
5047 ; GFX10-CU: ; %bb.0: ; %entry
5048 ; GFX10-CU-NEXT: s_clause 0x1
5049 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
5050 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
5051 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
5052 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
5053 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
5054 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
5055 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
5056 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
5057 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
5058 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
5059 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
5060 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
5061 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
5062 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
5063 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
5064 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
5065 ; GFX10-CU-NEXT: s_endpgm
5158 ; GFX11-CU-LABEL: flat_workgroup_release_acquire_ret_cmpxchg:
5159 ; GFX11-CU: ; %bb.0: ; %entry
5160 ; GFX11-CU-NEXT: s_clause 0x1
5161 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
5162 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
5163 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
5164 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
5165 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
5166 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
5167 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
5168 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
5169 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
5170 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
5171 ; GFX11-CU-NEXT: s_endpgm
5224 ; GFX10-CU-LABEL: flat_workgroup_acq_rel_acquire_ret_cmpxchg:
5225 ; GFX10-CU: ; %bb.0: ; %entry
5226 ; GFX10-CU-NEXT: s_clause 0x1
5227 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
5228 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
5229 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
5230 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
5231 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
5232 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
5233 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
5234 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
5235 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
5236 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
5237 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
5238 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
5239 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
5240 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
5241 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
5242 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
5243 ; GFX10-CU-NEXT: s_endpgm
5336 ; GFX11-CU-LABEL: flat_workgroup_acq_rel_acquire_ret_cmpxchg:
5337 ; GFX11-CU: ; %bb.0: ; %entry
5338 ; GFX11-CU-NEXT: s_clause 0x1
5339 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
5340 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
5341 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
5342 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
5343 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
5344 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
5345 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
5346 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
5347 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
5348 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
5349 ; GFX11-CU-NEXT: s_endpgm
5402 ; GFX10-CU-LABEL: flat_workgroup_seq_cst_acquire_ret_cmpxchg:
5403 ; GFX10-CU: ; %bb.0: ; %entry
5404 ; GFX10-CU-NEXT: s_clause 0x1
5405 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
5406 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
5407 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
5408 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
5409 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
5410 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
5411 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
5412 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
5413 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
5414 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
5415 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
5416 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
5417 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
5418 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
5419 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
5420 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
5421 ; GFX10-CU-NEXT: s_endpgm
5514 ; GFX11-CU-LABEL: flat_workgroup_seq_cst_acquire_ret_cmpxchg:
5515 ; GFX11-CU: ; %bb.0: ; %entry
5516 ; GFX11-CU-NEXT: s_clause 0x1
5517 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
5518 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
5519 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
5520 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
5521 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
5522 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
5523 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
5524 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
5525 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
5526 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
5527 ; GFX11-CU-NEXT: s_endpgm
5580 ; GFX10-CU-LABEL: flat_workgroup_monotonic_seq_cst_ret_cmpxchg:
5581 ; GFX10-CU: ; %bb.0: ; %entry
5582 ; GFX10-CU-NEXT: s_clause 0x1
5583 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
5584 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
5585 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
5586 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
5587 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
5588 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
5589 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
5590 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
5591 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
5592 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
5593 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
5594 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
5595 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
5596 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
5597 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
5598 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
5599 ; GFX10-CU-NEXT: s_endpgm
5692 ; GFX11-CU-LABEL: flat_workgroup_monotonic_seq_cst_ret_cmpxchg:
5693 ; GFX11-CU: ; %bb.0: ; %entry
5694 ; GFX11-CU-NEXT: s_clause 0x1
5695 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
5696 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
5697 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
5698 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
5699 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
5700 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
5701 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
5702 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
5703 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
5704 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
5705 ; GFX11-CU-NEXT: s_endpgm
5758 ; GFX10-CU-LABEL: flat_workgroup_acquire_seq_cst_ret_cmpxchg:
5759 ; GFX10-CU: ; %bb.0: ; %entry
5760 ; GFX10-CU-NEXT: s_clause 0x1
5761 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
5762 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
5763 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
5764 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
5765 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
5766 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
5767 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
5768 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
5769 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
5770 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
5771 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
5772 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
5773 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
5774 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
5775 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
5776 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
5777 ; GFX10-CU-NEXT: s_endpgm
5870 ; GFX11-CU-LABEL: flat_workgroup_acquire_seq_cst_ret_cmpxchg:
5871 ; GFX11-CU: ; %bb.0: ; %entry
5872 ; GFX11-CU-NEXT: s_clause 0x1
5873 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
5874 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
5875 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
5876 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
5877 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
5878 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
5879 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
5880 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
5881 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
5882 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
5883 ; GFX11-CU-NEXT: s_endpgm
5936 ; GFX10-CU-LABEL: flat_workgroup_release_seq_cst_ret_cmpxchg:
5937 ; GFX10-CU: ; %bb.0: ; %entry
5938 ; GFX10-CU-NEXT: s_clause 0x1
5939 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
5940 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
5941 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
5942 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
5943 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
5944 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
5945 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
5946 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
5947 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
5948 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
5949 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
5950 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
5951 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
5952 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
5953 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
5954 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
5955 ; GFX10-CU-NEXT: s_endpgm
6048 ; GFX11-CU-LABEL: flat_workgroup_release_seq_cst_ret_cmpxchg:
6049 ; GFX11-CU: ; %bb.0: ; %entry
6050 ; GFX11-CU-NEXT: s_clause 0x1
6051 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
6052 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
6053 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
6054 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
6055 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
6056 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
6057 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
6058 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
6059 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
6060 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
6061 ; GFX11-CU-NEXT: s_endpgm
6114 ; GFX10-CU-LABEL: flat_workgroup_acq_rel_seq_cst_ret_cmpxchg:
6115 ; GFX10-CU: ; %bb.0: ; %entry
6116 ; GFX10-CU-NEXT: s_clause 0x1
6117 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
6118 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
6119 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
6120 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
6121 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
6122 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
6123 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
6124 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
6125 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
6126 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
6127 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
6128 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
6129 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
6130 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
6131 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
6132 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
6133 ; GFX10-CU-NEXT: s_endpgm
6226 ; GFX11-CU-LABEL: flat_workgroup_acq_rel_seq_cst_ret_cmpxchg:
6227 ; GFX11-CU: ; %bb.0: ; %entry
6228 ; GFX11-CU-NEXT: s_clause 0x1
6229 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
6230 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
6231 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
6232 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
6233 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
6234 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
6235 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
6236 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
6237 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
6238 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
6239 ; GFX11-CU-NEXT: s_endpgm
6292 ; GFX10-CU-LABEL: flat_workgroup_seq_cst_seq_cst_ret_cmpxchg:
6293 ; GFX10-CU: ; %bb.0: ; %entry
6294 ; GFX10-CU-NEXT: s_clause 0x1
6295 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
6296 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
6297 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
6298 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
6299 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
6300 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
6301 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
6302 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
6303 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
6304 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
6305 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
6306 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
6307 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
6308 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
6309 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0)
6310 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
6311 ; GFX10-CU-NEXT: s_endpgm
6404 ; GFX11-CU-LABEL: flat_workgroup_seq_cst_seq_cst_ret_cmpxchg:
6405 ; GFX11-CU: ; %bb.0: ; %entry
6406 ; GFX11-CU-NEXT: s_clause 0x1
6407 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
6408 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
6409 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
6410 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
6411 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
6412 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
6413 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
6414 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
6415 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
6416 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
6417 ; GFX11-CU-NEXT: s_endpgm
6454 ; GFX10-CU-LABEL: flat_workgroup_one_as_unordered_load:
6455 ; GFX10-CU: ; %bb.0: ; %entry
6456 ; GFX10-CU-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
6457 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
6458 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
6459 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
6460 ; GFX10-CU-NEXT: flat_load_dword v2, v[0:1]
6461 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s2
6462 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s3
6463 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
6464 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
6465 ; GFX10-CU-NEXT: s_endpgm
6544 ; GFX11-CU-LABEL: flat_workgroup_one_as_unordered_load:
6545 ; GFX11-CU: ; %bb.0: ; %entry
6546 ; GFX11-CU-NEXT: s_load_b128 s[0:3], s[0:1], 0x0
6547 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
6548 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
6549 ; GFX11-CU-NEXT: flat_load_b32 v2, v[0:1]
6550 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
6551 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
6552 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
6553 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
6554 ; GFX11-CU-NEXT: s_endpgm
6589 ; GFX10-CU-LABEL: flat_workgroup_one_as_monotonic_load:
6590 ; GFX10-CU: ; %bb.0: ; %entry
6591 ; GFX10-CU-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
6592 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
6593 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
6594 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
6595 ; GFX10-CU-NEXT: flat_load_dword v2, v[0:1]
6596 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s2
6597 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s3
6598 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
6599 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
6600 ; GFX10-CU-NEXT: s_endpgm
6679 ; GFX11-CU-LABEL: flat_workgroup_one_as_monotonic_load:
6680 ; GFX11-CU: ; %bb.0: ; %entry
6681 ; GFX11-CU-NEXT: s_load_b128 s[0:3], s[0:1], 0x0
6682 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
6683 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
6684 ; GFX11-CU-NEXT: flat_load_b32 v2, v[0:1]
6685 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
6686 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
6687 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
6688 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
6689 ; GFX11-CU-NEXT: s_endpgm
6726 ; GFX10-CU-LABEL: flat_workgroup_one_as_acquire_load:
6727 ; GFX10-CU: ; %bb.0: ; %entry
6728 ; GFX10-CU-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
6729 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
6730 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
6731 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
6732 ; GFX10-CU-NEXT: flat_load_dword v2, v[0:1]
6733 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s2
6734 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s3
6735 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
6736 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
6737 ; GFX10-CU-NEXT: s_endpgm
6820 ; GFX11-CU-LABEL: flat_workgroup_one_as_acquire_load:
6821 ; GFX11-CU: ; %bb.0: ; %entry
6822 ; GFX11-CU-NEXT: s_load_b128 s[0:3], s[0:1], 0x0
6823 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
6824 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
6825 ; GFX11-CU-NEXT: flat_load_b32 v2, v[0:1]
6826 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
6827 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
6828 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
6829 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
6830 ; GFX11-CU-NEXT: s_endpgm
6869 ; GFX10-CU-LABEL: flat_workgroup_one_as_seq_cst_load:
6870 ; GFX10-CU: ; %bb.0: ; %entry
6871 ; GFX10-CU-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
6872 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
6873 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
6874 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
6875 ; GFX10-CU-NEXT: flat_load_dword v2, v[0:1]
6876 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s2
6877 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s3
6878 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
6879 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
6880 ; GFX10-CU-NEXT: s_endpgm
6967 ; GFX11-CU-LABEL: flat_workgroup_one_as_seq_cst_load:
6968 ; GFX11-CU: ; %bb.0: ; %entry
6969 ; GFX11-CU-NEXT: s_load_b128 s[0:3], s[0:1], 0x0
6970 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
6971 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
6972 ; GFX11-CU-NEXT: flat_load_b32 v2, v[0:1]
6973 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
6974 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
6975 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
6976 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
6977 ; GFX11-CU-NEXT: s_endpgm
7009 ; GFX10-CU-LABEL: flat_workgroup_one_as_unordered_store:
7010 ; GFX10-CU: ; %bb.0: ; %entry
7011 ; GFX10-CU-NEXT: s_clause 0x1
7012 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8
7013 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x0
7014 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
7015 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
7016 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
7017 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
7018 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
7019 ; GFX10-CU-NEXT: s_endpgm
7084 ; GFX11-CU-LABEL: flat_workgroup_one_as_unordered_store:
7085 ; GFX11-CU: ; %bb.0: ; %entry
7086 ; GFX11-CU-NEXT: s_clause 0x1
7087 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x8
7088 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x0
7089 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
7090 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
7091 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
7092 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
7093 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
7094 ; GFX11-CU-NEXT: s_endpgm
7125 ; GFX10-CU-LABEL: flat_workgroup_one_as_monotonic_store:
7126 ; GFX10-CU: ; %bb.0: ; %entry
7127 ; GFX10-CU-NEXT: s_clause 0x1
7128 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8
7129 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x0
7130 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
7131 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
7132 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
7133 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
7134 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
7135 ; GFX10-CU-NEXT: s_endpgm
7200 ; GFX11-CU-LABEL: flat_workgroup_one_as_monotonic_store:
7201 ; GFX11-CU: ; %bb.0: ; %entry
7202 ; GFX11-CU-NEXT: s_clause 0x1
7203 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x8
7204 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x0
7205 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
7206 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
7207 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
7208 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
7209 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
7210 ; GFX11-CU-NEXT: s_endpgm
7243 ; GFX10-CU-LABEL: flat_workgroup_one_as_release_store:
7244 ; GFX10-CU: ; %bb.0: ; %entry
7245 ; GFX10-CU-NEXT: s_clause 0x1
7246 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8
7247 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x0
7248 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
7249 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
7250 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
7251 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
7252 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
7253 ; GFX10-CU-NEXT: s_endpgm
7322 ; GFX11-CU-LABEL: flat_workgroup_one_as_release_store:
7323 ; GFX11-CU: ; %bb.0: ; %entry
7324 ; GFX11-CU-NEXT: s_clause 0x1
7325 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x8
7326 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x0
7327 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
7328 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
7329 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
7330 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
7331 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
7332 ; GFX11-CU-NEXT: s_endpgm
7365 ; GFX10-CU-LABEL: flat_workgroup_one_as_seq_cst_store:
7366 ; GFX10-CU: ; %bb.0: ; %entry
7367 ; GFX10-CU-NEXT: s_clause 0x1
7368 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8
7369 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x0
7370 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
7371 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
7372 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
7373 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
7374 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
7375 ; GFX10-CU-NEXT: s_endpgm
7444 ; GFX11-CU-LABEL: flat_workgroup_one_as_seq_cst_store:
7445 ; GFX11-CU: ; %bb.0: ; %entry
7446 ; GFX11-CU-NEXT: s_clause 0x1
7447 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x8
7448 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x0
7449 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
7450 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
7451 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
7452 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
7453 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
7454 ; GFX11-CU-NEXT: s_endpgm
7485 ; GFX10-CU-LABEL: flat_workgroup_one_as_monotonic_atomicrmw:
7486 ; GFX10-CU: ; %bb.0: ; %entry
7487 ; GFX10-CU-NEXT: s_clause 0x1
7488 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
7489 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x8
7490 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
7491 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
7492 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
7493 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
7494 ; GFX10-CU-NEXT: flat_atomic_swap v[0:1], v2
7495 ; GFX10-CU-NEXT: s_endpgm
7560 ; GFX11-CU-LABEL: flat_workgroup_one_as_monotonic_atomicrmw:
7561 ; GFX11-CU: ; %bb.0: ; %entry
7562 ; GFX11-CU-NEXT: s_clause 0x1
7563 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
7564 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x8
7565 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
7566 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
7567 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
7568 ; GFX11-CU-NEXT: flat_atomic_swap_b32 v[0:1], v2
7569 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
7570 ; GFX11-CU-NEXT: s_endpgm
7603 ; GFX10-CU-LABEL: flat_workgroup_one_as_acquire_atomicrmw:
7604 ; GFX10-CU: ; %bb.0: ; %entry
7605 ; GFX10-CU-NEXT: s_clause 0x1
7606 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
7607 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x8
7608 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
7609 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
7610 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
7611 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
7612 ; GFX10-CU-NEXT: flat_atomic_swap v[0:1], v2
7613 ; GFX10-CU-NEXT: s_endpgm
7683 ; GFX11-CU-LABEL: flat_workgroup_one_as_acquire_atomicrmw:
7684 ; GFX11-CU: ; %bb.0: ; %entry
7685 ; GFX11-CU-NEXT: s_clause 0x1
7686 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
7687 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x8
7688 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
7689 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
7690 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
7691 ; GFX11-CU-NEXT: flat_atomic_swap_b32 v[0:1], v2
7692 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
7693 ; GFX11-CU-NEXT: s_endpgm
7726 ; GFX10-CU-LABEL: flat_workgroup_one_as_release_atomicrmw:
7727 ; GFX10-CU: ; %bb.0: ; %entry
7728 ; GFX10-CU-NEXT: s_clause 0x1
7729 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
7730 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x8
7731 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
7732 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
7733 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
7734 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
7735 ; GFX10-CU-NEXT: flat_atomic_swap v[0:1], v2
7736 ; GFX10-CU-NEXT: s_endpgm
7805 ; GFX11-CU-LABEL: flat_workgroup_one_as_release_atomicrmw:
7806 ; GFX11-CU: ; %bb.0: ; %entry
7807 ; GFX11-CU-NEXT: s_clause 0x1
7808 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
7809 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x8
7810 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
7811 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
7812 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
7813 ; GFX11-CU-NEXT: flat_atomic_swap_b32 v[0:1], v2
7814 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
7815 ; GFX11-CU-NEXT: s_endpgm
7850 ; GFX10-CU-LABEL: flat_workgroup_one_as_acq_rel_atomicrmw:
7851 ; GFX10-CU: ; %bb.0: ; %entry
7852 ; GFX10-CU-NEXT: s_clause 0x1
7853 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
7854 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x8
7855 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
7856 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
7857 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
7858 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
7859 ; GFX10-CU-NEXT: flat_atomic_swap v[0:1], v2
7860 ; GFX10-CU-NEXT: s_endpgm
7934 ; GFX11-CU-LABEL: flat_workgroup_one_as_acq_rel_atomicrmw:
7935 ; GFX11-CU: ; %bb.0: ; %entry
7936 ; GFX11-CU-NEXT: s_clause 0x1
7937 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
7938 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x8
7939 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
7940 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
7941 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
7942 ; GFX11-CU-NEXT: flat_atomic_swap_b32 v[0:1], v2
7943 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
7944 ; GFX11-CU-NEXT: s_endpgm
7979 ; GFX10-CU-LABEL: flat_workgroup_one_as_seq_cst_atomicrmw:
7980 ; GFX10-CU: ; %bb.0: ; %entry
7981 ; GFX10-CU-NEXT: s_clause 0x1
7982 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
7983 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x8
7984 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
7985 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
7986 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
7987 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
7988 ; GFX10-CU-NEXT: flat_atomic_swap v[0:1], v2
7989 ; GFX10-CU-NEXT: s_endpgm
8063 ; GFX11-CU-LABEL: flat_workgroup_one_as_seq_cst_atomicrmw:
8064 ; GFX11-CU: ; %bb.0: ; %entry
8065 ; GFX11-CU-NEXT: s_clause 0x1
8066 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
8067 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x8
8068 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
8069 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
8070 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
8071 ; GFX11-CU-NEXT: flat_atomic_swap_b32 v[0:1], v2
8072 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
8073 ; GFX11-CU-NEXT: s_endpgm
8110 ; GFX10-CU-LABEL: flat_workgroup_one_as_acquire_ret_atomicrmw:
8111 ; GFX10-CU: ; %bb.0: ; %entry
8112 ; GFX10-CU-NEXT: s_clause 0x1
8113 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
8114 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x8
8115 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
8116 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
8117 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
8118 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
8119 ; GFX10-CU-NEXT: flat_atomic_swap v2, v[0:1], v2 glc
8120 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
8121 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
8122 ; GFX10-CU-NEXT: s_endpgm
8203 ; GFX11-CU-LABEL: flat_workgroup_one_as_acquire_ret_atomicrmw:
8204 ; GFX11-CU: ; %bb.0: ; %entry
8205 ; GFX11-CU-NEXT: s_clause 0x1
8206 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
8207 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x8
8208 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
8209 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
8210 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
8211 ; GFX11-CU-NEXT: flat_atomic_swap_b32 v2, v[0:1], v2 glc
8212 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
8213 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
8214 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
8215 ; GFX11-CU-NEXT: s_endpgm
8255 ; GFX10-CU-LABEL: flat_workgroup_one_as_acq_rel_ret_atomicrmw:
8256 ; GFX10-CU: ; %bb.0: ; %entry
8257 ; GFX10-CU-NEXT: s_clause 0x1
8258 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
8259 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x8
8260 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
8261 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
8262 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
8263 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
8264 ; GFX10-CU-NEXT: flat_atomic_swap v2, v[0:1], v2 glc
8265 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
8266 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
8267 ; GFX10-CU-NEXT: s_endpgm
8352 ; GFX11-CU-LABEL: flat_workgroup_one_as_acq_rel_ret_atomicrmw:
8353 ; GFX11-CU: ; %bb.0: ; %entry
8354 ; GFX11-CU-NEXT: s_clause 0x1
8355 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
8356 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x8
8357 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
8358 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
8359 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
8360 ; GFX11-CU-NEXT: flat_atomic_swap_b32 v2, v[0:1], v2 glc
8361 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
8362 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
8363 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
8364 ; GFX11-CU-NEXT: s_endpgm
8404 ; GFX10-CU-LABEL: flat_workgroup_one_as_seq_cst_ret_atomicrmw:
8405 ; GFX10-CU: ; %bb.0: ; %entry
8406 ; GFX10-CU-NEXT: s_clause 0x1
8407 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
8408 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x8
8409 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
8410 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
8411 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
8412 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
8413 ; GFX10-CU-NEXT: flat_atomic_swap v2, v[0:1], v2 glc
8414 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
8415 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
8416 ; GFX10-CU-NEXT: s_endpgm
8501 ; GFX11-CU-LABEL: flat_workgroup_one_as_seq_cst_ret_atomicrmw:
8502 ; GFX11-CU: ; %bb.0: ; %entry
8503 ; GFX11-CU-NEXT: s_clause 0x1
8504 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
8505 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x8
8506 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
8507 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
8508 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s0
8509 ; GFX11-CU-NEXT: flat_atomic_swap_b32 v2, v[0:1], v2 glc
8510 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
8511 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
8512 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
8513 ; GFX11-CU-NEXT: s_endpgm
8551 ; GFX10-CU-LABEL: flat_workgroup_one_as_monotonic_monotonic_cmpxchg:
8552 ; GFX10-CU: ; %bb.0: ; %entry
8553 ; GFX10-CU-NEXT: s_clause 0x1
8554 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
8555 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
8556 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
8557 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
8558 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
8559 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
8560 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
8561 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
8562 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
8563 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
8564 ; GFX10-CU-NEXT: s_endpgm
8632 ; GFX11-CU-LABEL: flat_workgroup_one_as_monotonic_monotonic_cmpxchg:
8633 ; GFX11-CU: ; %bb.0: ; %entry
8634 ; GFX11-CU-NEXT: s_clause 0x1
8635 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
8636 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
8637 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
8638 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
8639 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
8640 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
8641 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
8642 ; GFX11-CU-NEXT: s_endpgm
8682 ; GFX10-CU-LABEL: flat_workgroup_one_as_acquire_monotonic_cmpxchg:
8683 ; GFX10-CU: ; %bb.0: ; %entry
8684 ; GFX10-CU-NEXT: s_clause 0x1
8685 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
8686 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
8687 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
8688 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
8689 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
8690 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
8691 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
8692 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
8693 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
8694 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
8695 ; GFX10-CU-NEXT: s_endpgm
8768 ; GFX11-CU-LABEL: flat_workgroup_one_as_acquire_monotonic_cmpxchg:
8769 ; GFX11-CU: ; %bb.0: ; %entry
8770 ; GFX11-CU-NEXT: s_clause 0x1
8771 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
8772 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
8773 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
8774 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
8775 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
8776 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
8777 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
8778 ; GFX11-CU-NEXT: s_endpgm
8818 ; GFX10-CU-LABEL: flat_workgroup_one_as_release_monotonic_cmpxchg:
8819 ; GFX10-CU: ; %bb.0: ; %entry
8820 ; GFX10-CU-NEXT: s_clause 0x1
8821 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
8822 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
8823 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
8824 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
8825 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
8826 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
8827 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
8828 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
8829 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
8830 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
8831 ; GFX10-CU-NEXT: s_endpgm
8903 ; GFX11-CU-LABEL: flat_workgroup_one_as_release_monotonic_cmpxchg:
8904 ; GFX11-CU: ; %bb.0: ; %entry
8905 ; GFX11-CU-NEXT: s_clause 0x1
8906 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
8907 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
8908 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
8909 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
8910 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
8911 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
8912 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
8913 ; GFX11-CU-NEXT: s_endpgm
8955 ; GFX10-CU-LABEL: flat_workgroup_one_as_acq_rel_monotonic_cmpxchg:
8956 ; GFX10-CU: ; %bb.0: ; %entry
8957 ; GFX10-CU-NEXT: s_clause 0x1
8958 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
8959 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
8960 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
8961 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
8962 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
8963 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
8964 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
8965 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
8966 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
8967 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
8968 ; GFX10-CU-NEXT: s_endpgm
9045 ; GFX11-CU-LABEL: flat_workgroup_one_as_acq_rel_monotonic_cmpxchg:
9046 ; GFX11-CU: ; %bb.0: ; %entry
9047 ; GFX11-CU-NEXT: s_clause 0x1
9048 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
9049 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
9050 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
9051 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
9052 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
9053 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
9054 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
9055 ; GFX11-CU-NEXT: s_endpgm
9097 ; GFX10-CU-LABEL: flat_workgroup_one_as_seq_cst_monotonic_cmpxchg:
9098 ; GFX10-CU: ; %bb.0: ; %entry
9099 ; GFX10-CU-NEXT: s_clause 0x1
9100 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
9101 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
9102 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
9103 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
9104 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
9105 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
9106 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
9107 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
9108 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
9109 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
9110 ; GFX10-CU-NEXT: s_endpgm
9187 ; GFX11-CU-LABEL: flat_workgroup_one_as_seq_cst_monotonic_cmpxchg:
9188 ; GFX11-CU: ; %bb.0: ; %entry
9189 ; GFX11-CU-NEXT: s_clause 0x1
9190 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
9191 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
9192 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
9193 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
9194 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
9195 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
9196 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
9197 ; GFX11-CU-NEXT: s_endpgm
9237 ; GFX10-CU-LABEL: flat_workgroup_one_as_monotonic_acquire_cmpxchg:
9238 ; GFX10-CU: ; %bb.0: ; %entry
9239 ; GFX10-CU-NEXT: s_clause 0x1
9240 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
9241 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
9242 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
9243 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
9244 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
9245 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
9246 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
9247 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
9248 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
9249 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
9250 ; GFX10-CU-NEXT: s_endpgm
9323 ; GFX11-CU-LABEL: flat_workgroup_one_as_monotonic_acquire_cmpxchg:
9324 ; GFX11-CU: ; %bb.0: ; %entry
9325 ; GFX11-CU-NEXT: s_clause 0x1
9326 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
9327 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
9328 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
9329 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
9330 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
9331 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
9332 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
9333 ; GFX11-CU-NEXT: s_endpgm
9373 ; GFX10-CU-LABEL: flat_workgroup_one_as_acquire_acquire_cmpxchg:
9374 ; GFX10-CU: ; %bb.0: ; %entry
9375 ; GFX10-CU-NEXT: s_clause 0x1
9376 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
9377 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
9378 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
9379 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
9380 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
9381 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
9382 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
9383 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
9384 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
9385 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
9386 ; GFX10-CU-NEXT: s_endpgm
9459 ; GFX11-CU-LABEL: flat_workgroup_one_as_acquire_acquire_cmpxchg:
9460 ; GFX11-CU: ; %bb.0: ; %entry
9461 ; GFX11-CU-NEXT: s_clause 0x1
9462 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
9463 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
9464 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
9465 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
9466 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
9467 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
9468 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
9469 ; GFX11-CU-NEXT: s_endpgm
9511 ; GFX10-CU-LABEL: flat_workgroup_one_as_release_acquire_cmpxchg:
9512 ; GFX10-CU: ; %bb.0: ; %entry
9513 ; GFX10-CU-NEXT: s_clause 0x1
9514 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
9515 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
9516 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
9517 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
9518 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
9519 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
9520 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
9521 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
9522 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
9523 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
9524 ; GFX10-CU-NEXT: s_endpgm
9601 ; GFX11-CU-LABEL: flat_workgroup_one_as_release_acquire_cmpxchg:
9602 ; GFX11-CU: ; %bb.0: ; %entry
9603 ; GFX11-CU-NEXT: s_clause 0x1
9604 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
9605 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
9606 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
9607 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
9608 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
9609 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
9610 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
9611 ; GFX11-CU-NEXT: s_endpgm
9653 ; GFX10-CU-LABEL: flat_workgroup_one_as_acq_rel_acquire_cmpxchg:
9654 ; GFX10-CU: ; %bb.0: ; %entry
9655 ; GFX10-CU-NEXT: s_clause 0x1
9656 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
9657 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
9658 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
9659 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
9660 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
9661 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
9662 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
9663 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
9664 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
9665 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
9666 ; GFX10-CU-NEXT: s_endpgm
9743 ; GFX11-CU-LABEL: flat_workgroup_one_as_acq_rel_acquire_cmpxchg:
9744 ; GFX11-CU: ; %bb.0: ; %entry
9745 ; GFX11-CU-NEXT: s_clause 0x1
9746 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
9747 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
9748 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
9749 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
9750 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
9751 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
9752 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
9753 ; GFX11-CU-NEXT: s_endpgm
9795 ; GFX10-CU-LABEL: flat_workgroup_one_as_seq_cst_acquire_cmpxchg:
9796 ; GFX10-CU: ; %bb.0: ; %entry
9797 ; GFX10-CU-NEXT: s_clause 0x1
9798 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
9799 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
9800 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
9801 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
9802 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
9803 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
9804 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
9805 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
9806 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
9807 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
9808 ; GFX10-CU-NEXT: s_endpgm
9885 ; GFX11-CU-LABEL: flat_workgroup_one_as_seq_cst_acquire_cmpxchg:
9886 ; GFX11-CU: ; %bb.0: ; %entry
9887 ; GFX11-CU-NEXT: s_clause 0x1
9888 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
9889 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
9890 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
9891 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
9892 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
9893 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
9894 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
9895 ; GFX11-CU-NEXT: s_endpgm
9937 ; GFX10-CU-LABEL: flat_workgroup_one_as_monotonic_seq_cst_cmpxchg:
9938 ; GFX10-CU: ; %bb.0: ; %entry
9939 ; GFX10-CU-NEXT: s_clause 0x1
9940 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
9941 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
9942 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
9943 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
9944 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
9945 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
9946 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
9947 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
9948 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
9949 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
9950 ; GFX10-CU-NEXT: s_endpgm
10027 ; GFX11-CU-LABEL: flat_workgroup_one_as_monotonic_seq_cst_cmpxchg:
10028 ; GFX11-CU: ; %bb.0: ; %entry
10029 ; GFX11-CU-NEXT: s_clause 0x1
10030 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
10031 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
10032 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
10033 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
10034 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
10035 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
10036 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
10037 ; GFX11-CU-NEXT: s_endpgm
10079 ; GFX10-CU-LABEL: flat_workgroup_one_as_acquire_seq_cst_cmpxchg:
10080 ; GFX10-CU: ; %bb.0: ; %entry
10081 ; GFX10-CU-NEXT: s_clause 0x1
10082 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
10083 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
10084 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
10085 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
10086 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
10087 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
10088 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
10089 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
10090 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
10091 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
10092 ; GFX10-CU-NEXT: s_endpgm
10169 ; GFX11-CU-LABEL: flat_workgroup_one_as_acquire_seq_cst_cmpxchg:
10170 ; GFX11-CU: ; %bb.0: ; %entry
10171 ; GFX11-CU-NEXT: s_clause 0x1
10172 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
10173 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
10174 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
10175 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
10176 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
10177 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
10178 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
10179 ; GFX11-CU-NEXT: s_endpgm
10221 ; GFX10-CU-LABEL: flat_workgroup_one_as_release_seq_cst_cmpxchg:
10222 ; GFX10-CU: ; %bb.0: ; %entry
10223 ; GFX10-CU-NEXT: s_clause 0x1
10224 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
10225 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
10226 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
10227 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
10228 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
10229 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
10230 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
10231 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
10232 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
10233 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
10234 ; GFX10-CU-NEXT: s_endpgm
10311 ; GFX11-CU-LABEL: flat_workgroup_one_as_release_seq_cst_cmpxchg:
10312 ; GFX11-CU: ; %bb.0: ; %entry
10313 ; GFX11-CU-NEXT: s_clause 0x1
10314 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
10315 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
10316 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
10317 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
10318 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
10319 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
10320 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
10321 ; GFX11-CU-NEXT: s_endpgm
10363 ; GFX10-CU-LABEL: flat_workgroup_one_as_acq_rel_seq_cst_cmpxchg:
10364 ; GFX10-CU: ; %bb.0: ; %entry
10365 ; GFX10-CU-NEXT: s_clause 0x1
10366 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
10367 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
10368 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
10369 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
10370 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
10371 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
10372 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
10373 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
10374 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
10375 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
10376 ; GFX10-CU-NEXT: s_endpgm
10453 ; GFX11-CU-LABEL: flat_workgroup_one_as_acq_rel_seq_cst_cmpxchg:
10454 ; GFX11-CU: ; %bb.0: ; %entry
10455 ; GFX11-CU-NEXT: s_clause 0x1
10456 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
10457 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
10458 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
10459 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
10460 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
10461 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
10462 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
10463 ; GFX11-CU-NEXT: s_endpgm
10505 ; GFX10-CU-LABEL: flat_workgroup_one_as_seq_cst_seq_cst_cmpxchg:
10506 ; GFX10-CU: ; %bb.0: ; %entry
10507 ; GFX10-CU-NEXT: s_clause 0x1
10508 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
10509 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
10510 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
10511 ; GFX10-CU-NEXT: s_add_u32 s0, s0, 16
10512 ; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0
10513 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
10514 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
10515 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
10516 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
10517 ; GFX10-CU-NEXT: flat_atomic_cmpswap v[0:1], v[2:3]
10518 ; GFX10-CU-NEXT: s_endpgm
10595 ; GFX11-CU-LABEL: flat_workgroup_one_as_seq_cst_seq_cst_cmpxchg:
10596 ; GFX11-CU: ; %bb.0: ; %entry
10597 ; GFX11-CU-NEXT: s_clause 0x1
10598 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
10599 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
10600 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
10601 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
10602 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
10603 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v[0:1], v[2:3] offset:16
10604 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
10605 ; GFX11-CU-NEXT: s_endpgm
10651 ; GFX10-CU-LABEL: flat_workgroup_one_as_monotonicmonotonic_ret_cmpxchg:
10652 ; GFX10-CU: ; %bb.0: ; %entry
10653 ; GFX10-CU-NEXT: s_clause 0x1
10654 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
10655 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
10656 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
10657 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
10658 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
10659 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
10660 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
10661 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
10662 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
10663 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
10664 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
10665 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
10666 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
10667 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
10668 ; GFX10-CU-NEXT: s_endpgm
10750 ; GFX11-CU-LABEL: flat_workgroup_one_as_monotonicmonotonic_ret_cmpxchg:
10751 ; GFX11-CU: ; %bb.0: ; %entry
10752 ; GFX11-CU-NEXT: s_clause 0x1
10753 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
10754 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
10755 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
10756 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
10757 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
10758 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
10759 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
10760 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
10761 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
10762 ; GFX11-CU-NEXT: s_endpgm
10812 ; GFX10-CU-LABEL: flat_workgroup_one_as_acquire_monotonic_ret_cmpxchg:
10813 ; GFX10-CU: ; %bb.0: ; %entry
10814 ; GFX10-CU-NEXT: s_clause 0x1
10815 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
10816 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
10817 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
10818 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
10819 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
10820 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
10821 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
10822 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
10823 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
10824 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
10825 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
10826 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
10827 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
10828 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
10829 ; GFX10-CU-NEXT: s_endpgm
10915 ; GFX11-CU-LABEL: flat_workgroup_one_as_acquire_monotonic_ret_cmpxchg:
10916 ; GFX11-CU: ; %bb.0: ; %entry
10917 ; GFX11-CU-NEXT: s_clause 0x1
10918 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
10919 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
10920 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
10921 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
10922 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
10923 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
10924 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
10925 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
10926 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
10927 ; GFX11-CU-NEXT: s_endpgm
10977 ; GFX10-CU-LABEL: flat_workgroup_one_as_release_monotonic_ret_cmpxchg:
10978 ; GFX10-CU: ; %bb.0: ; %entry
10979 ; GFX10-CU-NEXT: s_clause 0x1
10980 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
10981 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
10982 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
10983 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
10984 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
10985 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
10986 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
10987 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
10988 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
10989 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
10990 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
10991 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
10992 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
10993 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
10994 ; GFX10-CU-NEXT: s_endpgm
11080 ; GFX11-CU-LABEL: flat_workgroup_one_as_release_monotonic_ret_cmpxchg:
11081 ; GFX11-CU: ; %bb.0: ; %entry
11082 ; GFX11-CU-NEXT: s_clause 0x1
11083 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
11084 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
11085 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
11086 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
11087 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
11088 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
11089 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
11090 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
11091 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
11092 ; GFX11-CU-NEXT: s_endpgm
11144 ; GFX10-CU-LABEL: flat_workgroup_one_as_acq_rel_monotonic_ret_cmpxchg:
11145 ; GFX10-CU: ; %bb.0: ; %entry
11146 ; GFX10-CU-NEXT: s_clause 0x1
11147 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
11148 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
11149 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
11150 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
11151 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
11152 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
11153 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
11154 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
11155 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
11156 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
11157 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
11158 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
11159 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
11160 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
11161 ; GFX10-CU-NEXT: s_endpgm
11251 ; GFX11-CU-LABEL: flat_workgroup_one_as_acq_rel_monotonic_ret_cmpxchg:
11252 ; GFX11-CU: ; %bb.0: ; %entry
11253 ; GFX11-CU-NEXT: s_clause 0x1
11254 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
11255 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
11256 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
11257 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
11258 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
11259 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
11260 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
11261 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
11262 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
11263 ; GFX11-CU-NEXT: s_endpgm
11315 ; GFX10-CU-LABEL: flat_workgroup_one_as_seq_cst_monotonic_ret_cmpxchg:
11316 ; GFX10-CU: ; %bb.0: ; %entry
11317 ; GFX10-CU-NEXT: s_clause 0x1
11318 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
11319 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
11320 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
11321 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
11322 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
11323 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
11324 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
11325 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
11326 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
11327 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
11328 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
11329 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
11330 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
11331 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
11332 ; GFX10-CU-NEXT: s_endpgm
11422 ; GFX11-CU-LABEL: flat_workgroup_one_as_seq_cst_monotonic_ret_cmpxchg:
11423 ; GFX11-CU: ; %bb.0: ; %entry
11424 ; GFX11-CU-NEXT: s_clause 0x1
11425 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
11426 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
11427 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
11428 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
11429 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
11430 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
11431 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
11432 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
11433 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
11434 ; GFX11-CU-NEXT: s_endpgm
11484 ; GFX10-CU-LABEL: flat_workgroup_one_as_monotonic_acquire_ret_cmpxchg:
11485 ; GFX10-CU: ; %bb.0: ; %entry
11486 ; GFX10-CU-NEXT: s_clause 0x1
11487 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
11488 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
11489 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
11490 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
11491 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
11492 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
11493 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
11494 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
11495 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
11496 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
11497 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
11498 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
11499 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
11500 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
11501 ; GFX10-CU-NEXT: s_endpgm
11587 ; GFX11-CU-LABEL: flat_workgroup_one_as_monotonic_acquire_ret_cmpxchg:
11588 ; GFX11-CU: ; %bb.0: ; %entry
11589 ; GFX11-CU-NEXT: s_clause 0x1
11590 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
11591 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
11592 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
11593 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
11594 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
11595 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
11596 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
11597 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
11598 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
11599 ; GFX11-CU-NEXT: s_endpgm
11649 ; GFX10-CU-LABEL: flat_workgroup_one_as_acquire_acquire_ret_cmpxchg:
11650 ; GFX10-CU: ; %bb.0: ; %entry
11651 ; GFX10-CU-NEXT: s_clause 0x1
11652 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
11653 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
11654 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
11655 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
11656 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
11657 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
11658 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
11659 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
11660 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
11661 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
11662 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
11663 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
11664 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
11665 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
11666 ; GFX10-CU-NEXT: s_endpgm
11752 ; GFX11-CU-LABEL: flat_workgroup_one_as_acquire_acquire_ret_cmpxchg:
11753 ; GFX11-CU: ; %bb.0: ; %entry
11754 ; GFX11-CU-NEXT: s_clause 0x1
11755 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
11756 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
11757 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
11758 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
11759 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
11760 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
11761 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
11762 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
11763 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
11764 ; GFX11-CU-NEXT: s_endpgm
11816 ; GFX10-CU-LABEL: flat_workgroup_one_as_release_acquire_ret_cmpxchg:
11817 ; GFX10-CU: ; %bb.0: ; %entry
11818 ; GFX10-CU-NEXT: s_clause 0x1
11819 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
11820 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
11821 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
11822 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
11823 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
11824 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
11825 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
11826 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
11827 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
11828 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
11829 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
11830 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
11831 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
11832 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
11833 ; GFX10-CU-NEXT: s_endpgm
11923 ; GFX11-CU-LABEL: flat_workgroup_one_as_release_acquire_ret_cmpxchg:
11924 ; GFX11-CU: ; %bb.0: ; %entry
11925 ; GFX11-CU-NEXT: s_clause 0x1
11926 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
11927 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
11928 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
11929 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
11930 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
11931 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
11932 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
11933 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
11934 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
11935 ; GFX11-CU-NEXT: s_endpgm
11987 ; GFX10-CU-LABEL: flat_workgroup_one_as_acq_rel_acquire_ret_cmpxchg:
11988 ; GFX10-CU: ; %bb.0: ; %entry
11989 ; GFX10-CU-NEXT: s_clause 0x1
11990 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
11991 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
11992 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
11993 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
11994 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
11995 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
11996 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
11997 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
11998 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
11999 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
12000 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
12001 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
12002 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
12003 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
12004 ; GFX10-CU-NEXT: s_endpgm
12094 ; GFX11-CU-LABEL: flat_workgroup_one_as_acq_rel_acquire_ret_cmpxchg:
12095 ; GFX11-CU: ; %bb.0: ; %entry
12096 ; GFX11-CU-NEXT: s_clause 0x1
12097 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
12098 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
12099 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
12100 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
12101 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
12102 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
12103 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
12104 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
12105 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
12106 ; GFX11-CU-NEXT: s_endpgm
12158 ; GFX10-CU-LABEL: flat_workgroup_one_as_seq_cst_acquire_ret_cmpxchg:
12159 ; GFX10-CU: ; %bb.0: ; %entry
12160 ; GFX10-CU-NEXT: s_clause 0x1
12161 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
12162 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
12163 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
12164 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
12165 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
12166 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
12167 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
12168 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
12169 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
12170 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
12171 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
12172 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
12173 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
12174 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
12175 ; GFX10-CU-NEXT: s_endpgm
12265 ; GFX11-CU-LABEL: flat_workgroup_one_as_seq_cst_acquire_ret_cmpxchg:
12266 ; GFX11-CU: ; %bb.0: ; %entry
12267 ; GFX11-CU-NEXT: s_clause 0x1
12268 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
12269 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
12270 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
12271 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
12272 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
12273 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
12274 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
12275 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
12276 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
12277 ; GFX11-CU-NEXT: s_endpgm
12329 ; GFX10-CU-LABEL: flat_workgroup_one_as_monotonic_seq_cst_ret_cmpxchg:
12330 ; GFX10-CU: ; %bb.0: ; %entry
12331 ; GFX10-CU-NEXT: s_clause 0x1
12332 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
12333 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
12334 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
12335 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
12336 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
12337 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
12338 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
12339 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
12340 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
12341 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
12342 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
12343 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
12344 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
12345 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
12346 ; GFX10-CU-NEXT: s_endpgm
12436 ; GFX11-CU-LABEL: flat_workgroup_one_as_monotonic_seq_cst_ret_cmpxchg:
12437 ; GFX11-CU: ; %bb.0: ; %entry
12438 ; GFX11-CU-NEXT: s_clause 0x1
12439 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
12440 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
12441 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
12442 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
12443 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
12444 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
12445 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
12446 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
12447 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
12448 ; GFX11-CU-NEXT: s_endpgm
12500 ; GFX10-CU-LABEL: flat_workgroup_one_as_acquire_seq_cst_ret_cmpxchg:
12501 ; GFX10-CU: ; %bb.0: ; %entry
12502 ; GFX10-CU-NEXT: s_clause 0x1
12503 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
12504 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
12505 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
12506 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
12507 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
12508 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
12509 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
12510 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
12511 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
12512 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
12513 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
12514 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
12515 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
12516 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
12517 ; GFX10-CU-NEXT: s_endpgm
12607 ; GFX11-CU-LABEL: flat_workgroup_one_as_acquire_seq_cst_ret_cmpxchg:
12608 ; GFX11-CU: ; %bb.0: ; %entry
12609 ; GFX11-CU-NEXT: s_clause 0x1
12610 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
12611 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
12612 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
12613 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
12614 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
12615 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
12616 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
12617 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
12618 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
12619 ; GFX11-CU-NEXT: s_endpgm
12671 ; GFX10-CU-LABEL: flat_workgroup_one_as_release_seq_cst_ret_cmpxchg:
12672 ; GFX10-CU: ; %bb.0: ; %entry
12673 ; GFX10-CU-NEXT: s_clause 0x1
12674 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
12675 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
12676 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
12677 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
12678 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
12679 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
12680 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
12681 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
12682 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
12683 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
12684 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
12685 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
12686 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
12687 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
12688 ; GFX10-CU-NEXT: s_endpgm
12778 ; GFX11-CU-LABEL: flat_workgroup_one_as_release_seq_cst_ret_cmpxchg:
12779 ; GFX11-CU: ; %bb.0: ; %entry
12780 ; GFX11-CU-NEXT: s_clause 0x1
12781 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
12782 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
12783 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
12784 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
12785 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
12786 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
12787 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
12788 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
12789 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
12790 ; GFX11-CU-NEXT: s_endpgm
12842 ; GFX10-CU-LABEL: flat_workgroup_one_as_acq_rel_seq_cst_ret_cmpxchg:
12843 ; GFX10-CU: ; %bb.0: ; %entry
12844 ; GFX10-CU-NEXT: s_clause 0x1
12845 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
12846 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
12847 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
12848 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
12849 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
12850 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
12851 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
12852 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
12853 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
12854 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
12855 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
12856 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
12857 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
12858 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
12859 ; GFX10-CU-NEXT: s_endpgm
12949 ; GFX11-CU-LABEL: flat_workgroup_one_as_acq_rel_seq_cst_ret_cmpxchg:
12950 ; GFX11-CU: ; %bb.0: ; %entry
12951 ; GFX11-CU-NEXT: s_clause 0x1
12952 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
12953 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
12954 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
12955 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
12956 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
12957 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
12958 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
12959 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
12960 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
12961 ; GFX11-CU-NEXT: s_endpgm
13013 ; GFX10-CU-LABEL: flat_workgroup_one_as_seq_cst_seq_cst_ret_cmpxchg:
13014 ; GFX10-CU: ; %bb.0: ; %entry
13015 ; GFX10-CU-NEXT: s_clause 0x1
13016 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
13017 ; GFX10-CU-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x8
13018 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
13019 ; GFX10-CU-NEXT: s_add_u32 s4, s0, 16
13020 ; GFX10-CU-NEXT: s_addc_u32 s5, s1, 0
13021 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4
13022 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s2
13023 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s5
13024 ; GFX10-CU-NEXT: v_mov_b32_e32 v3, s3
13025 ; GFX10-CU-NEXT: flat_atomic_cmpswap v2, v[0:1], v[2:3] glc
13026 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
13027 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
13028 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
13029 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
13030 ; GFX10-CU-NEXT: s_endpgm
13120 ; GFX11-CU-LABEL: flat_workgroup_one_as_seq_cst_seq_cst_ret_cmpxchg:
13121 ; GFX11-CU: ; %bb.0: ; %entry
13122 ; GFX11-CU-NEXT: s_clause 0x1
13123 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
13124 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
13125 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
13126 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
13127 ; GFX11-CU-NEXT: v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
13128 ; GFX11-CU-NEXT: flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:16 glc
13129 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
13130 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
13131 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
13132 ; GFX11-CU-NEXT: s_endpgm