@@ -5611,50 +5611,11 @@ define <2 x bfloat> @buffer_fat_ptr_agent_atomic_fadd_ret_v2bf16__offset(ptr add
56115611; GFX12-NEXT: s_wait_samplecnt 0x0
56125612; GFX12-NEXT: s_wait_bvhcnt 0x0
56135613; GFX12-NEXT: s_wait_kmcnt 0x0
5614- ; GFX12-NEXT: v_dual_mov_b32 v1, v0 :: v_dual_mov_b32 v0, s4
5615- ; GFX12-NEXT: s_addk_co_i32 s4, 0x400
5616- ; GFX12-NEXT: s_mov_b32 s5, 0
5617- ; GFX12-NEXT: v_mov_b32_e32 v4, s4
5618- ; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_2)
5619- ; GFX12-NEXT: v_lshlrev_b32_e32 v2, 16, v1
5620- ; GFX12-NEXT: buffer_load_b32 v0, v0, s[0:3], null offen offset:1024
5621- ; GFX12-NEXT: v_and_b32_e32 v3, 0xffff0000, v1
5622- ; GFX12-NEXT: .LBB15_1: ; %atomicrmw.start
5623- ; GFX12-NEXT: ; =>This Inner Loop Header: Depth=1
5624- ; GFX12-NEXT: s_wait_loadcnt 0x0
5625- ; GFX12-NEXT: v_mov_b32_e32 v6, v0
5614+ ; GFX12-NEXT: v_mov_b32_e32 v1, s4
56265615; GFX12-NEXT: s_wait_storecnt 0x0
5627- ; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
5628- ; GFX12-NEXT: v_and_b32_e32 v1, 0xffff0000, v6
5629- ; GFX12-NEXT: v_add_f32_e32 v1, v1, v3
5630- ; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)
5631- ; GFX12-NEXT: v_bfe_u32 v7, v1, 16, 1
5632- ; GFX12-NEXT: v_or_b32_e32 v9, 0x400000, v1
5633- ; GFX12-NEXT: v_cmp_u_f32_e32 vcc_lo, v1, v1
5634- ; GFX12-NEXT: v_add3_u32 v7, v7, v1, 0x7fff
5635- ; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
5636- ; GFX12-NEXT: v_dual_cndmask_b32 v1, v7, v9 :: v_dual_lshlrev_b32 v0, 16, v6
5637- ; GFX12-NEXT: v_add_f32_e32 v0, v0, v2
5638- ; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)
5639- ; GFX12-NEXT: v_bfe_u32 v5, v0, 16, 1
5640- ; GFX12-NEXT: v_or_b32_e32 v8, 0x400000, v0
5641- ; GFX12-NEXT: v_cmp_u_f32_e64 s4, v0, v0
5642- ; GFX12-NEXT: v_add3_u32 v5, v5, v0, 0x7fff
5643- ; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
5644- ; GFX12-NEXT: v_cndmask_b32_e64 v0, v5, v8, s4
5645- ; GFX12-NEXT: v_perm_b32 v5, v1, v0, 0x7060302
5646- ; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1)
5647- ; GFX12-NEXT: v_dual_mov_b32 v0, v5 :: v_dual_mov_b32 v1, v6
5648- ; GFX12-NEXT: buffer_atomic_cmpswap_b32 v[0:1], v4, s[0:3], null offen th:TH_ATOMIC_RETURN
5616+ ; GFX12-NEXT: buffer_atomic_pk_add_bf16 v0, v1, s[0:3], null offen offset:1024 th:TH_ATOMIC_RETURN
56495617; GFX12-NEXT: s_wait_loadcnt 0x0
56505618; GFX12-NEXT: global_inv scope:SCOPE_DEV
5651- ; GFX12-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v6
5652- ; GFX12-NEXT: s_or_b32 s5, vcc_lo, s5
5653- ; GFX12-NEXT: s_delay_alu instid0(SALU_CYCLE_1)
5654- ; GFX12-NEXT: s_and_not1_b32 exec_lo, exec_lo, s5
5655- ; GFX12-NEXT: s_cbranch_execnz .LBB15_1
5656- ; GFX12-NEXT: ; %bb.2: ; %atomicrmw.end
5657- ; GFX12-NEXT: s_or_b32 exec_lo, exec_lo, s5
56585619; GFX12-NEXT: s_setpc_b64 s[30:31]
56595620;
56605621; GFX940-LABEL: buffer_fat_ptr_agent_atomic_fadd_ret_v2bf16__offset:
@@ -6033,46 +5994,11 @@ define void @buffer_fat_ptr_agent_atomic_fadd_noret_v2bf16__offset(ptr addrspace
60335994; GFX12-NEXT: s_wait_samplecnt 0x0
60345995; GFX12-NEXT: s_wait_bvhcnt 0x0
60355996; GFX12-NEXT: s_wait_kmcnt 0x0
6036- ; GFX12-NEXT: v_dual_mov_b32 v1, s4 :: v_dual_lshlrev_b32 v2, 16, v0
6037- ; GFX12-NEXT: s_addk_co_i32 s4, 0x400
6038- ; GFX12-NEXT: s_delay_alu instid0(SALU_CYCLE_1)
6039- ; GFX12-NEXT: v_dual_mov_b32 v4, s4 :: v_dual_and_b32 v3, 0xffff0000, v0
6040- ; GFX12-NEXT: buffer_load_b32 v1, v1, s[0:3], null offen offset:1024
6041- ; GFX12-NEXT: s_mov_b32 s5, 0
6042- ; GFX12-NEXT: .LBB16_1: ; %atomicrmw.start
6043- ; GFX12-NEXT: ; =>This Inner Loop Header: Depth=1
6044- ; GFX12-NEXT: s_wait_loadcnt 0x0
6045- ; GFX12-NEXT: v_and_b32_e32 v5, 0xffff0000, v1
6046- ; GFX12-NEXT: v_lshlrev_b32_e32 v0, 16, v1
5997+ ; GFX12-NEXT: v_mov_b32_e32 v1, s4
5998+ ; GFX12-NEXT: s_wait_storecnt 0x0
5999+ ; GFX12-NEXT: buffer_atomic_pk_add_bf16 v0, v1, s[0:3], null offen offset:1024
60476000; GFX12-NEXT: s_wait_storecnt 0x0
6048- ; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
6049- ; GFX12-NEXT: v_dual_add_f32 v5, v5, v3 :: v_dual_add_f32 v0, v0, v2
6050- ; GFX12-NEXT: v_bfe_u32 v7, v5, 16, 1
6051- ; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_2)
6052- ; GFX12-NEXT: v_bfe_u32 v6, v0, 16, 1
6053- ; GFX12-NEXT: v_or_b32_e32 v8, 0x400000, v0
6054- ; GFX12-NEXT: v_or_b32_e32 v9, 0x400000, v5
6055- ; GFX12-NEXT: v_cmp_u_f32_e32 vcc_lo, v5, v5
6056- ; GFX12-NEXT: v_add3_u32 v7, v7, v5, 0x7fff
6057- ; GFX12-NEXT: v_add3_u32 v6, v6, v0, 0x7fff
6058- ; GFX12-NEXT: v_cmp_u_f32_e64 s4, v0, v0
6059- ; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
6060- ; GFX12-NEXT: v_cndmask_b32_e32 v5, v7, v9, vcc_lo
6061- ; GFX12-NEXT: v_cndmask_b32_e64 v0, v6, v8, s4
6062- ; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
6063- ; GFX12-NEXT: v_perm_b32 v0, v5, v0, 0x7060302
6064- ; GFX12-NEXT: v_dual_mov_b32 v6, v1 :: v_dual_mov_b32 v5, v0
6065- ; GFX12-NEXT: buffer_atomic_cmpswap_b32 v[5:6], v4, s[0:3], null offen th:TH_ATOMIC_RETURN
6066- ; GFX12-NEXT: s_wait_loadcnt 0x0
60676001; GFX12-NEXT: global_inv scope:SCOPE_DEV
6068- ; GFX12-NEXT: v_cmp_eq_u32_e32 vcc_lo, v5, v1
6069- ; GFX12-NEXT: v_mov_b32_e32 v1, v5
6070- ; GFX12-NEXT: s_or_b32 s5, vcc_lo, s5
6071- ; GFX12-NEXT: s_delay_alu instid0(SALU_CYCLE_1)
6072- ; GFX12-NEXT: s_and_not1_b32 exec_lo, exec_lo, s5
6073- ; GFX12-NEXT: s_cbranch_execnz .LBB16_1
6074- ; GFX12-NEXT: ; %bb.2: ; %atomicrmw.end
6075- ; GFX12-NEXT: s_or_b32 exec_lo, exec_lo, s5
60766002; GFX12-NEXT: s_setpc_b64 s[30:31]
60776003;
60786004; GFX940-LABEL: buffer_fat_ptr_agent_atomic_fadd_noret_v2bf16__offset:
@@ -6442,8 +6368,8 @@ define <2 x bfloat> @buffer_fat_ptr_agent_atomic_fadd_ret_v2bf16__offset__waterf
64426368; GFX12-NEXT: s_wait_samplecnt 0x0
64436369; GFX12-NEXT: s_wait_bvhcnt 0x0
64446370; GFX12-NEXT: s_wait_kmcnt 0x0
6445- ; GFX12-NEXT: v_add_nc_u32_e32 v7, 0x400, v4
64466371; GFX12-NEXT: s_mov_b32 s1, exec_lo
6372+ ; GFX12-NEXT: s_wait_storecnt 0x0
64476373; GFX12-NEXT: .LBB17_1: ; =>This Inner Loop Header: Depth=1
64486374; GFX12-NEXT: v_readfirstlane_b32 s4, v0
64496375; GFX12-NEXT: v_readfirstlane_b32 s5, v1
@@ -6455,70 +6381,17 @@ define <2 x bfloat> @buffer_fat_ptr_agent_atomic_fadd_ret_v2bf16__offset__waterf
64556381; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
64566382; GFX12-NEXT: s_and_b32 s0, vcc_lo, s0
64576383; GFX12-NEXT: s_and_saveexec_b32 s0, s0
6458- ; GFX12-NEXT: buffer_load_b32 v6, v4, s[4:7], null offen offset:1024
6384+ ; GFX12-NEXT: s_wait_loadcnt 0x0
6385+ ; GFX12-NEXT: buffer_atomic_pk_add_bf16 v5, v4, s[4:7], null offen offset:1024 th:TH_ATOMIC_RETURN
6386+ ; GFX12-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
64596387; GFX12-NEXT: ; implicit-def: $vgpr4
64606388; GFX12-NEXT: s_xor_b32 exec_lo, exec_lo, s0
64616389; GFX12-NEXT: s_cbranch_execnz .LBB17_1
64626390; GFX12-NEXT: ; %bb.2:
64636391; GFX12-NEXT: s_mov_b32 exec_lo, s1
6464- ; GFX12-NEXT: v_lshlrev_b32_e32 v8, 16, v5
6465- ; GFX12-NEXT: v_and_b32_e32 v9, 0xffff0000, v5
6466- ; GFX12-NEXT: s_mov_b32 s1, 0
6467- ; GFX12-NEXT: .LBB17_3: ; %atomicrmw.start
6468- ; GFX12-NEXT: ; =>This Loop Header: Depth=1
6469- ; GFX12-NEXT: ; Child Loop BB17_4 Depth 2
64706392; GFX12-NEXT: s_wait_loadcnt 0x0
6471- ; GFX12-NEXT: v_and_b32_e32 v5, 0xffff0000, v6
6472- ; GFX12-NEXT: v_lshlrev_b32_e32 v4, 16, v6
6473- ; GFX12-NEXT: s_mov_b32 s2, exec_lo
6474- ; GFX12-NEXT: s_wait_storecnt 0x0
6475- ; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
6476- ; GFX12-NEXT: v_dual_add_f32 v5, v5, v9 :: v_dual_add_f32 v4, v4, v8
6477- ; GFX12-NEXT: v_bfe_u32 v11, v5, 16, 1
6478- ; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_2)
6479- ; GFX12-NEXT: v_bfe_u32 v10, v4, 16, 1
6480- ; GFX12-NEXT: v_or_b32_e32 v12, 0x400000, v4
6481- ; GFX12-NEXT: v_cmp_u_f32_e32 vcc_lo, v4, v4
6482- ; GFX12-NEXT: v_or_b32_e32 v13, 0x400000, v5
6483- ; GFX12-NEXT: v_add3_u32 v11, v11, v5, 0x7fff
6484- ; GFX12-NEXT: v_add3_u32 v10, v10, v4, 0x7fff
6485- ; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_4)
6486- ; GFX12-NEXT: v_cndmask_b32_e32 v4, v10, v12, vcc_lo
6487- ; GFX12-NEXT: v_cmp_u_f32_e32 vcc_lo, v5, v5
6488- ; GFX12-NEXT: v_cndmask_b32_e32 v5, v11, v13, vcc_lo
6489- ; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
6490- ; GFX12-NEXT: v_perm_b32 v5, v5, v4, 0x7060302
6491- ; GFX12-NEXT: v_mov_b32_e32 v4, v5
6492- ; GFX12-NEXT: v_mov_b32_e32 v5, v6
6493- ; GFX12-NEXT: .LBB17_4: ; Parent Loop BB17_3 Depth=1
6494- ; GFX12-NEXT: ; => This Inner Loop Header: Depth=2
6495- ; GFX12-NEXT: v_readfirstlane_b32 s4, v0
6496- ; GFX12-NEXT: v_readfirstlane_b32 s5, v1
6497- ; GFX12-NEXT: v_readfirstlane_b32 s6, v2
6498- ; GFX12-NEXT: v_readfirstlane_b32 s7, v3
6499- ; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
6500- ; GFX12-NEXT: v_cmp_eq_u64_e32 vcc_lo, s[4:5], v[0:1]
6501- ; GFX12-NEXT: v_cmp_eq_u64_e64 s0, s[6:7], v[2:3]
6502- ; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
6503- ; GFX12-NEXT: s_and_b32 s0, vcc_lo, s0
6504- ; GFX12-NEXT: s_and_saveexec_b32 s0, s0
6505- ; GFX12-NEXT: s_wait_loadcnt 0x0
6506- ; GFX12-NEXT: buffer_atomic_cmpswap_b32 v[4:5], v7, s[4:7], null offen th:TH_ATOMIC_RETURN
6507- ; GFX12-NEXT: s_xor_b32 exec_lo, exec_lo, s0
6508- ; GFX12-NEXT: s_cbranch_execnz .LBB17_4
6509- ; GFX12-NEXT: ; %bb.5: ; in Loop: Header=BB17_3 Depth=1
6510- ; GFX12-NEXT: s_mov_b32 exec_lo, s2
6511- ; GFX12-NEXT: s_wait_loadcnt 0x0
6512- ; GFX12-NEXT: v_cmp_eq_u32_e32 vcc_lo, v4, v6
6513- ; GFX12-NEXT: v_mov_b32_e32 v6, v4
6393+ ; GFX12-NEXT: v_mov_b32_e32 v0, v5
65146394; GFX12-NEXT: global_inv scope:SCOPE_DEV
6515- ; GFX12-NEXT: s_or_b32 s1, vcc_lo, s1
6516- ; GFX12-NEXT: s_delay_alu instid0(SALU_CYCLE_1)
6517- ; GFX12-NEXT: s_and_not1_b32 exec_lo, exec_lo, s1
6518- ; GFX12-NEXT: s_cbranch_execnz .LBB17_3
6519- ; GFX12-NEXT: ; %bb.6: ; %atomicrmw.end
6520- ; GFX12-NEXT: s_or_b32 exec_lo, exec_lo, s1
6521- ; GFX12-NEXT: v_mov_b32_e32 v0, v4
65226395; GFX12-NEXT: s_setpc_b64 s[30:31]
65236396;
65246397; GFX940-LABEL: buffer_fat_ptr_agent_atomic_fadd_ret_v2bf16__offset__waterfall:
0 commit comments