brintos

brintos / llvm-project-archived public Read only

0
0
Text · 884.5 KiB · 37fad11 Raw
19164 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1200 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-TRUE16 %s3; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1200 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-FAKE16 %s4; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx942 < %s | FileCheck -check-prefix=GFX942 %s5; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-TRUE16 %s6; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1100 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-FAKE16 %s7; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1010 < %s | FileCheck -check-prefix=GFX10 %s8; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx90a < %s | FileCheck -check-prefix=GFX90A %s9; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx908 < %s | FileCheck -check-prefix=GFX908 %s10; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=tonga < %s | FileCheck -check-prefix=GFX8 %s11; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=hawaii < %s | FileCheck -check-prefix=GFX7 %s12 13; --------------------------------------------------------------------14; float15; --------------------------------------------------------------------16 17define float @flat_agent_atomic_fsub_ret_f32(ptr %ptr, float %val) #0 {18; GFX12-LABEL: flat_agent_atomic_fsub_ret_f32:19; GFX12:       ; %bb.0:20; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x021; GFX12-NEXT:    s_wait_expcnt 0x022; GFX12-NEXT:    s_wait_samplecnt 0x023; GFX12-NEXT:    s_wait_bvhcnt 0x024; GFX12-NEXT:    s_wait_kmcnt 0x025; GFX12-NEXT:    flat_load_b32 v3, v[0:1]26; GFX12-NEXT:    s_mov_b32 s0, 027; GFX12-NEXT:  .LBB0_1: ; %atomicrmw.start28; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=129; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x030; GFX12-NEXT:    v_mov_b32_e32 v4, v331; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)32; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v233; GFX12-NEXT:    s_wait_storecnt 0x034; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV35; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x036; GFX12-NEXT:    global_inv scope:SCOPE_DEV37; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v438; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)39; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s040; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)41; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s042; GFX12-NEXT:    s_cbranch_execnz .LBB0_143; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end44; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s045; GFX12-NEXT:    v_mov_b32_e32 v0, v346; GFX12-NEXT:    s_wait_loadcnt 0x047; GFX12-NEXT:    s_setpc_b64 s[30:31]48;49; GFX942-LABEL: flat_agent_atomic_fsub_ret_f32:50; GFX942:       ; %bb.0:51; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)52; GFX942-NEXT:    flat_load_dword v5, v[0:1]53; GFX942-NEXT:    s_mov_b64 s[0:1], 054; GFX942-NEXT:  .LBB0_1: ; %atomicrmw.start55; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=156; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)57; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v258; GFX942-NEXT:    buffer_wbl2 sc159; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] sc060; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)61; GFX942-NEXT:    buffer_inv sc162; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v563; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]64; GFX942-NEXT:    v_mov_b32_e32 v5, v365; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]66; GFX942-NEXT:    s_cbranch_execnz .LBB0_167; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end68; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]69; GFX942-NEXT:    v_mov_b32_e32 v0, v370; GFX942-NEXT:    s_setpc_b64 s[30:31]71;72; GFX11-LABEL: flat_agent_atomic_fsub_ret_f32:73; GFX11:       ; %bb.0:74; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)75; GFX11-NEXT:    flat_load_b32 v3, v[0:1]76; GFX11-NEXT:    s_mov_b32 s0, 077; GFX11-NEXT:  .LBB0_1: ; %atomicrmw.start78; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=179; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)80; GFX11-NEXT:    v_mov_b32_e32 v4, v381; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)82; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v283; GFX11-NEXT:    s_waitcnt_vscnt null, 0x084; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc85; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)86; GFX11-NEXT:    buffer_gl1_inv87; GFX11-NEXT:    buffer_gl0_inv88; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v489; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s090; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)91; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s092; GFX11-NEXT:    s_cbranch_execnz .LBB0_193; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end94; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s095; GFX11-NEXT:    v_mov_b32_e32 v0, v396; GFX11-NEXT:    s_setpc_b64 s[30:31]97;98; GFX10-LABEL: flat_agent_atomic_fsub_ret_f32:99; GFX10:       ; %bb.0:100; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)101; GFX10-NEXT:    flat_load_dword v3, v[0:1]102; GFX10-NEXT:    s_mov_b32 s4, 0103; GFX10-NEXT:  .LBB0_1: ; %atomicrmw.start104; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1105; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)106; GFX10-NEXT:    v_mov_b32_e32 v4, v3107; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v2108; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0109; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc110; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)111; GFX10-NEXT:    buffer_gl1_inv112; GFX10-NEXT:    buffer_gl0_inv113; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4114; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s4115; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s4116; GFX10-NEXT:    s_cbranch_execnz .LBB0_1117; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end118; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s4119; GFX10-NEXT:    v_mov_b32_e32 v0, v3120; GFX10-NEXT:    s_setpc_b64 s[30:31]121;122; GFX90A-LABEL: flat_agent_atomic_fsub_ret_f32:123; GFX90A:       ; %bb.0:124; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)125; GFX90A-NEXT:    flat_load_dword v5, v[0:1]126; GFX90A-NEXT:    s_mov_b64 s[4:5], 0127; GFX90A-NEXT:  .LBB0_1: ; %atomicrmw.start128; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1129; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)130; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v2131; GFX90A-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] glc132; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)133; GFX90A-NEXT:    buffer_wbinvl1134; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v5135; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]136; GFX90A-NEXT:    v_mov_b32_e32 v5, v3137; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]138; GFX90A-NEXT:    s_cbranch_execnz .LBB0_1139; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end140; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]141; GFX90A-NEXT:    v_mov_b32_e32 v0, v3142; GFX90A-NEXT:    s_setpc_b64 s[30:31]143;144; GFX908-LABEL: flat_agent_atomic_fsub_ret_f32:145; GFX908:       ; %bb.0:146; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)147; GFX908-NEXT:    flat_load_dword v3, v[0:1]148; GFX908-NEXT:    s_mov_b64 s[4:5], 0149; GFX908-NEXT:  .LBB0_1: ; %atomicrmw.start150; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1151; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)152; GFX908-NEXT:    v_mov_b32_e32 v4, v3153; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v2154; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc155; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)156; GFX908-NEXT:    buffer_wbinvl1157; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4158; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]159; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]160; GFX908-NEXT:    s_cbranch_execnz .LBB0_1161; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end162; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]163; GFX908-NEXT:    v_mov_b32_e32 v0, v3164; GFX908-NEXT:    s_setpc_b64 s[30:31]165;166; GFX8-LABEL: flat_agent_atomic_fsub_ret_f32:167; GFX8:       ; %bb.0:168; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)169; GFX8-NEXT:    flat_load_dword v3, v[0:1]170; GFX8-NEXT:    s_mov_b64 s[4:5], 0171; GFX8-NEXT:  .LBB0_1: ; %atomicrmw.start172; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1173; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)174; GFX8-NEXT:    v_mov_b32_e32 v4, v3175; GFX8-NEXT:    v_sub_f32_e32 v3, v4, v2176; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc177; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)178; GFX8-NEXT:    buffer_wbinvl1179; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4180; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]181; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]182; GFX8-NEXT:    s_cbranch_execnz .LBB0_1183; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end184; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]185; GFX8-NEXT:    v_mov_b32_e32 v0, v3186; GFX8-NEXT:    s_setpc_b64 s[30:31]187;188; GFX7-LABEL: flat_agent_atomic_fsub_ret_f32:189; GFX7:       ; %bb.0:190; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)191; GFX7-NEXT:    flat_load_dword v3, v[0:1]192; GFX7-NEXT:    s_mov_b64 s[4:5], 0193; GFX7-NEXT:  .LBB0_1: ; %atomicrmw.start194; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=1195; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)196; GFX7-NEXT:    v_mov_b32_e32 v4, v3197; GFX7-NEXT:    v_sub_f32_e32 v3, v4, v2198; GFX7-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc199; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)200; GFX7-NEXT:    buffer_wbinvl1201; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4202; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]203; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]204; GFX7-NEXT:    s_cbranch_execnz .LBB0_1205; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end206; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]207; GFX7-NEXT:    v_mov_b32_e32 v0, v3208; GFX7-NEXT:    s_setpc_b64 s[30:31]209  %result = atomicrmw fsub ptr %ptr, float %val syncscope("agent") seq_cst210  ret float %result211}212 213define float @flat_agent_atomic_fsub_ret_f32__offset12b_pos(ptr %ptr, float %val) #0 {214; GFX12-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_pos:215; GFX12:       ; %bb.0:216; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0217; GFX12-NEXT:    s_wait_expcnt 0x0218; GFX12-NEXT:    s_wait_samplecnt 0x0219; GFX12-NEXT:    s_wait_bvhcnt 0x0220; GFX12-NEXT:    s_wait_kmcnt 0x0221; GFX12-NEXT:    flat_load_b32 v3, v[0:1] offset:2044222; GFX12-NEXT:    s_mov_b32 s0, 0223; GFX12-NEXT:  .LBB1_1: ; %atomicrmw.start224; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=1225; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0226; GFX12-NEXT:    v_mov_b32_e32 v4, v3227; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)228; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v2229; GFX12-NEXT:    s_wait_storecnt 0x0230; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV231; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0232; GFX12-NEXT:    global_inv scope:SCOPE_DEV233; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4234; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)235; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s0236; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)237; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0238; GFX12-NEXT:    s_cbranch_execnz .LBB1_1239; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end240; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s0241; GFX12-NEXT:    v_mov_b32_e32 v0, v3242; GFX12-NEXT:    s_wait_loadcnt 0x0243; GFX12-NEXT:    s_setpc_b64 s[30:31]244;245; GFX942-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_pos:246; GFX942:       ; %bb.0:247; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)248; GFX942-NEXT:    flat_load_dword v5, v[0:1] offset:2044249; GFX942-NEXT:    s_mov_b64 s[0:1], 0250; GFX942-NEXT:  .LBB1_1: ; %atomicrmw.start251; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1252; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)253; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v2254; GFX942-NEXT:    buffer_wbl2 sc1255; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 sc0256; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)257; GFX942-NEXT:    buffer_inv sc1258; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v5259; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]260; GFX942-NEXT:    v_mov_b32_e32 v5, v3261; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]262; GFX942-NEXT:    s_cbranch_execnz .LBB1_1263; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end264; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]265; GFX942-NEXT:    v_mov_b32_e32 v0, v3266; GFX942-NEXT:    s_setpc_b64 s[30:31]267;268; GFX11-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_pos:269; GFX11:       ; %bb.0:270; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)271; GFX11-NEXT:    flat_load_b32 v3, v[0:1] offset:2044272; GFX11-NEXT:    s_mov_b32 s0, 0273; GFX11-NEXT:  .LBB1_1: ; %atomicrmw.start274; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1275; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)276; GFX11-NEXT:    v_mov_b32_e32 v4, v3277; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)278; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v2279; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0280; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 glc281; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)282; GFX11-NEXT:    buffer_gl1_inv283; GFX11-NEXT:    buffer_gl0_inv284; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4285; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s0286; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)287; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0288; GFX11-NEXT:    s_cbranch_execnz .LBB1_1289; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end290; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s0291; GFX11-NEXT:    v_mov_b32_e32 v0, v3292; GFX11-NEXT:    s_setpc_b64 s[30:31]293;294; GFX10-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_pos:295; GFX10:       ; %bb.0:296; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)297; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fc, v0298; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, 0, v1, vcc_lo299; GFX10-NEXT:    s_mov_b32 s4, 0300; GFX10-NEXT:    flat_load_dword v0, v[3:4]301; GFX10-NEXT:  .LBB1_1: ; %atomicrmw.start302; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1303; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)304; GFX10-NEXT:    v_mov_b32_e32 v1, v0305; GFX10-NEXT:    v_sub_f32_e32 v0, v1, v2306; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0307; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc308; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)309; GFX10-NEXT:    buffer_gl1_inv310; GFX10-NEXT:    buffer_gl0_inv311; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v1312; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s4313; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s4314; GFX10-NEXT:    s_cbranch_execnz .LBB1_1315; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end316; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s4317; GFX10-NEXT:    s_setpc_b64 s[30:31]318;319; GFX90A-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_pos:320; GFX90A:       ; %bb.0:321; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)322; GFX90A-NEXT:    flat_load_dword v5, v[0:1] offset:2044323; GFX90A-NEXT:    s_mov_b64 s[4:5], 0324; GFX90A-NEXT:  .LBB1_1: ; %atomicrmw.start325; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1326; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)327; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v2328; GFX90A-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 glc329; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)330; GFX90A-NEXT:    buffer_wbinvl1331; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v5332; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]333; GFX90A-NEXT:    v_mov_b32_e32 v5, v3334; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]335; GFX90A-NEXT:    s_cbranch_execnz .LBB1_1336; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end337; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]338; GFX90A-NEXT:    v_mov_b32_e32 v0, v3339; GFX90A-NEXT:    s_setpc_b64 s[30:31]340;341; GFX908-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_pos:342; GFX908:       ; %bb.0:343; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)344; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:2044345; GFX908-NEXT:    s_mov_b64 s[4:5], 0346; GFX908-NEXT:  .LBB1_1: ; %atomicrmw.start347; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1348; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)349; GFX908-NEXT:    v_mov_b32_e32 v4, v3350; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v2351; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2044 glc352; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)353; GFX908-NEXT:    buffer_wbinvl1354; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4355; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]356; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]357; GFX908-NEXT:    s_cbranch_execnz .LBB1_1358; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end359; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]360; GFX908-NEXT:    v_mov_b32_e32 v0, v3361; GFX908-NEXT:    s_setpc_b64 s[30:31]362;363; GFX8-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_pos:364; GFX8:       ; %bb.0:365; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)366; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v0367; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc368; GFX8-NEXT:    flat_load_dword v0, v[3:4]369; GFX8-NEXT:    s_mov_b64 s[4:5], 0370; GFX8-NEXT:  .LBB1_1: ; %atomicrmw.start371; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1372; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)373; GFX8-NEXT:    v_mov_b32_e32 v1, v0374; GFX8-NEXT:    v_sub_f32_e32 v0, v1, v2375; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc376; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)377; GFX8-NEXT:    buffer_wbinvl1378; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1379; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]380; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]381; GFX8-NEXT:    s_cbranch_execnz .LBB1_1382; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end383; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]384; GFX8-NEXT:    s_setpc_b64 s[30:31]385;386; GFX7-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_pos:387; GFX7:       ; %bb.0:388; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)389; GFX7-NEXT:    v_add_i32_e32 v3, vcc, 0x7fc, v0390; GFX7-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc391; GFX7-NEXT:    flat_load_dword v0, v[3:4]392; GFX7-NEXT:    s_mov_b64 s[4:5], 0393; GFX7-NEXT:  .LBB1_1: ; %atomicrmw.start394; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=1395; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)396; GFX7-NEXT:    v_mov_b32_e32 v1, v0397; GFX7-NEXT:    v_sub_f32_e32 v0, v1, v2398; GFX7-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc399; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)400; GFX7-NEXT:    buffer_wbinvl1401; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1402; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]403; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]404; GFX7-NEXT:    s_cbranch_execnz .LBB1_1405; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end406; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]407; GFX7-NEXT:    s_setpc_b64 s[30:31]408  %gep = getelementptr inbounds float, ptr %ptr, i64 511409  %result = atomicrmw fsub ptr %gep, float %val syncscope("agent") seq_cst410  ret float %result411}412 413define float @flat_agent_atomic_fsub_ret_f32__offset12b_neg(ptr %ptr, float %val) #0 {414; GFX12-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_neg:415; GFX12:       ; %bb.0:416; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0417; GFX12-NEXT:    s_wait_expcnt 0x0418; GFX12-NEXT:    s_wait_samplecnt 0x0419; GFX12-NEXT:    s_wait_bvhcnt 0x0420; GFX12-NEXT:    s_wait_kmcnt 0x0421; GFX12-NEXT:    flat_load_b32 v3, v[0:1] offset:-2048422; GFX12-NEXT:    s_mov_b32 s0, 0423; GFX12-NEXT:  .LBB2_1: ; %atomicrmw.start424; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=1425; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0426; GFX12-NEXT:    v_mov_b32_e32 v4, v3427; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)428; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v2429; GFX12-NEXT:    s_wait_storecnt 0x0430; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV431; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0432; GFX12-NEXT:    global_inv scope:SCOPE_DEV433; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4434; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)435; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s0436; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)437; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0438; GFX12-NEXT:    s_cbranch_execnz .LBB2_1439; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end440; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s0441; GFX12-NEXT:    v_mov_b32_e32 v0, v3442; GFX12-NEXT:    s_wait_loadcnt 0x0443; GFX12-NEXT:    s_setpc_b64 s[30:31]444;445; GFX942-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_neg:446; GFX942:       ; %bb.0:447; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)448; GFX942-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v0449; GFX942-NEXT:    s_movk_i32 s0, 0xf800450; GFX942-NEXT:    s_nop 0451; GFX942-NEXT:    v_addc_co_u32_e32 v5, vcc, -1, v1, vcc452; GFX942-NEXT:    flat_load_dword v7, v[4:5]453; GFX942-NEXT:    s_mov_b32 s1, -1454; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]455; GFX942-NEXT:    s_mov_b64 s[0:1], 0456; GFX942-NEXT:  .LBB2_1: ; %atomicrmw.start457; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1458; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)459; GFX942-NEXT:    v_sub_f32_e32 v6, v7, v2460; GFX942-NEXT:    buffer_wbl2 sc1461; GFX942-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[6:7] sc0462; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)463; GFX942-NEXT:    buffer_inv sc1464; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v7465; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]466; GFX942-NEXT:    v_mov_b32_e32 v7, v0467; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]468; GFX942-NEXT:    s_cbranch_execnz .LBB2_1469; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end470; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]471; GFX942-NEXT:    s_setpc_b64 s[30:31]472;473; GFX11-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_neg:474; GFX11:       ; %bb.0:475; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)476; GFX11-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v0477; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)478; GFX11-NEXT:    v_add_co_ci_u32_e64 v4, null, -1, v1, vcc_lo479; GFX11-NEXT:    s_mov_b32 s0, 0480; GFX11-NEXT:    flat_load_b32 v0, v[3:4]481; GFX11-NEXT:  .LBB2_1: ; %atomicrmw.start482; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1483; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)484; GFX11-NEXT:    v_mov_b32_e32 v1, v0485; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)486; GFX11-NEXT:    v_sub_f32_e32 v0, v1, v2487; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0488; GFX11-NEXT:    flat_atomic_cmpswap_b32 v0, v[3:4], v[0:1] glc489; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)490; GFX11-NEXT:    buffer_gl1_inv491; GFX11-NEXT:    buffer_gl0_inv492; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v1493; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s0494; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)495; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0496; GFX11-NEXT:    s_cbranch_execnz .LBB2_1497; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end498; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s0499; GFX11-NEXT:    s_setpc_b64 s[30:31]500;501; GFX10-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_neg:502; GFX10:       ; %bb.0:503; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)504; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v0505; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, -1, v1, vcc_lo506; GFX10-NEXT:    s_mov_b32 s4, 0507; GFX10-NEXT:    flat_load_dword v0, v[3:4]508; GFX10-NEXT:  .LBB2_1: ; %atomicrmw.start509; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1510; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)511; GFX10-NEXT:    v_mov_b32_e32 v1, v0512; GFX10-NEXT:    v_sub_f32_e32 v0, v1, v2513; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0514; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc515; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)516; GFX10-NEXT:    buffer_gl1_inv517; GFX10-NEXT:    buffer_gl0_inv518; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v1519; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s4520; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s4521; GFX10-NEXT:    s_cbranch_execnz .LBB2_1522; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end523; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s4524; GFX10-NEXT:    s_setpc_b64 s[30:31]525;526; GFX90A-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_neg:527; GFX90A:       ; %bb.0:528; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)529; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v0530; GFX90A-NEXT:    s_mov_b64 s[4:5], vcc531; GFX90A-NEXT:    v_addc_co_u32_e64 v5, s[4:5], -1, v1, s[4:5]532; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc533; GFX90A-NEXT:    v_mov_b32_e32 v0, v4534; GFX90A-NEXT:    flat_load_dword v1, v[0:1]535; GFX90A-NEXT:    s_mov_b64 s[4:5], 0536; GFX90A-NEXT:  .LBB2_1: ; %atomicrmw.start537; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1538; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)539; GFX90A-NEXT:    v_sub_f32_e32 v0, v1, v2540; GFX90A-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc541; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)542; GFX90A-NEXT:    buffer_wbinvl1543; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1544; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]545; GFX90A-NEXT:    v_mov_b32_e32 v1, v0546; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]547; GFX90A-NEXT:    s_cbranch_execnz .LBB2_1548; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end549; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]550; GFX90A-NEXT:    s_setpc_b64 s[30:31]551;552; GFX908-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_neg:553; GFX908:       ; %bb.0:554; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)555; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v0556; GFX908-NEXT:    s_mov_b64 s[4:5], vcc557; GFX908-NEXT:    v_addc_co_u32_e64 v4, s[4:5], -1, v1, s[4:5]558; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc559; GFX908-NEXT:    v_mov_b32_e32 v0, v3560; GFX908-NEXT:    flat_load_dword v0, v[0:1]561; GFX908-NEXT:    s_mov_b64 s[4:5], 0562; GFX908-NEXT:  .LBB2_1: ; %atomicrmw.start563; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1564; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)565; GFX908-NEXT:    v_mov_b32_e32 v1, v0566; GFX908-NEXT:    v_sub_f32_e32 v0, v1, v2567; GFX908-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc568; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)569; GFX908-NEXT:    buffer_wbinvl1570; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1571; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]572; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]573; GFX908-NEXT:    s_cbranch_execnz .LBB2_1574; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end575; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]576; GFX908-NEXT:    s_setpc_b64 s[30:31]577;578; GFX8-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_neg:579; GFX8:       ; %bb.0:580; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)581; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v0582; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, -1, v1, vcc583; GFX8-NEXT:    flat_load_dword v0, v[3:4]584; GFX8-NEXT:    s_mov_b64 s[4:5], 0585; GFX8-NEXT:  .LBB2_1: ; %atomicrmw.start586; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1587; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)588; GFX8-NEXT:    v_mov_b32_e32 v1, v0589; GFX8-NEXT:    v_sub_f32_e32 v0, v1, v2590; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc591; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)592; GFX8-NEXT:    buffer_wbinvl1593; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1594; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]595; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]596; GFX8-NEXT:    s_cbranch_execnz .LBB2_1597; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end598; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]599; GFX8-NEXT:    s_setpc_b64 s[30:31]600;601; GFX7-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_neg:602; GFX7:       ; %bb.0:603; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)604; GFX7-NEXT:    v_add_i32_e32 v3, vcc, 0xfffff800, v0605; GFX7-NEXT:    v_addc_u32_e32 v4, vcc, -1, v1, vcc606; GFX7-NEXT:    flat_load_dword v0, v[3:4]607; GFX7-NEXT:    s_mov_b64 s[4:5], 0608; GFX7-NEXT:  .LBB2_1: ; %atomicrmw.start609; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=1610; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)611; GFX7-NEXT:    v_mov_b32_e32 v1, v0612; GFX7-NEXT:    v_sub_f32_e32 v0, v1, v2613; GFX7-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc614; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)615; GFX7-NEXT:    buffer_wbinvl1616; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1617; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]618; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]619; GFX7-NEXT:    s_cbranch_execnz .LBB2_1620; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end621; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]622; GFX7-NEXT:    s_setpc_b64 s[30:31]623  %gep = getelementptr inbounds float, ptr %ptr, i64 -512624  %result = atomicrmw fsub ptr %gep, float %val syncscope("agent") seq_cst625  ret float %result626}627 628define void @flat_agent_atomic_fsub_noret_f32(ptr %ptr, float %val) #0 {629; GFX12-LABEL: flat_agent_atomic_fsub_noret_f32:630; GFX12:       ; %bb.0:631; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0632; GFX12-NEXT:    s_wait_expcnt 0x0633; GFX12-NEXT:    s_wait_samplecnt 0x0634; GFX12-NEXT:    s_wait_bvhcnt 0x0635; GFX12-NEXT:    s_wait_kmcnt 0x0636; GFX12-NEXT:    flat_load_b32 v4, v[0:1]637; GFX12-NEXT:    s_mov_b32 s0, 0638; GFX12-NEXT:  .LBB3_1: ; %atomicrmw.start639; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=1640; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0641; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v2642; GFX12-NEXT:    s_wait_storecnt 0x0643; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV644; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0645; GFX12-NEXT:    global_inv scope:SCOPE_DEV646; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4647; GFX12-NEXT:    v_mov_b32_e32 v4, v3648; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)649; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s0650; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)651; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0652; GFX12-NEXT:    s_cbranch_execnz .LBB3_1653; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end654; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s0655; GFX12-NEXT:    s_wait_loadcnt 0x0656; GFX12-NEXT:    s_setpc_b64 s[30:31]657;658; GFX942-LABEL: flat_agent_atomic_fsub_noret_f32:659; GFX942:       ; %bb.0:660; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)661; GFX942-NEXT:    flat_load_dword v5, v[0:1]662; GFX942-NEXT:    s_mov_b64 s[0:1], 0663; GFX942-NEXT:  .LBB3_1: ; %atomicrmw.start664; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1665; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)666; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v2667; GFX942-NEXT:    buffer_wbl2 sc1668; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] sc0669; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)670; GFX942-NEXT:    buffer_inv sc1671; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v5672; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]673; GFX942-NEXT:    v_mov_b32_e32 v5, v3674; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]675; GFX942-NEXT:    s_cbranch_execnz .LBB3_1676; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end677; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]678; GFX942-NEXT:    s_setpc_b64 s[30:31]679;680; GFX11-LABEL: flat_agent_atomic_fsub_noret_f32:681; GFX11:       ; %bb.0:682; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)683; GFX11-NEXT:    flat_load_b32 v4, v[0:1]684; GFX11-NEXT:    s_mov_b32 s0, 0685; GFX11-NEXT:  .LBB3_1: ; %atomicrmw.start686; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1687; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)688; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v2689; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0690; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc691; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)692; GFX11-NEXT:    buffer_gl1_inv693; GFX11-NEXT:    buffer_gl0_inv694; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4695; GFX11-NEXT:    v_mov_b32_e32 v4, v3696; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s0697; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)698; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0699; GFX11-NEXT:    s_cbranch_execnz .LBB3_1700; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end701; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s0702; GFX11-NEXT:    s_setpc_b64 s[30:31]703;704; GFX10-LABEL: flat_agent_atomic_fsub_noret_f32:705; GFX10:       ; %bb.0:706; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)707; GFX10-NEXT:    flat_load_dword v4, v[0:1]708; GFX10-NEXT:    s_mov_b32 s4, 0709; GFX10-NEXT:  .LBB3_1: ; %atomicrmw.start710; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1711; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)712; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v2713; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0714; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc715; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)716; GFX10-NEXT:    buffer_gl1_inv717; GFX10-NEXT:    buffer_gl0_inv718; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4719; GFX10-NEXT:    v_mov_b32_e32 v4, v3720; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s4721; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s4722; GFX10-NEXT:    s_cbranch_execnz .LBB3_1723; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end724; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s4725; GFX10-NEXT:    s_setpc_b64 s[30:31]726;727; GFX90A-LABEL: flat_agent_atomic_fsub_noret_f32:728; GFX90A:       ; %bb.0:729; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)730; GFX90A-NEXT:    flat_load_dword v5, v[0:1]731; GFX90A-NEXT:    s_mov_b64 s[4:5], 0732; GFX90A-NEXT:  .LBB3_1: ; %atomicrmw.start733; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1734; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)735; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v2736; GFX90A-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] glc737; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)738; GFX90A-NEXT:    buffer_wbinvl1739; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v5740; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]741; GFX90A-NEXT:    v_mov_b32_e32 v5, v3742; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]743; GFX90A-NEXT:    s_cbranch_execnz .LBB3_1744; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end745; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]746; GFX90A-NEXT:    s_setpc_b64 s[30:31]747;748; GFX908-LABEL: flat_agent_atomic_fsub_noret_f32:749; GFX908:       ; %bb.0:750; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)751; GFX908-NEXT:    flat_load_dword v4, v[0:1]752; GFX908-NEXT:    s_mov_b64 s[4:5], 0753; GFX908-NEXT:  .LBB3_1: ; %atomicrmw.start754; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1755; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)756; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v2757; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc758; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)759; GFX908-NEXT:    buffer_wbinvl1760; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4761; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]762; GFX908-NEXT:    v_mov_b32_e32 v4, v3763; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]764; GFX908-NEXT:    s_cbranch_execnz .LBB3_1765; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end766; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]767; GFX908-NEXT:    s_setpc_b64 s[30:31]768;769; GFX8-LABEL: flat_agent_atomic_fsub_noret_f32:770; GFX8:       ; %bb.0:771; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)772; GFX8-NEXT:    flat_load_dword v4, v[0:1]773; GFX8-NEXT:    s_mov_b64 s[4:5], 0774; GFX8-NEXT:  .LBB3_1: ; %atomicrmw.start775; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1776; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)777; GFX8-NEXT:    v_sub_f32_e32 v3, v4, v2778; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc779; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)780; GFX8-NEXT:    buffer_wbinvl1781; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4782; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]783; GFX8-NEXT:    v_mov_b32_e32 v4, v3784; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]785; GFX8-NEXT:    s_cbranch_execnz .LBB3_1786; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end787; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]788; GFX8-NEXT:    s_setpc_b64 s[30:31]789;790; GFX7-LABEL: flat_agent_atomic_fsub_noret_f32:791; GFX7:       ; %bb.0:792; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)793; GFX7-NEXT:    flat_load_dword v4, v[0:1]794; GFX7-NEXT:    s_mov_b64 s[4:5], 0795; GFX7-NEXT:  .LBB3_1: ; %atomicrmw.start796; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=1797; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)798; GFX7-NEXT:    v_sub_f32_e32 v3, v4, v2799; GFX7-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc800; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)801; GFX7-NEXT:    buffer_wbinvl1802; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4803; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]804; GFX7-NEXT:    v_mov_b32_e32 v4, v3805; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]806; GFX7-NEXT:    s_cbranch_execnz .LBB3_1807; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end808; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]809; GFX7-NEXT:    s_setpc_b64 s[30:31]810  %unused = atomicrmw fsub ptr %ptr, float %val syncscope("agent") seq_cst811  ret void812}813 814define void @flat_agent_atomic_fsub_noret_f32__offset12b_pos(ptr %ptr, float %val) #0 {815; GFX12-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_pos:816; GFX12:       ; %bb.0:817; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0818; GFX12-NEXT:    s_wait_expcnt 0x0819; GFX12-NEXT:    s_wait_samplecnt 0x0820; GFX12-NEXT:    s_wait_bvhcnt 0x0821; GFX12-NEXT:    s_wait_kmcnt 0x0822; GFX12-NEXT:    flat_load_b32 v4, v[0:1] offset:2044823; GFX12-NEXT:    s_mov_b32 s0, 0824; GFX12-NEXT:  .LBB4_1: ; %atomicrmw.start825; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=1826; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0827; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v2828; GFX12-NEXT:    s_wait_storecnt 0x0829; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV830; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0831; GFX12-NEXT:    global_inv scope:SCOPE_DEV832; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4833; GFX12-NEXT:    v_mov_b32_e32 v4, v3834; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)835; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s0836; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)837; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0838; GFX12-NEXT:    s_cbranch_execnz .LBB4_1839; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end840; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s0841; GFX12-NEXT:    s_wait_loadcnt 0x0842; GFX12-NEXT:    s_setpc_b64 s[30:31]843;844; GFX942-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_pos:845; GFX942:       ; %bb.0:846; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)847; GFX942-NEXT:    flat_load_dword v5, v[0:1] offset:2044848; GFX942-NEXT:    s_mov_b64 s[0:1], 0849; GFX942-NEXT:  .LBB4_1: ; %atomicrmw.start850; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1851; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)852; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v2853; GFX942-NEXT:    buffer_wbl2 sc1854; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 sc0855; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)856; GFX942-NEXT:    buffer_inv sc1857; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v5858; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]859; GFX942-NEXT:    v_mov_b32_e32 v5, v3860; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]861; GFX942-NEXT:    s_cbranch_execnz .LBB4_1862; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end863; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]864; GFX942-NEXT:    s_setpc_b64 s[30:31]865;866; GFX11-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_pos:867; GFX11:       ; %bb.0:868; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)869; GFX11-NEXT:    flat_load_b32 v4, v[0:1] offset:2044870; GFX11-NEXT:    s_mov_b32 s0, 0871; GFX11-NEXT:  .LBB4_1: ; %atomicrmw.start872; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1873; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)874; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v2875; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0876; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 glc877; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)878; GFX11-NEXT:    buffer_gl1_inv879; GFX11-NEXT:    buffer_gl0_inv880; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4881; GFX11-NEXT:    v_mov_b32_e32 v4, v3882; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s0883; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)884; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0885; GFX11-NEXT:    s_cbranch_execnz .LBB4_1886; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end887; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s0888; GFX11-NEXT:    s_setpc_b64 s[30:31]889;890; GFX10-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_pos:891; GFX10:       ; %bb.0:892; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)893; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fc, v0894; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo895; GFX10-NEXT:    s_mov_b32 s4, 0896; GFX10-NEXT:    flat_load_dword v4, v[0:1]897; GFX10-NEXT:  .LBB4_1: ; %atomicrmw.start898; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1899; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)900; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v2901; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0902; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc903; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)904; GFX10-NEXT:    buffer_gl1_inv905; GFX10-NEXT:    buffer_gl0_inv906; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4907; GFX10-NEXT:    v_mov_b32_e32 v4, v3908; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s4909; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s4910; GFX10-NEXT:    s_cbranch_execnz .LBB4_1911; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end912; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s4913; GFX10-NEXT:    s_setpc_b64 s[30:31]914;915; GFX90A-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_pos:916; GFX90A:       ; %bb.0:917; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)918; GFX90A-NEXT:    flat_load_dword v5, v[0:1] offset:2044919; GFX90A-NEXT:    s_mov_b64 s[4:5], 0920; GFX90A-NEXT:  .LBB4_1: ; %atomicrmw.start921; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1922; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)923; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v2924; GFX90A-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 glc925; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)926; GFX90A-NEXT:    buffer_wbinvl1927; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v5928; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]929; GFX90A-NEXT:    v_mov_b32_e32 v5, v3930; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]931; GFX90A-NEXT:    s_cbranch_execnz .LBB4_1932; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end933; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]934; GFX90A-NEXT:    s_setpc_b64 s[30:31]935;936; GFX908-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_pos:937; GFX908:       ; %bb.0:938; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)939; GFX908-NEXT:    flat_load_dword v4, v[0:1] offset:2044940; GFX908-NEXT:    s_mov_b64 s[4:5], 0941; GFX908-NEXT:  .LBB4_1: ; %atomicrmw.start942; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1943; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)944; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v2945; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2044 glc946; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)947; GFX908-NEXT:    buffer_wbinvl1948; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4949; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]950; GFX908-NEXT:    v_mov_b32_e32 v4, v3951; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]952; GFX908-NEXT:    s_cbranch_execnz .LBB4_1953; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end954; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]955; GFX908-NEXT:    s_setpc_b64 s[30:31]956;957; GFX8-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_pos:958; GFX8:       ; %bb.0:959; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)960; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v0961; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc962; GFX8-NEXT:    flat_load_dword v4, v[0:1]963; GFX8-NEXT:    s_mov_b64 s[4:5], 0964; GFX8-NEXT:  .LBB4_1: ; %atomicrmw.start965; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1966; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)967; GFX8-NEXT:    v_sub_f32_e32 v3, v4, v2968; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc969; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)970; GFX8-NEXT:    buffer_wbinvl1971; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4972; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]973; GFX8-NEXT:    v_mov_b32_e32 v4, v3974; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]975; GFX8-NEXT:    s_cbranch_execnz .LBB4_1976; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end977; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]978; GFX8-NEXT:    s_setpc_b64 s[30:31]979;980; GFX7-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_pos:981; GFX7:       ; %bb.0:982; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)983; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fc, v0984; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc985; GFX7-NEXT:    flat_load_dword v4, v[0:1]986; GFX7-NEXT:    s_mov_b64 s[4:5], 0987; GFX7-NEXT:  .LBB4_1: ; %atomicrmw.start988; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=1989; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)990; GFX7-NEXT:    v_sub_f32_e32 v3, v4, v2991; GFX7-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc992; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)993; GFX7-NEXT:    buffer_wbinvl1994; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4995; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]996; GFX7-NEXT:    v_mov_b32_e32 v4, v3997; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]998; GFX7-NEXT:    s_cbranch_execnz .LBB4_1999; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end1000; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]1001; GFX7-NEXT:    s_setpc_b64 s[30:31]1002  %gep = getelementptr inbounds float, ptr %ptr, i64 5111003  %unused = atomicrmw fsub ptr %gep, float %val syncscope("agent") seq_cst1004  ret void1005}1006 1007define void @flat_agent_atomic_fsub_noret_f32__offset12b_neg(ptr %ptr, float %val) #0 {1008; GFX12-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_neg:1009; GFX12:       ; %bb.0:1010; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01011; GFX12-NEXT:    s_wait_expcnt 0x01012; GFX12-NEXT:    s_wait_samplecnt 0x01013; GFX12-NEXT:    s_wait_bvhcnt 0x01014; GFX12-NEXT:    s_wait_kmcnt 0x01015; GFX12-NEXT:    flat_load_b32 v4, v[0:1] offset:-20481016; GFX12-NEXT:    s_mov_b32 s0, 01017; GFX12-NEXT:  .LBB5_1: ; %atomicrmw.start1018; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=11019; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01020; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v21021; GFX12-NEXT:    s_wait_storecnt 0x01022; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV1023; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01024; GFX12-NEXT:    global_inv scope:SCOPE_DEV1025; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41026; GFX12-NEXT:    v_mov_b32_e32 v4, v31027; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1028; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s01029; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1030; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01031; GFX12-NEXT:    s_cbranch_execnz .LBB5_11032; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end1033; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s01034; GFX12-NEXT:    s_wait_loadcnt 0x01035; GFX12-NEXT:    s_setpc_b64 s[30:31]1036;1037; GFX942-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_neg:1038; GFX942:       ; %bb.0:1039; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1040; GFX942-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v01041; GFX942-NEXT:    s_movk_i32 s0, 0xf8001042; GFX942-NEXT:    s_nop 01043; GFX942-NEXT:    v_addc_co_u32_e32 v5, vcc, -1, v1, vcc1044; GFX942-NEXT:    flat_load_dword v5, v[4:5]1045; GFX942-NEXT:    s_mov_b32 s1, -11046; GFX942-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, s[0:1]1047; GFX942-NEXT:    s_mov_b64 s[0:1], 01048; GFX942-NEXT:  .LBB5_1: ; %atomicrmw.start1049; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11050; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1051; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v21052; GFX942-NEXT:    buffer_wbl2 sc11053; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] sc01054; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1055; GFX942-NEXT:    buffer_inv sc11056; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51057; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1058; GFX942-NEXT:    v_mov_b32_e32 v5, v31059; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1060; GFX942-NEXT:    s_cbranch_execnz .LBB5_11061; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1062; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1063; GFX942-NEXT:    s_setpc_b64 s[30:31]1064;1065; GFX11-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_neg:1066; GFX11:       ; %bb.0:1067; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1068; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v01069; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1070; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo1071; GFX11-NEXT:    s_mov_b32 s0, 01072; GFX11-NEXT:    flat_load_b32 v4, v[0:1]1073; GFX11-NEXT:  .LBB5_1: ; %atomicrmw.start1074; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=11075; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1076; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v21077; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01078; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc1079; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1080; GFX11-NEXT:    buffer_gl1_inv1081; GFX11-NEXT:    buffer_gl0_inv1082; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41083; GFX11-NEXT:    v_mov_b32_e32 v4, v31084; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s01085; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1086; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01087; GFX11-NEXT:    s_cbranch_execnz .LBB5_11088; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end1089; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s01090; GFX11-NEXT:    s_setpc_b64 s[30:31]1091;1092; GFX10-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_neg:1093; GFX10:       ; %bb.0:1094; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1095; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v01096; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo1097; GFX10-NEXT:    s_mov_b32 s4, 01098; GFX10-NEXT:    flat_load_dword v4, v[0:1]1099; GFX10-NEXT:  .LBB5_1: ; %atomicrmw.start1100; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=11101; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1102; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v21103; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01104; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1105; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1106; GFX10-NEXT:    buffer_gl1_inv1107; GFX10-NEXT:    buffer_gl0_inv1108; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41109; GFX10-NEXT:    v_mov_b32_e32 v4, v31110; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s41111; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s41112; GFX10-NEXT:    s_cbranch_execnz .LBB5_11113; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end1114; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s41115; GFX10-NEXT:    s_setpc_b64 s[30:31]1116;1117; GFX90A-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_neg:1118; GFX90A:       ; %bb.0:1119; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1120; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v01121; GFX90A-NEXT:    s_mov_b64 s[4:5], vcc1122; GFX90A-NEXT:    v_addc_co_u32_e64 v5, s[4:5], -1, v1, s[4:5]1123; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc1124; GFX90A-NEXT:    v_mov_b32_e32 v0, v41125; GFX90A-NEXT:    flat_load_dword v1, v[0:1]1126; GFX90A-NEXT:    s_mov_b64 s[4:5], 01127; GFX90A-NEXT:  .LBB5_1: ; %atomicrmw.start1128; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11129; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1130; GFX90A-NEXT:    v_sub_f32_e32 v0, v1, v21131; GFX90A-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc1132; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1133; GFX90A-NEXT:    buffer_wbinvl11134; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v11135; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1136; GFX90A-NEXT:    v_mov_b32_e32 v1, v01137; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1138; GFX90A-NEXT:    s_cbranch_execnz .LBB5_11139; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1140; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1141; GFX90A-NEXT:    s_setpc_b64 s[30:31]1142;1143; GFX908-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_neg:1144; GFX908:       ; %bb.0:1145; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1146; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v01147; GFX908-NEXT:    s_mov_b64 s[4:5], vcc1148; GFX908-NEXT:    v_addc_co_u32_e64 v4, s[4:5], -1, v1, s[4:5]1149; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc1150; GFX908-NEXT:    v_mov_b32_e32 v0, v31151; GFX908-NEXT:    flat_load_dword v1, v[0:1]1152; GFX908-NEXT:    s_mov_b64 s[4:5], 01153; GFX908-NEXT:  .LBB5_1: ; %atomicrmw.start1154; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11155; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1156; GFX908-NEXT:    v_sub_f32_e32 v0, v1, v21157; GFX908-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc1158; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1159; GFX908-NEXT:    buffer_wbinvl11160; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v11161; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1162; GFX908-NEXT:    v_mov_b32_e32 v1, v01163; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1164; GFX908-NEXT:    s_cbranch_execnz .LBB5_11165; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1166; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1167; GFX908-NEXT:    s_setpc_b64 s[30:31]1168;1169; GFX8-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_neg:1170; GFX8:       ; %bb.0:1171; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1172; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffff800, v01173; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc1174; GFX8-NEXT:    flat_load_dword v4, v[0:1]1175; GFX8-NEXT:    s_mov_b64 s[4:5], 01176; GFX8-NEXT:  .LBB5_1: ; %atomicrmw.start1177; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11178; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1179; GFX8-NEXT:    v_sub_f32_e32 v3, v4, v21180; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1181; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1182; GFX8-NEXT:    buffer_wbinvl11183; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41184; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1185; GFX8-NEXT:    v_mov_b32_e32 v4, v31186; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1187; GFX8-NEXT:    s_cbranch_execnz .LBB5_11188; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1189; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1190; GFX8-NEXT:    s_setpc_b64 s[30:31]1191;1192; GFX7-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_neg:1193; GFX7:       ; %bb.0:1194; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1195; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v01196; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc1197; GFX7-NEXT:    flat_load_dword v4, v[0:1]1198; GFX7-NEXT:    s_mov_b64 s[4:5], 01199; GFX7-NEXT:  .LBB5_1: ; %atomicrmw.start1200; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=11201; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1202; GFX7-NEXT:    v_sub_f32_e32 v3, v4, v21203; GFX7-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1204; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1205; GFX7-NEXT:    buffer_wbinvl11206; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41207; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1208; GFX7-NEXT:    v_mov_b32_e32 v4, v31209; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]1210; GFX7-NEXT:    s_cbranch_execnz .LBB5_11211; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end1212; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]1213; GFX7-NEXT:    s_setpc_b64 s[30:31]1214  %gep = getelementptr inbounds float, ptr %ptr, i64 -5121215  %unused = atomicrmw fsub ptr %gep, float %val syncscope("agent") seq_cst1216  ret void1217}1218 1219define float @flat_system_atomic_fsub_ret_f32__offset12b_pos(ptr %ptr, float %val) #0 {1220; GFX12-LABEL: flat_system_atomic_fsub_ret_f32__offset12b_pos:1221; GFX12:       ; %bb.0:1222; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01223; GFX12-NEXT:    s_wait_expcnt 0x01224; GFX12-NEXT:    s_wait_samplecnt 0x01225; GFX12-NEXT:    s_wait_bvhcnt 0x01226; GFX12-NEXT:    s_wait_kmcnt 0x01227; GFX12-NEXT:    flat_load_b32 v3, v[0:1] offset:20441228; GFX12-NEXT:    s_mov_b32 s0, 01229; GFX12-NEXT:  .LBB6_1: ; %atomicrmw.start1230; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=11231; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01232; GFX12-NEXT:    v_mov_b32_e32 v4, v31233; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)1234; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v21235; GFX12-NEXT:    global_wb scope:SCOPE_SYS1236; GFX12-NEXT:    s_wait_storecnt 0x01237; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS1238; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01239; GFX12-NEXT:    global_inv scope:SCOPE_SYS1240; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41241; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1242; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s01243; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1244; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01245; GFX12-NEXT:    s_cbranch_execnz .LBB6_11246; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end1247; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s01248; GFX12-NEXT:    v_mov_b32_e32 v0, v31249; GFX12-NEXT:    s_wait_loadcnt 0x01250; GFX12-NEXT:    s_setpc_b64 s[30:31]1251;1252; GFX942-LABEL: flat_system_atomic_fsub_ret_f32__offset12b_pos:1253; GFX942:       ; %bb.0:1254; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1255; GFX942-NEXT:    flat_load_dword v5, v[0:1] offset:20441256; GFX942-NEXT:    s_mov_b64 s[0:1], 01257; GFX942-NEXT:  .LBB6_1: ; %atomicrmw.start1258; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11259; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1260; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v21261; GFX942-NEXT:    buffer_wbl2 sc0 sc11262; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 sc0 sc11263; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1264; GFX942-NEXT:    buffer_inv sc0 sc11265; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51266; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1267; GFX942-NEXT:    v_mov_b32_e32 v5, v31268; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1269; GFX942-NEXT:    s_cbranch_execnz .LBB6_11270; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1271; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1272; GFX942-NEXT:    v_mov_b32_e32 v0, v31273; GFX942-NEXT:    s_setpc_b64 s[30:31]1274;1275; GFX11-LABEL: flat_system_atomic_fsub_ret_f32__offset12b_pos:1276; GFX11:       ; %bb.0:1277; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1278; GFX11-NEXT:    flat_load_b32 v3, v[0:1] offset:20441279; GFX11-NEXT:    s_mov_b32 s0, 01280; GFX11-NEXT:  .LBB6_1: ; %atomicrmw.start1281; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=11282; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1283; GFX11-NEXT:    v_mov_b32_e32 v4, v31284; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1285; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v21286; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01287; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 glc1288; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1289; GFX11-NEXT:    buffer_gl1_inv1290; GFX11-NEXT:    buffer_gl0_inv1291; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41292; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s01293; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1294; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01295; GFX11-NEXT:    s_cbranch_execnz .LBB6_11296; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end1297; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s01298; GFX11-NEXT:    v_mov_b32_e32 v0, v31299; GFX11-NEXT:    s_setpc_b64 s[30:31]1300;1301; GFX10-LABEL: flat_system_atomic_fsub_ret_f32__offset12b_pos:1302; GFX10:       ; %bb.0:1303; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1304; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fc, v01305; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, 0, v1, vcc_lo1306; GFX10-NEXT:    s_mov_b32 s4, 01307; GFX10-NEXT:    flat_load_dword v0, v[3:4]1308; GFX10-NEXT:  .LBB6_1: ; %atomicrmw.start1309; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=11310; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1311; GFX10-NEXT:    v_mov_b32_e32 v1, v01312; GFX10-NEXT:    v_sub_f32_e32 v0, v1, v21313; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01314; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc1315; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1316; GFX10-NEXT:    buffer_gl1_inv1317; GFX10-NEXT:    buffer_gl0_inv1318; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v11319; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s41320; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s41321; GFX10-NEXT:    s_cbranch_execnz .LBB6_11322; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end1323; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s41324; GFX10-NEXT:    s_setpc_b64 s[30:31]1325;1326; GFX90A-LABEL: flat_system_atomic_fsub_ret_f32__offset12b_pos:1327; GFX90A:       ; %bb.0:1328; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1329; GFX90A-NEXT:    flat_load_dword v5, v[0:1] offset:20441330; GFX90A-NEXT:    s_mov_b64 s[4:5], 01331; GFX90A-NEXT:  .LBB6_1: ; %atomicrmw.start1332; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11333; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1334; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v21335; GFX90A-NEXT:    buffer_wbl21336; GFX90A-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 glc1337; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1338; GFX90A-NEXT:    buffer_invl21339; GFX90A-NEXT:    buffer_wbinvl11340; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51341; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1342; GFX90A-NEXT:    v_mov_b32_e32 v5, v31343; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1344; GFX90A-NEXT:    s_cbranch_execnz .LBB6_11345; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1346; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1347; GFX90A-NEXT:    v_mov_b32_e32 v0, v31348; GFX90A-NEXT:    s_setpc_b64 s[30:31]1349;1350; GFX908-LABEL: flat_system_atomic_fsub_ret_f32__offset12b_pos:1351; GFX908:       ; %bb.0:1352; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1353; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:20441354; GFX908-NEXT:    s_mov_b64 s[4:5], 01355; GFX908-NEXT:  .LBB6_1: ; %atomicrmw.start1356; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11357; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1358; GFX908-NEXT:    v_mov_b32_e32 v4, v31359; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v21360; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2044 glc1361; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1362; GFX908-NEXT:    buffer_wbinvl11363; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41364; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1365; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1366; GFX908-NEXT:    s_cbranch_execnz .LBB6_11367; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1368; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1369; GFX908-NEXT:    v_mov_b32_e32 v0, v31370; GFX908-NEXT:    s_setpc_b64 s[30:31]1371;1372; GFX8-LABEL: flat_system_atomic_fsub_ret_f32__offset12b_pos:1373; GFX8:       ; %bb.0:1374; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1375; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v01376; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc1377; GFX8-NEXT:    flat_load_dword v0, v[3:4]1378; GFX8-NEXT:    s_mov_b64 s[4:5], 01379; GFX8-NEXT:  .LBB6_1: ; %atomicrmw.start1380; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11381; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1382; GFX8-NEXT:    v_mov_b32_e32 v1, v01383; GFX8-NEXT:    v_sub_f32_e32 v0, v1, v21384; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc1385; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1386; GFX8-NEXT:    buffer_wbinvl11387; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v11388; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1389; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1390; GFX8-NEXT:    s_cbranch_execnz .LBB6_11391; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1392; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1393; GFX8-NEXT:    s_setpc_b64 s[30:31]1394;1395; GFX7-LABEL: flat_system_atomic_fsub_ret_f32__offset12b_pos:1396; GFX7:       ; %bb.0:1397; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1398; GFX7-NEXT:    v_add_i32_e32 v3, vcc, 0x7fc, v01399; GFX7-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc1400; GFX7-NEXT:    flat_load_dword v0, v[3:4]1401; GFX7-NEXT:    s_mov_b64 s[4:5], 01402; GFX7-NEXT:  .LBB6_1: ; %atomicrmw.start1403; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=11404; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1405; GFX7-NEXT:    v_mov_b32_e32 v1, v01406; GFX7-NEXT:    v_sub_f32_e32 v0, v1, v21407; GFX7-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc1408; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1409; GFX7-NEXT:    buffer_wbinvl11410; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v11411; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1412; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]1413; GFX7-NEXT:    s_cbranch_execnz .LBB6_11414; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end1415; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]1416; GFX7-NEXT:    s_setpc_b64 s[30:31]1417  %gep = getelementptr inbounds float, ptr %ptr, i64 5111418  %result = atomicrmw fsub ptr %gep, float %val seq_cst1419  ret float %result1420}1421 1422define void @flat_system_atomic_fsub_noret_f32__offset12b_pos(ptr %ptr, float %val) #0 {1423; GFX12-LABEL: flat_system_atomic_fsub_noret_f32__offset12b_pos:1424; GFX12:       ; %bb.0:1425; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01426; GFX12-NEXT:    s_wait_expcnt 0x01427; GFX12-NEXT:    s_wait_samplecnt 0x01428; GFX12-NEXT:    s_wait_bvhcnt 0x01429; GFX12-NEXT:    s_wait_kmcnt 0x01430; GFX12-NEXT:    flat_load_b32 v4, v[0:1] offset:20441431; GFX12-NEXT:    s_mov_b32 s0, 01432; GFX12-NEXT:  .LBB7_1: ; %atomicrmw.start1433; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=11434; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01435; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v21436; GFX12-NEXT:    global_wb scope:SCOPE_SYS1437; GFX12-NEXT:    s_wait_storecnt 0x01438; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS1439; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01440; GFX12-NEXT:    global_inv scope:SCOPE_SYS1441; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41442; GFX12-NEXT:    v_mov_b32_e32 v4, v31443; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1444; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s01445; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1446; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01447; GFX12-NEXT:    s_cbranch_execnz .LBB7_11448; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end1449; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s01450; GFX12-NEXT:    s_wait_loadcnt 0x01451; GFX12-NEXT:    s_setpc_b64 s[30:31]1452;1453; GFX942-LABEL: flat_system_atomic_fsub_noret_f32__offset12b_pos:1454; GFX942:       ; %bb.0:1455; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1456; GFX942-NEXT:    flat_load_dword v5, v[0:1] offset:20441457; GFX942-NEXT:    s_mov_b64 s[0:1], 01458; GFX942-NEXT:  .LBB7_1: ; %atomicrmw.start1459; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11460; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1461; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v21462; GFX942-NEXT:    buffer_wbl2 sc0 sc11463; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 sc0 sc11464; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1465; GFX942-NEXT:    buffer_inv sc0 sc11466; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51467; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1468; GFX942-NEXT:    v_mov_b32_e32 v5, v31469; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1470; GFX942-NEXT:    s_cbranch_execnz .LBB7_11471; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1472; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1473; GFX942-NEXT:    s_setpc_b64 s[30:31]1474;1475; GFX11-LABEL: flat_system_atomic_fsub_noret_f32__offset12b_pos:1476; GFX11:       ; %bb.0:1477; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1478; GFX11-NEXT:    flat_load_b32 v4, v[0:1] offset:20441479; GFX11-NEXT:    s_mov_b32 s0, 01480; GFX11-NEXT:  .LBB7_1: ; %atomicrmw.start1481; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=11482; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1483; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v21484; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01485; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 glc1486; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1487; GFX11-NEXT:    buffer_gl1_inv1488; GFX11-NEXT:    buffer_gl0_inv1489; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41490; GFX11-NEXT:    v_mov_b32_e32 v4, v31491; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s01492; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1493; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01494; GFX11-NEXT:    s_cbranch_execnz .LBB7_11495; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end1496; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s01497; GFX11-NEXT:    s_setpc_b64 s[30:31]1498;1499; GFX10-LABEL: flat_system_atomic_fsub_noret_f32__offset12b_pos:1500; GFX10:       ; %bb.0:1501; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1502; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fc, v01503; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo1504; GFX10-NEXT:    s_mov_b32 s4, 01505; GFX10-NEXT:    flat_load_dword v4, v[0:1]1506; GFX10-NEXT:  .LBB7_1: ; %atomicrmw.start1507; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=11508; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1509; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v21510; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01511; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1512; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1513; GFX10-NEXT:    buffer_gl1_inv1514; GFX10-NEXT:    buffer_gl0_inv1515; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41516; GFX10-NEXT:    v_mov_b32_e32 v4, v31517; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s41518; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s41519; GFX10-NEXT:    s_cbranch_execnz .LBB7_11520; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end1521; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s41522; GFX10-NEXT:    s_setpc_b64 s[30:31]1523;1524; GFX90A-LABEL: flat_system_atomic_fsub_noret_f32__offset12b_pos:1525; GFX90A:       ; %bb.0:1526; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1527; GFX90A-NEXT:    flat_load_dword v5, v[0:1] offset:20441528; GFX90A-NEXT:    s_mov_b64 s[4:5], 01529; GFX90A-NEXT:  .LBB7_1: ; %atomicrmw.start1530; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11531; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1532; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v21533; GFX90A-NEXT:    buffer_wbl21534; GFX90A-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 glc1535; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1536; GFX90A-NEXT:    buffer_invl21537; GFX90A-NEXT:    buffer_wbinvl11538; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51539; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1540; GFX90A-NEXT:    v_mov_b32_e32 v5, v31541; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1542; GFX90A-NEXT:    s_cbranch_execnz .LBB7_11543; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1544; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1545; GFX90A-NEXT:    s_setpc_b64 s[30:31]1546;1547; GFX908-LABEL: flat_system_atomic_fsub_noret_f32__offset12b_pos:1548; GFX908:       ; %bb.0:1549; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1550; GFX908-NEXT:    flat_load_dword v4, v[0:1] offset:20441551; GFX908-NEXT:    s_mov_b64 s[4:5], 01552; GFX908-NEXT:  .LBB7_1: ; %atomicrmw.start1553; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11554; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1555; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v21556; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2044 glc1557; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1558; GFX908-NEXT:    buffer_wbinvl11559; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41560; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1561; GFX908-NEXT:    v_mov_b32_e32 v4, v31562; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1563; GFX908-NEXT:    s_cbranch_execnz .LBB7_11564; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1565; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1566; GFX908-NEXT:    s_setpc_b64 s[30:31]1567;1568; GFX8-LABEL: flat_system_atomic_fsub_noret_f32__offset12b_pos:1569; GFX8:       ; %bb.0:1570; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1571; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v01572; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc1573; GFX8-NEXT:    flat_load_dword v4, v[0:1]1574; GFX8-NEXT:    s_mov_b64 s[4:5], 01575; GFX8-NEXT:  .LBB7_1: ; %atomicrmw.start1576; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11577; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1578; GFX8-NEXT:    v_sub_f32_e32 v3, v4, v21579; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1580; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1581; GFX8-NEXT:    buffer_wbinvl11582; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41583; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1584; GFX8-NEXT:    v_mov_b32_e32 v4, v31585; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1586; GFX8-NEXT:    s_cbranch_execnz .LBB7_11587; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1588; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1589; GFX8-NEXT:    s_setpc_b64 s[30:31]1590;1591; GFX7-LABEL: flat_system_atomic_fsub_noret_f32__offset12b_pos:1592; GFX7:       ; %bb.0:1593; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1594; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fc, v01595; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc1596; GFX7-NEXT:    flat_load_dword v4, v[0:1]1597; GFX7-NEXT:    s_mov_b64 s[4:5], 01598; GFX7-NEXT:  .LBB7_1: ; %atomicrmw.start1599; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=11600; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1601; GFX7-NEXT:    v_sub_f32_e32 v3, v4, v21602; GFX7-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1603; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1604; GFX7-NEXT:    buffer_wbinvl11605; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41606; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1607; GFX7-NEXT:    v_mov_b32_e32 v4, v31608; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]1609; GFX7-NEXT:    s_cbranch_execnz .LBB7_11610; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end1611; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]1612; GFX7-NEXT:    s_setpc_b64 s[30:31]1613  %gep = getelementptr inbounds float, ptr %ptr, i64 5111614  %unused = atomicrmw fsub ptr %gep, float %val seq_cst1615  ret void1616}1617 1618; --------------------------------------------------------------------1619; float with ftz/daz1620; --------------------------------------------------------------------1621 1622define float @flat_agent_atomic_fsub_ret_f32__ftz(ptr %ptr, float %val) #1 {1623; GFX12-LABEL: flat_agent_atomic_fsub_ret_f32__ftz:1624; GFX12:       ; %bb.0:1625; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01626; GFX12-NEXT:    s_wait_expcnt 0x01627; GFX12-NEXT:    s_wait_samplecnt 0x01628; GFX12-NEXT:    s_wait_bvhcnt 0x01629; GFX12-NEXT:    s_wait_kmcnt 0x01630; GFX12-NEXT:    flat_load_b32 v3, v[0:1]1631; GFX12-NEXT:    s_mov_b32 s0, 01632; GFX12-NEXT:  .LBB8_1: ; %atomicrmw.start1633; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=11634; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01635; GFX12-NEXT:    v_mov_b32_e32 v4, v31636; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)1637; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v21638; GFX12-NEXT:    s_wait_storecnt 0x01639; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV1640; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01641; GFX12-NEXT:    global_inv scope:SCOPE_DEV1642; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41643; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1644; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s01645; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1646; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01647; GFX12-NEXT:    s_cbranch_execnz .LBB8_11648; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end1649; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s01650; GFX12-NEXT:    v_mov_b32_e32 v0, v31651; GFX12-NEXT:    s_wait_loadcnt 0x01652; GFX12-NEXT:    s_setpc_b64 s[30:31]1653;1654; GFX942-LABEL: flat_agent_atomic_fsub_ret_f32__ftz:1655; GFX942:       ; %bb.0:1656; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1657; GFX942-NEXT:    flat_load_dword v5, v[0:1]1658; GFX942-NEXT:    s_mov_b64 s[0:1], 01659; GFX942-NEXT:  .LBB8_1: ; %atomicrmw.start1660; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11661; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1662; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v21663; GFX942-NEXT:    buffer_wbl2 sc11664; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] sc01665; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1666; GFX942-NEXT:    buffer_inv sc11667; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51668; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1669; GFX942-NEXT:    v_mov_b32_e32 v5, v31670; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1671; GFX942-NEXT:    s_cbranch_execnz .LBB8_11672; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1673; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1674; GFX942-NEXT:    v_mov_b32_e32 v0, v31675; GFX942-NEXT:    s_setpc_b64 s[30:31]1676;1677; GFX11-LABEL: flat_agent_atomic_fsub_ret_f32__ftz:1678; GFX11:       ; %bb.0:1679; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1680; GFX11-NEXT:    flat_load_b32 v3, v[0:1]1681; GFX11-NEXT:    s_mov_b32 s0, 01682; GFX11-NEXT:  .LBB8_1: ; %atomicrmw.start1683; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=11684; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1685; GFX11-NEXT:    v_mov_b32_e32 v4, v31686; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1687; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v21688; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01689; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc1690; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1691; GFX11-NEXT:    buffer_gl1_inv1692; GFX11-NEXT:    buffer_gl0_inv1693; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41694; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s01695; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1696; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01697; GFX11-NEXT:    s_cbranch_execnz .LBB8_11698; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end1699; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s01700; GFX11-NEXT:    v_mov_b32_e32 v0, v31701; GFX11-NEXT:    s_setpc_b64 s[30:31]1702;1703; GFX10-LABEL: flat_agent_atomic_fsub_ret_f32__ftz:1704; GFX10:       ; %bb.0:1705; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1706; GFX10-NEXT:    flat_load_dword v3, v[0:1]1707; GFX10-NEXT:    s_mov_b32 s4, 01708; GFX10-NEXT:  .LBB8_1: ; %atomicrmw.start1709; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=11710; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1711; GFX10-NEXT:    v_mov_b32_e32 v4, v31712; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v21713; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01714; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1715; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1716; GFX10-NEXT:    buffer_gl1_inv1717; GFX10-NEXT:    buffer_gl0_inv1718; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41719; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s41720; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s41721; GFX10-NEXT:    s_cbranch_execnz .LBB8_11722; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end1723; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s41724; GFX10-NEXT:    v_mov_b32_e32 v0, v31725; GFX10-NEXT:    s_setpc_b64 s[30:31]1726;1727; GFX90A-LABEL: flat_agent_atomic_fsub_ret_f32__ftz:1728; GFX90A:       ; %bb.0:1729; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1730; GFX90A-NEXT:    flat_load_dword v5, v[0:1]1731; GFX90A-NEXT:    s_mov_b64 s[4:5], 01732; GFX90A-NEXT:  .LBB8_1: ; %atomicrmw.start1733; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11734; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1735; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v21736; GFX90A-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] glc1737; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1738; GFX90A-NEXT:    buffer_wbinvl11739; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51740; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1741; GFX90A-NEXT:    v_mov_b32_e32 v5, v31742; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1743; GFX90A-NEXT:    s_cbranch_execnz .LBB8_11744; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1745; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1746; GFX90A-NEXT:    v_mov_b32_e32 v0, v31747; GFX90A-NEXT:    s_setpc_b64 s[30:31]1748;1749; GFX908-LABEL: flat_agent_atomic_fsub_ret_f32__ftz:1750; GFX908:       ; %bb.0:1751; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1752; GFX908-NEXT:    flat_load_dword v3, v[0:1]1753; GFX908-NEXT:    s_mov_b64 s[4:5], 01754; GFX908-NEXT:  .LBB8_1: ; %atomicrmw.start1755; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11756; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1757; GFX908-NEXT:    v_mov_b32_e32 v4, v31758; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v21759; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1760; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1761; GFX908-NEXT:    buffer_wbinvl11762; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41763; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1764; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1765; GFX908-NEXT:    s_cbranch_execnz .LBB8_11766; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1767; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1768; GFX908-NEXT:    v_mov_b32_e32 v0, v31769; GFX908-NEXT:    s_setpc_b64 s[30:31]1770;1771; GFX8-LABEL: flat_agent_atomic_fsub_ret_f32__ftz:1772; GFX8:       ; %bb.0:1773; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1774; GFX8-NEXT:    flat_load_dword v3, v[0:1]1775; GFX8-NEXT:    s_mov_b64 s[4:5], 01776; GFX8-NEXT:  .LBB8_1: ; %atomicrmw.start1777; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11778; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1779; GFX8-NEXT:    v_mov_b32_e32 v4, v31780; GFX8-NEXT:    v_sub_f32_e32 v3, v4, v21781; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1782; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1783; GFX8-NEXT:    buffer_wbinvl11784; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41785; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1786; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1787; GFX8-NEXT:    s_cbranch_execnz .LBB8_11788; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1789; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1790; GFX8-NEXT:    v_mov_b32_e32 v0, v31791; GFX8-NEXT:    s_setpc_b64 s[30:31]1792;1793; GFX7-LABEL: flat_agent_atomic_fsub_ret_f32__ftz:1794; GFX7:       ; %bb.0:1795; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1796; GFX7-NEXT:    flat_load_dword v3, v[0:1]1797; GFX7-NEXT:    s_mov_b64 s[4:5], 01798; GFX7-NEXT:  .LBB8_1: ; %atomicrmw.start1799; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=11800; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1801; GFX7-NEXT:    v_mov_b32_e32 v4, v31802; GFX7-NEXT:    v_sub_f32_e32 v3, v4, v21803; GFX7-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1804; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1805; GFX7-NEXT:    buffer_wbinvl11806; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41807; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1808; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]1809; GFX7-NEXT:    s_cbranch_execnz .LBB8_11810; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end1811; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]1812; GFX7-NEXT:    v_mov_b32_e32 v0, v31813; GFX7-NEXT:    s_setpc_b64 s[30:31]1814  %result = atomicrmw fsub ptr %ptr, float %val syncscope("agent") seq_cst1815  ret float %result1816}1817 1818define float @flat_agent_atomic_fsub_ret_f32__offset12b_pos__ftz(ptr %ptr, float %val) #1 {1819; GFX12-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_pos__ftz:1820; GFX12:       ; %bb.0:1821; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01822; GFX12-NEXT:    s_wait_expcnt 0x01823; GFX12-NEXT:    s_wait_samplecnt 0x01824; GFX12-NEXT:    s_wait_bvhcnt 0x01825; GFX12-NEXT:    s_wait_kmcnt 0x01826; GFX12-NEXT:    flat_load_b32 v3, v[0:1] offset:20441827; GFX12-NEXT:    s_mov_b32 s0, 01828; GFX12-NEXT:  .LBB9_1: ; %atomicrmw.start1829; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=11830; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01831; GFX12-NEXT:    v_mov_b32_e32 v4, v31832; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)1833; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v21834; GFX12-NEXT:    s_wait_storecnt 0x01835; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV1836; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01837; GFX12-NEXT:    global_inv scope:SCOPE_DEV1838; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41839; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1840; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s01841; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1842; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01843; GFX12-NEXT:    s_cbranch_execnz .LBB9_11844; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end1845; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s01846; GFX12-NEXT:    v_mov_b32_e32 v0, v31847; GFX12-NEXT:    s_wait_loadcnt 0x01848; GFX12-NEXT:    s_setpc_b64 s[30:31]1849;1850; GFX942-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_pos__ftz:1851; GFX942:       ; %bb.0:1852; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1853; GFX942-NEXT:    flat_load_dword v5, v[0:1] offset:20441854; GFX942-NEXT:    s_mov_b64 s[0:1], 01855; GFX942-NEXT:  .LBB9_1: ; %atomicrmw.start1856; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11857; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1858; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v21859; GFX942-NEXT:    buffer_wbl2 sc11860; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 sc01861; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1862; GFX942-NEXT:    buffer_inv sc11863; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51864; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1865; GFX942-NEXT:    v_mov_b32_e32 v5, v31866; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1867; GFX942-NEXT:    s_cbranch_execnz .LBB9_11868; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1869; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1870; GFX942-NEXT:    v_mov_b32_e32 v0, v31871; GFX942-NEXT:    s_setpc_b64 s[30:31]1872;1873; GFX11-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_pos__ftz:1874; GFX11:       ; %bb.0:1875; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1876; GFX11-NEXT:    flat_load_b32 v3, v[0:1] offset:20441877; GFX11-NEXT:    s_mov_b32 s0, 01878; GFX11-NEXT:  .LBB9_1: ; %atomicrmw.start1879; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=11880; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1881; GFX11-NEXT:    v_mov_b32_e32 v4, v31882; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1883; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v21884; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01885; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 glc1886; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1887; GFX11-NEXT:    buffer_gl1_inv1888; GFX11-NEXT:    buffer_gl0_inv1889; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41890; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s01891; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1892; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01893; GFX11-NEXT:    s_cbranch_execnz .LBB9_11894; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end1895; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s01896; GFX11-NEXT:    v_mov_b32_e32 v0, v31897; GFX11-NEXT:    s_setpc_b64 s[30:31]1898;1899; GFX10-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_pos__ftz:1900; GFX10:       ; %bb.0:1901; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1902; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fc, v01903; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, 0, v1, vcc_lo1904; GFX10-NEXT:    s_mov_b32 s4, 01905; GFX10-NEXT:    flat_load_dword v0, v[3:4]1906; GFX10-NEXT:  .LBB9_1: ; %atomicrmw.start1907; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=11908; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1909; GFX10-NEXT:    v_mov_b32_e32 v1, v01910; GFX10-NEXT:    v_sub_f32_e32 v0, v1, v21911; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01912; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc1913; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1914; GFX10-NEXT:    buffer_gl1_inv1915; GFX10-NEXT:    buffer_gl0_inv1916; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v11917; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s41918; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s41919; GFX10-NEXT:    s_cbranch_execnz .LBB9_11920; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end1921; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s41922; GFX10-NEXT:    s_setpc_b64 s[30:31]1923;1924; GFX90A-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_pos__ftz:1925; GFX90A:       ; %bb.0:1926; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1927; GFX90A-NEXT:    flat_load_dword v5, v[0:1] offset:20441928; GFX90A-NEXT:    s_mov_b64 s[4:5], 01929; GFX90A-NEXT:  .LBB9_1: ; %atomicrmw.start1930; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11931; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1932; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v21933; GFX90A-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 glc1934; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1935; GFX90A-NEXT:    buffer_wbinvl11936; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51937; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1938; GFX90A-NEXT:    v_mov_b32_e32 v5, v31939; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1940; GFX90A-NEXT:    s_cbranch_execnz .LBB9_11941; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1942; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1943; GFX90A-NEXT:    v_mov_b32_e32 v0, v31944; GFX90A-NEXT:    s_setpc_b64 s[30:31]1945;1946; GFX908-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_pos__ftz:1947; GFX908:       ; %bb.0:1948; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1949; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:20441950; GFX908-NEXT:    s_mov_b64 s[4:5], 01951; GFX908-NEXT:  .LBB9_1: ; %atomicrmw.start1952; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11953; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1954; GFX908-NEXT:    v_mov_b32_e32 v4, v31955; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v21956; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2044 glc1957; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1958; GFX908-NEXT:    buffer_wbinvl11959; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41960; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1961; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1962; GFX908-NEXT:    s_cbranch_execnz .LBB9_11963; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1964; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1965; GFX908-NEXT:    v_mov_b32_e32 v0, v31966; GFX908-NEXT:    s_setpc_b64 s[30:31]1967;1968; GFX8-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_pos__ftz:1969; GFX8:       ; %bb.0:1970; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1971; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v01972; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc1973; GFX8-NEXT:    flat_load_dword v0, v[3:4]1974; GFX8-NEXT:    s_mov_b64 s[4:5], 01975; GFX8-NEXT:  .LBB9_1: ; %atomicrmw.start1976; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11977; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1978; GFX8-NEXT:    v_mov_b32_e32 v1, v01979; GFX8-NEXT:    v_sub_f32_e32 v0, v1, v21980; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc1981; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1982; GFX8-NEXT:    buffer_wbinvl11983; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v11984; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1985; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1986; GFX8-NEXT:    s_cbranch_execnz .LBB9_11987; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1988; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1989; GFX8-NEXT:    s_setpc_b64 s[30:31]1990;1991; GFX7-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_pos__ftz:1992; GFX7:       ; %bb.0:1993; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1994; GFX7-NEXT:    v_add_i32_e32 v3, vcc, 0x7fc, v01995; GFX7-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc1996; GFX7-NEXT:    flat_load_dword v0, v[3:4]1997; GFX7-NEXT:    s_mov_b64 s[4:5], 01998; GFX7-NEXT:  .LBB9_1: ; %atomicrmw.start1999; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=12000; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2001; GFX7-NEXT:    v_mov_b32_e32 v1, v02002; GFX7-NEXT:    v_sub_f32_e32 v0, v1, v22003; GFX7-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc2004; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2005; GFX7-NEXT:    buffer_wbinvl12006; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v12007; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2008; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]2009; GFX7-NEXT:    s_cbranch_execnz .LBB9_12010; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end2011; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]2012; GFX7-NEXT:    s_setpc_b64 s[30:31]2013  %gep = getelementptr inbounds float, ptr %ptr, i64 5112014  %result = atomicrmw fsub ptr %gep, float %val syncscope("agent") seq_cst2015  ret float %result2016}2017 2018define float @flat_agent_atomic_fsub_ret_f32__offset12b_neg__ftz(ptr %ptr, float %val) #1 {2019; GFX12-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_neg__ftz:2020; GFX12:       ; %bb.0:2021; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02022; GFX12-NEXT:    s_wait_expcnt 0x02023; GFX12-NEXT:    s_wait_samplecnt 0x02024; GFX12-NEXT:    s_wait_bvhcnt 0x02025; GFX12-NEXT:    s_wait_kmcnt 0x02026; GFX12-NEXT:    flat_load_b32 v3, v[0:1] offset:-20482027; GFX12-NEXT:    s_mov_b32 s0, 02028; GFX12-NEXT:  .LBB10_1: ; %atomicrmw.start2029; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=12030; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02031; GFX12-NEXT:    v_mov_b32_e32 v4, v32032; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)2033; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v22034; GFX12-NEXT:    s_wait_storecnt 0x02035; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV2036; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02037; GFX12-NEXT:    global_inv scope:SCOPE_DEV2038; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42039; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2040; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s02041; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2042; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02043; GFX12-NEXT:    s_cbranch_execnz .LBB10_12044; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end2045; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s02046; GFX12-NEXT:    v_mov_b32_e32 v0, v32047; GFX12-NEXT:    s_wait_loadcnt 0x02048; GFX12-NEXT:    s_setpc_b64 s[30:31]2049;2050; GFX942-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_neg__ftz:2051; GFX942:       ; %bb.0:2052; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2053; GFX942-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v02054; GFX942-NEXT:    s_movk_i32 s0, 0xf8002055; GFX942-NEXT:    s_nop 02056; GFX942-NEXT:    v_addc_co_u32_e32 v5, vcc, -1, v1, vcc2057; GFX942-NEXT:    flat_load_dword v7, v[4:5]2058; GFX942-NEXT:    s_mov_b32 s1, -12059; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]2060; GFX942-NEXT:    s_mov_b64 s[0:1], 02061; GFX942-NEXT:  .LBB10_1: ; %atomicrmw.start2062; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12063; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2064; GFX942-NEXT:    v_sub_f32_e32 v6, v7, v22065; GFX942-NEXT:    buffer_wbl2 sc12066; GFX942-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[6:7] sc02067; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2068; GFX942-NEXT:    buffer_inv sc12069; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v72070; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2071; GFX942-NEXT:    v_mov_b32_e32 v7, v02072; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2073; GFX942-NEXT:    s_cbranch_execnz .LBB10_12074; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2075; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2076; GFX942-NEXT:    s_setpc_b64 s[30:31]2077;2078; GFX11-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_neg__ftz:2079; GFX11:       ; %bb.0:2080; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2081; GFX11-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v02082; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2083; GFX11-NEXT:    v_add_co_ci_u32_e64 v4, null, -1, v1, vcc_lo2084; GFX11-NEXT:    s_mov_b32 s0, 02085; GFX11-NEXT:    flat_load_b32 v0, v[3:4]2086; GFX11-NEXT:  .LBB10_1: ; %atomicrmw.start2087; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=12088; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2089; GFX11-NEXT:    v_mov_b32_e32 v1, v02090; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2091; GFX11-NEXT:    v_sub_f32_e32 v0, v1, v22092; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02093; GFX11-NEXT:    flat_atomic_cmpswap_b32 v0, v[3:4], v[0:1] glc2094; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2095; GFX11-NEXT:    buffer_gl1_inv2096; GFX11-NEXT:    buffer_gl0_inv2097; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v12098; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s02099; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2100; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02101; GFX11-NEXT:    s_cbranch_execnz .LBB10_12102; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end2103; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s02104; GFX11-NEXT:    s_setpc_b64 s[30:31]2105;2106; GFX10-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_neg__ftz:2107; GFX10:       ; %bb.0:2108; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2109; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v02110; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, -1, v1, vcc_lo2111; GFX10-NEXT:    s_mov_b32 s4, 02112; GFX10-NEXT:    flat_load_dword v0, v[3:4]2113; GFX10-NEXT:  .LBB10_1: ; %atomicrmw.start2114; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=12115; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2116; GFX10-NEXT:    v_mov_b32_e32 v1, v02117; GFX10-NEXT:    v_sub_f32_e32 v0, v1, v22118; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02119; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc2120; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2121; GFX10-NEXT:    buffer_gl1_inv2122; GFX10-NEXT:    buffer_gl0_inv2123; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v12124; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s42125; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s42126; GFX10-NEXT:    s_cbranch_execnz .LBB10_12127; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end2128; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s42129; GFX10-NEXT:    s_setpc_b64 s[30:31]2130;2131; GFX90A-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_neg__ftz:2132; GFX90A:       ; %bb.0:2133; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2134; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v02135; GFX90A-NEXT:    s_mov_b64 s[4:5], vcc2136; GFX90A-NEXT:    v_addc_co_u32_e64 v5, s[4:5], -1, v1, s[4:5]2137; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc2138; GFX90A-NEXT:    v_mov_b32_e32 v0, v42139; GFX90A-NEXT:    flat_load_dword v1, v[0:1]2140; GFX90A-NEXT:    s_mov_b64 s[4:5], 02141; GFX90A-NEXT:  .LBB10_1: ; %atomicrmw.start2142; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12143; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2144; GFX90A-NEXT:    v_sub_f32_e32 v0, v1, v22145; GFX90A-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc2146; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2147; GFX90A-NEXT:    buffer_wbinvl12148; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v12149; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2150; GFX90A-NEXT:    v_mov_b32_e32 v1, v02151; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2152; GFX90A-NEXT:    s_cbranch_execnz .LBB10_12153; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2154; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2155; GFX90A-NEXT:    s_setpc_b64 s[30:31]2156;2157; GFX908-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_neg__ftz:2158; GFX908:       ; %bb.0:2159; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2160; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v02161; GFX908-NEXT:    s_mov_b64 s[4:5], vcc2162; GFX908-NEXT:    v_addc_co_u32_e64 v4, s[4:5], -1, v1, s[4:5]2163; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc2164; GFX908-NEXT:    v_mov_b32_e32 v0, v32165; GFX908-NEXT:    flat_load_dword v0, v[0:1]2166; GFX908-NEXT:    s_mov_b64 s[4:5], 02167; GFX908-NEXT:  .LBB10_1: ; %atomicrmw.start2168; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12169; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2170; GFX908-NEXT:    v_mov_b32_e32 v1, v02171; GFX908-NEXT:    v_sub_f32_e32 v0, v1, v22172; GFX908-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc2173; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2174; GFX908-NEXT:    buffer_wbinvl12175; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v12176; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2177; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2178; GFX908-NEXT:    s_cbranch_execnz .LBB10_12179; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2180; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2181; GFX908-NEXT:    s_setpc_b64 s[30:31]2182;2183; GFX8-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_neg__ftz:2184; GFX8:       ; %bb.0:2185; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2186; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v02187; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, -1, v1, vcc2188; GFX8-NEXT:    flat_load_dword v0, v[3:4]2189; GFX8-NEXT:    s_mov_b64 s[4:5], 02190; GFX8-NEXT:  .LBB10_1: ; %atomicrmw.start2191; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12192; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2193; GFX8-NEXT:    v_mov_b32_e32 v1, v02194; GFX8-NEXT:    v_sub_f32_e32 v0, v1, v22195; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc2196; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2197; GFX8-NEXT:    buffer_wbinvl12198; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v12199; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2200; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2201; GFX8-NEXT:    s_cbranch_execnz .LBB10_12202; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2203; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2204; GFX8-NEXT:    s_setpc_b64 s[30:31]2205;2206; GFX7-LABEL: flat_agent_atomic_fsub_ret_f32__offset12b_neg__ftz:2207; GFX7:       ; %bb.0:2208; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2209; GFX7-NEXT:    v_add_i32_e32 v3, vcc, 0xfffff800, v02210; GFX7-NEXT:    v_addc_u32_e32 v4, vcc, -1, v1, vcc2211; GFX7-NEXT:    flat_load_dword v0, v[3:4]2212; GFX7-NEXT:    s_mov_b64 s[4:5], 02213; GFX7-NEXT:  .LBB10_1: ; %atomicrmw.start2214; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=12215; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2216; GFX7-NEXT:    v_mov_b32_e32 v1, v02217; GFX7-NEXT:    v_sub_f32_e32 v0, v1, v22218; GFX7-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc2219; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2220; GFX7-NEXT:    buffer_wbinvl12221; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v12222; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2223; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]2224; GFX7-NEXT:    s_cbranch_execnz .LBB10_12225; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end2226; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]2227; GFX7-NEXT:    s_setpc_b64 s[30:31]2228  %gep = getelementptr inbounds float, ptr %ptr, i64 -5122229  %result = atomicrmw fsub ptr %gep, float %val syncscope("agent") seq_cst2230  ret float %result2231}2232 2233define void @flat_agent_atomic_fsub_noret_f32__ftz(ptr %ptr, float %val) #1 {2234; GFX12-LABEL: flat_agent_atomic_fsub_noret_f32__ftz:2235; GFX12:       ; %bb.0:2236; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02237; GFX12-NEXT:    s_wait_expcnt 0x02238; GFX12-NEXT:    s_wait_samplecnt 0x02239; GFX12-NEXT:    s_wait_bvhcnt 0x02240; GFX12-NEXT:    s_wait_kmcnt 0x02241; GFX12-NEXT:    flat_load_b32 v4, v[0:1]2242; GFX12-NEXT:    s_mov_b32 s0, 02243; GFX12-NEXT:  .LBB11_1: ; %atomicrmw.start2244; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=12245; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02246; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v22247; GFX12-NEXT:    s_wait_storecnt 0x02248; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV2249; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02250; GFX12-NEXT:    global_inv scope:SCOPE_DEV2251; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42252; GFX12-NEXT:    v_mov_b32_e32 v4, v32253; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2254; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s02255; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2256; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02257; GFX12-NEXT:    s_cbranch_execnz .LBB11_12258; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end2259; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s02260; GFX12-NEXT:    s_wait_loadcnt 0x02261; GFX12-NEXT:    s_setpc_b64 s[30:31]2262;2263; GFX942-LABEL: flat_agent_atomic_fsub_noret_f32__ftz:2264; GFX942:       ; %bb.0:2265; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2266; GFX942-NEXT:    flat_load_dword v5, v[0:1]2267; GFX942-NEXT:    s_mov_b64 s[0:1], 02268; GFX942-NEXT:  .LBB11_1: ; %atomicrmw.start2269; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12270; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2271; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v22272; GFX942-NEXT:    buffer_wbl2 sc12273; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] sc02274; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2275; GFX942-NEXT:    buffer_inv sc12276; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v52277; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2278; GFX942-NEXT:    v_mov_b32_e32 v5, v32279; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2280; GFX942-NEXT:    s_cbranch_execnz .LBB11_12281; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2282; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2283; GFX942-NEXT:    s_setpc_b64 s[30:31]2284;2285; GFX11-LABEL: flat_agent_atomic_fsub_noret_f32__ftz:2286; GFX11:       ; %bb.0:2287; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2288; GFX11-NEXT:    flat_load_b32 v4, v[0:1]2289; GFX11-NEXT:    s_mov_b32 s0, 02290; GFX11-NEXT:  .LBB11_1: ; %atomicrmw.start2291; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=12292; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2293; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v22294; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02295; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc2296; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2297; GFX11-NEXT:    buffer_gl1_inv2298; GFX11-NEXT:    buffer_gl0_inv2299; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42300; GFX11-NEXT:    v_mov_b32_e32 v4, v32301; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s02302; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2303; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02304; GFX11-NEXT:    s_cbranch_execnz .LBB11_12305; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end2306; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s02307; GFX11-NEXT:    s_setpc_b64 s[30:31]2308;2309; GFX10-LABEL: flat_agent_atomic_fsub_noret_f32__ftz:2310; GFX10:       ; %bb.0:2311; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2312; GFX10-NEXT:    flat_load_dword v4, v[0:1]2313; GFX10-NEXT:    s_mov_b32 s4, 02314; GFX10-NEXT:  .LBB11_1: ; %atomicrmw.start2315; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=12316; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2317; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v22318; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02319; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc2320; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2321; GFX10-NEXT:    buffer_gl1_inv2322; GFX10-NEXT:    buffer_gl0_inv2323; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42324; GFX10-NEXT:    v_mov_b32_e32 v4, v32325; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s42326; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s42327; GFX10-NEXT:    s_cbranch_execnz .LBB11_12328; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end2329; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s42330; GFX10-NEXT:    s_setpc_b64 s[30:31]2331;2332; GFX90A-LABEL: flat_agent_atomic_fsub_noret_f32__ftz:2333; GFX90A:       ; %bb.0:2334; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2335; GFX90A-NEXT:    flat_load_dword v5, v[0:1]2336; GFX90A-NEXT:    s_mov_b64 s[4:5], 02337; GFX90A-NEXT:  .LBB11_1: ; %atomicrmw.start2338; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12339; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2340; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v22341; GFX90A-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] glc2342; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2343; GFX90A-NEXT:    buffer_wbinvl12344; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v52345; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2346; GFX90A-NEXT:    v_mov_b32_e32 v5, v32347; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2348; GFX90A-NEXT:    s_cbranch_execnz .LBB11_12349; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2350; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2351; GFX90A-NEXT:    s_setpc_b64 s[30:31]2352;2353; GFX908-LABEL: flat_agent_atomic_fsub_noret_f32__ftz:2354; GFX908:       ; %bb.0:2355; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2356; GFX908-NEXT:    flat_load_dword v4, v[0:1]2357; GFX908-NEXT:    s_mov_b64 s[4:5], 02358; GFX908-NEXT:  .LBB11_1: ; %atomicrmw.start2359; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12360; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2361; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v22362; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc2363; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2364; GFX908-NEXT:    buffer_wbinvl12365; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42366; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2367; GFX908-NEXT:    v_mov_b32_e32 v4, v32368; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2369; GFX908-NEXT:    s_cbranch_execnz .LBB11_12370; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2371; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2372; GFX908-NEXT:    s_setpc_b64 s[30:31]2373;2374; GFX8-LABEL: flat_agent_atomic_fsub_noret_f32__ftz:2375; GFX8:       ; %bb.0:2376; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2377; GFX8-NEXT:    flat_load_dword v4, v[0:1]2378; GFX8-NEXT:    s_mov_b64 s[4:5], 02379; GFX8-NEXT:  .LBB11_1: ; %atomicrmw.start2380; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12381; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2382; GFX8-NEXT:    v_sub_f32_e32 v3, v4, v22383; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc2384; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2385; GFX8-NEXT:    buffer_wbinvl12386; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42387; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2388; GFX8-NEXT:    v_mov_b32_e32 v4, v32389; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2390; GFX8-NEXT:    s_cbranch_execnz .LBB11_12391; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2392; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2393; GFX8-NEXT:    s_setpc_b64 s[30:31]2394;2395; GFX7-LABEL: flat_agent_atomic_fsub_noret_f32__ftz:2396; GFX7:       ; %bb.0:2397; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2398; GFX7-NEXT:    flat_load_dword v4, v[0:1]2399; GFX7-NEXT:    s_mov_b64 s[4:5], 02400; GFX7-NEXT:  .LBB11_1: ; %atomicrmw.start2401; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=12402; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2403; GFX7-NEXT:    v_sub_f32_e32 v3, v4, v22404; GFX7-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc2405; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2406; GFX7-NEXT:    buffer_wbinvl12407; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42408; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2409; GFX7-NEXT:    v_mov_b32_e32 v4, v32410; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]2411; GFX7-NEXT:    s_cbranch_execnz .LBB11_12412; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end2413; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]2414; GFX7-NEXT:    s_setpc_b64 s[30:31]2415  %unused = atomicrmw fsub ptr %ptr, float %val syncscope("agent") seq_cst2416  ret void2417}2418 2419define void @flat_agent_atomic_fsub_noret_f32__offset12b_pos__ftz(ptr %ptr, float %val) #1 {2420; GFX12-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_pos__ftz:2421; GFX12:       ; %bb.0:2422; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02423; GFX12-NEXT:    s_wait_expcnt 0x02424; GFX12-NEXT:    s_wait_samplecnt 0x02425; GFX12-NEXT:    s_wait_bvhcnt 0x02426; GFX12-NEXT:    s_wait_kmcnt 0x02427; GFX12-NEXT:    flat_load_b32 v4, v[0:1] offset:20442428; GFX12-NEXT:    s_mov_b32 s0, 02429; GFX12-NEXT:  .LBB12_1: ; %atomicrmw.start2430; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=12431; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02432; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v22433; GFX12-NEXT:    s_wait_storecnt 0x02434; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV2435; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02436; GFX12-NEXT:    global_inv scope:SCOPE_DEV2437; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42438; GFX12-NEXT:    v_mov_b32_e32 v4, v32439; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2440; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s02441; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2442; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02443; GFX12-NEXT:    s_cbranch_execnz .LBB12_12444; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end2445; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s02446; GFX12-NEXT:    s_wait_loadcnt 0x02447; GFX12-NEXT:    s_setpc_b64 s[30:31]2448;2449; GFX942-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_pos__ftz:2450; GFX942:       ; %bb.0:2451; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2452; GFX942-NEXT:    flat_load_dword v5, v[0:1] offset:20442453; GFX942-NEXT:    s_mov_b64 s[0:1], 02454; GFX942-NEXT:  .LBB12_1: ; %atomicrmw.start2455; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12456; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2457; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v22458; GFX942-NEXT:    buffer_wbl2 sc12459; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 sc02460; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2461; GFX942-NEXT:    buffer_inv sc12462; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v52463; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2464; GFX942-NEXT:    v_mov_b32_e32 v5, v32465; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2466; GFX942-NEXT:    s_cbranch_execnz .LBB12_12467; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2468; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2469; GFX942-NEXT:    s_setpc_b64 s[30:31]2470;2471; GFX11-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_pos__ftz:2472; GFX11:       ; %bb.0:2473; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2474; GFX11-NEXT:    flat_load_b32 v4, v[0:1] offset:20442475; GFX11-NEXT:    s_mov_b32 s0, 02476; GFX11-NEXT:  .LBB12_1: ; %atomicrmw.start2477; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=12478; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2479; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v22480; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02481; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 glc2482; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2483; GFX11-NEXT:    buffer_gl1_inv2484; GFX11-NEXT:    buffer_gl0_inv2485; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42486; GFX11-NEXT:    v_mov_b32_e32 v4, v32487; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s02488; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2489; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02490; GFX11-NEXT:    s_cbranch_execnz .LBB12_12491; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end2492; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s02493; GFX11-NEXT:    s_setpc_b64 s[30:31]2494;2495; GFX10-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_pos__ftz:2496; GFX10:       ; %bb.0:2497; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2498; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fc, v02499; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo2500; GFX10-NEXT:    s_mov_b32 s4, 02501; GFX10-NEXT:    flat_load_dword v4, v[0:1]2502; GFX10-NEXT:  .LBB12_1: ; %atomicrmw.start2503; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=12504; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2505; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v22506; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02507; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc2508; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2509; GFX10-NEXT:    buffer_gl1_inv2510; GFX10-NEXT:    buffer_gl0_inv2511; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42512; GFX10-NEXT:    v_mov_b32_e32 v4, v32513; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s42514; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s42515; GFX10-NEXT:    s_cbranch_execnz .LBB12_12516; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end2517; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s42518; GFX10-NEXT:    s_setpc_b64 s[30:31]2519;2520; GFX90A-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_pos__ftz:2521; GFX90A:       ; %bb.0:2522; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2523; GFX90A-NEXT:    flat_load_dword v5, v[0:1] offset:20442524; GFX90A-NEXT:    s_mov_b64 s[4:5], 02525; GFX90A-NEXT:  .LBB12_1: ; %atomicrmw.start2526; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12527; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2528; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v22529; GFX90A-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 glc2530; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2531; GFX90A-NEXT:    buffer_wbinvl12532; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v52533; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2534; GFX90A-NEXT:    v_mov_b32_e32 v5, v32535; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2536; GFX90A-NEXT:    s_cbranch_execnz .LBB12_12537; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2538; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2539; GFX90A-NEXT:    s_setpc_b64 s[30:31]2540;2541; GFX908-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_pos__ftz:2542; GFX908:       ; %bb.0:2543; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2544; GFX908-NEXT:    flat_load_dword v4, v[0:1] offset:20442545; GFX908-NEXT:    s_mov_b64 s[4:5], 02546; GFX908-NEXT:  .LBB12_1: ; %atomicrmw.start2547; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12548; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2549; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v22550; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2044 glc2551; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2552; GFX908-NEXT:    buffer_wbinvl12553; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42554; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2555; GFX908-NEXT:    v_mov_b32_e32 v4, v32556; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2557; GFX908-NEXT:    s_cbranch_execnz .LBB12_12558; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2559; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2560; GFX908-NEXT:    s_setpc_b64 s[30:31]2561;2562; GFX8-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_pos__ftz:2563; GFX8:       ; %bb.0:2564; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2565; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v02566; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2567; GFX8-NEXT:    flat_load_dword v4, v[0:1]2568; GFX8-NEXT:    s_mov_b64 s[4:5], 02569; GFX8-NEXT:  .LBB12_1: ; %atomicrmw.start2570; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12571; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2572; GFX8-NEXT:    v_sub_f32_e32 v3, v4, v22573; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc2574; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2575; GFX8-NEXT:    buffer_wbinvl12576; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42577; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2578; GFX8-NEXT:    v_mov_b32_e32 v4, v32579; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2580; GFX8-NEXT:    s_cbranch_execnz .LBB12_12581; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2582; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2583; GFX8-NEXT:    s_setpc_b64 s[30:31]2584;2585; GFX7-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_pos__ftz:2586; GFX7:       ; %bb.0:2587; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2588; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fc, v02589; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2590; GFX7-NEXT:    flat_load_dword v4, v[0:1]2591; GFX7-NEXT:    s_mov_b64 s[4:5], 02592; GFX7-NEXT:  .LBB12_1: ; %atomicrmw.start2593; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=12594; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2595; GFX7-NEXT:    v_sub_f32_e32 v3, v4, v22596; GFX7-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc2597; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2598; GFX7-NEXT:    buffer_wbinvl12599; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42600; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2601; GFX7-NEXT:    v_mov_b32_e32 v4, v32602; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]2603; GFX7-NEXT:    s_cbranch_execnz .LBB12_12604; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end2605; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]2606; GFX7-NEXT:    s_setpc_b64 s[30:31]2607  %gep = getelementptr inbounds float, ptr %ptr, i64 5112608  %unused = atomicrmw fsub ptr %gep, float %val syncscope("agent") seq_cst2609  ret void2610}2611 2612define void @flat_agent_atomic_fsub_noret_f32__offset12b_neg__ftz(ptr %ptr, float %val) #1 {2613; GFX12-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_neg__ftz:2614; GFX12:       ; %bb.0:2615; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02616; GFX12-NEXT:    s_wait_expcnt 0x02617; GFX12-NEXT:    s_wait_samplecnt 0x02618; GFX12-NEXT:    s_wait_bvhcnt 0x02619; GFX12-NEXT:    s_wait_kmcnt 0x02620; GFX12-NEXT:    flat_load_b32 v4, v[0:1] offset:-20482621; GFX12-NEXT:    s_mov_b32 s0, 02622; GFX12-NEXT:  .LBB13_1: ; %atomicrmw.start2623; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=12624; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02625; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v22626; GFX12-NEXT:    s_wait_storecnt 0x02627; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV2628; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02629; GFX12-NEXT:    global_inv scope:SCOPE_DEV2630; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42631; GFX12-NEXT:    v_mov_b32_e32 v4, v32632; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2633; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s02634; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2635; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02636; GFX12-NEXT:    s_cbranch_execnz .LBB13_12637; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end2638; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s02639; GFX12-NEXT:    s_wait_loadcnt 0x02640; GFX12-NEXT:    s_setpc_b64 s[30:31]2641;2642; GFX942-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_neg__ftz:2643; GFX942:       ; %bb.0:2644; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2645; GFX942-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v02646; GFX942-NEXT:    s_movk_i32 s0, 0xf8002647; GFX942-NEXT:    s_nop 02648; GFX942-NEXT:    v_addc_co_u32_e32 v5, vcc, -1, v1, vcc2649; GFX942-NEXT:    flat_load_dword v5, v[4:5]2650; GFX942-NEXT:    s_mov_b32 s1, -12651; GFX942-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, s[0:1]2652; GFX942-NEXT:    s_mov_b64 s[0:1], 02653; GFX942-NEXT:  .LBB13_1: ; %atomicrmw.start2654; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12655; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2656; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v22657; GFX942-NEXT:    buffer_wbl2 sc12658; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] sc02659; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2660; GFX942-NEXT:    buffer_inv sc12661; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v52662; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2663; GFX942-NEXT:    v_mov_b32_e32 v5, v32664; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2665; GFX942-NEXT:    s_cbranch_execnz .LBB13_12666; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2667; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2668; GFX942-NEXT:    s_setpc_b64 s[30:31]2669;2670; GFX11-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_neg__ftz:2671; GFX11:       ; %bb.0:2672; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2673; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v02674; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2675; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo2676; GFX11-NEXT:    s_mov_b32 s0, 02677; GFX11-NEXT:    flat_load_b32 v4, v[0:1]2678; GFX11-NEXT:  .LBB13_1: ; %atomicrmw.start2679; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=12680; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2681; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v22682; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02683; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc2684; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2685; GFX11-NEXT:    buffer_gl1_inv2686; GFX11-NEXT:    buffer_gl0_inv2687; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42688; GFX11-NEXT:    v_mov_b32_e32 v4, v32689; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s02690; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2691; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02692; GFX11-NEXT:    s_cbranch_execnz .LBB13_12693; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end2694; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s02695; GFX11-NEXT:    s_setpc_b64 s[30:31]2696;2697; GFX10-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_neg__ftz:2698; GFX10:       ; %bb.0:2699; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2700; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v02701; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo2702; GFX10-NEXT:    s_mov_b32 s4, 02703; GFX10-NEXT:    flat_load_dword v4, v[0:1]2704; GFX10-NEXT:  .LBB13_1: ; %atomicrmw.start2705; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=12706; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2707; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v22708; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02709; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc2710; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2711; GFX10-NEXT:    buffer_gl1_inv2712; GFX10-NEXT:    buffer_gl0_inv2713; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42714; GFX10-NEXT:    v_mov_b32_e32 v4, v32715; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s42716; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s42717; GFX10-NEXT:    s_cbranch_execnz .LBB13_12718; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end2719; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s42720; GFX10-NEXT:    s_setpc_b64 s[30:31]2721;2722; GFX90A-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_neg__ftz:2723; GFX90A:       ; %bb.0:2724; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2725; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v02726; GFX90A-NEXT:    s_mov_b64 s[4:5], vcc2727; GFX90A-NEXT:    v_addc_co_u32_e64 v5, s[4:5], -1, v1, s[4:5]2728; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc2729; GFX90A-NEXT:    v_mov_b32_e32 v0, v42730; GFX90A-NEXT:    flat_load_dword v1, v[0:1]2731; GFX90A-NEXT:    s_mov_b64 s[4:5], 02732; GFX90A-NEXT:  .LBB13_1: ; %atomicrmw.start2733; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12734; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2735; GFX90A-NEXT:    v_sub_f32_e32 v0, v1, v22736; GFX90A-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc2737; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2738; GFX90A-NEXT:    buffer_wbinvl12739; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v12740; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2741; GFX90A-NEXT:    v_mov_b32_e32 v1, v02742; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2743; GFX90A-NEXT:    s_cbranch_execnz .LBB13_12744; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2745; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2746; GFX90A-NEXT:    s_setpc_b64 s[30:31]2747;2748; GFX908-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_neg__ftz:2749; GFX908:       ; %bb.0:2750; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2751; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v02752; GFX908-NEXT:    s_mov_b64 s[4:5], vcc2753; GFX908-NEXT:    v_addc_co_u32_e64 v4, s[4:5], -1, v1, s[4:5]2754; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc2755; GFX908-NEXT:    v_mov_b32_e32 v0, v32756; GFX908-NEXT:    flat_load_dword v1, v[0:1]2757; GFX908-NEXT:    s_mov_b64 s[4:5], 02758; GFX908-NEXT:  .LBB13_1: ; %atomicrmw.start2759; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12760; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2761; GFX908-NEXT:    v_sub_f32_e32 v0, v1, v22762; GFX908-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc2763; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2764; GFX908-NEXT:    buffer_wbinvl12765; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v12766; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2767; GFX908-NEXT:    v_mov_b32_e32 v1, v02768; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2769; GFX908-NEXT:    s_cbranch_execnz .LBB13_12770; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2771; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2772; GFX908-NEXT:    s_setpc_b64 s[30:31]2773;2774; GFX8-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_neg__ftz:2775; GFX8:       ; %bb.0:2776; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2777; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffff800, v02778; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc2779; GFX8-NEXT:    flat_load_dword v4, v[0:1]2780; GFX8-NEXT:    s_mov_b64 s[4:5], 02781; GFX8-NEXT:  .LBB13_1: ; %atomicrmw.start2782; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12783; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2784; GFX8-NEXT:    v_sub_f32_e32 v3, v4, v22785; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc2786; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2787; GFX8-NEXT:    buffer_wbinvl12788; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42789; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2790; GFX8-NEXT:    v_mov_b32_e32 v4, v32791; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2792; GFX8-NEXT:    s_cbranch_execnz .LBB13_12793; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2794; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2795; GFX8-NEXT:    s_setpc_b64 s[30:31]2796;2797; GFX7-LABEL: flat_agent_atomic_fsub_noret_f32__offset12b_neg__ftz:2798; GFX7:       ; %bb.0:2799; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2800; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v02801; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc2802; GFX7-NEXT:    flat_load_dword v4, v[0:1]2803; GFX7-NEXT:    s_mov_b64 s[4:5], 02804; GFX7-NEXT:  .LBB13_1: ; %atomicrmw.start2805; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=12806; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2807; GFX7-NEXT:    v_sub_f32_e32 v3, v4, v22808; GFX7-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc2809; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2810; GFX7-NEXT:    buffer_wbinvl12811; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42812; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2813; GFX7-NEXT:    v_mov_b32_e32 v4, v32814; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]2815; GFX7-NEXT:    s_cbranch_execnz .LBB13_12816; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end2817; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]2818; GFX7-NEXT:    s_setpc_b64 s[30:31]2819  %gep = getelementptr inbounds float, ptr %ptr, i64 -5122820  %unused = atomicrmw fsub ptr %gep, float %val syncscope("agent") seq_cst2821  ret void2822}2823 2824define float @flat_system_atomic_fsub_ret_f32__offset12b_pos__ftz(ptr %ptr, float %val) #1 {2825; GFX12-LABEL: flat_system_atomic_fsub_ret_f32__offset12b_pos__ftz:2826; GFX12:       ; %bb.0:2827; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02828; GFX12-NEXT:    s_wait_expcnt 0x02829; GFX12-NEXT:    s_wait_samplecnt 0x02830; GFX12-NEXT:    s_wait_bvhcnt 0x02831; GFX12-NEXT:    s_wait_kmcnt 0x02832; GFX12-NEXT:    flat_load_b32 v3, v[0:1] offset:20442833; GFX12-NEXT:    s_mov_b32 s0, 02834; GFX12-NEXT:  .LBB14_1: ; %atomicrmw.start2835; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=12836; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02837; GFX12-NEXT:    v_mov_b32_e32 v4, v32838; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)2839; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v22840; GFX12-NEXT:    global_wb scope:SCOPE_SYS2841; GFX12-NEXT:    s_wait_storecnt 0x02842; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS2843; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02844; GFX12-NEXT:    global_inv scope:SCOPE_SYS2845; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42846; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2847; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s02848; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2849; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02850; GFX12-NEXT:    s_cbranch_execnz .LBB14_12851; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end2852; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s02853; GFX12-NEXT:    v_mov_b32_e32 v0, v32854; GFX12-NEXT:    s_wait_loadcnt 0x02855; GFX12-NEXT:    s_setpc_b64 s[30:31]2856;2857; GFX942-LABEL: flat_system_atomic_fsub_ret_f32__offset12b_pos__ftz:2858; GFX942:       ; %bb.0:2859; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2860; GFX942-NEXT:    flat_load_dword v5, v[0:1] offset:20442861; GFX942-NEXT:    s_mov_b64 s[0:1], 02862; GFX942-NEXT:  .LBB14_1: ; %atomicrmw.start2863; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12864; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2865; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v22866; GFX942-NEXT:    buffer_wbl2 sc0 sc12867; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 sc0 sc12868; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2869; GFX942-NEXT:    buffer_inv sc0 sc12870; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v52871; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2872; GFX942-NEXT:    v_mov_b32_e32 v5, v32873; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2874; GFX942-NEXT:    s_cbranch_execnz .LBB14_12875; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2876; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2877; GFX942-NEXT:    v_mov_b32_e32 v0, v32878; GFX942-NEXT:    s_setpc_b64 s[30:31]2879;2880; GFX11-LABEL: flat_system_atomic_fsub_ret_f32__offset12b_pos__ftz:2881; GFX11:       ; %bb.0:2882; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2883; GFX11-NEXT:    flat_load_b32 v3, v[0:1] offset:20442884; GFX11-NEXT:    s_mov_b32 s0, 02885; GFX11-NEXT:  .LBB14_1: ; %atomicrmw.start2886; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=12887; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2888; GFX11-NEXT:    v_mov_b32_e32 v4, v32889; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2890; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v22891; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02892; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 glc2893; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2894; GFX11-NEXT:    buffer_gl1_inv2895; GFX11-NEXT:    buffer_gl0_inv2896; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42897; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s02898; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2899; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02900; GFX11-NEXT:    s_cbranch_execnz .LBB14_12901; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end2902; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s02903; GFX11-NEXT:    v_mov_b32_e32 v0, v32904; GFX11-NEXT:    s_setpc_b64 s[30:31]2905;2906; GFX10-LABEL: flat_system_atomic_fsub_ret_f32__offset12b_pos__ftz:2907; GFX10:       ; %bb.0:2908; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2909; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fc, v02910; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, 0, v1, vcc_lo2911; GFX10-NEXT:    s_mov_b32 s4, 02912; GFX10-NEXT:    flat_load_dword v0, v[3:4]2913; GFX10-NEXT:  .LBB14_1: ; %atomicrmw.start2914; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=12915; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2916; GFX10-NEXT:    v_mov_b32_e32 v1, v02917; GFX10-NEXT:    v_sub_f32_e32 v0, v1, v22918; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02919; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc2920; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2921; GFX10-NEXT:    buffer_gl1_inv2922; GFX10-NEXT:    buffer_gl0_inv2923; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v12924; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s42925; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s42926; GFX10-NEXT:    s_cbranch_execnz .LBB14_12927; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end2928; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s42929; GFX10-NEXT:    s_setpc_b64 s[30:31]2930;2931; GFX90A-LABEL: flat_system_atomic_fsub_ret_f32__offset12b_pos__ftz:2932; GFX90A:       ; %bb.0:2933; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2934; GFX90A-NEXT:    flat_load_dword v5, v[0:1] offset:20442935; GFX90A-NEXT:    s_mov_b64 s[4:5], 02936; GFX90A-NEXT:  .LBB14_1: ; %atomicrmw.start2937; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12938; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2939; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v22940; GFX90A-NEXT:    buffer_wbl22941; GFX90A-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 glc2942; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2943; GFX90A-NEXT:    buffer_invl22944; GFX90A-NEXT:    buffer_wbinvl12945; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v52946; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2947; GFX90A-NEXT:    v_mov_b32_e32 v5, v32948; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2949; GFX90A-NEXT:    s_cbranch_execnz .LBB14_12950; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2951; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2952; GFX90A-NEXT:    v_mov_b32_e32 v0, v32953; GFX90A-NEXT:    s_setpc_b64 s[30:31]2954;2955; GFX908-LABEL: flat_system_atomic_fsub_ret_f32__offset12b_pos__ftz:2956; GFX908:       ; %bb.0:2957; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2958; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:20442959; GFX908-NEXT:    s_mov_b64 s[4:5], 02960; GFX908-NEXT:  .LBB14_1: ; %atomicrmw.start2961; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12962; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2963; GFX908-NEXT:    v_mov_b32_e32 v4, v32964; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v22965; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2044 glc2966; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2967; GFX908-NEXT:    buffer_wbinvl12968; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42969; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2970; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2971; GFX908-NEXT:    s_cbranch_execnz .LBB14_12972; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2973; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2974; GFX908-NEXT:    v_mov_b32_e32 v0, v32975; GFX908-NEXT:    s_setpc_b64 s[30:31]2976;2977; GFX8-LABEL: flat_system_atomic_fsub_ret_f32__offset12b_pos__ftz:2978; GFX8:       ; %bb.0:2979; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2980; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v02981; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc2982; GFX8-NEXT:    flat_load_dword v0, v[3:4]2983; GFX8-NEXT:    s_mov_b64 s[4:5], 02984; GFX8-NEXT:  .LBB14_1: ; %atomicrmw.start2985; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12986; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2987; GFX8-NEXT:    v_mov_b32_e32 v1, v02988; GFX8-NEXT:    v_sub_f32_e32 v0, v1, v22989; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc2990; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2991; GFX8-NEXT:    buffer_wbinvl12992; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v12993; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2994; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2995; GFX8-NEXT:    s_cbranch_execnz .LBB14_12996; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2997; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2998; GFX8-NEXT:    s_setpc_b64 s[30:31]2999;3000; GFX7-LABEL: flat_system_atomic_fsub_ret_f32__offset12b_pos__ftz:3001; GFX7:       ; %bb.0:3002; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3003; GFX7-NEXT:    v_add_i32_e32 v3, vcc, 0x7fc, v03004; GFX7-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc3005; GFX7-NEXT:    flat_load_dword v0, v[3:4]3006; GFX7-NEXT:    s_mov_b64 s[4:5], 03007; GFX7-NEXT:  .LBB14_1: ; %atomicrmw.start3008; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=13009; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3010; GFX7-NEXT:    v_mov_b32_e32 v1, v03011; GFX7-NEXT:    v_sub_f32_e32 v0, v1, v23012; GFX7-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc3013; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3014; GFX7-NEXT:    buffer_wbinvl13015; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v13016; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3017; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]3018; GFX7-NEXT:    s_cbranch_execnz .LBB14_13019; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end3020; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]3021; GFX7-NEXT:    s_setpc_b64 s[30:31]3022  %gep = getelementptr inbounds float, ptr %ptr, i64 5113023  %result = atomicrmw fsub ptr %gep, float %val seq_cst3024  ret float %result3025}3026 3027define void @flat_system_atomic_fsub_noret_f32__offset12b_pos__ftz(ptr %ptr, float %val) #1 {3028; GFX12-LABEL: flat_system_atomic_fsub_noret_f32__offset12b_pos__ftz:3029; GFX12:       ; %bb.0:3030; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03031; GFX12-NEXT:    s_wait_expcnt 0x03032; GFX12-NEXT:    s_wait_samplecnt 0x03033; GFX12-NEXT:    s_wait_bvhcnt 0x03034; GFX12-NEXT:    s_wait_kmcnt 0x03035; GFX12-NEXT:    flat_load_b32 v4, v[0:1] offset:20443036; GFX12-NEXT:    s_mov_b32 s0, 03037; GFX12-NEXT:  .LBB15_1: ; %atomicrmw.start3038; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=13039; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03040; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v23041; GFX12-NEXT:    global_wb scope:SCOPE_SYS3042; GFX12-NEXT:    s_wait_storecnt 0x03043; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS3044; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03045; GFX12-NEXT:    global_inv scope:SCOPE_SYS3046; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43047; GFX12-NEXT:    v_mov_b32_e32 v4, v33048; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3049; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s03050; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3051; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03052; GFX12-NEXT:    s_cbranch_execnz .LBB15_13053; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end3054; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s03055; GFX12-NEXT:    s_wait_loadcnt 0x03056; GFX12-NEXT:    s_setpc_b64 s[30:31]3057;3058; GFX942-LABEL: flat_system_atomic_fsub_noret_f32__offset12b_pos__ftz:3059; GFX942:       ; %bb.0:3060; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3061; GFX942-NEXT:    flat_load_dword v5, v[0:1] offset:20443062; GFX942-NEXT:    s_mov_b64 s[0:1], 03063; GFX942-NEXT:  .LBB15_1: ; %atomicrmw.start3064; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=13065; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3066; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v23067; GFX942-NEXT:    buffer_wbl2 sc0 sc13068; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 sc0 sc13069; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3070; GFX942-NEXT:    buffer_inv sc0 sc13071; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v53072; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]3073; GFX942-NEXT:    v_mov_b32_e32 v5, v33074; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]3075; GFX942-NEXT:    s_cbranch_execnz .LBB15_13076; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end3077; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]3078; GFX942-NEXT:    s_setpc_b64 s[30:31]3079;3080; GFX11-LABEL: flat_system_atomic_fsub_noret_f32__offset12b_pos__ftz:3081; GFX11:       ; %bb.0:3082; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3083; GFX11-NEXT:    flat_load_b32 v4, v[0:1] offset:20443084; GFX11-NEXT:    s_mov_b32 s0, 03085; GFX11-NEXT:  .LBB15_1: ; %atomicrmw.start3086; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=13087; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3088; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v23089; GFX11-NEXT:    s_waitcnt_vscnt null, 0x03090; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 glc3091; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3092; GFX11-NEXT:    buffer_gl1_inv3093; GFX11-NEXT:    buffer_gl0_inv3094; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43095; GFX11-NEXT:    v_mov_b32_e32 v4, v33096; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s03097; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3098; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03099; GFX11-NEXT:    s_cbranch_execnz .LBB15_13100; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end3101; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s03102; GFX11-NEXT:    s_setpc_b64 s[30:31]3103;3104; GFX10-LABEL: flat_system_atomic_fsub_noret_f32__offset12b_pos__ftz:3105; GFX10:       ; %bb.0:3106; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3107; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fc, v03108; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo3109; GFX10-NEXT:    s_mov_b32 s4, 03110; GFX10-NEXT:    flat_load_dword v4, v[0:1]3111; GFX10-NEXT:  .LBB15_1: ; %atomicrmw.start3112; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=13113; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3114; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v23115; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03116; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc3117; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3118; GFX10-NEXT:    buffer_gl1_inv3119; GFX10-NEXT:    buffer_gl0_inv3120; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43121; GFX10-NEXT:    v_mov_b32_e32 v4, v33122; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s43123; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s43124; GFX10-NEXT:    s_cbranch_execnz .LBB15_13125; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end3126; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s43127; GFX10-NEXT:    s_setpc_b64 s[30:31]3128;3129; GFX90A-LABEL: flat_system_atomic_fsub_noret_f32__offset12b_pos__ftz:3130; GFX90A:       ; %bb.0:3131; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3132; GFX90A-NEXT:    flat_load_dword v5, v[0:1] offset:20443133; GFX90A-NEXT:    s_mov_b64 s[4:5], 03134; GFX90A-NEXT:  .LBB15_1: ; %atomicrmw.start3135; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=13136; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3137; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v23138; GFX90A-NEXT:    buffer_wbl23139; GFX90A-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 glc3140; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3141; GFX90A-NEXT:    buffer_invl23142; GFX90A-NEXT:    buffer_wbinvl13143; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v53144; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3145; GFX90A-NEXT:    v_mov_b32_e32 v5, v33146; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]3147; GFX90A-NEXT:    s_cbranch_execnz .LBB15_13148; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end3149; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]3150; GFX90A-NEXT:    s_setpc_b64 s[30:31]3151;3152; GFX908-LABEL: flat_system_atomic_fsub_noret_f32__offset12b_pos__ftz:3153; GFX908:       ; %bb.0:3154; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3155; GFX908-NEXT:    flat_load_dword v4, v[0:1] offset:20443156; GFX908-NEXT:    s_mov_b64 s[4:5], 03157; GFX908-NEXT:  .LBB15_1: ; %atomicrmw.start3158; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=13159; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3160; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v23161; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2044 glc3162; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3163; GFX908-NEXT:    buffer_wbinvl13164; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v43165; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3166; GFX908-NEXT:    v_mov_b32_e32 v4, v33167; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]3168; GFX908-NEXT:    s_cbranch_execnz .LBB15_13169; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end3170; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3171; GFX908-NEXT:    s_setpc_b64 s[30:31]3172;3173; GFX8-LABEL: flat_system_atomic_fsub_noret_f32__offset12b_pos__ftz:3174; GFX8:       ; %bb.0:3175; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3176; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v03177; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc3178; GFX8-NEXT:    flat_load_dword v4, v[0:1]3179; GFX8-NEXT:    s_mov_b64 s[4:5], 03180; GFX8-NEXT:  .LBB15_1: ; %atomicrmw.start3181; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=13182; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3183; GFX8-NEXT:    v_sub_f32_e32 v3, v4, v23184; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc3185; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3186; GFX8-NEXT:    buffer_wbinvl13187; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v43188; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3189; GFX8-NEXT:    v_mov_b32_e32 v4, v33190; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]3191; GFX8-NEXT:    s_cbranch_execnz .LBB15_13192; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end3193; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3194; GFX8-NEXT:    s_setpc_b64 s[30:31]3195;3196; GFX7-LABEL: flat_system_atomic_fsub_noret_f32__offset12b_pos__ftz:3197; GFX7:       ; %bb.0:3198; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3199; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fc, v03200; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc3201; GFX7-NEXT:    flat_load_dword v4, v[0:1]3202; GFX7-NEXT:    s_mov_b64 s[4:5], 03203; GFX7-NEXT:  .LBB15_1: ; %atomicrmw.start3204; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=13205; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3206; GFX7-NEXT:    v_sub_f32_e32 v3, v4, v23207; GFX7-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc3208; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3209; GFX7-NEXT:    buffer_wbinvl13210; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v43211; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3212; GFX7-NEXT:    v_mov_b32_e32 v4, v33213; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]3214; GFX7-NEXT:    s_cbranch_execnz .LBB15_13215; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end3216; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]3217; GFX7-NEXT:    s_setpc_b64 s[30:31]3218  %gep = getelementptr inbounds float, ptr %ptr, i64 5113219  %unused = atomicrmw fsub ptr %gep, float %val seq_cst3220  ret void3221}3222 3223; --------------------------------------------------------------------3224; double3225; --------------------------------------------------------------------3226 3227define double @flat_agent_atomic_fsub_ret_f64(ptr %ptr, double %val) #0 {3228; GFX12-LABEL: flat_agent_atomic_fsub_ret_f64:3229; GFX12:       ; %bb.0:3230; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03231; GFX12-NEXT:    s_wait_expcnt 0x03232; GFX12-NEXT:    s_wait_samplecnt 0x03233; GFX12-NEXT:    s_wait_bvhcnt 0x03234; GFX12-NEXT:    s_wait_kmcnt 0x03235; GFX12-NEXT:    s_mov_b64 s[0:1], src_private_base3236; GFX12-NEXT:    s_mov_b32 s0, exec_lo3237; GFX12-NEXT:    ; implicit-def: $vgpr4_vgpr53238; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3239; GFX12-NEXT:    v_cmpx_ne_u32_e64 s1, v13240; GFX12-NEXT:    s_xor_b32 s0, exec_lo, s03241; GFX12-NEXT:    s_cbranch_execz .LBB16_43242; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global3243; GFX12-NEXT:    flat_load_b64 v[4:5], v[0:1]3244; GFX12-NEXT:    s_mov_b32 s1, 03245; GFX12-NEXT:  .LBB16_2: ; %atomicrmw.start3246; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=13247; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03248; GFX12-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v43249; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)3250; GFX12-NEXT:    v_add_f64_e64 v[4:5], v[6:7], -v[2:3]3251; GFX12-NEXT:    s_wait_storecnt 0x03252; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7] th:TH_ATOMIC_RETURN scope:SCOPE_DEV3253; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03254; GFX12-NEXT:    global_inv scope:SCOPE_DEV3255; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]3256; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3257; GFX12-NEXT:    s_or_b32 s1, vcc_lo, s13258; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3259; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s13260; GFX12-NEXT:    s_cbranch_execnz .LBB16_23261; GFX12-NEXT:  ; %bb.3: ; %Flow3262; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s13263; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr13264; GFX12-NEXT:    ; implicit-def: $vgpr2_vgpr33265; GFX12-NEXT:  .LBB16_4: ; %Flow33266; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3267; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s03268; GFX12-NEXT:    s_cbranch_execz .LBB16_63269; GFX12-NEXT:  ; %bb.5: ; %atomicrmw.private3270; GFX12-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]3271; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)3272; GFX12-NEXT:    v_cndmask_b32_e32 v6, -1, v0, vcc_lo3273; GFX12-NEXT:    scratch_load_b64 v[4:5], v6, off3274; GFX12-NEXT:    s_wait_loadcnt 0x03275; GFX12-NEXT:    v_add_f64_e64 v[0:1], v[4:5], -v[2:3]3276; GFX12-NEXT:    scratch_store_b64 v6, v[0:1], off3277; GFX12-NEXT:  .LBB16_6: ; %atomicrmw.phi3278; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3279; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s03280; GFX12-NEXT:    v_dual_mov_b32 v0, v4 :: v_dual_mov_b32 v1, v53281; GFX12-NEXT:    s_wait_loadcnt 0x03282; GFX12-NEXT:    s_setpc_b64 s[30:31]3283;3284; GFX942-LABEL: flat_agent_atomic_fsub_ret_f64:3285; GFX942:       ; %bb.0:3286; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3287; GFX942-NEXT:    s_mov_b64 s[0:1], src_private_base3288; GFX942-NEXT:    v_cmp_ne_u32_e32 vcc, s1, v13289; GFX942-NEXT:    ; implicit-def: $vgpr4_vgpr53290; GFX942-NEXT:    s_and_saveexec_b64 s[0:1], vcc3291; GFX942-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]3292; GFX942-NEXT:    s_cbranch_execz .LBB16_43293; GFX942-NEXT:  ; %bb.1: ; %atomicrmw.global3294; GFX942-NEXT:    flat_load_dwordx2 v[6:7], v[0:1]3295; GFX942-NEXT:    s_mov_b64 s[2:3], 03296; GFX942-NEXT:  .LBB16_2: ; %atomicrmw.start3297; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=13298; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3299; GFX942-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]3300; GFX942-NEXT:    buffer_wbl2 sc13301; GFX942-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] sc03302; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3303; GFX942-NEXT:    buffer_inv sc13304; GFX942-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]3305; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]3306; GFX942-NEXT:    v_mov_b64_e32 v[6:7], v[4:5]3307; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]3308; GFX942-NEXT:    s_cbranch_execnz .LBB16_23309; GFX942-NEXT:  ; %bb.3: ; %Flow3310; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]3311; GFX942-NEXT:    ; implicit-def: $vgpr0_vgpr13312; GFX942-NEXT:    ; implicit-def: $vgpr2_vgpr33313; GFX942-NEXT:  .LBB16_4: ; %Flow33314; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]3315; GFX942-NEXT:    s_cbranch_execz .LBB16_63316; GFX942-NEXT:  ; %bb.5: ; %atomicrmw.private3317; GFX942-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]3318; GFX942-NEXT:    s_nop 13319; GFX942-NEXT:    v_cndmask_b32_e32 v6, -1, v0, vcc3320; GFX942-NEXT:    scratch_load_dwordx2 v[4:5], v6, off3321; GFX942-NEXT:    s_waitcnt vmcnt(0)3322; GFX942-NEXT:    v_add_f64 v[0:1], v[4:5], -v[2:3]3323; GFX942-NEXT:    scratch_store_dwordx2 v6, v[0:1], off3324; GFX942-NEXT:  .LBB16_6: ; %atomicrmw.phi3325; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]3326; GFX942-NEXT:    v_mov_b32_e32 v0, v43327; GFX942-NEXT:    v_mov_b32_e32 v1, v53328; GFX942-NEXT:    s_waitcnt vmcnt(0)3329; GFX942-NEXT:    s_setpc_b64 s[30:31]3330;3331; GFX11-LABEL: flat_agent_atomic_fsub_ret_f64:3332; GFX11:       ; %bb.0:3333; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3334; GFX11-NEXT:    s_mov_b64 s[0:1], src_private_base3335; GFX11-NEXT:    s_mov_b32 s0, exec_lo3336; GFX11-NEXT:    ; implicit-def: $vgpr4_vgpr53337; GFX11-NEXT:    v_cmpx_ne_u32_e64 s1, v13338; GFX11-NEXT:    s_xor_b32 s0, exec_lo, s03339; GFX11-NEXT:    s_cbranch_execz .LBB16_43340; GFX11-NEXT:  ; %bb.1: ; %atomicrmw.global3341; GFX11-NEXT:    flat_load_b64 v[4:5], v[0:1]3342; GFX11-NEXT:    s_mov_b32 s1, 03343; GFX11-NEXT:  .LBB16_2: ; %atomicrmw.start3344; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=13345; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3346; GFX11-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v43347; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)3348; GFX11-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]3349; GFX11-NEXT:    s_waitcnt_vscnt null, 0x03350; GFX11-NEXT:    flat_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7] glc3351; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3352; GFX11-NEXT:    buffer_gl1_inv3353; GFX11-NEXT:    buffer_gl0_inv3354; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]3355; GFX11-NEXT:    s_or_b32 s1, vcc_lo, s13356; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3357; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s13358; GFX11-NEXT:    s_cbranch_execnz .LBB16_23359; GFX11-NEXT:  ; %bb.3: ; %Flow3360; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s13361; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr13362; GFX11-NEXT:    ; implicit-def: $vgpr2_vgpr33363; GFX11-NEXT:  .LBB16_4: ; %Flow33364; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s03365; GFX11-NEXT:    s_cbranch_execz .LBB16_63366; GFX11-NEXT:  ; %bb.5: ; %atomicrmw.private3367; GFX11-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]3368; GFX11-NEXT:    v_cndmask_b32_e32 v6, -1, v0, vcc_lo3369; GFX11-NEXT:    scratch_load_b64 v[4:5], v6, off3370; GFX11-NEXT:    s_waitcnt vmcnt(0)3371; GFX11-NEXT:    v_add_f64 v[0:1], v[4:5], -v[2:3]3372; GFX11-NEXT:    scratch_store_b64 v6, v[0:1], off3373; GFX11-NEXT:  .LBB16_6: ; %atomicrmw.phi3374; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s03375; GFX11-NEXT:    v_dual_mov_b32 v0, v4 :: v_dual_mov_b32 v1, v53376; GFX11-NEXT:    s_setpc_b64 s[30:31]3377;3378; GFX10-LABEL: flat_agent_atomic_fsub_ret_f64:3379; GFX10:       ; %bb.0:3380; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3381; GFX10-NEXT:    s_mov_b64 s[4:5], src_private_base3382; GFX10-NEXT:    ; implicit-def: $vgpr4_vgpr53383; GFX10-NEXT:    v_cmp_ne_u32_e32 vcc_lo, s5, v13384; GFX10-NEXT:    s_and_saveexec_b32 s4, vcc_lo3385; GFX10-NEXT:    s_xor_b32 s4, exec_lo, s43386; GFX10-NEXT:    s_cbranch_execz .LBB16_43387; GFX10-NEXT:  ; %bb.1: ; %atomicrmw.global3388; GFX10-NEXT:    flat_load_dwordx2 v[4:5], v[0:1]3389; GFX10-NEXT:    s_mov_b32 s5, 03390; GFX10-NEXT:  .LBB16_2: ; %atomicrmw.start3391; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=13392; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3393; GFX10-NEXT:    v_mov_b32_e32 v7, v53394; GFX10-NEXT:    v_mov_b32_e32 v6, v43395; GFX10-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]3396; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03397; GFX10-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc3398; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3399; GFX10-NEXT:    buffer_gl1_inv3400; GFX10-NEXT:    buffer_gl0_inv3401; GFX10-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]3402; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s53403; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s53404; GFX10-NEXT:    s_cbranch_execnz .LBB16_23405; GFX10-NEXT:  ; %bb.3: ; %Flow3406; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s53407; GFX10-NEXT:    ; implicit-def: $vgpr0_vgpr13408; GFX10-NEXT:    ; implicit-def: $vgpr2_vgpr33409; GFX10-NEXT:  .LBB16_4: ; %Flow33410; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s43411; GFX10-NEXT:    s_cbranch_execz .LBB16_63412; GFX10-NEXT:  ; %bb.5: ; %atomicrmw.private3413; GFX10-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]3414; GFX10-NEXT:    v_cndmask_b32_e32 v6, -1, v0, vcc_lo3415; GFX10-NEXT:    s_clause 0x13416; GFX10-NEXT:    buffer_load_dword v4, v6, s[0:3], 0 offen3417; GFX10-NEXT:    buffer_load_dword v5, v6, s[0:3], 0 offen offset:43418; GFX10-NEXT:    s_waitcnt vmcnt(0)3419; GFX10-NEXT:    v_add_f64 v[0:1], v[4:5], -v[2:3]3420; GFX10-NEXT:    buffer_store_dword v0, v6, s[0:3], 0 offen3421; GFX10-NEXT:    buffer_store_dword v1, v6, s[0:3], 0 offen offset:43422; GFX10-NEXT:  .LBB16_6: ; %atomicrmw.phi3423; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)3424; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s43425; GFX10-NEXT:    v_mov_b32_e32 v0, v43426; GFX10-NEXT:    v_mov_b32_e32 v1, v53427; GFX10-NEXT:    s_setpc_b64 s[30:31]3428;3429; GFX90A-LABEL: flat_agent_atomic_fsub_ret_f64:3430; GFX90A:       ; %bb.0:3431; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3432; GFX90A-NEXT:    s_mov_b64 s[4:5], src_private_base3433; GFX90A-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v13434; GFX90A-NEXT:    ; implicit-def: $vgpr4_vgpr53435; GFX90A-NEXT:    s_and_saveexec_b64 s[4:5], vcc3436; GFX90A-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]3437; GFX90A-NEXT:    s_cbranch_execz .LBB16_43438; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global3439; GFX90A-NEXT:    flat_load_dwordx2 v[6:7], v[0:1]3440; GFX90A-NEXT:    s_mov_b64 s[6:7], 03441; GFX90A-NEXT:  .LBB16_2: ; %atomicrmw.start3442; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=13443; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3444; GFX90A-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]3445; GFX90A-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc3446; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3447; GFX90A-NEXT:    buffer_wbinvl13448; GFX90A-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]3449; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]3450; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], v[4:5], v[4:5] op_sel:[0,1]3451; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]3452; GFX90A-NEXT:    s_cbranch_execnz .LBB16_23453; GFX90A-NEXT:  ; %bb.3: ; %Flow3454; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]3455; GFX90A-NEXT:    ; implicit-def: $vgpr0_vgpr13456; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr33457; GFX90A-NEXT:  .LBB16_4: ; %Flow33458; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3459; GFX90A-NEXT:    s_cbranch_execz .LBB16_63460; GFX90A-NEXT:  ; %bb.5: ; %atomicrmw.private3461; GFX90A-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]3462; GFX90A-NEXT:    v_cndmask_b32_e32 v6, -1, v0, vcc3463; GFX90A-NEXT:    buffer_load_dword v4, v6, s[0:3], 0 offen3464; GFX90A-NEXT:    buffer_load_dword v5, v6, s[0:3], 0 offen offset:43465; GFX90A-NEXT:    s_waitcnt vmcnt(0)3466; GFX90A-NEXT:    v_add_f64 v[0:1], v[4:5], -v[2:3]3467; GFX90A-NEXT:    buffer_store_dword v0, v6, s[0:3], 0 offen3468; GFX90A-NEXT:    buffer_store_dword v1, v6, s[0:3], 0 offen offset:43469; GFX90A-NEXT:  .LBB16_6: ; %atomicrmw.phi3470; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]3471; GFX90A-NEXT:    v_mov_b32_e32 v0, v43472; GFX90A-NEXT:    v_mov_b32_e32 v1, v53473; GFX90A-NEXT:    s_waitcnt vmcnt(0)3474; GFX90A-NEXT:    s_setpc_b64 s[30:31]3475;3476; GFX908-LABEL: flat_agent_atomic_fsub_ret_f64:3477; GFX908:       ; %bb.0:3478; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3479; GFX908-NEXT:    v_mov_b32_e32 v5, v13480; GFX908-NEXT:    s_mov_b64 s[4:5], src_private_base3481; GFX908-NEXT:    v_mov_b32_e32 v4, v03482; GFX908-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v53483; GFX908-NEXT:    ; implicit-def: $vgpr0_vgpr13484; GFX908-NEXT:    s_and_saveexec_b64 s[4:5], vcc3485; GFX908-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]3486; GFX908-NEXT:    s_cbranch_execnz .LBB16_33487; GFX908-NEXT:  ; %bb.1: ; %Flow33488; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3489; GFX908-NEXT:    s_cbranch_execnz .LBB16_63490; GFX908-NEXT:  .LBB16_2: ; %atomicrmw.phi3491; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3492; GFX908-NEXT:    s_setpc_b64 s[30:31]3493; GFX908-NEXT:  .LBB16_3: ; %atomicrmw.global3494; GFX908-NEXT:    flat_load_dwordx2 v[0:1], v[4:5]3495; GFX908-NEXT:    s_mov_b64 s[6:7], 03496; GFX908-NEXT:  .LBB16_4: ; %atomicrmw.start3497; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=13498; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3499; GFX908-NEXT:    v_mov_b32_e32 v9, v13500; GFX908-NEXT:    v_mov_b32_e32 v8, v03501; GFX908-NEXT:    v_add_f64 v[6:7], v[8:9], -v[2:3]3502; GFX908-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[6:9] glc3503; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3504; GFX908-NEXT:    buffer_wbinvl13505; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[8:9]3506; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]3507; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]3508; GFX908-NEXT:    s_cbranch_execnz .LBB16_43509; GFX908-NEXT:  ; %bb.5: ; %Flow3510; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]3511; GFX908-NEXT:    ; implicit-def: $vgpr4_vgpr53512; GFX908-NEXT:    ; implicit-def: $vgpr2_vgpr33513; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3514; GFX908-NEXT:    s_cbranch_execz .LBB16_23515; GFX908-NEXT:  .LBB16_6: ; %atomicrmw.private3516; GFX908-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]3517; GFX908-NEXT:    v_cndmask_b32_e32 v4, -1, v4, vcc3518; GFX908-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen3519; GFX908-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:43520; GFX908-NEXT:    s_waitcnt vmcnt(0)3521; GFX908-NEXT:    v_add_f64 v[2:3], v[0:1], -v[2:3]3522; GFX908-NEXT:    buffer_store_dword v2, v4, s[0:3], 0 offen3523; GFX908-NEXT:    buffer_store_dword v3, v4, s[0:3], 0 offen offset:43524; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3525; GFX908-NEXT:    s_waitcnt vmcnt(0)3526; GFX908-NEXT:    s_setpc_b64 s[30:31]3527;3528; GFX8-LABEL: flat_agent_atomic_fsub_ret_f64:3529; GFX8:       ; %bb.0:3530; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3531; GFX8-NEXT:    s_mov_b64 s[4:5], 0xc03532; GFX8-NEXT:    s_load_dword s4, s[4:5], 0x03533; GFX8-NEXT:    ; implicit-def: $vgpr4_vgpr53534; GFX8-NEXT:    s_waitcnt lgkmcnt(0)3535; GFX8-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v13536; GFX8-NEXT:    s_and_saveexec_b64 s[4:5], vcc3537; GFX8-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]3538; GFX8-NEXT:    s_cbranch_execz .LBB16_43539; GFX8-NEXT:  ; %bb.1: ; %atomicrmw.global3540; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 4, v03541; GFX8-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc3542; GFX8-NEXT:    flat_load_dword v5, v[4:5]3543; GFX8-NEXT:    flat_load_dword v4, v[0:1]3544; GFX8-NEXT:    s_mov_b64 s[6:7], 03545; GFX8-NEXT:  .LBB16_2: ; %atomicrmw.start3546; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=13547; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3548; GFX8-NEXT:    v_mov_b32_e32 v7, v53549; GFX8-NEXT:    v_mov_b32_e32 v6, v43550; GFX8-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]3551; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc3552; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3553; GFX8-NEXT:    buffer_wbinvl13554; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]3555; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]3556; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]3557; GFX8-NEXT:    s_cbranch_execnz .LBB16_23558; GFX8-NEXT:  ; %bb.3: ; %Flow3559; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]3560; GFX8-NEXT:    ; implicit-def: $vgpr0_vgpr13561; GFX8-NEXT:    ; implicit-def: $vgpr2_vgpr33562; GFX8-NEXT:  .LBB16_4: ; %Flow33563; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3564; GFX8-NEXT:    s_cbranch_execz .LBB16_63565; GFX8-NEXT:  ; %bb.5: ; %atomicrmw.private3566; GFX8-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]3567; GFX8-NEXT:    v_cndmask_b32_e32 v6, -1, v0, vcc3568; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 4, v63569; GFX8-NEXT:    buffer_load_dword v4, v6, s[0:3], 0 offen3570; GFX8-NEXT:    buffer_load_dword v5, v7, s[0:3], 0 offen3571; GFX8-NEXT:    s_waitcnt vmcnt(0)3572; GFX8-NEXT:    v_add_f64 v[0:1], v[4:5], -v[2:3]3573; GFX8-NEXT:    buffer_store_dword v0, v6, s[0:3], 0 offen3574; GFX8-NEXT:    buffer_store_dword v1, v7, s[0:3], 0 offen3575; GFX8-NEXT:  .LBB16_6: ; %atomicrmw.phi3576; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3577; GFX8-NEXT:    v_mov_b32_e32 v0, v43578; GFX8-NEXT:    v_mov_b32_e32 v1, v53579; GFX8-NEXT:    s_waitcnt vmcnt(0)3580; GFX8-NEXT:    s_setpc_b64 s[30:31]3581;3582; GFX7-LABEL: flat_agent_atomic_fsub_ret_f64:3583; GFX7:       ; %bb.0:3584; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3585; GFX7-NEXT:    s_mov_b64 s[4:5], 0xc03586; GFX7-NEXT:    s_load_dword s4, s[4:5], 0x03587; GFX7-NEXT:    ; implicit-def: $vgpr4_vgpr53588; GFX7-NEXT:    s_waitcnt lgkmcnt(0)3589; GFX7-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v13590; GFX7-NEXT:    s_and_saveexec_b64 s[4:5], vcc3591; GFX7-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]3592; GFX7-NEXT:    s_cbranch_execz .LBB16_43593; GFX7-NEXT:  ; %bb.1: ; %atomicrmw.global3594; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 4, v03595; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc3596; GFX7-NEXT:    flat_load_dword v5, v[4:5]3597; GFX7-NEXT:    flat_load_dword v4, v[0:1]3598; GFX7-NEXT:    s_mov_b64 s[6:7], 03599; GFX7-NEXT:  .LBB16_2: ; %atomicrmw.start3600; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=13601; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3602; GFX7-NEXT:    v_mov_b32_e32 v7, v53603; GFX7-NEXT:    v_mov_b32_e32 v6, v43604; GFX7-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]3605; GFX7-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc3606; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3607; GFX7-NEXT:    buffer_wbinvl13608; GFX7-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]3609; GFX7-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]3610; GFX7-NEXT:    s_andn2_b64 exec, exec, s[6:7]3611; GFX7-NEXT:    s_cbranch_execnz .LBB16_23612; GFX7-NEXT:  ; %bb.3: ; %Flow3613; GFX7-NEXT:    s_or_b64 exec, exec, s[6:7]3614; GFX7-NEXT:    ; implicit-def: $vgpr0_vgpr13615; GFX7-NEXT:    ; implicit-def: $vgpr2_vgpr33616; GFX7-NEXT:  .LBB16_4: ; %Flow33617; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3618; GFX7-NEXT:    s_cbranch_execz .LBB16_63619; GFX7-NEXT:  ; %bb.5: ; %atomicrmw.private3620; GFX7-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]3621; GFX7-NEXT:    v_cndmask_b32_e32 v6, -1, v0, vcc3622; GFX7-NEXT:    v_add_i32_e32 v7, vcc, 4, v63623; GFX7-NEXT:    buffer_load_dword v4, v6, s[0:3], 0 offen3624; GFX7-NEXT:    buffer_load_dword v5, v7, s[0:3], 0 offen3625; GFX7-NEXT:    s_waitcnt vmcnt(0)3626; GFX7-NEXT:    v_add_f64 v[0:1], v[4:5], -v[2:3]3627; GFX7-NEXT:    buffer_store_dword v0, v6, s[0:3], 0 offen3628; GFX7-NEXT:    buffer_store_dword v1, v7, s[0:3], 0 offen3629; GFX7-NEXT:  .LBB16_6: ; %atomicrmw.phi3630; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]3631; GFX7-NEXT:    v_mov_b32_e32 v0, v43632; GFX7-NEXT:    v_mov_b32_e32 v1, v53633; GFX7-NEXT:    s_waitcnt vmcnt(0)3634; GFX7-NEXT:    s_setpc_b64 s[30:31]3635  %result = atomicrmw fsub ptr %ptr, double %val syncscope("agent") seq_cst3636  ret double %result3637}3638 3639define double @flat_agent_atomic_fsub_ret_f64__offset12b_pos(ptr %ptr, double %val) #0 {3640; GFX12-LABEL: flat_agent_atomic_fsub_ret_f64__offset12b_pos:3641; GFX12:       ; %bb.0:3642; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03643; GFX12-NEXT:    s_wait_expcnt 0x03644; GFX12-NEXT:    s_wait_samplecnt 0x03645; GFX12-NEXT:    s_wait_bvhcnt 0x03646; GFX12-NEXT:    s_wait_kmcnt 0x03647; GFX12-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7f8, v03648; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)3649; GFX12-NEXT:    v_add_co_ci_u32_e64 v5, null, 0, v1, vcc_lo3650; GFX12-NEXT:    s_mov_b64 s[0:1], src_private_base3651; GFX12-NEXT:    s_mov_b32 s0, exec_lo3652; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr13653; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3654; GFX12-NEXT:    v_cmpx_ne_u32_e64 s1, v53655; GFX12-NEXT:    s_xor_b32 s0, exec_lo, s03656; GFX12-NEXT:    s_cbranch_execnz .LBB17_33657; GFX12-NEXT:  ; %bb.1: ; %Flow33658; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3659; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s03660; GFX12-NEXT:    s_cbranch_execnz .LBB17_63661; GFX12-NEXT:  .LBB17_2: ; %atomicrmw.phi3662; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3663; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s03664; GFX12-NEXT:    s_wait_loadcnt 0x03665; GFX12-NEXT:    s_setpc_b64 s[30:31]3666; GFX12-NEXT:  .LBB17_3: ; %atomicrmw.global3667; GFX12-NEXT:    flat_load_b64 v[0:1], v[4:5]3668; GFX12-NEXT:    s_mov_b32 s1, 03669; GFX12-NEXT:  .LBB17_4: ; %atomicrmw.start3670; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=13671; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03672; GFX12-NEXT:    v_dual_mov_b32 v9, v1 :: v_dual_mov_b32 v8, v03673; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)3674; GFX12-NEXT:    v_add_f64_e64 v[6:7], v[8:9], -v[2:3]3675; GFX12-NEXT:    s_wait_storecnt 0x03676; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[0:1], v[4:5], v[6:9] th:TH_ATOMIC_RETURN scope:SCOPE_DEV3677; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03678; GFX12-NEXT:    global_inv scope:SCOPE_DEV3679; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[8:9]3680; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3681; GFX12-NEXT:    s_or_b32 s1, vcc_lo, s13682; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3683; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s13684; GFX12-NEXT:    s_cbranch_execnz .LBB17_43685; GFX12-NEXT:  ; %bb.5: ; %Flow3686; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s13687; GFX12-NEXT:    ; implicit-def: $vgpr4_vgpr53688; GFX12-NEXT:    ; implicit-def: $vgpr2_vgpr33689; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s03690; GFX12-NEXT:    s_cbranch_execz .LBB17_23691; GFX12-NEXT:  .LBB17_6: ; %atomicrmw.private3692; GFX12-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[4:5]3693; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)3694; GFX12-NEXT:    v_cndmask_b32_e32 v4, -1, v4, vcc_lo3695; GFX12-NEXT:    scratch_load_b64 v[0:1], v4, off3696; GFX12-NEXT:    s_wait_loadcnt 0x03697; GFX12-NEXT:    v_add_f64_e64 v[2:3], v[0:1], -v[2:3]3698; GFX12-NEXT:    scratch_store_b64 v4, v[2:3], off3699; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3700; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s03701; GFX12-NEXT:    s_setpc_b64 s[30:31]3702;3703; GFX942-LABEL: flat_agent_atomic_fsub_ret_f64__offset12b_pos:3704; GFX942:       ; %bb.0:3705; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3706; GFX942-NEXT:    s_mov_b64 s[2:3], 0x7f83707; GFX942-NEXT:    s_mov_b64 s[0:1], src_private_base3708; GFX942-NEXT:    v_lshl_add_u64 v[8:9], v[0:1], 0, s[2:3]3709; GFX942-NEXT:    v_cmp_ne_u32_e32 vcc, s1, v93710; GFX942-NEXT:    ; implicit-def: $vgpr0_vgpr13711; GFX942-NEXT:    s_and_saveexec_b64 s[0:1], vcc3712; GFX942-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]3713; GFX942-NEXT:    s_cbranch_execnz .LBB17_33714; GFX942-NEXT:  ; %bb.1: ; %Flow33715; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]3716; GFX942-NEXT:    s_cbranch_execnz .LBB17_63717; GFX942-NEXT:  .LBB17_2: ; %atomicrmw.phi3718; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]3719; GFX942-NEXT:    s_setpc_b64 s[30:31]3720; GFX942-NEXT:  .LBB17_3: ; %atomicrmw.global3721; GFX942-NEXT:    flat_load_dwordx2 v[6:7], v[8:9]3722; GFX942-NEXT:    s_mov_b64 s[2:3], 03723; GFX942-NEXT:  .LBB17_4: ; %atomicrmw.start3724; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=13725; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3726; GFX942-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]3727; GFX942-NEXT:    buffer_wbl2 sc13728; GFX942-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[8:9], v[4:7] sc03729; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3730; GFX942-NEXT:    buffer_inv sc13731; GFX942-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[6:7]3732; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]3733; GFX942-NEXT:    v_mov_b64_e32 v[6:7], v[0:1]3734; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]3735; GFX942-NEXT:    s_cbranch_execnz .LBB17_43736; GFX942-NEXT:  ; %bb.5: ; %Flow3737; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]3738; GFX942-NEXT:    ; implicit-def: $vgpr8_vgpr93739; GFX942-NEXT:    ; implicit-def: $vgpr2_vgpr33740; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]3741; GFX942-NEXT:    s_cbranch_execz .LBB17_23742; GFX942-NEXT:  .LBB17_6: ; %atomicrmw.private3743; GFX942-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[8:9]3744; GFX942-NEXT:    s_nop 13745; GFX942-NEXT:    v_cndmask_b32_e32 v4, -1, v8, vcc3746; GFX942-NEXT:    scratch_load_dwordx2 v[0:1], v4, off3747; GFX942-NEXT:    s_waitcnt vmcnt(0)3748; GFX942-NEXT:    v_add_f64 v[2:3], v[0:1], -v[2:3]3749; GFX942-NEXT:    scratch_store_dwordx2 v4, v[2:3], off3750; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]3751; GFX942-NEXT:    s_waitcnt vmcnt(0)3752; GFX942-NEXT:    s_setpc_b64 s[30:31]3753;3754; GFX11-LABEL: flat_agent_atomic_fsub_ret_f64__offset12b_pos:3755; GFX11:       ; %bb.0:3756; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3757; GFX11-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7f8, v03758; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)3759; GFX11-NEXT:    v_add_co_ci_u32_e64 v5, null, 0, v1, vcc_lo3760; GFX11-NEXT:    s_mov_b64 s[0:1], src_private_base3761; GFX11-NEXT:    s_mov_b32 s0, exec_lo3762; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr13763; GFX11-NEXT:    v_cmpx_ne_u32_e64 s1, v53764; GFX11-NEXT:    s_xor_b32 s0, exec_lo, s03765; GFX11-NEXT:    s_cbranch_execnz .LBB17_33766; GFX11-NEXT:  ; %bb.1: ; %Flow33767; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s03768; GFX11-NEXT:    s_cbranch_execnz .LBB17_63769; GFX11-NEXT:  .LBB17_2: ; %atomicrmw.phi3770; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s03771; GFX11-NEXT:    s_setpc_b64 s[30:31]3772; GFX11-NEXT:  .LBB17_3: ; %atomicrmw.global3773; GFX11-NEXT:    flat_load_b64 v[0:1], v[4:5]3774; GFX11-NEXT:    s_mov_b32 s1, 03775; GFX11-NEXT:  .LBB17_4: ; %atomicrmw.start3776; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=13777; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3778; GFX11-NEXT:    v_dual_mov_b32 v9, v1 :: v_dual_mov_b32 v8, v03779; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)3780; GFX11-NEXT:    v_add_f64 v[6:7], v[8:9], -v[2:3]3781; GFX11-NEXT:    s_waitcnt_vscnt null, 0x03782; GFX11-NEXT:    flat_atomic_cmpswap_b64 v[0:1], v[4:5], v[6:9] glc3783; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3784; GFX11-NEXT:    buffer_gl1_inv3785; GFX11-NEXT:    buffer_gl0_inv3786; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[8:9]3787; GFX11-NEXT:    s_or_b32 s1, vcc_lo, s13788; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3789; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s13790; GFX11-NEXT:    s_cbranch_execnz .LBB17_43791; GFX11-NEXT:  ; %bb.5: ; %Flow3792; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s13793; GFX11-NEXT:    ; implicit-def: $vgpr4_vgpr53794; GFX11-NEXT:    ; implicit-def: $vgpr2_vgpr33795; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s03796; GFX11-NEXT:    s_cbranch_execz .LBB17_23797; GFX11-NEXT:  .LBB17_6: ; %atomicrmw.private3798; GFX11-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[4:5]3799; GFX11-NEXT:    v_cndmask_b32_e32 v4, -1, v4, vcc_lo3800; GFX11-NEXT:    scratch_load_b64 v[0:1], v4, off3801; GFX11-NEXT:    s_waitcnt vmcnt(0)3802; GFX11-NEXT:    v_add_f64 v[2:3], v[0:1], -v[2:3]3803; GFX11-NEXT:    scratch_store_b64 v4, v[2:3], off3804; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s03805; GFX11-NEXT:    s_setpc_b64 s[30:31]3806;3807; GFX10-LABEL: flat_agent_atomic_fsub_ret_f64__offset12b_pos:3808; GFX10:       ; %bb.0:3809; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3810; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7f8, v03811; GFX10-NEXT:    v_add_co_ci_u32_e32 v5, vcc_lo, 0, v1, vcc_lo3812; GFX10-NEXT:    s_mov_b64 s[4:5], src_private_base3813; GFX10-NEXT:    ; implicit-def: $vgpr0_vgpr13814; GFX10-NEXT:    v_cmp_ne_u32_e32 vcc_lo, s5, v53815; GFX10-NEXT:    s_and_saveexec_b32 s4, vcc_lo3816; GFX10-NEXT:    s_xor_b32 s4, exec_lo, s43817; GFX10-NEXT:    s_cbranch_execnz .LBB17_33818; GFX10-NEXT:  ; %bb.1: ; %Flow33819; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s43820; GFX10-NEXT:    s_cbranch_execnz .LBB17_63821; GFX10-NEXT:  .LBB17_2: ; %atomicrmw.phi3822; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s43823; GFX10-NEXT:    s_setpc_b64 s[30:31]3824; GFX10-NEXT:  .LBB17_3: ; %atomicrmw.global3825; GFX10-NEXT:    flat_load_dwordx2 v[0:1], v[4:5]3826; GFX10-NEXT:    s_mov_b32 s5, 03827; GFX10-NEXT:  .LBB17_4: ; %atomicrmw.start3828; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=13829; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3830; GFX10-NEXT:    v_mov_b32_e32 v9, v13831; GFX10-NEXT:    v_mov_b32_e32 v8, v03832; GFX10-NEXT:    v_add_f64 v[6:7], v[8:9], -v[2:3]3833; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03834; GFX10-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[6:9] glc3835; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3836; GFX10-NEXT:    buffer_gl1_inv3837; GFX10-NEXT:    buffer_gl0_inv3838; GFX10-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[8:9]3839; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s53840; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s53841; GFX10-NEXT:    s_cbranch_execnz .LBB17_43842; GFX10-NEXT:  ; %bb.5: ; %Flow3843; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s53844; GFX10-NEXT:    ; implicit-def: $vgpr4_vgpr53845; GFX10-NEXT:    ; implicit-def: $vgpr2_vgpr33846; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s43847; GFX10-NEXT:    s_cbranch_execz .LBB17_23848; GFX10-NEXT:  .LBB17_6: ; %atomicrmw.private3849; GFX10-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[4:5]3850; GFX10-NEXT:    v_cndmask_b32_e32 v4, -1, v4, vcc_lo3851; GFX10-NEXT:    s_clause 0x13852; GFX10-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen3853; GFX10-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:43854; GFX10-NEXT:    s_waitcnt vmcnt(0)3855; GFX10-NEXT:    v_add_f64 v[2:3], v[0:1], -v[2:3]3856; GFX10-NEXT:    buffer_store_dword v2, v4, s[0:3], 0 offen3857; GFX10-NEXT:    buffer_store_dword v3, v4, s[0:3], 0 offen offset:43858; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)3859; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s43860; GFX10-NEXT:    s_setpc_b64 s[30:31]3861;3862; GFX90A-LABEL: flat_agent_atomic_fsub_ret_f64__offset12b_pos:3863; GFX90A:       ; %bb.0:3864; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3865; GFX90A-NEXT:    v_add_co_u32_e32 v8, vcc, 0x7f8, v03866; GFX90A-NEXT:    s_mov_b64 s[4:5], src_private_base3867; GFX90A-NEXT:    v_addc_co_u32_e32 v9, vcc, 0, v1, vcc3868; GFX90A-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v93869; GFX90A-NEXT:    ; implicit-def: $vgpr0_vgpr13870; GFX90A-NEXT:    s_and_saveexec_b64 s[4:5], vcc3871; GFX90A-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]3872; GFX90A-NEXT:    s_cbranch_execnz .LBB17_33873; GFX90A-NEXT:  ; %bb.1: ; %Flow33874; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3875; GFX90A-NEXT:    s_cbranch_execnz .LBB17_63876; GFX90A-NEXT:  .LBB17_2: ; %atomicrmw.phi3877; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]3878; GFX90A-NEXT:    s_setpc_b64 s[30:31]3879; GFX90A-NEXT:  .LBB17_3: ; %atomicrmw.global3880; GFX90A-NEXT:    flat_load_dwordx2 v[6:7], v[8:9]3881; GFX90A-NEXT:    s_mov_b64 s[6:7], 03882; GFX90A-NEXT:  .LBB17_4: ; %atomicrmw.start3883; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=13884; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3885; GFX90A-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]3886; GFX90A-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[8:9], v[4:7] glc3887; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3888; GFX90A-NEXT:    buffer_wbinvl13889; GFX90A-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[6:7]3890; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]3891; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], v[0:1], v[0:1] op_sel:[0,1]3892; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]3893; GFX90A-NEXT:    s_cbranch_execnz .LBB17_43894; GFX90A-NEXT:  ; %bb.5: ; %Flow3895; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]3896; GFX90A-NEXT:    ; implicit-def: $vgpr8_vgpr93897; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr33898; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3899; GFX90A-NEXT:    s_cbranch_execz .LBB17_23900; GFX90A-NEXT:  .LBB17_6: ; %atomicrmw.private3901; GFX90A-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[8:9]3902; GFX90A-NEXT:    v_cndmask_b32_e32 v4, -1, v8, vcc3903; GFX90A-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen3904; GFX90A-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:43905; GFX90A-NEXT:    s_waitcnt vmcnt(0)3906; GFX90A-NEXT:    v_add_f64 v[2:3], v[0:1], -v[2:3]3907; GFX90A-NEXT:    buffer_store_dword v2, v4, s[0:3], 0 offen3908; GFX90A-NEXT:    buffer_store_dword v3, v4, s[0:3], 0 offen offset:43909; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]3910; GFX90A-NEXT:    s_waitcnt vmcnt(0)3911; GFX90A-NEXT:    s_setpc_b64 s[30:31]3912;3913; GFX908-LABEL: flat_agent_atomic_fsub_ret_f64__offset12b_pos:3914; GFX908:       ; %bb.0:3915; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3916; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7f8, v03917; GFX908-NEXT:    s_mov_b64 s[4:5], src_private_base3918; GFX908-NEXT:    v_addc_co_u32_e32 v5, vcc, 0, v1, vcc3919; GFX908-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v53920; GFX908-NEXT:    ; implicit-def: $vgpr0_vgpr13921; GFX908-NEXT:    s_and_saveexec_b64 s[4:5], vcc3922; GFX908-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]3923; GFX908-NEXT:    s_cbranch_execnz .LBB17_33924; GFX908-NEXT:  ; %bb.1: ; %Flow33925; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3926; GFX908-NEXT:    s_cbranch_execnz .LBB17_63927; GFX908-NEXT:  .LBB17_2: ; %atomicrmw.phi3928; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3929; GFX908-NEXT:    s_setpc_b64 s[30:31]3930; GFX908-NEXT:  .LBB17_3: ; %atomicrmw.global3931; GFX908-NEXT:    flat_load_dwordx2 v[0:1], v[4:5]3932; GFX908-NEXT:    s_mov_b64 s[6:7], 03933; GFX908-NEXT:  .LBB17_4: ; %atomicrmw.start3934; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=13935; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3936; GFX908-NEXT:    v_mov_b32_e32 v9, v13937; GFX908-NEXT:    v_mov_b32_e32 v8, v03938; GFX908-NEXT:    v_add_f64 v[6:7], v[8:9], -v[2:3]3939; GFX908-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[6:9] glc3940; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3941; GFX908-NEXT:    buffer_wbinvl13942; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[8:9]3943; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]3944; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]3945; GFX908-NEXT:    s_cbranch_execnz .LBB17_43946; GFX908-NEXT:  ; %bb.5: ; %Flow3947; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]3948; GFX908-NEXT:    ; implicit-def: $vgpr4_vgpr53949; GFX908-NEXT:    ; implicit-def: $vgpr2_vgpr33950; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3951; GFX908-NEXT:    s_cbranch_execz .LBB17_23952; GFX908-NEXT:  .LBB17_6: ; %atomicrmw.private3953; GFX908-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]3954; GFX908-NEXT:    v_cndmask_b32_e32 v4, -1, v4, vcc3955; GFX908-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen3956; GFX908-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:43957; GFX908-NEXT:    s_waitcnt vmcnt(0)3958; GFX908-NEXT:    v_add_f64 v[2:3], v[0:1], -v[2:3]3959; GFX908-NEXT:    buffer_store_dword v2, v4, s[0:3], 0 offen3960; GFX908-NEXT:    buffer_store_dword v3, v4, s[0:3], 0 offen offset:43961; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3962; GFX908-NEXT:    s_waitcnt vmcnt(0)3963; GFX908-NEXT:    s_setpc_b64 s[30:31]3964;3965; GFX8-LABEL: flat_agent_atomic_fsub_ret_f64__offset12b_pos:3966; GFX8:       ; %bb.0:3967; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3968; GFX8-NEXT:    s_mov_b64 s[4:5], 0xc03969; GFX8-NEXT:    s_load_dword s4, s[4:5], 0x03970; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0x7f8, v03971; GFX8-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc3972; GFX8-NEXT:    s_waitcnt lgkmcnt(0)3973; GFX8-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v53974; GFX8-NEXT:    ; implicit-def: $vgpr0_vgpr13975; GFX8-NEXT:    s_and_saveexec_b64 s[4:5], vcc3976; GFX8-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]3977; GFX8-NEXT:    s_cbranch_execnz .LBB17_33978; GFX8-NEXT:  ; %bb.1: ; %Flow33979; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3980; GFX8-NEXT:    s_cbranch_execnz .LBB17_63981; GFX8-NEXT:  .LBB17_2: ; %atomicrmw.phi3982; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3983; GFX8-NEXT:    s_setpc_b64 s[30:31]3984; GFX8-NEXT:  .LBB17_3: ; %atomicrmw.global3985; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 4, v43986; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v5, vcc3987; GFX8-NEXT:    flat_load_dword v1, v[0:1]3988; GFX8-NEXT:    flat_load_dword v0, v[4:5]3989; GFX8-NEXT:    s_mov_b64 s[6:7], 03990; GFX8-NEXT:  .LBB17_4: ; %atomicrmw.start3991; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=13992; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3993; GFX8-NEXT:    v_mov_b32_e32 v9, v13994; GFX8-NEXT:    v_mov_b32_e32 v8, v03995; GFX8-NEXT:    v_add_f64 v[6:7], v[8:9], -v[2:3]3996; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[6:9] glc3997; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3998; GFX8-NEXT:    buffer_wbinvl13999; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[8:9]4000; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]4001; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]4002; GFX8-NEXT:    s_cbranch_execnz .LBB17_44003; GFX8-NEXT:  ; %bb.5: ; %Flow4004; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]4005; GFX8-NEXT:    ; implicit-def: $vgpr4_vgpr54006; GFX8-NEXT:    ; implicit-def: $vgpr2_vgpr34007; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4008; GFX8-NEXT:    s_cbranch_execz .LBB17_24009; GFX8-NEXT:  .LBB17_6: ; %atomicrmw.private4010; GFX8-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]4011; GFX8-NEXT:    v_cndmask_b32_e32 v4, -1, v4, vcc4012; GFX8-NEXT:    v_add_u32_e32 v5, vcc, 4, v44013; GFX8-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen4014; GFX8-NEXT:    buffer_load_dword v1, v5, s[0:3], 0 offen4015; GFX8-NEXT:    s_waitcnt vmcnt(0)4016; GFX8-NEXT:    v_add_f64 v[2:3], v[0:1], -v[2:3]4017; GFX8-NEXT:    buffer_store_dword v2, v4, s[0:3], 0 offen4018; GFX8-NEXT:    buffer_store_dword v3, v5, s[0:3], 0 offen4019; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]4020; GFX8-NEXT:    s_waitcnt vmcnt(0)4021; GFX8-NEXT:    s_setpc_b64 s[30:31]4022;4023; GFX7-LABEL: flat_agent_atomic_fsub_ret_f64__offset12b_pos:4024; GFX7:       ; %bb.0:4025; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4026; GFX7-NEXT:    s_mov_b64 s[4:5], 0xc04027; GFX7-NEXT:    s_load_dword s4, s[4:5], 0x04028; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7f8, v04029; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc4030; GFX7-NEXT:    s_waitcnt lgkmcnt(0)4031; GFX7-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v54032; GFX7-NEXT:    ; implicit-def: $vgpr0_vgpr14033; GFX7-NEXT:    s_and_saveexec_b64 s[4:5], vcc4034; GFX7-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]4035; GFX7-NEXT:    s_cbranch_execnz .LBB17_34036; GFX7-NEXT:  ; %bb.1: ; %Flow34037; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4038; GFX7-NEXT:    s_cbranch_execnz .LBB17_64039; GFX7-NEXT:  .LBB17_2: ; %atomicrmw.phi4040; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]4041; GFX7-NEXT:    s_setpc_b64 s[30:31]4042; GFX7-NEXT:  .LBB17_3: ; %atomicrmw.global4043; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 4, v44044; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v5, vcc4045; GFX7-NEXT:    flat_load_dword v1, v[0:1]4046; GFX7-NEXT:    flat_load_dword v0, v[4:5]4047; GFX7-NEXT:    s_mov_b64 s[6:7], 04048; GFX7-NEXT:  .LBB17_4: ; %atomicrmw.start4049; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=14050; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4051; GFX7-NEXT:    v_mov_b32_e32 v9, v14052; GFX7-NEXT:    v_mov_b32_e32 v8, v04053; GFX7-NEXT:    v_add_f64 v[6:7], v[8:9], -v[2:3]4054; GFX7-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[6:9] glc4055; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4056; GFX7-NEXT:    buffer_wbinvl14057; GFX7-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[8:9]4058; GFX7-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]4059; GFX7-NEXT:    s_andn2_b64 exec, exec, s[6:7]4060; GFX7-NEXT:    s_cbranch_execnz .LBB17_44061; GFX7-NEXT:  ; %bb.5: ; %Flow4062; GFX7-NEXT:    s_or_b64 exec, exec, s[6:7]4063; GFX7-NEXT:    ; implicit-def: $vgpr4_vgpr54064; GFX7-NEXT:    ; implicit-def: $vgpr2_vgpr34065; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4066; GFX7-NEXT:    s_cbranch_execz .LBB17_24067; GFX7-NEXT:  .LBB17_6: ; %atomicrmw.private4068; GFX7-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]4069; GFX7-NEXT:    v_cndmask_b32_e32 v4, -1, v4, vcc4070; GFX7-NEXT:    v_add_i32_e32 v5, vcc, 4, v44071; GFX7-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen4072; GFX7-NEXT:    buffer_load_dword v1, v5, s[0:3], 0 offen4073; GFX7-NEXT:    s_waitcnt vmcnt(0)4074; GFX7-NEXT:    v_add_f64 v[2:3], v[0:1], -v[2:3]4075; GFX7-NEXT:    buffer_store_dword v2, v4, s[0:3], 0 offen4076; GFX7-NEXT:    buffer_store_dword v3, v5, s[0:3], 0 offen4077; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]4078; GFX7-NEXT:    s_waitcnt vmcnt(0)4079; GFX7-NEXT:    s_setpc_b64 s[30:31]4080  %gep = getelementptr inbounds double, ptr %ptr, i64 2554081  %result = atomicrmw fsub ptr %gep, double %val syncscope("agent") seq_cst4082  ret double %result4083}4084 4085define double @flat_agent_atomic_fsub_ret_f64__offset12b_neg(ptr %ptr, double %val) #0 {4086; GFX12-LABEL: flat_agent_atomic_fsub_ret_f64__offset12b_neg:4087; GFX12:       ; %bb.0:4088; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04089; GFX12-NEXT:    s_wait_expcnt 0x04090; GFX12-NEXT:    s_wait_samplecnt 0x04091; GFX12-NEXT:    s_wait_bvhcnt 0x04092; GFX12-NEXT:    s_wait_kmcnt 0x04093; GFX12-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v04094; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)4095; GFX12-NEXT:    v_add_co_ci_u32_e64 v5, null, -1, v1, vcc_lo4096; GFX12-NEXT:    s_mov_b64 s[0:1], src_private_base4097; GFX12-NEXT:    s_mov_b32 s0, exec_lo4098; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr14099; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4100; GFX12-NEXT:    v_cmpx_ne_u32_e64 s1, v54101; GFX12-NEXT:    s_xor_b32 s0, exec_lo, s04102; GFX12-NEXT:    s_cbranch_execnz .LBB18_34103; GFX12-NEXT:  ; %bb.1: ; %Flow34104; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4105; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s04106; GFX12-NEXT:    s_cbranch_execnz .LBB18_64107; GFX12-NEXT:  .LBB18_2: ; %atomicrmw.phi4108; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4109; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s04110; GFX12-NEXT:    s_wait_loadcnt 0x04111; GFX12-NEXT:    s_setpc_b64 s[30:31]4112; GFX12-NEXT:  .LBB18_3: ; %atomicrmw.global4113; GFX12-NEXT:    flat_load_b64 v[0:1], v[4:5]4114; GFX12-NEXT:    s_mov_b32 s1, 04115; GFX12-NEXT:  .LBB18_4: ; %atomicrmw.start4116; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=14117; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04118; GFX12-NEXT:    v_dual_mov_b32 v9, v1 :: v_dual_mov_b32 v8, v04119; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)4120; GFX12-NEXT:    v_add_f64_e64 v[6:7], v[8:9], -v[2:3]4121; GFX12-NEXT:    s_wait_storecnt 0x04122; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[0:1], v[4:5], v[6:9] th:TH_ATOMIC_RETURN scope:SCOPE_DEV4123; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04124; GFX12-NEXT:    global_inv scope:SCOPE_DEV4125; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[8:9]4126; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4127; GFX12-NEXT:    s_or_b32 s1, vcc_lo, s14128; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4129; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s14130; GFX12-NEXT:    s_cbranch_execnz .LBB18_44131; GFX12-NEXT:  ; %bb.5: ; %Flow4132; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s14133; GFX12-NEXT:    ; implicit-def: $vgpr4_vgpr54134; GFX12-NEXT:    ; implicit-def: $vgpr2_vgpr34135; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s04136; GFX12-NEXT:    s_cbranch_execz .LBB18_24137; GFX12-NEXT:  .LBB18_6: ; %atomicrmw.private4138; GFX12-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[4:5]4139; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)4140; GFX12-NEXT:    v_cndmask_b32_e32 v4, -1, v4, vcc_lo4141; GFX12-NEXT:    scratch_load_b64 v[0:1], v4, off4142; GFX12-NEXT:    s_wait_loadcnt 0x04143; GFX12-NEXT:    v_add_f64_e64 v[2:3], v[0:1], -v[2:3]4144; GFX12-NEXT:    scratch_store_b64 v4, v[2:3], off4145; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4146; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s04147; GFX12-NEXT:    s_setpc_b64 s[30:31]4148;4149; GFX942-LABEL: flat_agent_atomic_fsub_ret_f64__offset12b_neg:4150; GFX942:       ; %bb.0:4151; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4152; GFX942-NEXT:    s_movk_i32 s2, 0xf8004153; GFX942-NEXT:    s_mov_b32 s3, -14154; GFX942-NEXT:    s_mov_b64 s[0:1], src_private_base4155; GFX942-NEXT:    v_lshl_add_u64 v[8:9], v[0:1], 0, s[2:3]4156; GFX942-NEXT:    v_cmp_ne_u32_e32 vcc, s1, v94157; GFX942-NEXT:    ; implicit-def: $vgpr0_vgpr14158; GFX942-NEXT:    s_and_saveexec_b64 s[0:1], vcc4159; GFX942-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]4160; GFX942-NEXT:    s_cbranch_execnz .LBB18_34161; GFX942-NEXT:  ; %bb.1: ; %Flow34162; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]4163; GFX942-NEXT:    s_cbranch_execnz .LBB18_64164; GFX942-NEXT:  .LBB18_2: ; %atomicrmw.phi4165; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]4166; GFX942-NEXT:    s_setpc_b64 s[30:31]4167; GFX942-NEXT:  .LBB18_3: ; %atomicrmw.global4168; GFX942-NEXT:    flat_load_dwordx2 v[6:7], v[8:9]4169; GFX942-NEXT:    s_mov_b64 s[2:3], 04170; GFX942-NEXT:  .LBB18_4: ; %atomicrmw.start4171; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=14172; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4173; GFX942-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4174; GFX942-NEXT:    buffer_wbl2 sc14175; GFX942-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[8:9], v[4:7] sc04176; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4177; GFX942-NEXT:    buffer_inv sc14178; GFX942-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[6:7]4179; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]4180; GFX942-NEXT:    v_mov_b64_e32 v[6:7], v[0:1]4181; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]4182; GFX942-NEXT:    s_cbranch_execnz .LBB18_44183; GFX942-NEXT:  ; %bb.5: ; %Flow4184; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]4185; GFX942-NEXT:    ; implicit-def: $vgpr8_vgpr94186; GFX942-NEXT:    ; implicit-def: $vgpr2_vgpr34187; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]4188; GFX942-NEXT:    s_cbranch_execz .LBB18_24189; GFX942-NEXT:  .LBB18_6: ; %atomicrmw.private4190; GFX942-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[8:9]4191; GFX942-NEXT:    s_nop 14192; GFX942-NEXT:    v_cndmask_b32_e32 v4, -1, v8, vcc4193; GFX942-NEXT:    scratch_load_dwordx2 v[0:1], v4, off4194; GFX942-NEXT:    s_waitcnt vmcnt(0)4195; GFX942-NEXT:    v_add_f64 v[2:3], v[0:1], -v[2:3]4196; GFX942-NEXT:    scratch_store_dwordx2 v4, v[2:3], off4197; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]4198; GFX942-NEXT:    s_waitcnt vmcnt(0)4199; GFX942-NEXT:    s_setpc_b64 s[30:31]4200;4201; GFX11-LABEL: flat_agent_atomic_fsub_ret_f64__offset12b_neg:4202; GFX11:       ; %bb.0:4203; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4204; GFX11-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v04205; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)4206; GFX11-NEXT:    v_add_co_ci_u32_e64 v5, null, -1, v1, vcc_lo4207; GFX11-NEXT:    s_mov_b64 s[0:1], src_private_base4208; GFX11-NEXT:    s_mov_b32 s0, exec_lo4209; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr14210; GFX11-NEXT:    v_cmpx_ne_u32_e64 s1, v54211; GFX11-NEXT:    s_xor_b32 s0, exec_lo, s04212; GFX11-NEXT:    s_cbranch_execnz .LBB18_34213; GFX11-NEXT:  ; %bb.1: ; %Flow34214; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s04215; GFX11-NEXT:    s_cbranch_execnz .LBB18_64216; GFX11-NEXT:  .LBB18_2: ; %atomicrmw.phi4217; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s04218; GFX11-NEXT:    s_setpc_b64 s[30:31]4219; GFX11-NEXT:  .LBB18_3: ; %atomicrmw.global4220; GFX11-NEXT:    flat_load_b64 v[0:1], v[4:5]4221; GFX11-NEXT:    s_mov_b32 s1, 04222; GFX11-NEXT:  .LBB18_4: ; %atomicrmw.start4223; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=14224; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4225; GFX11-NEXT:    v_dual_mov_b32 v9, v1 :: v_dual_mov_b32 v8, v04226; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)4227; GFX11-NEXT:    v_add_f64 v[6:7], v[8:9], -v[2:3]4228; GFX11-NEXT:    s_waitcnt_vscnt null, 0x04229; GFX11-NEXT:    flat_atomic_cmpswap_b64 v[0:1], v[4:5], v[6:9] glc4230; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4231; GFX11-NEXT:    buffer_gl1_inv4232; GFX11-NEXT:    buffer_gl0_inv4233; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[8:9]4234; GFX11-NEXT:    s_or_b32 s1, vcc_lo, s14235; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4236; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s14237; GFX11-NEXT:    s_cbranch_execnz .LBB18_44238; GFX11-NEXT:  ; %bb.5: ; %Flow4239; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s14240; GFX11-NEXT:    ; implicit-def: $vgpr4_vgpr54241; GFX11-NEXT:    ; implicit-def: $vgpr2_vgpr34242; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s04243; GFX11-NEXT:    s_cbranch_execz .LBB18_24244; GFX11-NEXT:  .LBB18_6: ; %atomicrmw.private4245; GFX11-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[4:5]4246; GFX11-NEXT:    v_cndmask_b32_e32 v4, -1, v4, vcc_lo4247; GFX11-NEXT:    scratch_load_b64 v[0:1], v4, off4248; GFX11-NEXT:    s_waitcnt vmcnt(0)4249; GFX11-NEXT:    v_add_f64 v[2:3], v[0:1], -v[2:3]4250; GFX11-NEXT:    scratch_store_b64 v4, v[2:3], off4251; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s04252; GFX11-NEXT:    s_setpc_b64 s[30:31]4253;4254; GFX10-LABEL: flat_agent_atomic_fsub_ret_f64__offset12b_neg:4255; GFX10:       ; %bb.0:4256; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4257; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v04258; GFX10-NEXT:    v_add_co_ci_u32_e32 v5, vcc_lo, -1, v1, vcc_lo4259; GFX10-NEXT:    s_mov_b64 s[4:5], src_private_base4260; GFX10-NEXT:    ; implicit-def: $vgpr0_vgpr14261; GFX10-NEXT:    v_cmp_ne_u32_e32 vcc_lo, s5, v54262; GFX10-NEXT:    s_and_saveexec_b32 s4, vcc_lo4263; GFX10-NEXT:    s_xor_b32 s4, exec_lo, s44264; GFX10-NEXT:    s_cbranch_execnz .LBB18_34265; GFX10-NEXT:  ; %bb.1: ; %Flow34266; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s44267; GFX10-NEXT:    s_cbranch_execnz .LBB18_64268; GFX10-NEXT:  .LBB18_2: ; %atomicrmw.phi4269; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s44270; GFX10-NEXT:    s_setpc_b64 s[30:31]4271; GFX10-NEXT:  .LBB18_3: ; %atomicrmw.global4272; GFX10-NEXT:    flat_load_dwordx2 v[0:1], v[4:5]4273; GFX10-NEXT:    s_mov_b32 s5, 04274; GFX10-NEXT:  .LBB18_4: ; %atomicrmw.start4275; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=14276; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4277; GFX10-NEXT:    v_mov_b32_e32 v9, v14278; GFX10-NEXT:    v_mov_b32_e32 v8, v04279; GFX10-NEXT:    v_add_f64 v[6:7], v[8:9], -v[2:3]4280; GFX10-NEXT:    s_waitcnt_vscnt null, 0x04281; GFX10-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[6:9] glc4282; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4283; GFX10-NEXT:    buffer_gl1_inv4284; GFX10-NEXT:    buffer_gl0_inv4285; GFX10-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[8:9]4286; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s54287; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s54288; GFX10-NEXT:    s_cbranch_execnz .LBB18_44289; GFX10-NEXT:  ; %bb.5: ; %Flow4290; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s54291; GFX10-NEXT:    ; implicit-def: $vgpr4_vgpr54292; GFX10-NEXT:    ; implicit-def: $vgpr2_vgpr34293; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s44294; GFX10-NEXT:    s_cbranch_execz .LBB18_24295; GFX10-NEXT:  .LBB18_6: ; %atomicrmw.private4296; GFX10-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[4:5]4297; GFX10-NEXT:    v_cndmask_b32_e32 v4, -1, v4, vcc_lo4298; GFX10-NEXT:    s_clause 0x14299; GFX10-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen4300; GFX10-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:44301; GFX10-NEXT:    s_waitcnt vmcnt(0)4302; GFX10-NEXT:    v_add_f64 v[2:3], v[0:1], -v[2:3]4303; GFX10-NEXT:    buffer_store_dword v2, v4, s[0:3], 0 offen4304; GFX10-NEXT:    buffer_store_dword v3, v4, s[0:3], 0 offen offset:44305; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)4306; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s44307; GFX10-NEXT:    s_setpc_b64 s[30:31]4308;4309; GFX90A-LABEL: flat_agent_atomic_fsub_ret_f64__offset12b_neg:4310; GFX90A:       ; %bb.0:4311; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4312; GFX90A-NEXT:    v_add_co_u32_e32 v8, vcc, 0xfffff800, v04313; GFX90A-NEXT:    s_mov_b64 s[4:5], src_private_base4314; GFX90A-NEXT:    v_addc_co_u32_e32 v9, vcc, -1, v1, vcc4315; GFX90A-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v94316; GFX90A-NEXT:    ; implicit-def: $vgpr0_vgpr14317; GFX90A-NEXT:    s_and_saveexec_b64 s[4:5], vcc4318; GFX90A-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]4319; GFX90A-NEXT:    s_cbranch_execnz .LBB18_34320; GFX90A-NEXT:  ; %bb.1: ; %Flow34321; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4322; GFX90A-NEXT:    s_cbranch_execnz .LBB18_64323; GFX90A-NEXT:  .LBB18_2: ; %atomicrmw.phi4324; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]4325; GFX90A-NEXT:    s_setpc_b64 s[30:31]4326; GFX90A-NEXT:  .LBB18_3: ; %atomicrmw.global4327; GFX90A-NEXT:    flat_load_dwordx2 v[6:7], v[8:9]4328; GFX90A-NEXT:    s_mov_b64 s[6:7], 04329; GFX90A-NEXT:  .LBB18_4: ; %atomicrmw.start4330; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=14331; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4332; GFX90A-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4333; GFX90A-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[8:9], v[4:7] glc4334; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4335; GFX90A-NEXT:    buffer_wbinvl14336; GFX90A-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[6:7]4337; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]4338; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], v[0:1], v[0:1] op_sel:[0,1]4339; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]4340; GFX90A-NEXT:    s_cbranch_execnz .LBB18_44341; GFX90A-NEXT:  ; %bb.5: ; %Flow4342; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]4343; GFX90A-NEXT:    ; implicit-def: $vgpr8_vgpr94344; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr34345; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4346; GFX90A-NEXT:    s_cbranch_execz .LBB18_24347; GFX90A-NEXT:  .LBB18_6: ; %atomicrmw.private4348; GFX90A-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[8:9]4349; GFX90A-NEXT:    v_cndmask_b32_e32 v4, -1, v8, vcc4350; GFX90A-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen4351; GFX90A-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:44352; GFX90A-NEXT:    s_waitcnt vmcnt(0)4353; GFX90A-NEXT:    v_add_f64 v[2:3], v[0:1], -v[2:3]4354; GFX90A-NEXT:    buffer_store_dword v2, v4, s[0:3], 0 offen4355; GFX90A-NEXT:    buffer_store_dword v3, v4, s[0:3], 0 offen offset:44356; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]4357; GFX90A-NEXT:    s_waitcnt vmcnt(0)4358; GFX90A-NEXT:    s_setpc_b64 s[30:31]4359;4360; GFX908-LABEL: flat_agent_atomic_fsub_ret_f64__offset12b_neg:4361; GFX908:       ; %bb.0:4362; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4363; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v04364; GFX908-NEXT:    s_mov_b64 s[4:5], src_private_base4365; GFX908-NEXT:    v_addc_co_u32_e32 v5, vcc, -1, v1, vcc4366; GFX908-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v54367; GFX908-NEXT:    ; implicit-def: $vgpr0_vgpr14368; GFX908-NEXT:    s_and_saveexec_b64 s[4:5], vcc4369; GFX908-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]4370; GFX908-NEXT:    s_cbranch_execnz .LBB18_34371; GFX908-NEXT:  ; %bb.1: ; %Flow34372; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4373; GFX908-NEXT:    s_cbranch_execnz .LBB18_64374; GFX908-NEXT:  .LBB18_2: ; %atomicrmw.phi4375; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]4376; GFX908-NEXT:    s_setpc_b64 s[30:31]4377; GFX908-NEXT:  .LBB18_3: ; %atomicrmw.global4378; GFX908-NEXT:    flat_load_dwordx2 v[0:1], v[4:5]4379; GFX908-NEXT:    s_mov_b64 s[6:7], 04380; GFX908-NEXT:  .LBB18_4: ; %atomicrmw.start4381; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=14382; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4383; GFX908-NEXT:    v_mov_b32_e32 v9, v14384; GFX908-NEXT:    v_mov_b32_e32 v8, v04385; GFX908-NEXT:    v_add_f64 v[6:7], v[8:9], -v[2:3]4386; GFX908-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[6:9] glc4387; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4388; GFX908-NEXT:    buffer_wbinvl14389; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[8:9]4390; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]4391; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]4392; GFX908-NEXT:    s_cbranch_execnz .LBB18_44393; GFX908-NEXT:  ; %bb.5: ; %Flow4394; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]4395; GFX908-NEXT:    ; implicit-def: $vgpr4_vgpr54396; GFX908-NEXT:    ; implicit-def: $vgpr2_vgpr34397; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4398; GFX908-NEXT:    s_cbranch_execz .LBB18_24399; GFX908-NEXT:  .LBB18_6: ; %atomicrmw.private4400; GFX908-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]4401; GFX908-NEXT:    v_cndmask_b32_e32 v4, -1, v4, vcc4402; GFX908-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen4403; GFX908-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:44404; GFX908-NEXT:    s_waitcnt vmcnt(0)4405; GFX908-NEXT:    v_add_f64 v[2:3], v[0:1], -v[2:3]4406; GFX908-NEXT:    buffer_store_dword v2, v4, s[0:3], 0 offen4407; GFX908-NEXT:    buffer_store_dword v3, v4, s[0:3], 0 offen offset:44408; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]4409; GFX908-NEXT:    s_waitcnt vmcnt(0)4410; GFX908-NEXT:    s_setpc_b64 s[30:31]4411;4412; GFX8-LABEL: flat_agent_atomic_fsub_ret_f64__offset12b_neg:4413; GFX8:       ; %bb.0:4414; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4415; GFX8-NEXT:    s_mov_b64 s[4:5], 0xc04416; GFX8-NEXT:    s_load_dword s4, s[4:5], 0x04417; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0xfffff800, v04418; GFX8-NEXT:    v_addc_u32_e32 v5, vcc, -1, v1, vcc4419; GFX8-NEXT:    s_waitcnt lgkmcnt(0)4420; GFX8-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v54421; GFX8-NEXT:    ; implicit-def: $vgpr0_vgpr14422; GFX8-NEXT:    s_and_saveexec_b64 s[4:5], vcc4423; GFX8-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]4424; GFX8-NEXT:    s_cbranch_execnz .LBB18_34425; GFX8-NEXT:  ; %bb.1: ; %Flow34426; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4427; GFX8-NEXT:    s_cbranch_execnz .LBB18_64428; GFX8-NEXT:  .LBB18_2: ; %atomicrmw.phi4429; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]4430; GFX8-NEXT:    s_setpc_b64 s[30:31]4431; GFX8-NEXT:  .LBB18_3: ; %atomicrmw.global4432; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 4, v44433; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v5, vcc4434; GFX8-NEXT:    flat_load_dword v1, v[0:1]4435; GFX8-NEXT:    flat_load_dword v0, v[4:5]4436; GFX8-NEXT:    s_mov_b64 s[6:7], 04437; GFX8-NEXT:  .LBB18_4: ; %atomicrmw.start4438; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=14439; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4440; GFX8-NEXT:    v_mov_b32_e32 v9, v14441; GFX8-NEXT:    v_mov_b32_e32 v8, v04442; GFX8-NEXT:    v_add_f64 v[6:7], v[8:9], -v[2:3]4443; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[6:9] glc4444; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4445; GFX8-NEXT:    buffer_wbinvl14446; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[8:9]4447; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]4448; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]4449; GFX8-NEXT:    s_cbranch_execnz .LBB18_44450; GFX8-NEXT:  ; %bb.5: ; %Flow4451; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]4452; GFX8-NEXT:    ; implicit-def: $vgpr4_vgpr54453; GFX8-NEXT:    ; implicit-def: $vgpr2_vgpr34454; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4455; GFX8-NEXT:    s_cbranch_execz .LBB18_24456; GFX8-NEXT:  .LBB18_6: ; %atomicrmw.private4457; GFX8-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]4458; GFX8-NEXT:    v_cndmask_b32_e32 v4, -1, v4, vcc4459; GFX8-NEXT:    v_add_u32_e32 v5, vcc, 4, v44460; GFX8-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen4461; GFX8-NEXT:    buffer_load_dword v1, v5, s[0:3], 0 offen4462; GFX8-NEXT:    s_waitcnt vmcnt(0)4463; GFX8-NEXT:    v_add_f64 v[2:3], v[0:1], -v[2:3]4464; GFX8-NEXT:    buffer_store_dword v2, v4, s[0:3], 0 offen4465; GFX8-NEXT:    buffer_store_dword v3, v5, s[0:3], 0 offen4466; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]4467; GFX8-NEXT:    s_waitcnt vmcnt(0)4468; GFX8-NEXT:    s_setpc_b64 s[30:31]4469;4470; GFX7-LABEL: flat_agent_atomic_fsub_ret_f64__offset12b_neg:4471; GFX7:       ; %bb.0:4472; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4473; GFX7-NEXT:    s_mov_b64 s[4:5], 0xc04474; GFX7-NEXT:    s_load_dword s4, s[4:5], 0x04475; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v04476; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, -1, v1, vcc4477; GFX7-NEXT:    s_waitcnt lgkmcnt(0)4478; GFX7-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v54479; GFX7-NEXT:    ; implicit-def: $vgpr0_vgpr14480; GFX7-NEXT:    s_and_saveexec_b64 s[4:5], vcc4481; GFX7-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]4482; GFX7-NEXT:    s_cbranch_execnz .LBB18_34483; GFX7-NEXT:  ; %bb.1: ; %Flow34484; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4485; GFX7-NEXT:    s_cbranch_execnz .LBB18_64486; GFX7-NEXT:  .LBB18_2: ; %atomicrmw.phi4487; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]4488; GFX7-NEXT:    s_setpc_b64 s[30:31]4489; GFX7-NEXT:  .LBB18_3: ; %atomicrmw.global4490; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 4, v44491; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v5, vcc4492; GFX7-NEXT:    flat_load_dword v1, v[0:1]4493; GFX7-NEXT:    flat_load_dword v0, v[4:5]4494; GFX7-NEXT:    s_mov_b64 s[6:7], 04495; GFX7-NEXT:  .LBB18_4: ; %atomicrmw.start4496; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=14497; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4498; GFX7-NEXT:    v_mov_b32_e32 v9, v14499; GFX7-NEXT:    v_mov_b32_e32 v8, v04500; GFX7-NEXT:    v_add_f64 v[6:7], v[8:9], -v[2:3]4501; GFX7-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[6:9] glc4502; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4503; GFX7-NEXT:    buffer_wbinvl14504; GFX7-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[8:9]4505; GFX7-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]4506; GFX7-NEXT:    s_andn2_b64 exec, exec, s[6:7]4507; GFX7-NEXT:    s_cbranch_execnz .LBB18_44508; GFX7-NEXT:  ; %bb.5: ; %Flow4509; GFX7-NEXT:    s_or_b64 exec, exec, s[6:7]4510; GFX7-NEXT:    ; implicit-def: $vgpr4_vgpr54511; GFX7-NEXT:    ; implicit-def: $vgpr2_vgpr34512; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4513; GFX7-NEXT:    s_cbranch_execz .LBB18_24514; GFX7-NEXT:  .LBB18_6: ; %atomicrmw.private4515; GFX7-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]4516; GFX7-NEXT:    v_cndmask_b32_e32 v4, -1, v4, vcc4517; GFX7-NEXT:    v_add_i32_e32 v5, vcc, 4, v44518; GFX7-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen4519; GFX7-NEXT:    buffer_load_dword v1, v5, s[0:3], 0 offen4520; GFX7-NEXT:    s_waitcnt vmcnt(0)4521; GFX7-NEXT:    v_add_f64 v[2:3], v[0:1], -v[2:3]4522; GFX7-NEXT:    buffer_store_dword v2, v4, s[0:3], 0 offen4523; GFX7-NEXT:    buffer_store_dword v3, v5, s[0:3], 0 offen4524; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]4525; GFX7-NEXT:    s_waitcnt vmcnt(0)4526; GFX7-NEXT:    s_setpc_b64 s[30:31]4527  %gep = getelementptr inbounds double, ptr %ptr, i64 -2564528  %result = atomicrmw fsub ptr %gep, double %val syncscope("agent") seq_cst4529  ret double %result4530}4531 4532define void @flat_agent_atomic_fsub_noret_f64(ptr %ptr, double %val) #0 {4533; GFX12-LABEL: flat_agent_atomic_fsub_noret_f64:4534; GFX12:       ; %bb.0:4535; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04536; GFX12-NEXT:    s_wait_expcnt 0x04537; GFX12-NEXT:    s_wait_samplecnt 0x04538; GFX12-NEXT:    s_wait_bvhcnt 0x04539; GFX12-NEXT:    s_wait_kmcnt 0x04540; GFX12-NEXT:    s_mov_b64 s[0:1], src_private_base4541; GFX12-NEXT:    s_mov_b32 s0, exec_lo4542; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4543; GFX12-NEXT:    v_cmpx_ne_u32_e64 s1, v14544; GFX12-NEXT:    s_xor_b32 s0, exec_lo, s04545; GFX12-NEXT:    s_cbranch_execnz .LBB19_34546; GFX12-NEXT:  ; %bb.1: ; %Flow34547; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4548; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s04549; GFX12-NEXT:    s_cbranch_execnz .LBB19_64550; GFX12-NEXT:  .LBB19_2: ; %atomicrmw.phi4551; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4552; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s04553; GFX12-NEXT:    s_wait_loadcnt 0x04554; GFX12-NEXT:    s_setpc_b64 s[30:31]4555; GFX12-NEXT:  .LBB19_3: ; %atomicrmw.global4556; GFX12-NEXT:    flat_load_b64 v[6:7], v[0:1]4557; GFX12-NEXT:    s_mov_b32 s1, 04558; GFX12-NEXT:  .LBB19_4: ; %atomicrmw.start4559; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=14560; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04561; GFX12-NEXT:    v_add_f64_e64 v[4:5], v[6:7], -v[2:3]4562; GFX12-NEXT:    s_wait_storecnt 0x04563; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7] th:TH_ATOMIC_RETURN scope:SCOPE_DEV4564; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04565; GFX12-NEXT:    global_inv scope:SCOPE_DEV4566; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4567; GFX12-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v44568; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4569; GFX12-NEXT:    s_or_b32 s1, vcc_lo, s14570; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4571; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s14572; GFX12-NEXT:    s_cbranch_execnz .LBB19_44573; GFX12-NEXT:  ; %bb.5: ; %Flow4574; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s14575; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr14576; GFX12-NEXT:    ; implicit-def: $vgpr2_vgpr34577; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s04578; GFX12-NEXT:    s_cbranch_execz .LBB19_24579; GFX12-NEXT:  .LBB19_6: ; %atomicrmw.private4580; GFX12-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]4581; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)4582; GFX12-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc_lo4583; GFX12-NEXT:    scratch_load_b64 v[0:1], v4, off4584; GFX12-NEXT:    s_wait_loadcnt 0x04585; GFX12-NEXT:    v_add_f64_e64 v[0:1], v[0:1], -v[2:3]4586; GFX12-NEXT:    scratch_store_b64 v4, v[0:1], off4587; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4588; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s04589; GFX12-NEXT:    s_setpc_b64 s[30:31]4590;4591; GFX942-LABEL: flat_agent_atomic_fsub_noret_f64:4592; GFX942:       ; %bb.0:4593; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4594; GFX942-NEXT:    s_mov_b64 s[0:1], src_private_base4595; GFX942-NEXT:    v_cmp_ne_u32_e32 vcc, s1, v14596; GFX942-NEXT:    s_and_saveexec_b64 s[0:1], vcc4597; GFX942-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]4598; GFX942-NEXT:    s_cbranch_execnz .LBB19_34599; GFX942-NEXT:  ; %bb.1: ; %Flow34600; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]4601; GFX942-NEXT:    s_cbranch_execnz .LBB19_64602; GFX942-NEXT:  .LBB19_2: ; %atomicrmw.phi4603; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]4604; GFX942-NEXT:    s_setpc_b64 s[30:31]4605; GFX942-NEXT:  .LBB19_3: ; %atomicrmw.global4606; GFX942-NEXT:    flat_load_dwordx2 v[6:7], v[0:1]4607; GFX942-NEXT:    s_mov_b64 s[2:3], 04608; GFX942-NEXT:  .LBB19_4: ; %atomicrmw.start4609; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=14610; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4611; GFX942-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4612; GFX942-NEXT:    buffer_wbl2 sc14613; GFX942-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] sc04614; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4615; GFX942-NEXT:    buffer_inv sc14616; GFX942-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4617; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]4618; GFX942-NEXT:    v_mov_b64_e32 v[6:7], v[4:5]4619; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]4620; GFX942-NEXT:    s_cbranch_execnz .LBB19_44621; GFX942-NEXT:  ; %bb.5: ; %Flow4622; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]4623; GFX942-NEXT:    ; implicit-def: $vgpr0_vgpr14624; GFX942-NEXT:    ; implicit-def: $vgpr2_vgpr34625; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]4626; GFX942-NEXT:    s_cbranch_execz .LBB19_24627; GFX942-NEXT:  .LBB19_6: ; %atomicrmw.private4628; GFX942-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]4629; GFX942-NEXT:    s_nop 14630; GFX942-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc4631; GFX942-NEXT:    scratch_load_dwordx2 v[0:1], v4, off4632; GFX942-NEXT:    s_waitcnt vmcnt(0)4633; GFX942-NEXT:    v_add_f64 v[0:1], v[0:1], -v[2:3]4634; GFX942-NEXT:    scratch_store_dwordx2 v4, v[0:1], off4635; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]4636; GFX942-NEXT:    s_waitcnt vmcnt(0)4637; GFX942-NEXT:    s_setpc_b64 s[30:31]4638;4639; GFX11-LABEL: flat_agent_atomic_fsub_noret_f64:4640; GFX11:       ; %bb.0:4641; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4642; GFX11-NEXT:    s_mov_b64 s[0:1], src_private_base4643; GFX11-NEXT:    s_mov_b32 s0, exec_lo4644; GFX11-NEXT:    v_cmpx_ne_u32_e64 s1, v14645; GFX11-NEXT:    s_xor_b32 s0, exec_lo, s04646; GFX11-NEXT:    s_cbranch_execnz .LBB19_34647; GFX11-NEXT:  ; %bb.1: ; %Flow34648; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s04649; GFX11-NEXT:    s_cbranch_execnz .LBB19_64650; GFX11-NEXT:  .LBB19_2: ; %atomicrmw.phi4651; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s04652; GFX11-NEXT:    s_setpc_b64 s[30:31]4653; GFX11-NEXT:  .LBB19_3: ; %atomicrmw.global4654; GFX11-NEXT:    flat_load_b64 v[6:7], v[0:1]4655; GFX11-NEXT:    s_mov_b32 s1, 04656; GFX11-NEXT:  .LBB19_4: ; %atomicrmw.start4657; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=14658; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4659; GFX11-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4660; GFX11-NEXT:    s_waitcnt_vscnt null, 0x04661; GFX11-NEXT:    flat_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7] glc4662; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4663; GFX11-NEXT:    buffer_gl1_inv4664; GFX11-NEXT:    buffer_gl0_inv4665; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4666; GFX11-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v44667; GFX11-NEXT:    s_or_b32 s1, vcc_lo, s14668; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4669; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s14670; GFX11-NEXT:    s_cbranch_execnz .LBB19_44671; GFX11-NEXT:  ; %bb.5: ; %Flow4672; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s14673; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr14674; GFX11-NEXT:    ; implicit-def: $vgpr2_vgpr34675; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s04676; GFX11-NEXT:    s_cbranch_execz .LBB19_24677; GFX11-NEXT:  .LBB19_6: ; %atomicrmw.private4678; GFX11-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]4679; GFX11-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc_lo4680; GFX11-NEXT:    scratch_load_b64 v[0:1], v4, off4681; GFX11-NEXT:    s_waitcnt vmcnt(0)4682; GFX11-NEXT:    v_add_f64 v[0:1], v[0:1], -v[2:3]4683; GFX11-NEXT:    scratch_store_b64 v4, v[0:1], off4684; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s04685; GFX11-NEXT:    s_setpc_b64 s[30:31]4686;4687; GFX10-LABEL: flat_agent_atomic_fsub_noret_f64:4688; GFX10:       ; %bb.0:4689; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4690; GFX10-NEXT:    s_mov_b64 s[4:5], src_private_base4691; GFX10-NEXT:    v_cmp_ne_u32_e32 vcc_lo, s5, v14692; GFX10-NEXT:    s_and_saveexec_b32 s4, vcc_lo4693; GFX10-NEXT:    s_xor_b32 s4, exec_lo, s44694; GFX10-NEXT:    s_cbranch_execnz .LBB19_34695; GFX10-NEXT:  ; %bb.1: ; %Flow34696; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s44697; GFX10-NEXT:    s_cbranch_execnz .LBB19_64698; GFX10-NEXT:  .LBB19_2: ; %atomicrmw.phi4699; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s44700; GFX10-NEXT:    s_setpc_b64 s[30:31]4701; GFX10-NEXT:  .LBB19_3: ; %atomicrmw.global4702; GFX10-NEXT:    flat_load_dwordx2 v[6:7], v[0:1]4703; GFX10-NEXT:    s_mov_b32 s5, 04704; GFX10-NEXT:  .LBB19_4: ; %atomicrmw.start4705; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=14706; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4707; GFX10-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4708; GFX10-NEXT:    s_waitcnt_vscnt null, 0x04709; GFX10-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc4710; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4711; GFX10-NEXT:    buffer_gl1_inv4712; GFX10-NEXT:    buffer_gl0_inv4713; GFX10-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4714; GFX10-NEXT:    v_mov_b32_e32 v7, v54715; GFX10-NEXT:    v_mov_b32_e32 v6, v44716; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s54717; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s54718; GFX10-NEXT:    s_cbranch_execnz .LBB19_44719; GFX10-NEXT:  ; %bb.5: ; %Flow4720; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s54721; GFX10-NEXT:    ; implicit-def: $vgpr0_vgpr14722; GFX10-NEXT:    ; implicit-def: $vgpr2_vgpr34723; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s44724; GFX10-NEXT:    s_cbranch_execz .LBB19_24725; GFX10-NEXT:  .LBB19_6: ; %atomicrmw.private4726; GFX10-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]4727; GFX10-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc_lo4728; GFX10-NEXT:    s_clause 0x14729; GFX10-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen4730; GFX10-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:44731; GFX10-NEXT:    s_waitcnt vmcnt(0)4732; GFX10-NEXT:    v_add_f64 v[0:1], v[0:1], -v[2:3]4733; GFX10-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen4734; GFX10-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:44735; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)4736; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s44737; GFX10-NEXT:    s_setpc_b64 s[30:31]4738;4739; GFX90A-LABEL: flat_agent_atomic_fsub_noret_f64:4740; GFX90A:       ; %bb.0:4741; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4742; GFX90A-NEXT:    s_mov_b64 s[4:5], src_private_base4743; GFX90A-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v14744; GFX90A-NEXT:    s_and_saveexec_b64 s[4:5], vcc4745; GFX90A-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]4746; GFX90A-NEXT:    s_cbranch_execnz .LBB19_34747; GFX90A-NEXT:  ; %bb.1: ; %Flow34748; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4749; GFX90A-NEXT:    s_cbranch_execnz .LBB19_64750; GFX90A-NEXT:  .LBB19_2: ; %atomicrmw.phi4751; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]4752; GFX90A-NEXT:    s_setpc_b64 s[30:31]4753; GFX90A-NEXT:  .LBB19_3: ; %atomicrmw.global4754; GFX90A-NEXT:    flat_load_dwordx2 v[6:7], v[0:1]4755; GFX90A-NEXT:    s_mov_b64 s[6:7], 04756; GFX90A-NEXT:  .LBB19_4: ; %atomicrmw.start4757; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=14758; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4759; GFX90A-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4760; GFX90A-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc4761; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4762; GFX90A-NEXT:    buffer_wbinvl14763; GFX90A-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4764; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]4765; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], v[4:5], v[4:5] op_sel:[0,1]4766; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]4767; GFX90A-NEXT:    s_cbranch_execnz .LBB19_44768; GFX90A-NEXT:  ; %bb.5: ; %Flow4769; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]4770; GFX90A-NEXT:    ; implicit-def: $vgpr0_vgpr14771; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr34772; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4773; GFX90A-NEXT:    s_cbranch_execz .LBB19_24774; GFX90A-NEXT:  .LBB19_6: ; %atomicrmw.private4775; GFX90A-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]4776; GFX90A-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc4777; GFX90A-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen4778; GFX90A-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:44779; GFX90A-NEXT:    s_waitcnt vmcnt(0)4780; GFX90A-NEXT:    v_add_f64 v[0:1], v[0:1], -v[2:3]4781; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen4782; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:44783; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]4784; GFX90A-NEXT:    s_waitcnt vmcnt(0)4785; GFX90A-NEXT:    s_setpc_b64 s[30:31]4786;4787; GFX908-LABEL: flat_agent_atomic_fsub_noret_f64:4788; GFX908:       ; %bb.0:4789; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4790; GFX908-NEXT:    s_mov_b64 s[4:5], src_private_base4791; GFX908-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v14792; GFX908-NEXT:    s_and_saveexec_b64 s[4:5], vcc4793; GFX908-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]4794; GFX908-NEXT:    s_cbranch_execnz .LBB19_34795; GFX908-NEXT:  ; %bb.1: ; %Flow34796; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4797; GFX908-NEXT:    s_cbranch_execnz .LBB19_64798; GFX908-NEXT:  .LBB19_2: ; %atomicrmw.phi4799; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]4800; GFX908-NEXT:    s_setpc_b64 s[30:31]4801; GFX908-NEXT:  .LBB19_3: ; %atomicrmw.global4802; GFX908-NEXT:    flat_load_dwordx2 v[6:7], v[0:1]4803; GFX908-NEXT:    s_mov_b64 s[6:7], 04804; GFX908-NEXT:  .LBB19_4: ; %atomicrmw.start4805; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=14806; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4807; GFX908-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4808; GFX908-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc4809; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4810; GFX908-NEXT:    buffer_wbinvl14811; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4812; GFX908-NEXT:    v_mov_b32_e32 v7, v54813; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]4814; GFX908-NEXT:    v_mov_b32_e32 v6, v44815; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]4816; GFX908-NEXT:    s_cbranch_execnz .LBB19_44817; GFX908-NEXT:  ; %bb.5: ; %Flow4818; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]4819; GFX908-NEXT:    ; implicit-def: $vgpr0_vgpr14820; GFX908-NEXT:    ; implicit-def: $vgpr2_vgpr34821; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4822; GFX908-NEXT:    s_cbranch_execz .LBB19_24823; GFX908-NEXT:  .LBB19_6: ; %atomicrmw.private4824; GFX908-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]4825; GFX908-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc4826; GFX908-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen4827; GFX908-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:44828; GFX908-NEXT:    s_waitcnt vmcnt(0)4829; GFX908-NEXT:    v_add_f64 v[0:1], v[0:1], -v[2:3]4830; GFX908-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen4831; GFX908-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:44832; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]4833; GFX908-NEXT:    s_waitcnt vmcnt(0)4834; GFX908-NEXT:    s_setpc_b64 s[30:31]4835;4836; GFX8-LABEL: flat_agent_atomic_fsub_noret_f64:4837; GFX8:       ; %bb.0:4838; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4839; GFX8-NEXT:    s_mov_b64 s[4:5], 0xc04840; GFX8-NEXT:    s_load_dword s4, s[4:5], 0x04841; GFX8-NEXT:    s_waitcnt lgkmcnt(0)4842; GFX8-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v14843; GFX8-NEXT:    s_and_saveexec_b64 s[4:5], vcc4844; GFX8-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]4845; GFX8-NEXT:    s_cbranch_execnz .LBB19_34846; GFX8-NEXT:  ; %bb.1: ; %Flow34847; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4848; GFX8-NEXT:    s_cbranch_execnz .LBB19_64849; GFX8-NEXT:  .LBB19_2: ; %atomicrmw.phi4850; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]4851; GFX8-NEXT:    s_setpc_b64 s[30:31]4852; GFX8-NEXT:  .LBB19_3: ; %atomicrmw.global4853; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 4, v04854; GFX8-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc4855; GFX8-NEXT:    flat_load_dword v7, v[4:5]4856; GFX8-NEXT:    flat_load_dword v6, v[0:1]4857; GFX8-NEXT:    s_mov_b64 s[6:7], 04858; GFX8-NEXT:  .LBB19_4: ; %atomicrmw.start4859; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=14860; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4861; GFX8-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4862; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc4863; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4864; GFX8-NEXT:    buffer_wbinvl14865; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4866; GFX8-NEXT:    v_mov_b32_e32 v7, v54867; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]4868; GFX8-NEXT:    v_mov_b32_e32 v6, v44869; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]4870; GFX8-NEXT:    s_cbranch_execnz .LBB19_44871; GFX8-NEXT:  ; %bb.5: ; %Flow4872; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]4873; GFX8-NEXT:    ; implicit-def: $vgpr0_vgpr14874; GFX8-NEXT:    ; implicit-def: $vgpr2_vgpr34875; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4876; GFX8-NEXT:    s_cbranch_execz .LBB19_24877; GFX8-NEXT:  .LBB19_6: ; %atomicrmw.private4878; GFX8-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]4879; GFX8-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc4880; GFX8-NEXT:    v_add_u32_e32 v5, vcc, 4, v44881; GFX8-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen4882; GFX8-NEXT:    buffer_load_dword v1, v5, s[0:3], 0 offen4883; GFX8-NEXT:    s_waitcnt vmcnt(0)4884; GFX8-NEXT:    v_add_f64 v[0:1], v[0:1], -v[2:3]4885; GFX8-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen4886; GFX8-NEXT:    buffer_store_dword v1, v5, s[0:3], 0 offen4887; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]4888; GFX8-NEXT:    s_waitcnt vmcnt(0)4889; GFX8-NEXT:    s_setpc_b64 s[30:31]4890;4891; GFX7-LABEL: flat_agent_atomic_fsub_noret_f64:4892; GFX7:       ; %bb.0:4893; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4894; GFX7-NEXT:    s_mov_b64 s[4:5], 0xc04895; GFX7-NEXT:    s_load_dword s4, s[4:5], 0x04896; GFX7-NEXT:    s_waitcnt lgkmcnt(0)4897; GFX7-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v14898; GFX7-NEXT:    s_and_saveexec_b64 s[4:5], vcc4899; GFX7-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]4900; GFX7-NEXT:    s_cbranch_execnz .LBB19_34901; GFX7-NEXT:  ; %bb.1: ; %Flow34902; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4903; GFX7-NEXT:    s_cbranch_execnz .LBB19_64904; GFX7-NEXT:  .LBB19_2: ; %atomicrmw.phi4905; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]4906; GFX7-NEXT:    s_setpc_b64 s[30:31]4907; GFX7-NEXT:  .LBB19_3: ; %atomicrmw.global4908; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 4, v04909; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc4910; GFX7-NEXT:    flat_load_dword v7, v[4:5]4911; GFX7-NEXT:    flat_load_dword v6, v[0:1]4912; GFX7-NEXT:    s_mov_b64 s[6:7], 04913; GFX7-NEXT:  .LBB19_4: ; %atomicrmw.start4914; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=14915; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4916; GFX7-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4917; GFX7-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc4918; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4919; GFX7-NEXT:    buffer_wbinvl14920; GFX7-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4921; GFX7-NEXT:    v_mov_b32_e32 v7, v54922; GFX7-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]4923; GFX7-NEXT:    v_mov_b32_e32 v6, v44924; GFX7-NEXT:    s_andn2_b64 exec, exec, s[6:7]4925; GFX7-NEXT:    s_cbranch_execnz .LBB19_44926; GFX7-NEXT:  ; %bb.5: ; %Flow4927; GFX7-NEXT:    s_or_b64 exec, exec, s[6:7]4928; GFX7-NEXT:    ; implicit-def: $vgpr0_vgpr14929; GFX7-NEXT:    ; implicit-def: $vgpr2_vgpr34930; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4931; GFX7-NEXT:    s_cbranch_execz .LBB19_24932; GFX7-NEXT:  .LBB19_6: ; %atomicrmw.private4933; GFX7-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]4934; GFX7-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc4935; GFX7-NEXT:    v_add_i32_e32 v5, vcc, 4, v44936; GFX7-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen4937; GFX7-NEXT:    buffer_load_dword v1, v5, s[0:3], 0 offen4938; GFX7-NEXT:    s_waitcnt vmcnt(0)4939; GFX7-NEXT:    v_add_f64 v[0:1], v[0:1], -v[2:3]4940; GFX7-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen4941; GFX7-NEXT:    buffer_store_dword v1, v5, s[0:3], 0 offen4942; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]4943; GFX7-NEXT:    s_waitcnt vmcnt(0)4944; GFX7-NEXT:    s_setpc_b64 s[30:31]4945  %unused = atomicrmw fsub ptr %ptr, double %val syncscope("agent") seq_cst4946  ret void4947}4948 4949define void @flat_agent_atomic_fsub_noret_f64__offset12b_pos(ptr %ptr, double %val) #0 {4950; GFX12-LABEL: flat_agent_atomic_fsub_noret_f64__offset12b_pos:4951; GFX12:       ; %bb.0:4952; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04953; GFX12-NEXT:    s_wait_expcnt 0x04954; GFX12-NEXT:    s_wait_samplecnt 0x04955; GFX12-NEXT:    s_wait_bvhcnt 0x04956; GFX12-NEXT:    s_wait_kmcnt 0x04957; GFX12-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7f8, v04958; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)4959; GFX12-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo4960; GFX12-NEXT:    s_mov_b64 s[0:1], src_private_base4961; GFX12-NEXT:    s_mov_b32 s0, exec_lo4962; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4963; GFX12-NEXT:    v_cmpx_ne_u32_e64 s1, v14964; GFX12-NEXT:    s_xor_b32 s0, exec_lo, s04965; GFX12-NEXT:    s_cbranch_execnz .LBB20_34966; GFX12-NEXT:  ; %bb.1: ; %Flow34967; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4968; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s04969; GFX12-NEXT:    s_cbranch_execnz .LBB20_64970; GFX12-NEXT:  .LBB20_2: ; %atomicrmw.phi4971; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4972; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s04973; GFX12-NEXT:    s_wait_loadcnt 0x04974; GFX12-NEXT:    s_setpc_b64 s[30:31]4975; GFX12-NEXT:  .LBB20_3: ; %atomicrmw.global4976; GFX12-NEXT:    flat_load_b64 v[6:7], v[0:1]4977; GFX12-NEXT:    s_mov_b32 s1, 04978; GFX12-NEXT:  .LBB20_4: ; %atomicrmw.start4979; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=14980; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04981; GFX12-NEXT:    v_add_f64_e64 v[4:5], v[6:7], -v[2:3]4982; GFX12-NEXT:    s_wait_storecnt 0x04983; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7] th:TH_ATOMIC_RETURN scope:SCOPE_DEV4984; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04985; GFX12-NEXT:    global_inv scope:SCOPE_DEV4986; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4987; GFX12-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v44988; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4989; GFX12-NEXT:    s_or_b32 s1, vcc_lo, s14990; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4991; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s14992; GFX12-NEXT:    s_cbranch_execnz .LBB20_44993; GFX12-NEXT:  ; %bb.5: ; %Flow4994; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s14995; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr14996; GFX12-NEXT:    ; implicit-def: $vgpr2_vgpr34997; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s04998; GFX12-NEXT:    s_cbranch_execz .LBB20_24999; GFX12-NEXT:  .LBB20_6: ; %atomicrmw.private5000; GFX12-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]5001; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)5002; GFX12-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc_lo5003; GFX12-NEXT:    scratch_load_b64 v[0:1], v4, off5004; GFX12-NEXT:    s_wait_loadcnt 0x05005; GFX12-NEXT:    v_add_f64_e64 v[0:1], v[0:1], -v[2:3]5006; GFX12-NEXT:    scratch_store_b64 v4, v[0:1], off5007; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)5008; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s05009; GFX12-NEXT:    s_setpc_b64 s[30:31]5010;5011; GFX942-LABEL: flat_agent_atomic_fsub_noret_f64__offset12b_pos:5012; GFX942:       ; %bb.0:5013; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5014; GFX942-NEXT:    s_mov_b64 s[2:3], 0x7f85015; GFX942-NEXT:    s_mov_b64 s[0:1], src_private_base5016; GFX942-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, s[2:3]5017; GFX942-NEXT:    v_cmp_ne_u32_e32 vcc, s1, v15018; GFX942-NEXT:    s_and_saveexec_b64 s[0:1], vcc5019; GFX942-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]5020; GFX942-NEXT:    s_cbranch_execnz .LBB20_35021; GFX942-NEXT:  ; %bb.1: ; %Flow35022; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]5023; GFX942-NEXT:    s_cbranch_execnz .LBB20_65024; GFX942-NEXT:  .LBB20_2: ; %atomicrmw.phi5025; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]5026; GFX942-NEXT:    s_setpc_b64 s[30:31]5027; GFX942-NEXT:  .LBB20_3: ; %atomicrmw.global5028; GFX942-NEXT:    flat_load_dwordx2 v[6:7], v[0:1]5029; GFX942-NEXT:    s_mov_b64 s[2:3], 05030; GFX942-NEXT:  .LBB20_4: ; %atomicrmw.start5031; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=15032; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5033; GFX942-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]5034; GFX942-NEXT:    buffer_wbl2 sc15035; GFX942-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] sc05036; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5037; GFX942-NEXT:    buffer_inv sc15038; GFX942-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]5039; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]5040; GFX942-NEXT:    v_mov_b64_e32 v[6:7], v[4:5]5041; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]5042; GFX942-NEXT:    s_cbranch_execnz .LBB20_45043; GFX942-NEXT:  ; %bb.5: ; %Flow5044; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]5045; GFX942-NEXT:    ; implicit-def: $vgpr0_vgpr15046; GFX942-NEXT:    ; implicit-def: $vgpr2_vgpr35047; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]5048; GFX942-NEXT:    s_cbranch_execz .LBB20_25049; GFX942-NEXT:  .LBB20_6: ; %atomicrmw.private5050; GFX942-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]5051; GFX942-NEXT:    s_nop 15052; GFX942-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc5053; GFX942-NEXT:    scratch_load_dwordx2 v[0:1], v4, off5054; GFX942-NEXT:    s_waitcnt vmcnt(0)5055; GFX942-NEXT:    v_add_f64 v[0:1], v[0:1], -v[2:3]5056; GFX942-NEXT:    scratch_store_dwordx2 v4, v[0:1], off5057; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]5058; GFX942-NEXT:    s_waitcnt vmcnt(0)5059; GFX942-NEXT:    s_setpc_b64 s[30:31]5060;5061; GFX11-LABEL: flat_agent_atomic_fsub_noret_f64__offset12b_pos:5062; GFX11:       ; %bb.0:5063; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5064; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7f8, v05065; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)5066; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo5067; GFX11-NEXT:    s_mov_b64 s[0:1], src_private_base5068; GFX11-NEXT:    s_mov_b32 s0, exec_lo5069; GFX11-NEXT:    v_cmpx_ne_u32_e64 s1, v15070; GFX11-NEXT:    s_xor_b32 s0, exec_lo, s05071; GFX11-NEXT:    s_cbranch_execnz .LBB20_35072; GFX11-NEXT:  ; %bb.1: ; %Flow35073; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s05074; GFX11-NEXT:    s_cbranch_execnz .LBB20_65075; GFX11-NEXT:  .LBB20_2: ; %atomicrmw.phi5076; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s05077; GFX11-NEXT:    s_setpc_b64 s[30:31]5078; GFX11-NEXT:  .LBB20_3: ; %atomicrmw.global5079; GFX11-NEXT:    flat_load_b64 v[6:7], v[0:1]5080; GFX11-NEXT:    s_mov_b32 s1, 05081; GFX11-NEXT:  .LBB20_4: ; %atomicrmw.start5082; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=15083; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5084; GFX11-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]5085; GFX11-NEXT:    s_waitcnt_vscnt null, 0x05086; GFX11-NEXT:    flat_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7] glc5087; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5088; GFX11-NEXT:    buffer_gl1_inv5089; GFX11-NEXT:    buffer_gl0_inv5090; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]5091; GFX11-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v45092; GFX11-NEXT:    s_or_b32 s1, vcc_lo, s15093; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5094; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s15095; GFX11-NEXT:    s_cbranch_execnz .LBB20_45096; GFX11-NEXT:  ; %bb.5: ; %Flow5097; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s15098; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr15099; GFX11-NEXT:    ; implicit-def: $vgpr2_vgpr35100; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s05101; GFX11-NEXT:    s_cbranch_execz .LBB20_25102; GFX11-NEXT:  .LBB20_6: ; %atomicrmw.private5103; GFX11-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]5104; GFX11-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc_lo5105; GFX11-NEXT:    scratch_load_b64 v[0:1], v4, off5106; GFX11-NEXT:    s_waitcnt vmcnt(0)5107; GFX11-NEXT:    v_add_f64 v[0:1], v[0:1], -v[2:3]5108; GFX11-NEXT:    scratch_store_b64 v4, v[0:1], off5109; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s05110; GFX11-NEXT:    s_setpc_b64 s[30:31]5111;5112; GFX10-LABEL: flat_agent_atomic_fsub_noret_f64__offset12b_pos:5113; GFX10:       ; %bb.0:5114; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5115; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7f8, v05116; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo5117; GFX10-NEXT:    s_mov_b64 s[4:5], src_private_base5118; GFX10-NEXT:    v_cmp_ne_u32_e32 vcc_lo, s5, v15119; GFX10-NEXT:    s_and_saveexec_b32 s4, vcc_lo5120; GFX10-NEXT:    s_xor_b32 s4, exec_lo, s45121; GFX10-NEXT:    s_cbranch_execnz .LBB20_35122; GFX10-NEXT:  ; %bb.1: ; %Flow35123; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s45124; GFX10-NEXT:    s_cbranch_execnz .LBB20_65125; GFX10-NEXT:  .LBB20_2: ; %atomicrmw.phi5126; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s45127; GFX10-NEXT:    s_setpc_b64 s[30:31]5128; GFX10-NEXT:  .LBB20_3: ; %atomicrmw.global5129; GFX10-NEXT:    flat_load_dwordx2 v[6:7], v[0:1]5130; GFX10-NEXT:    s_mov_b32 s5, 05131; GFX10-NEXT:  .LBB20_4: ; %atomicrmw.start5132; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=15133; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5134; GFX10-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]5135; GFX10-NEXT:    s_waitcnt_vscnt null, 0x05136; GFX10-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc5137; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5138; GFX10-NEXT:    buffer_gl1_inv5139; GFX10-NEXT:    buffer_gl0_inv5140; GFX10-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]5141; GFX10-NEXT:    v_mov_b32_e32 v7, v55142; GFX10-NEXT:    v_mov_b32_e32 v6, v45143; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s55144; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s55145; GFX10-NEXT:    s_cbranch_execnz .LBB20_45146; GFX10-NEXT:  ; %bb.5: ; %Flow5147; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s55148; GFX10-NEXT:    ; implicit-def: $vgpr0_vgpr15149; GFX10-NEXT:    ; implicit-def: $vgpr2_vgpr35150; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s45151; GFX10-NEXT:    s_cbranch_execz .LBB20_25152; GFX10-NEXT:  .LBB20_6: ; %atomicrmw.private5153; GFX10-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]5154; GFX10-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc_lo5155; GFX10-NEXT:    s_clause 0x15156; GFX10-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen5157; GFX10-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:45158; GFX10-NEXT:    s_waitcnt vmcnt(0)5159; GFX10-NEXT:    v_add_f64 v[0:1], v[0:1], -v[2:3]5160; GFX10-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen5161; GFX10-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:45162; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)5163; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s45164; GFX10-NEXT:    s_setpc_b64 s[30:31]5165;5166; GFX90A-LABEL: flat_agent_atomic_fsub_noret_f64__offset12b_pos:5167; GFX90A:       ; %bb.0:5168; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5169; GFX90A-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7f8, v05170; GFX90A-NEXT:    s_mov_b64 s[4:5], src_private_base5171; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc5172; GFX90A-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v15173; GFX90A-NEXT:    s_and_saveexec_b64 s[4:5], vcc5174; GFX90A-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]5175; GFX90A-NEXT:    s_cbranch_execnz .LBB20_35176; GFX90A-NEXT:  ; %bb.1: ; %Flow35177; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5178; GFX90A-NEXT:    s_cbranch_execnz .LBB20_65179; GFX90A-NEXT:  .LBB20_2: ; %atomicrmw.phi5180; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]5181; GFX90A-NEXT:    s_setpc_b64 s[30:31]5182; GFX90A-NEXT:  .LBB20_3: ; %atomicrmw.global5183; GFX90A-NEXT:    flat_load_dwordx2 v[6:7], v[0:1]5184; GFX90A-NEXT:    s_mov_b64 s[6:7], 05185; GFX90A-NEXT:  .LBB20_4: ; %atomicrmw.start5186; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=15187; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5188; GFX90A-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]5189; GFX90A-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc5190; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5191; GFX90A-NEXT:    buffer_wbinvl15192; GFX90A-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]5193; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]5194; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], v[4:5], v[4:5] op_sel:[0,1]5195; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]5196; GFX90A-NEXT:    s_cbranch_execnz .LBB20_45197; GFX90A-NEXT:  ; %bb.5: ; %Flow5198; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]5199; GFX90A-NEXT:    ; implicit-def: $vgpr0_vgpr15200; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr35201; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5202; GFX90A-NEXT:    s_cbranch_execz .LBB20_25203; GFX90A-NEXT:  .LBB20_6: ; %atomicrmw.private5204; GFX90A-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]5205; GFX90A-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc5206; GFX90A-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen5207; GFX90A-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:45208; GFX90A-NEXT:    s_waitcnt vmcnt(0)5209; GFX90A-NEXT:    v_add_f64 v[0:1], v[0:1], -v[2:3]5210; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen5211; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:45212; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]5213; GFX90A-NEXT:    s_waitcnt vmcnt(0)5214; GFX90A-NEXT:    s_setpc_b64 s[30:31]5215;5216; GFX908-LABEL: flat_agent_atomic_fsub_noret_f64__offset12b_pos:5217; GFX908:       ; %bb.0:5218; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5219; GFX908-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7f8, v05220; GFX908-NEXT:    s_mov_b64 s[4:5], src_private_base5221; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc5222; GFX908-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v15223; GFX908-NEXT:    s_and_saveexec_b64 s[4:5], vcc5224; GFX908-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]5225; GFX908-NEXT:    s_cbranch_execnz .LBB20_35226; GFX908-NEXT:  ; %bb.1: ; %Flow35227; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5228; GFX908-NEXT:    s_cbranch_execnz .LBB20_65229; GFX908-NEXT:  .LBB20_2: ; %atomicrmw.phi5230; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]5231; GFX908-NEXT:    s_setpc_b64 s[30:31]5232; GFX908-NEXT:  .LBB20_3: ; %atomicrmw.global5233; GFX908-NEXT:    flat_load_dwordx2 v[6:7], v[0:1]5234; GFX908-NEXT:    s_mov_b64 s[6:7], 05235; GFX908-NEXT:  .LBB20_4: ; %atomicrmw.start5236; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=15237; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5238; GFX908-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]5239; GFX908-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc5240; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5241; GFX908-NEXT:    buffer_wbinvl15242; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]5243; GFX908-NEXT:    v_mov_b32_e32 v7, v55244; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]5245; GFX908-NEXT:    v_mov_b32_e32 v6, v45246; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]5247; GFX908-NEXT:    s_cbranch_execnz .LBB20_45248; GFX908-NEXT:  ; %bb.5: ; %Flow5249; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]5250; GFX908-NEXT:    ; implicit-def: $vgpr0_vgpr15251; GFX908-NEXT:    ; implicit-def: $vgpr2_vgpr35252; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5253; GFX908-NEXT:    s_cbranch_execz .LBB20_25254; GFX908-NEXT:  .LBB20_6: ; %atomicrmw.private5255; GFX908-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]5256; GFX908-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc5257; GFX908-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen5258; GFX908-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:45259; GFX908-NEXT:    s_waitcnt vmcnt(0)5260; GFX908-NEXT:    v_add_f64 v[0:1], v[0:1], -v[2:3]5261; GFX908-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen5262; GFX908-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:45263; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]5264; GFX908-NEXT:    s_waitcnt vmcnt(0)5265; GFX908-NEXT:    s_setpc_b64 s[30:31]5266;5267; GFX8-LABEL: flat_agent_atomic_fsub_noret_f64__offset12b_pos:5268; GFX8:       ; %bb.0:5269; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5270; GFX8-NEXT:    s_mov_b64 s[4:5], 0xc05271; GFX8-NEXT:    s_load_dword s4, s[4:5], 0x05272; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7f8, v05273; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc5274; GFX8-NEXT:    s_waitcnt lgkmcnt(0)5275; GFX8-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v15276; GFX8-NEXT:    s_and_saveexec_b64 s[4:5], vcc5277; GFX8-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]5278; GFX8-NEXT:    s_cbranch_execnz .LBB20_35279; GFX8-NEXT:  ; %bb.1: ; %Flow35280; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5281; GFX8-NEXT:    s_cbranch_execnz .LBB20_65282; GFX8-NEXT:  .LBB20_2: ; %atomicrmw.phi5283; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]5284; GFX8-NEXT:    s_setpc_b64 s[30:31]5285; GFX8-NEXT:  .LBB20_3: ; %atomicrmw.global5286; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 4, v05287; GFX8-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc5288; GFX8-NEXT:    flat_load_dword v7, v[4:5]5289; GFX8-NEXT:    flat_load_dword v6, v[0:1]5290; GFX8-NEXT:    s_mov_b64 s[6:7], 05291; GFX8-NEXT:  .LBB20_4: ; %atomicrmw.start5292; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=15293; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5294; GFX8-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]5295; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc5296; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5297; GFX8-NEXT:    buffer_wbinvl15298; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]5299; GFX8-NEXT:    v_mov_b32_e32 v7, v55300; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]5301; GFX8-NEXT:    v_mov_b32_e32 v6, v45302; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]5303; GFX8-NEXT:    s_cbranch_execnz .LBB20_45304; GFX8-NEXT:  ; %bb.5: ; %Flow5305; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]5306; GFX8-NEXT:    ; implicit-def: $vgpr0_vgpr15307; GFX8-NEXT:    ; implicit-def: $vgpr2_vgpr35308; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5309; GFX8-NEXT:    s_cbranch_execz .LBB20_25310; GFX8-NEXT:  .LBB20_6: ; %atomicrmw.private5311; GFX8-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]5312; GFX8-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc5313; GFX8-NEXT:    v_add_u32_e32 v5, vcc, 4, v45314; GFX8-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen5315; GFX8-NEXT:    buffer_load_dword v1, v5, s[0:3], 0 offen5316; GFX8-NEXT:    s_waitcnt vmcnt(0)5317; GFX8-NEXT:    v_add_f64 v[0:1], v[0:1], -v[2:3]5318; GFX8-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen5319; GFX8-NEXT:    buffer_store_dword v1, v5, s[0:3], 0 offen5320; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]5321; GFX8-NEXT:    s_waitcnt vmcnt(0)5322; GFX8-NEXT:    s_setpc_b64 s[30:31]5323;5324; GFX7-LABEL: flat_agent_atomic_fsub_noret_f64__offset12b_pos:5325; GFX7:       ; %bb.0:5326; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5327; GFX7-NEXT:    s_mov_b64 s[4:5], 0xc05328; GFX7-NEXT:    s_load_dword s4, s[4:5], 0x05329; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7f8, v05330; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc5331; GFX7-NEXT:    s_waitcnt lgkmcnt(0)5332; GFX7-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v15333; GFX7-NEXT:    s_and_saveexec_b64 s[4:5], vcc5334; GFX7-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]5335; GFX7-NEXT:    s_cbranch_execnz .LBB20_35336; GFX7-NEXT:  ; %bb.1: ; %Flow35337; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5338; GFX7-NEXT:    s_cbranch_execnz .LBB20_65339; GFX7-NEXT:  .LBB20_2: ; %atomicrmw.phi5340; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]5341; GFX7-NEXT:    s_setpc_b64 s[30:31]5342; GFX7-NEXT:  .LBB20_3: ; %atomicrmw.global5343; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 4, v05344; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc5345; GFX7-NEXT:    flat_load_dword v7, v[4:5]5346; GFX7-NEXT:    flat_load_dword v6, v[0:1]5347; GFX7-NEXT:    s_mov_b64 s[6:7], 05348; GFX7-NEXT:  .LBB20_4: ; %atomicrmw.start5349; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=15350; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5351; GFX7-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]5352; GFX7-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc5353; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5354; GFX7-NEXT:    buffer_wbinvl15355; GFX7-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]5356; GFX7-NEXT:    v_mov_b32_e32 v7, v55357; GFX7-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]5358; GFX7-NEXT:    v_mov_b32_e32 v6, v45359; GFX7-NEXT:    s_andn2_b64 exec, exec, s[6:7]5360; GFX7-NEXT:    s_cbranch_execnz .LBB20_45361; GFX7-NEXT:  ; %bb.5: ; %Flow5362; GFX7-NEXT:    s_or_b64 exec, exec, s[6:7]5363; GFX7-NEXT:    ; implicit-def: $vgpr0_vgpr15364; GFX7-NEXT:    ; implicit-def: $vgpr2_vgpr35365; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5366; GFX7-NEXT:    s_cbranch_execz .LBB20_25367; GFX7-NEXT:  .LBB20_6: ; %atomicrmw.private5368; GFX7-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]5369; GFX7-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc5370; GFX7-NEXT:    v_add_i32_e32 v5, vcc, 4, v45371; GFX7-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen5372; GFX7-NEXT:    buffer_load_dword v1, v5, s[0:3], 0 offen5373; GFX7-NEXT:    s_waitcnt vmcnt(0)5374; GFX7-NEXT:    v_add_f64 v[0:1], v[0:1], -v[2:3]5375; GFX7-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen5376; GFX7-NEXT:    buffer_store_dword v1, v5, s[0:3], 0 offen5377; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]5378; GFX7-NEXT:    s_waitcnt vmcnt(0)5379; GFX7-NEXT:    s_setpc_b64 s[30:31]5380  %gep = getelementptr inbounds double, ptr %ptr, i64 2555381  %unused = atomicrmw fsub ptr %gep, double %val syncscope("agent") seq_cst5382  ret void5383}5384 5385define void @flat_agent_atomic_fsub_noret_f64__offset12b_neg(ptr %ptr, double %val) #0 {5386; GFX12-LABEL: flat_agent_atomic_fsub_noret_f64__offset12b_neg:5387; GFX12:       ; %bb.0:5388; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x05389; GFX12-NEXT:    s_wait_expcnt 0x05390; GFX12-NEXT:    s_wait_samplecnt 0x05391; GFX12-NEXT:    s_wait_bvhcnt 0x05392; GFX12-NEXT:    s_wait_kmcnt 0x05393; GFX12-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v05394; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)5395; GFX12-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo5396; GFX12-NEXT:    s_mov_b64 s[0:1], src_private_base5397; GFX12-NEXT:    s_mov_b32 s0, exec_lo5398; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)5399; GFX12-NEXT:    v_cmpx_ne_u32_e64 s1, v15400; GFX12-NEXT:    s_xor_b32 s0, exec_lo, s05401; GFX12-NEXT:    s_cbranch_execnz .LBB21_35402; GFX12-NEXT:  ; %bb.1: ; %Flow35403; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)5404; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s05405; GFX12-NEXT:    s_cbranch_execnz .LBB21_65406; GFX12-NEXT:  .LBB21_2: ; %atomicrmw.phi5407; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)5408; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s05409; GFX12-NEXT:    s_wait_loadcnt 0x05410; GFX12-NEXT:    s_setpc_b64 s[30:31]5411; GFX12-NEXT:  .LBB21_3: ; %atomicrmw.global5412; GFX12-NEXT:    flat_load_b64 v[6:7], v[0:1]5413; GFX12-NEXT:    s_mov_b32 s1, 05414; GFX12-NEXT:  .LBB21_4: ; %atomicrmw.start5415; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=15416; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x05417; GFX12-NEXT:    v_add_f64_e64 v[4:5], v[6:7], -v[2:3]5418; GFX12-NEXT:    s_wait_storecnt 0x05419; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7] th:TH_ATOMIC_RETURN scope:SCOPE_DEV5420; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x05421; GFX12-NEXT:    global_inv scope:SCOPE_DEV5422; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]5423; GFX12-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v45424; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)5425; GFX12-NEXT:    s_or_b32 s1, vcc_lo, s15426; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)5427; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s15428; GFX12-NEXT:    s_cbranch_execnz .LBB21_45429; GFX12-NEXT:  ; %bb.5: ; %Flow5430; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s15431; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr15432; GFX12-NEXT:    ; implicit-def: $vgpr2_vgpr35433; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s05434; GFX12-NEXT:    s_cbranch_execz .LBB21_25435; GFX12-NEXT:  .LBB21_6: ; %atomicrmw.private5436; GFX12-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]5437; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)5438; GFX12-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc_lo5439; GFX12-NEXT:    scratch_load_b64 v[0:1], v4, off5440; GFX12-NEXT:    s_wait_loadcnt 0x05441; GFX12-NEXT:    v_add_f64_e64 v[0:1], v[0:1], -v[2:3]5442; GFX12-NEXT:    scratch_store_b64 v4, v[0:1], off5443; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)5444; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s05445; GFX12-NEXT:    s_setpc_b64 s[30:31]5446;5447; GFX942-LABEL: flat_agent_atomic_fsub_noret_f64__offset12b_neg:5448; GFX942:       ; %bb.0:5449; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5450; GFX942-NEXT:    s_movk_i32 s2, 0xf8005451; GFX942-NEXT:    s_mov_b32 s3, -15452; GFX942-NEXT:    s_mov_b64 s[0:1], src_private_base5453; GFX942-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, s[2:3]5454; GFX942-NEXT:    v_cmp_ne_u32_e32 vcc, s1, v15455; GFX942-NEXT:    s_and_saveexec_b64 s[0:1], vcc5456; GFX942-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]5457; GFX942-NEXT:    s_cbranch_execnz .LBB21_35458; GFX942-NEXT:  ; %bb.1: ; %Flow35459; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]5460; GFX942-NEXT:    s_cbranch_execnz .LBB21_65461; GFX942-NEXT:  .LBB21_2: ; %atomicrmw.phi5462; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]5463; GFX942-NEXT:    s_setpc_b64 s[30:31]5464; GFX942-NEXT:  .LBB21_3: ; %atomicrmw.global5465; GFX942-NEXT:    flat_load_dwordx2 v[6:7], v[0:1]5466; GFX942-NEXT:    s_mov_b64 s[2:3], 05467; GFX942-NEXT:  .LBB21_4: ; %atomicrmw.start5468; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=15469; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5470; GFX942-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]5471; GFX942-NEXT:    buffer_wbl2 sc15472; GFX942-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] sc05473; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5474; GFX942-NEXT:    buffer_inv sc15475; GFX942-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]5476; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]5477; GFX942-NEXT:    v_mov_b64_e32 v[6:7], v[4:5]5478; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]5479; GFX942-NEXT:    s_cbranch_execnz .LBB21_45480; GFX942-NEXT:  ; %bb.5: ; %Flow5481; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]5482; GFX942-NEXT:    ; implicit-def: $vgpr0_vgpr15483; GFX942-NEXT:    ; implicit-def: $vgpr2_vgpr35484; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]5485; GFX942-NEXT:    s_cbranch_execz .LBB21_25486; GFX942-NEXT:  .LBB21_6: ; %atomicrmw.private5487; GFX942-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]5488; GFX942-NEXT:    s_nop 15489; GFX942-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc5490; GFX942-NEXT:    scratch_load_dwordx2 v[0:1], v4, off5491; GFX942-NEXT:    s_waitcnt vmcnt(0)5492; GFX942-NEXT:    v_add_f64 v[0:1], v[0:1], -v[2:3]5493; GFX942-NEXT:    scratch_store_dwordx2 v4, v[0:1], off5494; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]5495; GFX942-NEXT:    s_waitcnt vmcnt(0)5496; GFX942-NEXT:    s_setpc_b64 s[30:31]5497;5498; GFX11-LABEL: flat_agent_atomic_fsub_noret_f64__offset12b_neg:5499; GFX11:       ; %bb.0:5500; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5501; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v05502; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)5503; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo5504; GFX11-NEXT:    s_mov_b64 s[0:1], src_private_base5505; GFX11-NEXT:    s_mov_b32 s0, exec_lo5506; GFX11-NEXT:    v_cmpx_ne_u32_e64 s1, v15507; GFX11-NEXT:    s_xor_b32 s0, exec_lo, s05508; GFX11-NEXT:    s_cbranch_execnz .LBB21_35509; GFX11-NEXT:  ; %bb.1: ; %Flow35510; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s05511; GFX11-NEXT:    s_cbranch_execnz .LBB21_65512; GFX11-NEXT:  .LBB21_2: ; %atomicrmw.phi5513; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s05514; GFX11-NEXT:    s_setpc_b64 s[30:31]5515; GFX11-NEXT:  .LBB21_3: ; %atomicrmw.global5516; GFX11-NEXT:    flat_load_b64 v[6:7], v[0:1]5517; GFX11-NEXT:    s_mov_b32 s1, 05518; GFX11-NEXT:  .LBB21_4: ; %atomicrmw.start5519; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=15520; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5521; GFX11-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]5522; GFX11-NEXT:    s_waitcnt_vscnt null, 0x05523; GFX11-NEXT:    flat_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7] glc5524; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5525; GFX11-NEXT:    buffer_gl1_inv5526; GFX11-NEXT:    buffer_gl0_inv5527; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]5528; GFX11-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v45529; GFX11-NEXT:    s_or_b32 s1, vcc_lo, s15530; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5531; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s15532; GFX11-NEXT:    s_cbranch_execnz .LBB21_45533; GFX11-NEXT:  ; %bb.5: ; %Flow5534; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s15535; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr15536; GFX11-NEXT:    ; implicit-def: $vgpr2_vgpr35537; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s05538; GFX11-NEXT:    s_cbranch_execz .LBB21_25539; GFX11-NEXT:  .LBB21_6: ; %atomicrmw.private5540; GFX11-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]5541; GFX11-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc_lo5542; GFX11-NEXT:    scratch_load_b64 v[0:1], v4, off5543; GFX11-NEXT:    s_waitcnt vmcnt(0)5544; GFX11-NEXT:    v_add_f64 v[0:1], v[0:1], -v[2:3]5545; GFX11-NEXT:    scratch_store_b64 v4, v[0:1], off5546; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s05547; GFX11-NEXT:    s_setpc_b64 s[30:31]5548;5549; GFX10-LABEL: flat_agent_atomic_fsub_noret_f64__offset12b_neg:5550; GFX10:       ; %bb.0:5551; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5552; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v05553; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo5554; GFX10-NEXT:    s_mov_b64 s[4:5], src_private_base5555; GFX10-NEXT:    v_cmp_ne_u32_e32 vcc_lo, s5, v15556; GFX10-NEXT:    s_and_saveexec_b32 s4, vcc_lo5557; GFX10-NEXT:    s_xor_b32 s4, exec_lo, s45558; GFX10-NEXT:    s_cbranch_execnz .LBB21_35559; GFX10-NEXT:  ; %bb.1: ; %Flow35560; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s45561; GFX10-NEXT:    s_cbranch_execnz .LBB21_65562; GFX10-NEXT:  .LBB21_2: ; %atomicrmw.phi5563; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s45564; GFX10-NEXT:    s_setpc_b64 s[30:31]5565; GFX10-NEXT:  .LBB21_3: ; %atomicrmw.global5566; GFX10-NEXT:    flat_load_dwordx2 v[6:7], v[0:1]5567; GFX10-NEXT:    s_mov_b32 s5, 05568; GFX10-NEXT:  .LBB21_4: ; %atomicrmw.start5569; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=15570; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5571; GFX10-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]5572; GFX10-NEXT:    s_waitcnt_vscnt null, 0x05573; GFX10-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc5574; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5575; GFX10-NEXT:    buffer_gl1_inv5576; GFX10-NEXT:    buffer_gl0_inv5577; GFX10-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]5578; GFX10-NEXT:    v_mov_b32_e32 v7, v55579; GFX10-NEXT:    v_mov_b32_e32 v6, v45580; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s55581; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s55582; GFX10-NEXT:    s_cbranch_execnz .LBB21_45583; GFX10-NEXT:  ; %bb.5: ; %Flow5584; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s55585; GFX10-NEXT:    ; implicit-def: $vgpr0_vgpr15586; GFX10-NEXT:    ; implicit-def: $vgpr2_vgpr35587; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s45588; GFX10-NEXT:    s_cbranch_execz .LBB21_25589; GFX10-NEXT:  .LBB21_6: ; %atomicrmw.private5590; GFX10-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]5591; GFX10-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc_lo5592; GFX10-NEXT:    s_clause 0x15593; GFX10-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen5594; GFX10-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:45595; GFX10-NEXT:    s_waitcnt vmcnt(0)5596; GFX10-NEXT:    v_add_f64 v[0:1], v[0:1], -v[2:3]5597; GFX10-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen5598; GFX10-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:45599; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)5600; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s45601; GFX10-NEXT:    s_setpc_b64 s[30:31]5602;5603; GFX90A-LABEL: flat_agent_atomic_fsub_noret_f64__offset12b_neg:5604; GFX90A:       ; %bb.0:5605; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5606; GFX90A-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff800, v05607; GFX90A-NEXT:    s_mov_b64 s[4:5], src_private_base5608; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc5609; GFX90A-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v15610; GFX90A-NEXT:    s_and_saveexec_b64 s[4:5], vcc5611; GFX90A-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]5612; GFX90A-NEXT:    s_cbranch_execnz .LBB21_35613; GFX90A-NEXT:  ; %bb.1: ; %Flow35614; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5615; GFX90A-NEXT:    s_cbranch_execnz .LBB21_65616; GFX90A-NEXT:  .LBB21_2: ; %atomicrmw.phi5617; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]5618; GFX90A-NEXT:    s_setpc_b64 s[30:31]5619; GFX90A-NEXT:  .LBB21_3: ; %atomicrmw.global5620; GFX90A-NEXT:    flat_load_dwordx2 v[6:7], v[0:1]5621; GFX90A-NEXT:    s_mov_b64 s[6:7], 05622; GFX90A-NEXT:  .LBB21_4: ; %atomicrmw.start5623; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=15624; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5625; GFX90A-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]5626; GFX90A-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc5627; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5628; GFX90A-NEXT:    buffer_wbinvl15629; GFX90A-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]5630; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]5631; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], v[4:5], v[4:5] op_sel:[0,1]5632; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]5633; GFX90A-NEXT:    s_cbranch_execnz .LBB21_45634; GFX90A-NEXT:  ; %bb.5: ; %Flow5635; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]5636; GFX90A-NEXT:    ; implicit-def: $vgpr0_vgpr15637; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr35638; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5639; GFX90A-NEXT:    s_cbranch_execz .LBB21_25640; GFX90A-NEXT:  .LBB21_6: ; %atomicrmw.private5641; GFX90A-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]5642; GFX90A-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc5643; GFX90A-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen5644; GFX90A-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:45645; GFX90A-NEXT:    s_waitcnt vmcnt(0)5646; GFX90A-NEXT:    v_add_f64 v[0:1], v[0:1], -v[2:3]5647; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen5648; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:45649; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]5650; GFX90A-NEXT:    s_waitcnt vmcnt(0)5651; GFX90A-NEXT:    s_setpc_b64 s[30:31]5652;5653; GFX908-LABEL: flat_agent_atomic_fsub_noret_f64__offset12b_neg:5654; GFX908:       ; %bb.0:5655; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5656; GFX908-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff800, v05657; GFX908-NEXT:    s_mov_b64 s[4:5], src_private_base5658; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc5659; GFX908-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v15660; GFX908-NEXT:    s_and_saveexec_b64 s[4:5], vcc5661; GFX908-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]5662; GFX908-NEXT:    s_cbranch_execnz .LBB21_35663; GFX908-NEXT:  ; %bb.1: ; %Flow35664; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5665; GFX908-NEXT:    s_cbranch_execnz .LBB21_65666; GFX908-NEXT:  .LBB21_2: ; %atomicrmw.phi5667; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]5668; GFX908-NEXT:    s_setpc_b64 s[30:31]5669; GFX908-NEXT:  .LBB21_3: ; %atomicrmw.global5670; GFX908-NEXT:    flat_load_dwordx2 v[6:7], v[0:1]5671; GFX908-NEXT:    s_mov_b64 s[6:7], 05672; GFX908-NEXT:  .LBB21_4: ; %atomicrmw.start5673; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=15674; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5675; GFX908-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]5676; GFX908-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc5677; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5678; GFX908-NEXT:    buffer_wbinvl15679; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]5680; GFX908-NEXT:    v_mov_b32_e32 v7, v55681; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]5682; GFX908-NEXT:    v_mov_b32_e32 v6, v45683; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]5684; GFX908-NEXT:    s_cbranch_execnz .LBB21_45685; GFX908-NEXT:  ; %bb.5: ; %Flow5686; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]5687; GFX908-NEXT:    ; implicit-def: $vgpr0_vgpr15688; GFX908-NEXT:    ; implicit-def: $vgpr2_vgpr35689; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5690; GFX908-NEXT:    s_cbranch_execz .LBB21_25691; GFX908-NEXT:  .LBB21_6: ; %atomicrmw.private5692; GFX908-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]5693; GFX908-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc5694; GFX908-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen5695; GFX908-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:45696; GFX908-NEXT:    s_waitcnt vmcnt(0)5697; GFX908-NEXT:    v_add_f64 v[0:1], v[0:1], -v[2:3]5698; GFX908-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen5699; GFX908-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:45700; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]5701; GFX908-NEXT:    s_waitcnt vmcnt(0)5702; GFX908-NEXT:    s_setpc_b64 s[30:31]5703;5704; GFX8-LABEL: flat_agent_atomic_fsub_noret_f64__offset12b_neg:5705; GFX8:       ; %bb.0:5706; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5707; GFX8-NEXT:    s_mov_b64 s[4:5], 0xc05708; GFX8-NEXT:    s_load_dword s4, s[4:5], 0x05709; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffff800, v05710; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc5711; GFX8-NEXT:    s_waitcnt lgkmcnt(0)5712; GFX8-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v15713; GFX8-NEXT:    s_and_saveexec_b64 s[4:5], vcc5714; GFX8-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]5715; GFX8-NEXT:    s_cbranch_execnz .LBB21_35716; GFX8-NEXT:  ; %bb.1: ; %Flow35717; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5718; GFX8-NEXT:    s_cbranch_execnz .LBB21_65719; GFX8-NEXT:  .LBB21_2: ; %atomicrmw.phi5720; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]5721; GFX8-NEXT:    s_setpc_b64 s[30:31]5722; GFX8-NEXT:  .LBB21_3: ; %atomicrmw.global5723; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 4, v05724; GFX8-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc5725; GFX8-NEXT:    flat_load_dword v7, v[4:5]5726; GFX8-NEXT:    flat_load_dword v6, v[0:1]5727; GFX8-NEXT:    s_mov_b64 s[6:7], 05728; GFX8-NEXT:  .LBB21_4: ; %atomicrmw.start5729; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=15730; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5731; GFX8-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]5732; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc5733; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5734; GFX8-NEXT:    buffer_wbinvl15735; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]5736; GFX8-NEXT:    v_mov_b32_e32 v7, v55737; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]5738; GFX8-NEXT:    v_mov_b32_e32 v6, v45739; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]5740; GFX8-NEXT:    s_cbranch_execnz .LBB21_45741; GFX8-NEXT:  ; %bb.5: ; %Flow5742; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]5743; GFX8-NEXT:    ; implicit-def: $vgpr0_vgpr15744; GFX8-NEXT:    ; implicit-def: $vgpr2_vgpr35745; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5746; GFX8-NEXT:    s_cbranch_execz .LBB21_25747; GFX8-NEXT:  .LBB21_6: ; %atomicrmw.private5748; GFX8-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]5749; GFX8-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc5750; GFX8-NEXT:    v_add_u32_e32 v5, vcc, 4, v45751; GFX8-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen5752; GFX8-NEXT:    buffer_load_dword v1, v5, s[0:3], 0 offen5753; GFX8-NEXT:    s_waitcnt vmcnt(0)5754; GFX8-NEXT:    v_add_f64 v[0:1], v[0:1], -v[2:3]5755; GFX8-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen5756; GFX8-NEXT:    buffer_store_dword v1, v5, s[0:3], 0 offen5757; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]5758; GFX8-NEXT:    s_waitcnt vmcnt(0)5759; GFX8-NEXT:    s_setpc_b64 s[30:31]5760;5761; GFX7-LABEL: flat_agent_atomic_fsub_noret_f64__offset12b_neg:5762; GFX7:       ; %bb.0:5763; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5764; GFX7-NEXT:    s_mov_b64 s[4:5], 0xc05765; GFX7-NEXT:    s_load_dword s4, s[4:5], 0x05766; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v05767; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc5768; GFX7-NEXT:    s_waitcnt lgkmcnt(0)5769; GFX7-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v15770; GFX7-NEXT:    s_and_saveexec_b64 s[4:5], vcc5771; GFX7-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]5772; GFX7-NEXT:    s_cbranch_execnz .LBB21_35773; GFX7-NEXT:  ; %bb.1: ; %Flow35774; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5775; GFX7-NEXT:    s_cbranch_execnz .LBB21_65776; GFX7-NEXT:  .LBB21_2: ; %atomicrmw.phi5777; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]5778; GFX7-NEXT:    s_setpc_b64 s[30:31]5779; GFX7-NEXT:  .LBB21_3: ; %atomicrmw.global5780; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 4, v05781; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc5782; GFX7-NEXT:    flat_load_dword v7, v[4:5]5783; GFX7-NEXT:    flat_load_dword v6, v[0:1]5784; GFX7-NEXT:    s_mov_b64 s[6:7], 05785; GFX7-NEXT:  .LBB21_4: ; %atomicrmw.start5786; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=15787; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5788; GFX7-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]5789; GFX7-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc5790; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5791; GFX7-NEXT:    buffer_wbinvl15792; GFX7-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]5793; GFX7-NEXT:    v_mov_b32_e32 v7, v55794; GFX7-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]5795; GFX7-NEXT:    v_mov_b32_e32 v6, v45796; GFX7-NEXT:    s_andn2_b64 exec, exec, s[6:7]5797; GFX7-NEXT:    s_cbranch_execnz .LBB21_45798; GFX7-NEXT:  ; %bb.5: ; %Flow5799; GFX7-NEXT:    s_or_b64 exec, exec, s[6:7]5800; GFX7-NEXT:    ; implicit-def: $vgpr0_vgpr15801; GFX7-NEXT:    ; implicit-def: $vgpr2_vgpr35802; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5803; GFX7-NEXT:    s_cbranch_execz .LBB21_25804; GFX7-NEXT:  .LBB21_6: ; %atomicrmw.private5805; GFX7-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]5806; GFX7-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc5807; GFX7-NEXT:    v_add_i32_e32 v5, vcc, 4, v45808; GFX7-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen5809; GFX7-NEXT:    buffer_load_dword v1, v5, s[0:3], 0 offen5810; GFX7-NEXT:    s_waitcnt vmcnt(0)5811; GFX7-NEXT:    v_add_f64 v[0:1], v[0:1], -v[2:3]5812; GFX7-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen5813; GFX7-NEXT:    buffer_store_dword v1, v5, s[0:3], 0 offen5814; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]5815; GFX7-NEXT:    s_waitcnt vmcnt(0)5816; GFX7-NEXT:    s_setpc_b64 s[30:31]5817  %gep = getelementptr inbounds double, ptr %ptr, i64 -2565818  %unused = atomicrmw fsub ptr %gep, double %val syncscope("agent") seq_cst5819  ret void5820}5821 5822; --------------------------------------------------------------------5823; half5824; --------------------------------------------------------------------5825 5826define half @flat_agent_atomic_fsub_ret_f16(ptr %ptr, half %val) #0 {5827; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_ret_f16:5828; GFX12-TRUE16:       ; %bb.0:5829; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x05830; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x05831; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x05832; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x05833; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x05834; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v05835; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 05836; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)5837; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v35838; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v35839; GFX12-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]5840; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v35841; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff5842; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5843; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v45844; GFX12-TRUE16-NEXT:  .LBB22_1: ; %atomicrmw.start5845; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=15846; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x05847; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v55848; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)5849; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v65850; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 05851; GFX12-TRUE16-NEXT:    v_sub_f16_e32 v5.l, v5.l, v2.l5852; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5853; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v55854; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v55855; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x05856; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV5857; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x05858; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV5859; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v65860; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5861; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s05862; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5863; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05864; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB22_15865; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end5866; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05867; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v55868; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x05869; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]5870;5871; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_ret_f16:5872; GFX12-FAKE16:       ; %bb.0:5873; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x05874; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x05875; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x05876; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x05877; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x05878; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v05879; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 05880; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)5881; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v35882; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v35883; GFX12-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]5884; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v35885; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff5886; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5887; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v45888; GFX12-FAKE16-NEXT:  .LBB22_1: ; %atomicrmw.start5889; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=15890; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x05891; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v55892; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5893; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v65894; GFX12-FAKE16-NEXT:    v_sub_f16_e32 v5, v5, v25895; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5896; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v55897; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v55898; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5899; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v55900; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x05901; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV5902; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x05903; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV5904; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v65905; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5906; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s05907; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5908; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05909; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB22_15910; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end5911; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05912; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v55913; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x05914; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]5915;5916; GFX942-LABEL: flat_agent_atomic_fsub_ret_f16:5917; GFX942:       ; %bb.0:5918; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5919; GFX942-NEXT:    v_mov_b32_e32 v3, v05920; GFX942-NEXT:    v_and_b32_e32 v0, -4, v35921; GFX942-NEXT:    flat_load_dword v5, v[0:1]5922; GFX942-NEXT:    v_and_b32_e32 v3, 3, v35923; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v35924; GFX942-NEXT:    s_mov_b32 s0, 0xffff5925; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s05926; GFX942-NEXT:    v_not_b32_e32 v6, v45927; GFX942-NEXT:    s_mov_b64 s[0:1], 05928; GFX942-NEXT:  .LBB22_1: ; %atomicrmw.start5929; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=15930; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5931; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v3, v55932; GFX942-NEXT:    v_sub_f16_e32 v4, v4, v25933; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v3, v45934; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v45935; GFX942-NEXT:    buffer_wbl2 sc15936; GFX942-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] sc05937; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5938; GFX942-NEXT:    buffer_inv sc15939; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v55940; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]5941; GFX942-NEXT:    v_mov_b32_e32 v5, v45942; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]5943; GFX942-NEXT:    s_cbranch_execnz .LBB22_15944; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end5945; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]5946; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v3, v45947; GFX942-NEXT:    s_setpc_b64 s[30:31]5948;5949; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_ret_f16:5950; GFX11-TRUE16:       ; %bb.0:5951; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5952; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v05953; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 05954; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)5955; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v35956; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v35957; GFX11-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]5958; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v35959; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff5960; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5961; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v45962; GFX11-TRUE16-NEXT:  .LBB22_1: ; %atomicrmw.start5963; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=15964; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5965; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v55966; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)5967; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v65968; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 05969; GFX11-TRUE16-NEXT:    v_sub_f16_e32 v5.l, v5.l, v2.l5970; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5971; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v55972; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v55973; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x05974; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc5975; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5976; GFX11-TRUE16-NEXT:    buffer_gl1_inv5977; GFX11-TRUE16-NEXT:    buffer_gl0_inv5978; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v65979; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s05980; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5981; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05982; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB22_15983; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end5984; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05985; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v55986; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]5987;5988; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_ret_f16:5989; GFX11-FAKE16:       ; %bb.0:5990; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5991; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v05992; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 05993; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)5994; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v35995; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v35996; GFX11-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]5997; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v35998; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff5999; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6000; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v46001; GFX11-FAKE16-NEXT:  .LBB22_1: ; %atomicrmw.start6002; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16003; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6004; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v56005; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6006; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v66007; GFX11-FAKE16-NEXT:    v_sub_f16_e32 v5, v5, v26008; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6009; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v56010; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v56011; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6012; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v56013; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x06014; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc6015; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6016; GFX11-FAKE16-NEXT:    buffer_gl1_inv6017; GFX11-FAKE16-NEXT:    buffer_gl0_inv6018; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66019; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06020; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6021; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06022; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB22_16023; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6024; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06025; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v56026; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]6027;6028; GFX10-LABEL: flat_agent_atomic_fsub_ret_f16:6029; GFX10:       ; %bb.0:6030; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6031; GFX10-NEXT:    v_mov_b32_e32 v3, v06032; GFX10-NEXT:    s_mov_b32 s4, 06033; GFX10-NEXT:    v_and_b32_e32 v0, -4, v36034; GFX10-NEXT:    v_and_b32_e32 v3, 3, v36035; GFX10-NEXT:    flat_load_dword v5, v[0:1]6036; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v36037; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6038; GFX10-NEXT:    v_not_b32_e32 v4, v46039; GFX10-NEXT:  .LBB22_1: ; %atomicrmw.start6040; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=16041; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6042; GFX10-NEXT:    v_mov_b32_e32 v6, v56043; GFX10-NEXT:    v_lshrrev_b32_e32 v5, v3, v66044; GFX10-NEXT:    v_sub_f16_e32 v5, v5, v26045; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_06046; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v56047; GFX10-NEXT:    s_waitcnt_vscnt null, 0x06048; GFX10-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc6049; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6050; GFX10-NEXT:    buffer_gl1_inv6051; GFX10-NEXT:    buffer_gl0_inv6052; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66053; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s46054; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s46055; GFX10-NEXT:    s_cbranch_execnz .LBB22_16056; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end6057; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s46058; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v56059; GFX10-NEXT:    s_setpc_b64 s[30:31]6060;6061; GFX90A-LABEL: flat_agent_atomic_fsub_ret_f16:6062; GFX90A:       ; %bb.0:6063; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6064; GFX90A-NEXT:    v_mov_b32_e32 v3, v06065; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v36066; GFX90A-NEXT:    flat_load_dword v5, v[0:1]6067; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v36068; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v36069; GFX90A-NEXT:    s_mov_b32 s4, 0xffff6070; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s46071; GFX90A-NEXT:    v_not_b32_e32 v6, v46072; GFX90A-NEXT:    s_mov_b64 s[4:5], 06073; GFX90A-NEXT:  .LBB22_1: ; %atomicrmw.start6074; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=16075; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6076; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v3, v56077; GFX90A-NEXT:    v_sub_f16_e32 v4, v4, v26078; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v3, v46079; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v46080; GFX90A-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] glc6081; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6082; GFX90A-NEXT:    buffer_wbinvl16083; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v56084; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6085; GFX90A-NEXT:    v_mov_b32_e32 v5, v46086; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]6087; GFX90A-NEXT:    s_cbranch_execnz .LBB22_16088; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end6089; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]6090; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v3, v46091; GFX90A-NEXT:    s_setpc_b64 s[30:31]6092;6093; GFX908-LABEL: flat_agent_atomic_fsub_ret_f16:6094; GFX908:       ; %bb.0:6095; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6096; GFX908-NEXT:    v_mov_b32_e32 v3, v06097; GFX908-NEXT:    v_and_b32_e32 v0, -4, v36098; GFX908-NEXT:    flat_load_dword v4, v[0:1]6099; GFX908-NEXT:    v_and_b32_e32 v3, 3, v36100; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v36101; GFX908-NEXT:    s_mov_b32 s4, 0xffff6102; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v3, s46103; GFX908-NEXT:    v_not_b32_e32 v5, v56104; GFX908-NEXT:    s_mov_b64 s[4:5], 06105; GFX908-NEXT:  .LBB22_1: ; %atomicrmw.start6106; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=16107; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6108; GFX908-NEXT:    v_mov_b32_e32 v7, v46109; GFX908-NEXT:    v_lshrrev_b32_e32 v4, v3, v76110; GFX908-NEXT:    v_sub_f16_e32 v4, v4, v26111; GFX908-NEXT:    v_lshlrev_b32_e32 v4, v3, v46112; GFX908-NEXT:    v_and_or_b32 v6, v7, v5, v46113; GFX908-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[6:7] glc6114; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6115; GFX908-NEXT:    buffer_wbinvl16116; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v76117; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6118; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]6119; GFX908-NEXT:    s_cbranch_execnz .LBB22_16120; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end6121; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]6122; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v46123; GFX908-NEXT:    s_setpc_b64 s[30:31]6124;6125; GFX8-LABEL: flat_agent_atomic_fsub_ret_f16:6126; GFX8:       ; %bb.0:6127; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6128; GFX8-NEXT:    v_mov_b32_e32 v3, v06129; GFX8-NEXT:    v_and_b32_e32 v0, -4, v36130; GFX8-NEXT:    flat_load_dword v5, v[0:1]6131; GFX8-NEXT:    v_and_b32_e32 v3, 3, v36132; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v36133; GFX8-NEXT:    s_mov_b32 s4, 0xffff6134; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s46135; GFX8-NEXT:    v_not_b32_e32 v4, v46136; GFX8-NEXT:    s_mov_b64 s[4:5], 06137; GFX8-NEXT:  .LBB22_1: ; %atomicrmw.start6138; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=16139; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6140; GFX8-NEXT:    v_mov_b32_e32 v6, v56141; GFX8-NEXT:    v_lshrrev_b32_e32 v5, v3, v66142; GFX8-NEXT:    v_sub_f16_e32 v5, v5, v26143; GFX8-NEXT:    v_and_b32_e32 v7, v6, v46144; GFX8-NEXT:    v_lshlrev_b32_e32 v5, v3, v56145; GFX8-NEXT:    v_or_b32_e32 v5, v7, v56146; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc6147; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6148; GFX8-NEXT:    buffer_wbinvl16149; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v66150; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6151; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]6152; GFX8-NEXT:    s_cbranch_execnz .LBB22_16153; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end6154; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]6155; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v56156; GFX8-NEXT:    s_setpc_b64 s[30:31]6157;6158; GFX7-LABEL: flat_agent_atomic_fsub_ret_f16:6159; GFX7:       ; %bb.0:6160; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6161; GFX7-NEXT:    v_mov_b32_e32 v3, v06162; GFX7-NEXT:    v_and_b32_e32 v0, -4, v36163; GFX7-NEXT:    flat_load_dword v5, v[0:1]6164; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v26165; GFX7-NEXT:    v_and_b32_e32 v2, 3, v36166; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 3, v26167; GFX7-NEXT:    s_mov_b64 s[4:5], 06168; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v46169; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v26170; GFX7-NEXT:    v_not_b32_e32 v4, v46171; GFX7-NEXT:  .LBB22_1: ; %atomicrmw.start6172; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=16173; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6174; GFX7-NEXT:    v_mov_b32_e32 v6, v56175; GFX7-NEXT:    v_lshrrev_b32_e32 v5, v2, v66176; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v56177; GFX7-NEXT:    v_and_b32_e32 v7, v6, v46178; GFX7-NEXT:    v_sub_f32_e32 v5, v5, v36179; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v56180; GFX7-NEXT:    v_lshlrev_b32_e32 v5, v2, v56181; GFX7-NEXT:    v_or_b32_e32 v5, v7, v56182; GFX7-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc6183; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6184; GFX7-NEXT:    buffer_wbinvl16185; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v66186; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6187; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]6188; GFX7-NEXT:    s_cbranch_execnz .LBB22_16189; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end6190; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]6191; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v2, v56192; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v06193; GFX7-NEXT:    s_setpc_b64 s[30:31]6194  %result = atomicrmw fsub ptr %ptr, half %val syncscope("agent") seq_cst6195  ret half %result6196}6197 6198define half @flat_agent_atomic_fsub_ret_f16__offset12b_pos(ptr %ptr, half %val) #0 {6199; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_pos:6200; GFX12-TRUE16:       ; %bb.0:6201; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06202; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x06203; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x06204; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x06205; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x06206; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v06207; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)6208; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo6209; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 06210; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v36211; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v36212; GFX12-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]6213; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v36214; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6215; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6216; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v46217; GFX12-TRUE16-NEXT:  .LBB23_1: ; %atomicrmw.start6218; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16219; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06220; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v56221; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6222; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v66223; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 06224; GFX12-TRUE16-NEXT:    v_sub_f16_e32 v5.l, v5.l, v2.l6225; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6226; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v56227; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v56228; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x06229; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV6230; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06231; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV6232; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66233; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6234; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06235; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6236; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06237; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB23_16238; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6239; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06240; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v56241; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06242; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]6243;6244; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_pos:6245; GFX12-FAKE16:       ; %bb.0:6246; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06247; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x06248; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x06249; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x06250; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x06251; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v06252; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)6253; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo6254; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 06255; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v36256; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v36257; GFX12-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]6258; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v36259; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6260; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6261; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v46262; GFX12-FAKE16-NEXT:  .LBB23_1: ; %atomicrmw.start6263; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16264; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06265; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v56266; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6267; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v66268; GFX12-FAKE16-NEXT:    v_sub_f16_e32 v5, v5, v26269; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6270; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v56271; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v56272; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6273; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v56274; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x06275; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV6276; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06277; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV6278; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66279; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6280; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06281; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6282; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06283; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB23_16284; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6285; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06286; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v56287; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06288; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]6289;6290; GFX942-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_pos:6291; GFX942:       ; %bb.0:6292; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6293; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe6294; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]6295; GFX942-NEXT:    v_and_b32_e32 v0, -4, v46296; GFX942-NEXT:    v_mov_b32_e32 v1, v56297; GFX942-NEXT:    flat_load_dword v5, v[0:1]6298; GFX942-NEXT:    v_and_b32_e32 v3, 3, v46299; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v36300; GFX942-NEXT:    s_mov_b32 s0, 0xffff6301; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s06302; GFX942-NEXT:    v_not_b32_e32 v6, v46303; GFX942-NEXT:    s_mov_b64 s[0:1], 06304; GFX942-NEXT:  .LBB23_1: ; %atomicrmw.start6305; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=16306; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6307; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v3, v56308; GFX942-NEXT:    v_sub_f16_e32 v4, v4, v26309; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v3, v46310; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v46311; GFX942-NEXT:    buffer_wbl2 sc16312; GFX942-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] sc06313; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6314; GFX942-NEXT:    buffer_inv sc16315; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v56316; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]6317; GFX942-NEXT:    v_mov_b32_e32 v5, v46318; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]6319; GFX942-NEXT:    s_cbranch_execnz .LBB23_16320; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end6321; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]6322; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v3, v46323; GFX942-NEXT:    s_setpc_b64 s[30:31]6324;6325; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_pos:6326; GFX11-TRUE16:       ; %bb.0:6327; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6328; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v06329; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6330; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo6331; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 06332; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v36333; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v36334; GFX11-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]6335; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v36336; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6337; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6338; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v46339; GFX11-TRUE16-NEXT:  .LBB23_1: ; %atomicrmw.start6340; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16341; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6342; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v56343; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6344; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v66345; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 06346; GFX11-TRUE16-NEXT:    v_sub_f16_e32 v5.l, v5.l, v2.l6347; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6348; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v56349; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v56350; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x06351; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc6352; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6353; GFX11-TRUE16-NEXT:    buffer_gl1_inv6354; GFX11-TRUE16-NEXT:    buffer_gl0_inv6355; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66356; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06357; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6358; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06359; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB23_16360; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6361; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06362; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v56363; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]6364;6365; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_pos:6366; GFX11-FAKE16:       ; %bb.0:6367; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6368; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v06369; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6370; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo6371; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 06372; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v36373; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v36374; GFX11-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]6375; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v36376; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6377; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6378; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v46379; GFX11-FAKE16-NEXT:  .LBB23_1: ; %atomicrmw.start6380; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16381; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6382; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v56383; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6384; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v66385; GFX11-FAKE16-NEXT:    v_sub_f16_e32 v5, v5, v26386; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6387; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v56388; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v56389; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6390; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v56391; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x06392; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc6393; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6394; GFX11-FAKE16-NEXT:    buffer_gl1_inv6395; GFX11-FAKE16-NEXT:    buffer_gl0_inv6396; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66397; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06398; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6399; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06400; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB23_16401; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6402; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06403; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v56404; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]6405;6406; GFX10-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_pos:6407; GFX10:       ; %bb.0:6408; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6409; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v06410; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo6411; GFX10-NEXT:    s_mov_b32 s4, 06412; GFX10-NEXT:    v_and_b32_e32 v0, -4, v36413; GFX10-NEXT:    v_and_b32_e32 v3, 3, v36414; GFX10-NEXT:    flat_load_dword v5, v[0:1]6415; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v36416; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6417; GFX10-NEXT:    v_not_b32_e32 v4, v46418; GFX10-NEXT:  .LBB23_1: ; %atomicrmw.start6419; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=16420; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6421; GFX10-NEXT:    v_mov_b32_e32 v6, v56422; GFX10-NEXT:    v_lshrrev_b32_e32 v5, v3, v66423; GFX10-NEXT:    v_sub_f16_e32 v5, v5, v26424; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_06425; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v56426; GFX10-NEXT:    s_waitcnt_vscnt null, 0x06427; GFX10-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc6428; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6429; GFX10-NEXT:    buffer_gl1_inv6430; GFX10-NEXT:    buffer_gl0_inv6431; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66432; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s46433; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s46434; GFX10-NEXT:    s_cbranch_execnz .LBB23_16435; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end6436; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s46437; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v56438; GFX10-NEXT:    s_setpc_b64 s[30:31]6439;6440; GFX90A-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_pos:6441; GFX90A:       ; %bb.0:6442; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6443; GFX90A-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v06444; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc6445; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v36446; GFX90A-NEXT:    flat_load_dword v5, v[0:1]6447; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v36448; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v36449; GFX90A-NEXT:    s_mov_b32 s4, 0xffff6450; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s46451; GFX90A-NEXT:    v_not_b32_e32 v6, v46452; GFX90A-NEXT:    s_mov_b64 s[4:5], 06453; GFX90A-NEXT:  .LBB23_1: ; %atomicrmw.start6454; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=16455; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6456; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v3, v56457; GFX90A-NEXT:    v_sub_f16_e32 v4, v4, v26458; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v3, v46459; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v46460; GFX90A-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] glc6461; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6462; GFX90A-NEXT:    buffer_wbinvl16463; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v56464; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6465; GFX90A-NEXT:    v_mov_b32_e32 v5, v46466; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]6467; GFX90A-NEXT:    s_cbranch_execnz .LBB23_16468; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end6469; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]6470; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v3, v46471; GFX90A-NEXT:    s_setpc_b64 s[30:31]6472;6473; GFX908-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_pos:6474; GFX908:       ; %bb.0:6475; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6476; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v06477; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc6478; GFX908-NEXT:    v_and_b32_e32 v0, -4, v36479; GFX908-NEXT:    flat_load_dword v4, v[0:1]6480; GFX908-NEXT:    v_and_b32_e32 v3, 3, v36481; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v36482; GFX908-NEXT:    s_mov_b32 s4, 0xffff6483; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v3, s46484; GFX908-NEXT:    v_not_b32_e32 v5, v56485; GFX908-NEXT:    s_mov_b64 s[4:5], 06486; GFX908-NEXT:  .LBB23_1: ; %atomicrmw.start6487; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=16488; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6489; GFX908-NEXT:    v_mov_b32_e32 v7, v46490; GFX908-NEXT:    v_lshrrev_b32_e32 v4, v3, v76491; GFX908-NEXT:    v_sub_f16_e32 v4, v4, v26492; GFX908-NEXT:    v_lshlrev_b32_e32 v4, v3, v46493; GFX908-NEXT:    v_and_or_b32 v6, v7, v5, v46494; GFX908-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[6:7] glc6495; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6496; GFX908-NEXT:    buffer_wbinvl16497; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v76498; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6499; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]6500; GFX908-NEXT:    s_cbranch_execnz .LBB23_16501; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end6502; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]6503; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v46504; GFX908-NEXT:    s_setpc_b64 s[30:31]6505;6506; GFX8-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_pos:6507; GFX8:       ; %bb.0:6508; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6509; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v06510; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc6511; GFX8-NEXT:    v_and_b32_e32 v0, -4, v36512; GFX8-NEXT:    flat_load_dword v5, v[0:1]6513; GFX8-NEXT:    v_and_b32_e32 v3, 3, v36514; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v36515; GFX8-NEXT:    s_mov_b32 s4, 0xffff6516; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s46517; GFX8-NEXT:    v_not_b32_e32 v4, v46518; GFX8-NEXT:    s_mov_b64 s[4:5], 06519; GFX8-NEXT:  .LBB23_1: ; %atomicrmw.start6520; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=16521; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6522; GFX8-NEXT:    v_mov_b32_e32 v6, v56523; GFX8-NEXT:    v_lshrrev_b32_e32 v5, v3, v66524; GFX8-NEXT:    v_sub_f16_e32 v5, v5, v26525; GFX8-NEXT:    v_and_b32_e32 v7, v6, v46526; GFX8-NEXT:    v_lshlrev_b32_e32 v5, v3, v56527; GFX8-NEXT:    v_or_b32_e32 v5, v7, v56528; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc6529; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6530; GFX8-NEXT:    buffer_wbinvl16531; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v66532; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6533; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]6534; GFX8-NEXT:    s_cbranch_execnz .LBB23_16535; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end6536; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]6537; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v56538; GFX8-NEXT:    s_setpc_b64 s[30:31]6539;6540; GFX7-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_pos:6541; GFX7:       ; %bb.0:6542; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6543; GFX7-NEXT:    v_add_i32_e32 v3, vcc, 0x7fe, v06544; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc6545; GFX7-NEXT:    v_and_b32_e32 v0, -4, v36546; GFX7-NEXT:    flat_load_dword v5, v[0:1]6547; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v26548; GFX7-NEXT:    v_and_b32_e32 v2, 3, v36549; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 3, v26550; GFX7-NEXT:    s_mov_b64 s[4:5], 06551; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v46552; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v26553; GFX7-NEXT:    v_not_b32_e32 v4, v46554; GFX7-NEXT:  .LBB23_1: ; %atomicrmw.start6555; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=16556; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6557; GFX7-NEXT:    v_mov_b32_e32 v6, v56558; GFX7-NEXT:    v_lshrrev_b32_e32 v5, v2, v66559; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v56560; GFX7-NEXT:    v_and_b32_e32 v7, v6, v46561; GFX7-NEXT:    v_sub_f32_e32 v5, v5, v36562; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v56563; GFX7-NEXT:    v_lshlrev_b32_e32 v5, v2, v56564; GFX7-NEXT:    v_or_b32_e32 v5, v7, v56565; GFX7-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc6566; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6567; GFX7-NEXT:    buffer_wbinvl16568; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v66569; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6570; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]6571; GFX7-NEXT:    s_cbranch_execnz .LBB23_16572; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end6573; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]6574; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v2, v56575; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v06576; GFX7-NEXT:    s_setpc_b64 s[30:31]6577  %gep = getelementptr inbounds half, ptr %ptr, i64 10236578  %result = atomicrmw fsub ptr %gep, half %val syncscope("agent") seq_cst6579  ret half %result6580}6581 6582define half @flat_agent_atomic_fsub_ret_f16__offset12b_neg(ptr %ptr, half %val) #0 {6583; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_neg:6584; GFX12-TRUE16:       ; %bb.0:6585; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06586; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x06587; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x06588; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x06589; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x06590; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v06591; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)6592; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo6593; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 06594; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v36595; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v36596; GFX12-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]6597; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v36598; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6599; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6600; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v46601; GFX12-TRUE16-NEXT:  .LBB24_1: ; %atomicrmw.start6602; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16603; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06604; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v56605; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6606; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v66607; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 06608; GFX12-TRUE16-NEXT:    v_sub_f16_e32 v5.l, v5.l, v2.l6609; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6610; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v56611; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v56612; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x06613; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV6614; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06615; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV6616; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66617; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6618; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06619; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6620; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06621; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB24_16622; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6623; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06624; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v56625; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06626; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]6627;6628; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_neg:6629; GFX12-FAKE16:       ; %bb.0:6630; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06631; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x06632; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x06633; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x06634; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x06635; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v06636; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)6637; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo6638; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 06639; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v36640; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v36641; GFX12-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]6642; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v36643; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6644; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6645; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v46646; GFX12-FAKE16-NEXT:  .LBB24_1: ; %atomicrmw.start6647; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16648; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06649; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v56650; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6651; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v66652; GFX12-FAKE16-NEXT:    v_sub_f16_e32 v5, v5, v26653; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6654; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v56655; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v56656; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6657; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v56658; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x06659; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV6660; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06661; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV6662; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66663; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6664; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06665; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6666; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06667; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB24_16668; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6669; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06670; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v56671; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06672; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]6673;6674; GFX942-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_neg:6675; GFX942:       ; %bb.0:6676; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6677; GFX942-NEXT:    s_movk_i32 s0, 0xf8006678; GFX942-NEXT:    s_mov_b32 s1, -16679; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]6680; GFX942-NEXT:    v_and_b32_e32 v0, -4, v46681; GFX942-NEXT:    v_mov_b32_e32 v1, v56682; GFX942-NEXT:    flat_load_dword v5, v[0:1]6683; GFX942-NEXT:    v_and_b32_e32 v3, 3, v46684; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v36685; GFX942-NEXT:    s_mov_b32 s0, 0xffff6686; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s06687; GFX942-NEXT:    v_not_b32_e32 v6, v46688; GFX942-NEXT:    s_mov_b64 s[0:1], 06689; GFX942-NEXT:  .LBB24_1: ; %atomicrmw.start6690; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=16691; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6692; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v3, v56693; GFX942-NEXT:    v_sub_f16_e32 v4, v4, v26694; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v3, v46695; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v46696; GFX942-NEXT:    buffer_wbl2 sc16697; GFX942-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] sc06698; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6699; GFX942-NEXT:    buffer_inv sc16700; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v56701; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]6702; GFX942-NEXT:    v_mov_b32_e32 v5, v46703; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]6704; GFX942-NEXT:    s_cbranch_execnz .LBB24_16705; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end6706; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]6707; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v3, v46708; GFX942-NEXT:    s_setpc_b64 s[30:31]6709;6710; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_neg:6711; GFX11-TRUE16:       ; %bb.0:6712; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6713; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v06714; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6715; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo6716; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 06717; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v36718; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v36719; GFX11-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]6720; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v36721; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6722; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6723; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v46724; GFX11-TRUE16-NEXT:  .LBB24_1: ; %atomicrmw.start6725; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16726; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6727; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v56728; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6729; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v66730; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 06731; GFX11-TRUE16-NEXT:    v_sub_f16_e32 v5.l, v5.l, v2.l6732; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6733; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v56734; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v56735; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x06736; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc6737; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6738; GFX11-TRUE16-NEXT:    buffer_gl1_inv6739; GFX11-TRUE16-NEXT:    buffer_gl0_inv6740; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66741; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06742; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6743; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06744; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB24_16745; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6746; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06747; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v56748; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]6749;6750; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_neg:6751; GFX11-FAKE16:       ; %bb.0:6752; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6753; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v06754; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6755; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo6756; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 06757; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v36758; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v36759; GFX11-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]6760; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v36761; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6762; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6763; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v46764; GFX11-FAKE16-NEXT:  .LBB24_1: ; %atomicrmw.start6765; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16766; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6767; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v56768; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6769; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v66770; GFX11-FAKE16-NEXT:    v_sub_f16_e32 v5, v5, v26771; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6772; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v56773; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v56774; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6775; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v56776; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x06777; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc6778; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6779; GFX11-FAKE16-NEXT:    buffer_gl1_inv6780; GFX11-FAKE16-NEXT:    buffer_gl0_inv6781; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66782; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06783; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6784; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06785; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB24_16786; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6787; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06788; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v56789; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]6790;6791; GFX10-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_neg:6792; GFX10:       ; %bb.0:6793; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6794; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v06795; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo6796; GFX10-NEXT:    s_mov_b32 s4, 06797; GFX10-NEXT:    v_and_b32_e32 v0, -4, v36798; GFX10-NEXT:    v_and_b32_e32 v3, 3, v36799; GFX10-NEXT:    flat_load_dword v5, v[0:1]6800; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v36801; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6802; GFX10-NEXT:    v_not_b32_e32 v4, v46803; GFX10-NEXT:  .LBB24_1: ; %atomicrmw.start6804; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=16805; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6806; GFX10-NEXT:    v_mov_b32_e32 v6, v56807; GFX10-NEXT:    v_lshrrev_b32_e32 v5, v3, v66808; GFX10-NEXT:    v_sub_f16_e32 v5, v5, v26809; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_06810; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v56811; GFX10-NEXT:    s_waitcnt_vscnt null, 0x06812; GFX10-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc6813; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6814; GFX10-NEXT:    buffer_gl1_inv6815; GFX10-NEXT:    buffer_gl0_inv6816; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66817; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s46818; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s46819; GFX10-NEXT:    s_cbranch_execnz .LBB24_16820; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end6821; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s46822; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v56823; GFX10-NEXT:    s_setpc_b64 s[30:31]6824;6825; GFX90A-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_neg:6826; GFX90A:       ; %bb.0:6827; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6828; GFX90A-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v06829; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc6830; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v36831; GFX90A-NEXT:    flat_load_dword v5, v[0:1]6832; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v36833; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v36834; GFX90A-NEXT:    s_mov_b32 s4, 0xffff6835; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s46836; GFX90A-NEXT:    v_not_b32_e32 v6, v46837; GFX90A-NEXT:    s_mov_b64 s[4:5], 06838; GFX90A-NEXT:  .LBB24_1: ; %atomicrmw.start6839; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=16840; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6841; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v3, v56842; GFX90A-NEXT:    v_sub_f16_e32 v4, v4, v26843; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v3, v46844; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v46845; GFX90A-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] glc6846; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6847; GFX90A-NEXT:    buffer_wbinvl16848; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v56849; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6850; GFX90A-NEXT:    v_mov_b32_e32 v5, v46851; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]6852; GFX90A-NEXT:    s_cbranch_execnz .LBB24_16853; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end6854; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]6855; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v3, v46856; GFX90A-NEXT:    s_setpc_b64 s[30:31]6857;6858; GFX908-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_neg:6859; GFX908:       ; %bb.0:6860; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6861; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v06862; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc6863; GFX908-NEXT:    v_and_b32_e32 v0, -4, v36864; GFX908-NEXT:    flat_load_dword v4, v[0:1]6865; GFX908-NEXT:    v_and_b32_e32 v3, 3, v36866; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v36867; GFX908-NEXT:    s_mov_b32 s4, 0xffff6868; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v3, s46869; GFX908-NEXT:    v_not_b32_e32 v5, v56870; GFX908-NEXT:    s_mov_b64 s[4:5], 06871; GFX908-NEXT:  .LBB24_1: ; %atomicrmw.start6872; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=16873; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6874; GFX908-NEXT:    v_mov_b32_e32 v7, v46875; GFX908-NEXT:    v_lshrrev_b32_e32 v4, v3, v76876; GFX908-NEXT:    v_sub_f16_e32 v4, v4, v26877; GFX908-NEXT:    v_lshlrev_b32_e32 v4, v3, v46878; GFX908-NEXT:    v_and_or_b32 v6, v7, v5, v46879; GFX908-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[6:7] glc6880; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6881; GFX908-NEXT:    buffer_wbinvl16882; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v76883; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6884; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]6885; GFX908-NEXT:    s_cbranch_execnz .LBB24_16886; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end6887; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]6888; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v46889; GFX908-NEXT:    s_setpc_b64 s[30:31]6890;6891; GFX8-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_neg:6892; GFX8:       ; %bb.0:6893; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6894; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v06895; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc6896; GFX8-NEXT:    v_and_b32_e32 v0, -4, v36897; GFX8-NEXT:    flat_load_dword v5, v[0:1]6898; GFX8-NEXT:    v_and_b32_e32 v3, 3, v36899; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v36900; GFX8-NEXT:    s_mov_b32 s4, 0xffff6901; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s46902; GFX8-NEXT:    v_not_b32_e32 v4, v46903; GFX8-NEXT:    s_mov_b64 s[4:5], 06904; GFX8-NEXT:  .LBB24_1: ; %atomicrmw.start6905; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=16906; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6907; GFX8-NEXT:    v_mov_b32_e32 v6, v56908; GFX8-NEXT:    v_lshrrev_b32_e32 v5, v3, v66909; GFX8-NEXT:    v_sub_f16_e32 v5, v5, v26910; GFX8-NEXT:    v_and_b32_e32 v7, v6, v46911; GFX8-NEXT:    v_lshlrev_b32_e32 v5, v3, v56912; GFX8-NEXT:    v_or_b32_e32 v5, v7, v56913; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc6914; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6915; GFX8-NEXT:    buffer_wbinvl16916; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v66917; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6918; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]6919; GFX8-NEXT:    s_cbranch_execnz .LBB24_16920; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end6921; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]6922; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v56923; GFX8-NEXT:    s_setpc_b64 s[30:31]6924;6925; GFX7-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_neg:6926; GFX7:       ; %bb.0:6927; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6928; GFX7-NEXT:    v_add_i32_e32 v3, vcc, 0xfffff800, v06929; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc6930; GFX7-NEXT:    v_and_b32_e32 v0, -4, v36931; GFX7-NEXT:    flat_load_dword v5, v[0:1]6932; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v26933; GFX7-NEXT:    v_and_b32_e32 v2, 3, v36934; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 3, v26935; GFX7-NEXT:    s_mov_b64 s[4:5], 06936; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v46937; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v26938; GFX7-NEXT:    v_not_b32_e32 v4, v46939; GFX7-NEXT:  .LBB24_1: ; %atomicrmw.start6940; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=16941; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6942; GFX7-NEXT:    v_mov_b32_e32 v6, v56943; GFX7-NEXT:    v_lshrrev_b32_e32 v5, v2, v66944; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v56945; GFX7-NEXT:    v_and_b32_e32 v7, v6, v46946; GFX7-NEXT:    v_sub_f32_e32 v5, v5, v36947; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v56948; GFX7-NEXT:    v_lshlrev_b32_e32 v5, v2, v56949; GFX7-NEXT:    v_or_b32_e32 v5, v7, v56950; GFX7-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc6951; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6952; GFX7-NEXT:    buffer_wbinvl16953; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v66954; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6955; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]6956; GFX7-NEXT:    s_cbranch_execnz .LBB24_16957; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end6958; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]6959; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v2, v56960; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v06961; GFX7-NEXT:    s_setpc_b64 s[30:31]6962  %gep = getelementptr inbounds half, ptr %ptr, i64 -10246963  %result = atomicrmw fsub ptr %gep, half %val syncscope("agent") seq_cst6964  ret half %result6965 }6966 6967define void @flat_agent_atomic_fsub_noret_f16(ptr %ptr, half %val) #0 {6968; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_noret_f16:6969; GFX12-TRUE16:       ; %bb.0:6970; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06971; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x06972; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x06973; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x06974; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x06975; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v06976; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 06977; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)6978; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v36979; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v36980; GFX12-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]6981; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v36982; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff6983; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6984; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v36985; GFX12-TRUE16-NEXT:  .LBB25_1: ; %atomicrmw.start6986; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16987; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06988; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v46989; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 06990; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6991; GFX12-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v3.l, v2.l6992; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v36993; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6994; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v36995; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x06996; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV6997; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06998; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV6999; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47000; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v37001; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7002; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07003; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7004; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07005; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB25_17006; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7007; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07008; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07009; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]7010;7011; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_noret_f16:7012; GFX12-FAKE16:       ; %bb.0:7013; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07014; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x07015; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x07016; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x07017; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x07018; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v07019; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 07020; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)7021; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v37022; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v37023; GFX12-FAKE16-NEXT:    flat_load_b32 v4, v[0:1]7024; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v37025; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7026; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7027; GFX12-FAKE16-NEXT:    v_not_b32_e32 v6, v37028; GFX12-FAKE16-NEXT:  .LBB25_1: ; %atomicrmw.start7029; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17030; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07031; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v47032; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7033; GFX12-FAKE16-NEXT:    v_sub_f16_e32 v3, v3, v27034; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v37035; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7036; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v37037; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v37038; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x07039; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV7040; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07041; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV7042; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47043; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v37044; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7045; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s07046; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7047; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07048; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB25_17049; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7050; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07051; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07052; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]7053;7054; GFX942-LABEL: flat_agent_atomic_fsub_noret_f16:7055; GFX942:       ; %bb.0:7056; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7057; GFX942-NEXT:    v_mov_b32_e32 v3, v07058; GFX942-NEXT:    v_and_b32_e32 v0, -4, v37059; GFX942-NEXT:    flat_load_dword v5, v[0:1]7060; GFX942-NEXT:    v_and_b32_e32 v3, 3, v37061; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v37062; GFX942-NEXT:    s_mov_b32 s0, 0xffff7063; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s07064; GFX942-NEXT:    v_not_b32_e32 v6, v47065; GFX942-NEXT:    s_mov_b64 s[0:1], 07066; GFX942-NEXT:  .LBB25_1: ; %atomicrmw.start7067; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=17068; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7069; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v3, v57070; GFX942-NEXT:    v_sub_f16_e32 v4, v4, v27071; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v3, v47072; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v47073; GFX942-NEXT:    buffer_wbl2 sc17074; GFX942-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] sc07075; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7076; GFX942-NEXT:    buffer_inv sc17077; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v57078; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]7079; GFX942-NEXT:    v_mov_b32_e32 v5, v47080; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]7081; GFX942-NEXT:    s_cbranch_execnz .LBB25_17082; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end7083; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]7084; GFX942-NEXT:    s_setpc_b64 s[30:31]7085;7086; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_noret_f16:7087; GFX11-TRUE16:       ; %bb.0:7088; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7089; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v07090; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 07091; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)7092; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v37093; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v37094; GFX11-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]7095; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v37096; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7097; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7098; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v37099; GFX11-TRUE16-NEXT:  .LBB25_1: ; %atomicrmw.start7100; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17101; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7102; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v47103; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 07104; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7105; GFX11-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v3.l, v2.l7106; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v37107; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7108; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v37109; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x07110; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc7111; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7112; GFX11-TRUE16-NEXT:    buffer_gl1_inv7113; GFX11-TRUE16-NEXT:    buffer_gl0_inv7114; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47115; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v37116; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07117; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7118; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07119; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB25_17120; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7121; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07122; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]7123;7124; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_noret_f16:7125; GFX11-FAKE16:       ; %bb.0:7126; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7127; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v07128; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 07129; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)7130; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v37131; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v37132; GFX11-FAKE16-NEXT:    flat_load_b32 v4, v[0:1]7133; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v37134; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7135; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7136; GFX11-FAKE16-NEXT:    v_not_b32_e32 v6, v37137; GFX11-FAKE16-NEXT:  .LBB25_1: ; %atomicrmw.start7138; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17139; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7140; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v47141; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7142; GFX11-FAKE16-NEXT:    v_sub_f16_e32 v3, v3, v27143; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v37144; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7145; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v37146; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v37147; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x07148; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc7149; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7150; GFX11-FAKE16-NEXT:    buffer_gl1_inv7151; GFX11-FAKE16-NEXT:    buffer_gl0_inv7152; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47153; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v37154; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s07155; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7156; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07157; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB25_17158; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7159; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07160; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]7161;7162; GFX10-LABEL: flat_agent_atomic_fsub_noret_f16:7163; GFX10:       ; %bb.0:7164; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7165; GFX10-NEXT:    v_mov_b32_e32 v3, v07166; GFX10-NEXT:    s_mov_b32 s4, 07167; GFX10-NEXT:    v_and_b32_e32 v0, -4, v37168; GFX10-NEXT:    v_and_b32_e32 v3, 3, v37169; GFX10-NEXT:    flat_load_dword v4, v[0:1]7170; GFX10-NEXT:    v_lshlrev_b32_e32 v5, 3, v37171; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7172; GFX10-NEXT:    v_not_b32_e32 v6, v37173; GFX10-NEXT:  .LBB25_1: ; %atomicrmw.start7174; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=17175; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7176; GFX10-NEXT:    v_lshrrev_b32_e32 v3, v5, v47177; GFX10-NEXT:    v_sub_f16_e32 v3, v3, v27178; GFX10-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_07179; GFX10-NEXT:    v_and_or_b32 v3, v4, v6, v37180; GFX10-NEXT:    s_waitcnt_vscnt null, 0x07181; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc7182; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7183; GFX10-NEXT:    buffer_gl1_inv7184; GFX10-NEXT:    buffer_gl0_inv7185; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47186; GFX10-NEXT:    v_mov_b32_e32 v4, v37187; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s47188; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s47189; GFX10-NEXT:    s_cbranch_execnz .LBB25_17190; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end7191; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s47192; GFX10-NEXT:    s_setpc_b64 s[30:31]7193;7194; GFX90A-LABEL: flat_agent_atomic_fsub_noret_f16:7195; GFX90A:       ; %bb.0:7196; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7197; GFX90A-NEXT:    v_mov_b32_e32 v3, v07198; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v37199; GFX90A-NEXT:    flat_load_dword v5, v[0:1]7200; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v37201; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v37202; GFX90A-NEXT:    s_mov_b32 s4, 0xffff7203; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s47204; GFX90A-NEXT:    v_not_b32_e32 v6, v47205; GFX90A-NEXT:    s_mov_b64 s[4:5], 07206; GFX90A-NEXT:  .LBB25_1: ; %atomicrmw.start7207; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=17208; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7209; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v3, v57210; GFX90A-NEXT:    v_sub_f16_e32 v4, v4, v27211; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v3, v47212; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v47213; GFX90A-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] glc7214; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7215; GFX90A-NEXT:    buffer_wbinvl17216; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v57217; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7218; GFX90A-NEXT:    v_mov_b32_e32 v5, v47219; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]7220; GFX90A-NEXT:    s_cbranch_execnz .LBB25_17221; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end7222; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]7223; GFX90A-NEXT:    s_setpc_b64 s[30:31]7224;7225; GFX908-LABEL: flat_agent_atomic_fsub_noret_f16:7226; GFX908:       ; %bb.0:7227; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7228; GFX908-NEXT:    v_mov_b32_e32 v3, v07229; GFX908-NEXT:    v_and_b32_e32 v0, -4, v37230; GFX908-NEXT:    flat_load_dword v4, v[0:1]7231; GFX908-NEXT:    v_and_b32_e32 v3, 3, v37232; GFX908-NEXT:    v_lshlrev_b32_e32 v5, 3, v37233; GFX908-NEXT:    s_mov_b32 s4, 0xffff7234; GFX908-NEXT:    v_lshlrev_b32_e64 v3, v5, s47235; GFX908-NEXT:    v_not_b32_e32 v6, v37236; GFX908-NEXT:    s_mov_b64 s[4:5], 07237; GFX908-NEXT:  .LBB25_1: ; %atomicrmw.start7238; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=17239; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7240; GFX908-NEXT:    v_lshrrev_b32_e32 v3, v5, v47241; GFX908-NEXT:    v_sub_f16_e32 v3, v3, v27242; GFX908-NEXT:    v_lshlrev_b32_e32 v3, v5, v37243; GFX908-NEXT:    v_and_or_b32 v3, v4, v6, v37244; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc7245; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7246; GFX908-NEXT:    buffer_wbinvl17247; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v47248; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7249; GFX908-NEXT:    v_mov_b32_e32 v4, v37250; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]7251; GFX908-NEXT:    s_cbranch_execnz .LBB25_17252; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end7253; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]7254; GFX908-NEXT:    s_setpc_b64 s[30:31]7255;7256; GFX8-LABEL: flat_agent_atomic_fsub_noret_f16:7257; GFX8:       ; %bb.0:7258; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7259; GFX8-NEXT:    v_mov_b32_e32 v3, v07260; GFX8-NEXT:    v_and_b32_e32 v0, -4, v37261; GFX8-NEXT:    flat_load_dword v4, v[0:1]7262; GFX8-NEXT:    v_and_b32_e32 v3, 3, v37263; GFX8-NEXT:    v_lshlrev_b32_e32 v5, 3, v37264; GFX8-NEXT:    s_mov_b32 s4, 0xffff7265; GFX8-NEXT:    v_lshlrev_b32_e64 v3, v5, s47266; GFX8-NEXT:    v_not_b32_e32 v6, v37267; GFX8-NEXT:    s_mov_b64 s[4:5], 07268; GFX8-NEXT:  .LBB25_1: ; %atomicrmw.start7269; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=17270; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7271; GFX8-NEXT:    v_lshrrev_b32_e32 v3, v5, v47272; GFX8-NEXT:    v_sub_f16_e32 v3, v3, v27273; GFX8-NEXT:    v_and_b32_e32 v7, v4, v67274; GFX8-NEXT:    v_lshlrev_b32_e32 v3, v5, v37275; GFX8-NEXT:    v_or_b32_e32 v3, v7, v37276; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc7277; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7278; GFX8-NEXT:    buffer_wbinvl17279; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v47280; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7281; GFX8-NEXT:    v_mov_b32_e32 v4, v37282; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]7283; GFX8-NEXT:    s_cbranch_execnz .LBB25_17284; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end7285; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]7286; GFX8-NEXT:    s_setpc_b64 s[30:31]7287;7288; GFX7-LABEL: flat_agent_atomic_fsub_noret_f16:7289; GFX7:       ; %bb.0:7290; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7291; GFX7-NEXT:    v_mov_b32_e32 v3, v07292; GFX7-NEXT:    v_and_b32_e32 v0, -4, v37293; GFX7-NEXT:    flat_load_dword v4, v[0:1]7294; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v27295; GFX7-NEXT:    v_and_b32_e32 v2, 3, v37296; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 3, v27297; GFX7-NEXT:    v_lshl_b32_e32 v3, 0xffff, v27298; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v57299; GFX7-NEXT:    v_not_b32_e32 v6, v37300; GFX7-NEXT:    s_mov_b64 s[4:5], 07301; GFX7-NEXT:  .LBB25_1: ; %atomicrmw.start7302; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=17303; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7304; GFX7-NEXT:    v_lshrrev_b32_e32 v3, v2, v47305; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v37306; GFX7-NEXT:    v_and_b32_e32 v7, v4, v67307; GFX7-NEXT:    v_sub_f32_e32 v3, v3, v57308; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v37309; GFX7-NEXT:    v_lshlrev_b32_e32 v3, v2, v37310; GFX7-NEXT:    v_or_b32_e32 v3, v7, v37311; GFX7-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc7312; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7313; GFX7-NEXT:    buffer_wbinvl17314; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v47315; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7316; GFX7-NEXT:    v_mov_b32_e32 v4, v37317; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]7318; GFX7-NEXT:    s_cbranch_execnz .LBB25_17319; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end7320; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]7321; GFX7-NEXT:    s_setpc_b64 s[30:31]7322  %unused = atomicrmw fsub ptr %ptr, half %val syncscope("agent") seq_cst7323  ret void7324}7325 7326define void @flat_agent_atomic_fsub_noret_f16__offset12b_pos(ptr %ptr, half %val) #0 {7327; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b_pos:7328; GFX12-TRUE16:       ; %bb.0:7329; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x07330; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x07331; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x07332; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x07333; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x07334; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v07335; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)7336; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo7337; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 07338; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v37339; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v37340; GFX12-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]7341; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v37342; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7343; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7344; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v37345; GFX12-TRUE16-NEXT:  .LBB26_1: ; %atomicrmw.start7346; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17347; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x07348; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v47349; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 07350; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7351; GFX12-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v3.l, v2.l7352; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v37353; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7354; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v37355; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x07356; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV7357; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x07358; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV7359; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47360; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v37361; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7362; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07363; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7364; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07365; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB26_17366; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7367; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07368; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07369; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]7370;7371; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b_pos:7372; GFX12-FAKE16:       ; %bb.0:7373; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07374; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x07375; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x07376; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x07377; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x07378; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v07379; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)7380; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo7381; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 07382; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v37383; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v37384; GFX12-FAKE16-NEXT:    flat_load_b32 v4, v[0:1]7385; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v37386; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7387; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7388; GFX12-FAKE16-NEXT:    v_not_b32_e32 v6, v37389; GFX12-FAKE16-NEXT:  .LBB26_1: ; %atomicrmw.start7390; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17391; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07392; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v47393; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7394; GFX12-FAKE16-NEXT:    v_sub_f16_e32 v3, v3, v27395; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v37396; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7397; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v37398; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v37399; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x07400; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV7401; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07402; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV7403; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47404; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v37405; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7406; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s07407; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7408; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07409; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB26_17410; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7411; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07412; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07413; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]7414;7415; GFX942-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b_pos:7416; GFX942:       ; %bb.0:7417; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7418; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe7419; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]7420; GFX942-NEXT:    v_and_b32_e32 v0, -4, v47421; GFX942-NEXT:    v_mov_b32_e32 v1, v57422; GFX942-NEXT:    flat_load_dword v5, v[0:1]7423; GFX942-NEXT:    v_and_b32_e32 v3, 3, v47424; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v37425; GFX942-NEXT:    s_mov_b32 s0, 0xffff7426; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s07427; GFX942-NEXT:    v_not_b32_e32 v6, v47428; GFX942-NEXT:    s_mov_b64 s[0:1], 07429; GFX942-NEXT:  .LBB26_1: ; %atomicrmw.start7430; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=17431; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7432; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v3, v57433; GFX942-NEXT:    v_sub_f16_e32 v4, v4, v27434; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v3, v47435; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v47436; GFX942-NEXT:    buffer_wbl2 sc17437; GFX942-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] sc07438; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7439; GFX942-NEXT:    buffer_inv sc17440; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v57441; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]7442; GFX942-NEXT:    v_mov_b32_e32 v5, v47443; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]7444; GFX942-NEXT:    s_cbranch_execnz .LBB26_17445; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end7446; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]7447; GFX942-NEXT:    s_setpc_b64 s[30:31]7448;7449; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b_pos:7450; GFX11-TRUE16:       ; %bb.0:7451; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7452; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v07453; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7454; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo7455; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 07456; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v37457; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v37458; GFX11-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]7459; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v37460; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7461; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7462; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v37463; GFX11-TRUE16-NEXT:  .LBB26_1: ; %atomicrmw.start7464; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17465; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7466; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v47467; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 07468; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7469; GFX11-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v3.l, v2.l7470; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v37471; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7472; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v37473; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x07474; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc7475; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7476; GFX11-TRUE16-NEXT:    buffer_gl1_inv7477; GFX11-TRUE16-NEXT:    buffer_gl0_inv7478; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47479; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v37480; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07481; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7482; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07483; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB26_17484; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7485; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07486; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]7487;7488; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b_pos:7489; GFX11-FAKE16:       ; %bb.0:7490; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7491; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v07492; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7493; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo7494; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 07495; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v37496; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v37497; GFX11-FAKE16-NEXT:    flat_load_b32 v4, v[0:1]7498; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v37499; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7500; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7501; GFX11-FAKE16-NEXT:    v_not_b32_e32 v6, v37502; GFX11-FAKE16-NEXT:  .LBB26_1: ; %atomicrmw.start7503; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17504; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7505; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v47506; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7507; GFX11-FAKE16-NEXT:    v_sub_f16_e32 v3, v3, v27508; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v37509; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7510; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v37511; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v37512; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x07513; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc7514; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7515; GFX11-FAKE16-NEXT:    buffer_gl1_inv7516; GFX11-FAKE16-NEXT:    buffer_gl0_inv7517; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47518; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v37519; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s07520; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7521; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07522; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB26_17523; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7524; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07525; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]7526;7527; GFX10-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b_pos:7528; GFX10:       ; %bb.0:7529; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7530; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v07531; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo7532; GFX10-NEXT:    s_mov_b32 s4, 07533; GFX10-NEXT:    v_and_b32_e32 v0, -4, v37534; GFX10-NEXT:    v_and_b32_e32 v3, 3, v37535; GFX10-NEXT:    flat_load_dword v4, v[0:1]7536; GFX10-NEXT:    v_lshlrev_b32_e32 v5, 3, v37537; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7538; GFX10-NEXT:    v_not_b32_e32 v6, v37539; GFX10-NEXT:  .LBB26_1: ; %atomicrmw.start7540; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=17541; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7542; GFX10-NEXT:    v_lshrrev_b32_e32 v3, v5, v47543; GFX10-NEXT:    v_sub_f16_e32 v3, v3, v27544; GFX10-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_07545; GFX10-NEXT:    v_and_or_b32 v3, v4, v6, v37546; GFX10-NEXT:    s_waitcnt_vscnt null, 0x07547; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc7548; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7549; GFX10-NEXT:    buffer_gl1_inv7550; GFX10-NEXT:    buffer_gl0_inv7551; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47552; GFX10-NEXT:    v_mov_b32_e32 v4, v37553; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s47554; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s47555; GFX10-NEXT:    s_cbranch_execnz .LBB26_17556; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end7557; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s47558; GFX10-NEXT:    s_setpc_b64 s[30:31]7559;7560; GFX90A-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b_pos:7561; GFX90A:       ; %bb.0:7562; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7563; GFX90A-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v07564; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc7565; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v37566; GFX90A-NEXT:    flat_load_dword v5, v[0:1]7567; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v37568; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v37569; GFX90A-NEXT:    s_mov_b32 s4, 0xffff7570; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s47571; GFX90A-NEXT:    v_not_b32_e32 v6, v47572; GFX90A-NEXT:    s_mov_b64 s[4:5], 07573; GFX90A-NEXT:  .LBB26_1: ; %atomicrmw.start7574; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=17575; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7576; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v3, v57577; GFX90A-NEXT:    v_sub_f16_e32 v4, v4, v27578; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v3, v47579; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v47580; GFX90A-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] glc7581; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7582; GFX90A-NEXT:    buffer_wbinvl17583; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v57584; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7585; GFX90A-NEXT:    v_mov_b32_e32 v5, v47586; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]7587; GFX90A-NEXT:    s_cbranch_execnz .LBB26_17588; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end7589; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]7590; GFX90A-NEXT:    s_setpc_b64 s[30:31]7591;7592; GFX908-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b_pos:7593; GFX908:       ; %bb.0:7594; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7595; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v07596; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc7597; GFX908-NEXT:    v_and_b32_e32 v0, -4, v37598; GFX908-NEXT:    flat_load_dword v4, v[0:1]7599; GFX908-NEXT:    v_and_b32_e32 v3, 3, v37600; GFX908-NEXT:    v_lshlrev_b32_e32 v5, 3, v37601; GFX908-NEXT:    s_mov_b32 s4, 0xffff7602; GFX908-NEXT:    v_lshlrev_b32_e64 v3, v5, s47603; GFX908-NEXT:    v_not_b32_e32 v6, v37604; GFX908-NEXT:    s_mov_b64 s[4:5], 07605; GFX908-NEXT:  .LBB26_1: ; %atomicrmw.start7606; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=17607; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7608; GFX908-NEXT:    v_lshrrev_b32_e32 v3, v5, v47609; GFX908-NEXT:    v_sub_f16_e32 v3, v3, v27610; GFX908-NEXT:    v_lshlrev_b32_e32 v3, v5, v37611; GFX908-NEXT:    v_and_or_b32 v3, v4, v6, v37612; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc7613; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7614; GFX908-NEXT:    buffer_wbinvl17615; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v47616; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7617; GFX908-NEXT:    v_mov_b32_e32 v4, v37618; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]7619; GFX908-NEXT:    s_cbranch_execnz .LBB26_17620; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end7621; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]7622; GFX908-NEXT:    s_setpc_b64 s[30:31]7623;7624; GFX8-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b_pos:7625; GFX8:       ; %bb.0:7626; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7627; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v07628; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc7629; GFX8-NEXT:    v_and_b32_e32 v0, -4, v37630; GFX8-NEXT:    flat_load_dword v4, v[0:1]7631; GFX8-NEXT:    v_and_b32_e32 v3, 3, v37632; GFX8-NEXT:    v_lshlrev_b32_e32 v5, 3, v37633; GFX8-NEXT:    s_mov_b32 s4, 0xffff7634; GFX8-NEXT:    v_lshlrev_b32_e64 v3, v5, s47635; GFX8-NEXT:    v_not_b32_e32 v6, v37636; GFX8-NEXT:    s_mov_b64 s[4:5], 07637; GFX8-NEXT:  .LBB26_1: ; %atomicrmw.start7638; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=17639; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7640; GFX8-NEXT:    v_lshrrev_b32_e32 v3, v5, v47641; GFX8-NEXT:    v_sub_f16_e32 v3, v3, v27642; GFX8-NEXT:    v_and_b32_e32 v7, v4, v67643; GFX8-NEXT:    v_lshlrev_b32_e32 v3, v5, v37644; GFX8-NEXT:    v_or_b32_e32 v3, v7, v37645; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc7646; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7647; GFX8-NEXT:    buffer_wbinvl17648; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v47649; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7650; GFX8-NEXT:    v_mov_b32_e32 v4, v37651; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]7652; GFX8-NEXT:    s_cbranch_execnz .LBB26_17653; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end7654; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]7655; GFX8-NEXT:    s_setpc_b64 s[30:31]7656;7657; GFX7-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b_pos:7658; GFX7:       ; %bb.0:7659; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7660; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v07661; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc7662; GFX7-NEXT:    v_and_b32_e32 v0, -4, v47663; GFX7-NEXT:    flat_load_dword v3, v[0:1]7664; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v27665; GFX7-NEXT:    v_and_b32_e32 v4, 3, v47666; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v47667; GFX7-NEXT:    s_mov_b64 s[4:5], 07668; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v27669; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v47670; GFX7-NEXT:    v_not_b32_e32 v6, v27671; GFX7-NEXT:  .LBB26_1: ; %atomicrmw.start7672; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=17673; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7674; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v37675; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v27676; GFX7-NEXT:    v_and_b32_e32 v7, v3, v67677; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v57678; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v27679; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v27680; GFX7-NEXT:    v_or_b32_e32 v2, v7, v27681; GFX7-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc7682; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7683; GFX7-NEXT:    buffer_wbinvl17684; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v37685; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7686; GFX7-NEXT:    v_mov_b32_e32 v3, v27687; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]7688; GFX7-NEXT:    s_cbranch_execnz .LBB26_17689; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end7690; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]7691; GFX7-NEXT:    s_setpc_b64 s[30:31]7692  %gep = getelementptr inbounds half, ptr %ptr, i64 10237693  %unused = atomicrmw fsub ptr %gep, half %val syncscope("agent") seq_cst7694  ret void7695}7696 7697define void @flat_agent_atomic_fsub_noret_f16__offset12b_neg(ptr %ptr, half %val) #0 {7698; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b_neg:7699; GFX12-TRUE16:       ; %bb.0:7700; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x07701; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x07702; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x07703; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x07704; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x07705; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v07706; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)7707; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo7708; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 07709; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v37710; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v37711; GFX12-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]7712; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v37713; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7714; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7715; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v37716; GFX12-TRUE16-NEXT:  .LBB27_1: ; %atomicrmw.start7717; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17718; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x07719; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v47720; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 07721; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7722; GFX12-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v3.l, v2.l7723; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v37724; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7725; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v37726; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x07727; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV7728; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x07729; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV7730; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47731; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v37732; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7733; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07734; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7735; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07736; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB27_17737; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7738; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07739; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07740; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]7741;7742; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b_neg:7743; GFX12-FAKE16:       ; %bb.0:7744; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07745; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x07746; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x07747; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x07748; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x07749; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v07750; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)7751; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo7752; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 07753; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v37754; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v37755; GFX12-FAKE16-NEXT:    flat_load_b32 v4, v[0:1]7756; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v37757; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7758; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7759; GFX12-FAKE16-NEXT:    v_not_b32_e32 v6, v37760; GFX12-FAKE16-NEXT:  .LBB27_1: ; %atomicrmw.start7761; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17762; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07763; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v47764; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7765; GFX12-FAKE16-NEXT:    v_sub_f16_e32 v3, v3, v27766; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v37767; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7768; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v37769; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v37770; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x07771; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV7772; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07773; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV7774; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47775; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v37776; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7777; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s07778; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7779; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07780; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB27_17781; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7782; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07783; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07784; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]7785;7786; GFX942-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b_neg:7787; GFX942:       ; %bb.0:7788; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7789; GFX942-NEXT:    s_movk_i32 s0, 0xf8007790; GFX942-NEXT:    s_mov_b32 s1, -17791; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]7792; GFX942-NEXT:    v_and_b32_e32 v0, -4, v47793; GFX942-NEXT:    v_mov_b32_e32 v1, v57794; GFX942-NEXT:    flat_load_dword v5, v[0:1]7795; GFX942-NEXT:    v_and_b32_e32 v3, 3, v47796; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v37797; GFX942-NEXT:    s_mov_b32 s0, 0xffff7798; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s07799; GFX942-NEXT:    v_not_b32_e32 v6, v47800; GFX942-NEXT:    s_mov_b64 s[0:1], 07801; GFX942-NEXT:  .LBB27_1: ; %atomicrmw.start7802; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=17803; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7804; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v3, v57805; GFX942-NEXT:    v_sub_f16_e32 v4, v4, v27806; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v3, v47807; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v47808; GFX942-NEXT:    buffer_wbl2 sc17809; GFX942-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] sc07810; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7811; GFX942-NEXT:    buffer_inv sc17812; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v57813; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]7814; GFX942-NEXT:    v_mov_b32_e32 v5, v47815; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]7816; GFX942-NEXT:    s_cbranch_execnz .LBB27_17817; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end7818; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]7819; GFX942-NEXT:    s_setpc_b64 s[30:31]7820;7821; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b_neg:7822; GFX11-TRUE16:       ; %bb.0:7823; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7824; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v07825; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7826; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo7827; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 07828; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v37829; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v37830; GFX11-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]7831; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v37832; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7833; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7834; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v37835; GFX11-TRUE16-NEXT:  .LBB27_1: ; %atomicrmw.start7836; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17837; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7838; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v47839; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 07840; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7841; GFX11-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v3.l, v2.l7842; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v37843; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7844; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v37845; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x07846; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc7847; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7848; GFX11-TRUE16-NEXT:    buffer_gl1_inv7849; GFX11-TRUE16-NEXT:    buffer_gl0_inv7850; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47851; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v37852; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07853; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7854; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07855; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB27_17856; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7857; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07858; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]7859;7860; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b_neg:7861; GFX11-FAKE16:       ; %bb.0:7862; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7863; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v07864; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7865; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo7866; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 07867; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v37868; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v37869; GFX11-FAKE16-NEXT:    flat_load_b32 v4, v[0:1]7870; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v37871; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7872; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7873; GFX11-FAKE16-NEXT:    v_not_b32_e32 v6, v37874; GFX11-FAKE16-NEXT:  .LBB27_1: ; %atomicrmw.start7875; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17876; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7877; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v47878; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7879; GFX11-FAKE16-NEXT:    v_sub_f16_e32 v3, v3, v27880; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v37881; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7882; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v37883; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v37884; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x07885; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc7886; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7887; GFX11-FAKE16-NEXT:    buffer_gl1_inv7888; GFX11-FAKE16-NEXT:    buffer_gl0_inv7889; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47890; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v37891; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s07892; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7893; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07894; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB27_17895; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7896; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07897; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]7898;7899; GFX10-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b_neg:7900; GFX10:       ; %bb.0:7901; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7902; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v07903; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo7904; GFX10-NEXT:    s_mov_b32 s4, 07905; GFX10-NEXT:    v_and_b32_e32 v0, -4, v37906; GFX10-NEXT:    v_and_b32_e32 v3, 3, v37907; GFX10-NEXT:    flat_load_dword v4, v[0:1]7908; GFX10-NEXT:    v_lshlrev_b32_e32 v5, 3, v37909; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7910; GFX10-NEXT:    v_not_b32_e32 v6, v37911; GFX10-NEXT:  .LBB27_1: ; %atomicrmw.start7912; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=17913; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7914; GFX10-NEXT:    v_lshrrev_b32_e32 v3, v5, v47915; GFX10-NEXT:    v_sub_f16_e32 v3, v3, v27916; GFX10-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_07917; GFX10-NEXT:    v_and_or_b32 v3, v4, v6, v37918; GFX10-NEXT:    s_waitcnt_vscnt null, 0x07919; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc7920; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7921; GFX10-NEXT:    buffer_gl1_inv7922; GFX10-NEXT:    buffer_gl0_inv7923; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47924; GFX10-NEXT:    v_mov_b32_e32 v4, v37925; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s47926; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s47927; GFX10-NEXT:    s_cbranch_execnz .LBB27_17928; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end7929; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s47930; GFX10-NEXT:    s_setpc_b64 s[30:31]7931;7932; GFX90A-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b_neg:7933; GFX90A:       ; %bb.0:7934; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7935; GFX90A-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v07936; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc7937; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v37938; GFX90A-NEXT:    flat_load_dword v5, v[0:1]7939; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v37940; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v37941; GFX90A-NEXT:    s_mov_b32 s4, 0xffff7942; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s47943; GFX90A-NEXT:    v_not_b32_e32 v6, v47944; GFX90A-NEXT:    s_mov_b64 s[4:5], 07945; GFX90A-NEXT:  .LBB27_1: ; %atomicrmw.start7946; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=17947; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7948; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v3, v57949; GFX90A-NEXT:    v_sub_f16_e32 v4, v4, v27950; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v3, v47951; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v47952; GFX90A-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] glc7953; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7954; GFX90A-NEXT:    buffer_wbinvl17955; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v57956; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7957; GFX90A-NEXT:    v_mov_b32_e32 v5, v47958; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]7959; GFX90A-NEXT:    s_cbranch_execnz .LBB27_17960; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end7961; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]7962; GFX90A-NEXT:    s_setpc_b64 s[30:31]7963;7964; GFX908-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b_neg:7965; GFX908:       ; %bb.0:7966; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7967; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v07968; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc7969; GFX908-NEXT:    v_and_b32_e32 v0, -4, v37970; GFX908-NEXT:    flat_load_dword v4, v[0:1]7971; GFX908-NEXT:    v_and_b32_e32 v3, 3, v37972; GFX908-NEXT:    v_lshlrev_b32_e32 v5, 3, v37973; GFX908-NEXT:    s_mov_b32 s4, 0xffff7974; GFX908-NEXT:    v_lshlrev_b32_e64 v3, v5, s47975; GFX908-NEXT:    v_not_b32_e32 v6, v37976; GFX908-NEXT:    s_mov_b64 s[4:5], 07977; GFX908-NEXT:  .LBB27_1: ; %atomicrmw.start7978; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=17979; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7980; GFX908-NEXT:    v_lshrrev_b32_e32 v3, v5, v47981; GFX908-NEXT:    v_sub_f16_e32 v3, v3, v27982; GFX908-NEXT:    v_lshlrev_b32_e32 v3, v5, v37983; GFX908-NEXT:    v_and_or_b32 v3, v4, v6, v37984; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc7985; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7986; GFX908-NEXT:    buffer_wbinvl17987; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v47988; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7989; GFX908-NEXT:    v_mov_b32_e32 v4, v37990; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]7991; GFX908-NEXT:    s_cbranch_execnz .LBB27_17992; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end7993; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]7994; GFX908-NEXT:    s_setpc_b64 s[30:31]7995;7996; GFX8-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b_neg:7997; GFX8:       ; %bb.0:7998; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7999; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v08000; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc8001; GFX8-NEXT:    v_and_b32_e32 v0, -4, v38002; GFX8-NEXT:    flat_load_dword v4, v[0:1]8003; GFX8-NEXT:    v_and_b32_e32 v3, 3, v38004; GFX8-NEXT:    v_lshlrev_b32_e32 v5, 3, v38005; GFX8-NEXT:    s_mov_b32 s4, 0xffff8006; GFX8-NEXT:    v_lshlrev_b32_e64 v3, v5, s48007; GFX8-NEXT:    v_not_b32_e32 v6, v38008; GFX8-NEXT:    s_mov_b64 s[4:5], 08009; GFX8-NEXT:  .LBB27_1: ; %atomicrmw.start8010; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=18011; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8012; GFX8-NEXT:    v_lshrrev_b32_e32 v3, v5, v48013; GFX8-NEXT:    v_sub_f16_e32 v3, v3, v28014; GFX8-NEXT:    v_and_b32_e32 v7, v4, v68015; GFX8-NEXT:    v_lshlrev_b32_e32 v3, v5, v38016; GFX8-NEXT:    v_or_b32_e32 v3, v7, v38017; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc8018; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8019; GFX8-NEXT:    buffer_wbinvl18020; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v48021; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8022; GFX8-NEXT:    v_mov_b32_e32 v4, v38023; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]8024; GFX8-NEXT:    s_cbranch_execnz .LBB27_18025; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end8026; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]8027; GFX8-NEXT:    s_setpc_b64 s[30:31]8028;8029; GFX7-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b_neg:8030; GFX7:       ; %bb.0:8031; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8032; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v08033; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc8034; GFX7-NEXT:    v_and_b32_e32 v0, -4, v48035; GFX7-NEXT:    flat_load_dword v3, v[0:1]8036; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v28037; GFX7-NEXT:    v_and_b32_e32 v4, 3, v48038; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v48039; GFX7-NEXT:    s_mov_b64 s[4:5], 08040; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v28041; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v48042; GFX7-NEXT:    v_not_b32_e32 v6, v28043; GFX7-NEXT:  .LBB27_1: ; %atomicrmw.start8044; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=18045; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8046; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v38047; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v28048; GFX7-NEXT:    v_and_b32_e32 v7, v3, v68049; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v58050; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v28051; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v28052; GFX7-NEXT:    v_or_b32_e32 v2, v7, v28053; GFX7-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc8054; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8055; GFX7-NEXT:    buffer_wbinvl18056; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v38057; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8058; GFX7-NEXT:    v_mov_b32_e32 v3, v28059; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]8060; GFX7-NEXT:    s_cbranch_execnz .LBB27_18061; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end8062; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]8063; GFX7-NEXT:    s_setpc_b64 s[30:31]8064  %gep = getelementptr inbounds half, ptr %ptr, i64 -10248065  %unused = atomicrmw fsub ptr %gep, half %val syncscope("agent") seq_cst8066  ret void8067}8068 8069define half @flat_agent_atomic_fsub_ret_f16__offset12b_pos__align4(ptr %ptr, half %val) #0 {8070; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_pos__align4:8071; GFX12-TRUE16:       ; %bb.0:8072; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08073; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x08074; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x08075; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x08076; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x08077; GFX12-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:20468078; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 08079; GFX12-TRUE16-NEXT:  .LBB28_1: ; %atomicrmw.start8080; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18081; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08082; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v38083; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 08084; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8085; GFX12-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v4.l, v2.l8086; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v38087; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x08088; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV8089; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08090; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV8091; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48092; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8093; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08094; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8095; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08096; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB28_18097; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8098; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08099; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v3.l8100; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08101; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]8102;8103; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_pos__align4:8104; GFX12-FAKE16:       ; %bb.0:8105; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08106; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x08107; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x08108; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x08109; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x08110; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:20468111; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 08112; GFX12-FAKE16-NEXT:  .LBB28_1: ; %atomicrmw.start8113; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18114; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08115; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v38116; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8117; GFX12-FAKE16-NEXT:    v_sub_f16_e32 v3, v4, v28118; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v38119; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8120; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v38121; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x08122; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV8123; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08124; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV8125; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48126; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8127; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08128; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8129; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08130; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB28_18131; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8132; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08133; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v38134; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08135; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]8136;8137; GFX942-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_pos__align4:8138; GFX942:       ; %bb.0:8139; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8140; GFX942-NEXT:    flat_load_dword v5, v[0:1] offset:20468141; GFX942-NEXT:    s_mov_b64 s[0:1], 08142; GFX942-NEXT:    s_mov_b32 s2, 0xffff00008143; GFX942-NEXT:  .LBB28_1: ; %atomicrmw.start8144; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=18145; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8146; GFX942-NEXT:    v_sub_f16_e32 v3, v5, v28147; GFX942-NEXT:    v_and_or_b32 v4, v5, s2, v38148; GFX942-NEXT:    buffer_wbl2 sc18149; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2046 sc08150; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8151; GFX942-NEXT:    buffer_inv sc18152; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v58153; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]8154; GFX942-NEXT:    v_mov_b32_e32 v5, v38155; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]8156; GFX942-NEXT:    s_cbranch_execnz .LBB28_18157; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end8158; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]8159; GFX942-NEXT:    v_mov_b32_e32 v0, v38160; GFX942-NEXT:    s_setpc_b64 s[30:31]8161;8162; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_pos__align4:8163; GFX11-TRUE16:       ; %bb.0:8164; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8165; GFX11-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:20468166; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 08167; GFX11-TRUE16-NEXT:  .LBB28_1: ; %atomicrmw.start8168; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18169; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8170; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v38171; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 08172; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8173; GFX11-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v4.l, v2.l8174; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v38175; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x08176; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 glc8177; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8178; GFX11-TRUE16-NEXT:    buffer_gl1_inv8179; GFX11-TRUE16-NEXT:    buffer_gl0_inv8180; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48181; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08182; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8183; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08184; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB28_18185; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8186; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08187; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v3.l8188; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]8189;8190; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_pos__align4:8191; GFX11-FAKE16:       ; %bb.0:8192; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8193; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:20468194; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 08195; GFX11-FAKE16-NEXT:  .LBB28_1: ; %atomicrmw.start8196; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18197; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8198; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v38199; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8200; GFX11-FAKE16-NEXT:    v_sub_f16_e32 v3, v4, v28201; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v38202; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8203; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v38204; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x08205; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 glc8206; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8207; GFX11-FAKE16-NEXT:    buffer_gl1_inv8208; GFX11-FAKE16-NEXT:    buffer_gl0_inv8209; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48210; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08211; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8212; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08213; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB28_18214; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8215; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08216; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v38217; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]8218;8219; GFX10-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_pos__align4:8220; GFX10:       ; %bb.0:8221; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8222; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v08223; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, 0, v1, vcc_lo8224; GFX10-NEXT:    s_mov_b32 s4, 08225; GFX10-NEXT:    flat_load_dword v0, v[3:4]8226; GFX10-NEXT:  .LBB28_1: ; %atomicrmw.start8227; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=18228; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8229; GFX10-NEXT:    v_mov_b32_e32 v1, v08230; GFX10-NEXT:    v_sub_f16_e32 v0, v1, v28231; GFX10-NEXT:    v_and_b32_e32 v0, 0xffff, v08232; GFX10-NEXT:    v_and_or_b32 v0, 0xffff0000, v1, v08233; GFX10-NEXT:    s_waitcnt_vscnt null, 0x08234; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc8235; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8236; GFX10-NEXT:    buffer_gl1_inv8237; GFX10-NEXT:    buffer_gl0_inv8238; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v18239; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s48240; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s48241; GFX10-NEXT:    s_cbranch_execnz .LBB28_18242; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end8243; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s48244; GFX10-NEXT:    s_setpc_b64 s[30:31]8245;8246; GFX90A-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_pos__align4:8247; GFX90A:       ; %bb.0:8248; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8249; GFX90A-NEXT:    flat_load_dword v5, v[0:1] offset:20468250; GFX90A-NEXT:    s_mov_b64 s[4:5], 08251; GFX90A-NEXT:    s_mov_b32 s6, 0xffff00008252; GFX90A-NEXT:  .LBB28_1: ; %atomicrmw.start8253; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=18254; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8255; GFX90A-NEXT:    v_sub_f16_e32 v3, v5, v28256; GFX90A-NEXT:    v_and_or_b32 v4, v5, s6, v38257; GFX90A-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2046 glc8258; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8259; GFX90A-NEXT:    buffer_wbinvl18260; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v58261; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8262; GFX90A-NEXT:    v_mov_b32_e32 v5, v38263; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]8264; GFX90A-NEXT:    s_cbranch_execnz .LBB28_18265; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end8266; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]8267; GFX90A-NEXT:    v_mov_b32_e32 v0, v38268; GFX90A-NEXT:    s_setpc_b64 s[30:31]8269;8270; GFX908-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_pos__align4:8271; GFX908:       ; %bb.0:8272; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8273; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:20468274; GFX908-NEXT:    s_mov_b64 s[4:5], 08275; GFX908-NEXT:    s_mov_b32 s6, 0xffff00008276; GFX908-NEXT:  .LBB28_1: ; %atomicrmw.start8277; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=18278; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8279; GFX908-NEXT:    v_mov_b32_e32 v4, v38280; GFX908-NEXT:    v_sub_f16_e32 v3, v4, v28281; GFX908-NEXT:    v_and_or_b32 v3, v4, s6, v38282; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2046 glc8283; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8284; GFX908-NEXT:    buffer_wbinvl18285; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v48286; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8287; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]8288; GFX908-NEXT:    s_cbranch_execnz .LBB28_18289; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end8290; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]8291; GFX908-NEXT:    v_mov_b32_e32 v0, v38292; GFX908-NEXT:    s_setpc_b64 s[30:31]8293;8294; GFX8-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_pos__align4:8295; GFX8:       ; %bb.0:8296; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8297; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v08298; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc8299; GFX8-NEXT:    flat_load_dword v0, v[3:4]8300; GFX8-NEXT:    s_mov_b64 s[4:5], 08301; GFX8-NEXT:  .LBB28_1: ; %atomicrmw.start8302; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=18303; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8304; GFX8-NEXT:    v_mov_b32_e32 v1, v08305; GFX8-NEXT:    v_sub_f16_e32 v0, v1, v28306; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v18307; GFX8-NEXT:    v_or_b32_e32 v0, v5, v08308; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc8309; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8310; GFX8-NEXT:    buffer_wbinvl18311; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v18312; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8313; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]8314; GFX8-NEXT:    s_cbranch_execnz .LBB28_18315; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end8316; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]8317; GFX8-NEXT:    s_setpc_b64 s[30:31]8318;8319; GFX7-LABEL: flat_agent_atomic_fsub_ret_f16__offset12b_pos__align4:8320; GFX7:       ; %bb.0:8321; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8322; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fe, v08323; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc8324; GFX7-NEXT:    flat_load_dword v3, v[0:1]8325; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v28326; GFX7-NEXT:    s_mov_b64 s[4:5], 08327; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v28328; GFX7-NEXT:  .LBB28_1: ; %atomicrmw.start8329; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=18330; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8331; GFX7-NEXT:    v_mov_b32_e32 v4, v38332; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v48333; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v48334; GFX7-NEXT:    v_sub_f32_e32 v3, v3, v28335; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v38336; GFX7-NEXT:    v_or_b32_e32 v3, v5, v38337; GFX7-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc8338; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8339; GFX7-NEXT:    buffer_wbinvl18340; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v48341; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8342; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]8343; GFX7-NEXT:    s_cbranch_execnz .LBB28_18344; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end8345; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]8346; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v38347; GFX7-NEXT:    s_setpc_b64 s[30:31]8348  %gep = getelementptr inbounds half, ptr %ptr, i64 10238349  %result = atomicrmw fsub ptr %gep, half %val syncscope("agent") seq_cst, align 48350  ret half %result8351}8352 8353define void @flat_agent_atomic_fsub_noret_f16__offset12b__align4_pos(ptr %ptr, half %val) #0 {8354; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b__align4_pos:8355; GFX12-TRUE16:       ; %bb.0:8356; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08357; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x08358; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x08359; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x08360; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x08361; GFX12-TRUE16-NEXT:    flat_load_b32 v4, v[0:1] offset:20468362; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 08363; GFX12-TRUE16-NEXT:  .LBB29_1: ; %atomicrmw.start8364; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18365; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08366; GFX12-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v4.l, v2.l8367; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 08368; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8369; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v38370; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x08371; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV8372; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08373; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV8374; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48375; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v38376; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8377; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08378; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8379; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08380; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB29_18381; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8382; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08383; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08384; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]8385;8386; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b__align4_pos:8387; GFX12-FAKE16:       ; %bb.0:8388; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08389; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x08390; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x08391; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x08392; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x08393; GFX12-FAKE16-NEXT:    flat_load_b32 v4, v[0:1] offset:20468394; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 08395; GFX12-FAKE16-NEXT:  .LBB29_1: ; %atomicrmw.start8396; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18397; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08398; GFX12-FAKE16-NEXT:    v_sub_f16_e32 v3, v4, v28399; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8400; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v38401; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v38402; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x08403; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV8404; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08405; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV8406; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48407; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v38408; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8409; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08410; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8411; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08412; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB29_18413; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8414; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08415; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08416; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]8417;8418; GFX942-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b__align4_pos:8419; GFX942:       ; %bb.0:8420; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8421; GFX942-NEXT:    flat_load_dword v5, v[0:1] offset:20468422; GFX942-NEXT:    s_mov_b64 s[0:1], 08423; GFX942-NEXT:    s_mov_b32 s2, 0xffff00008424; GFX942-NEXT:  .LBB29_1: ; %atomicrmw.start8425; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=18426; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8427; GFX942-NEXT:    v_sub_f16_e32 v3, v5, v28428; GFX942-NEXT:    v_and_or_b32 v4, v5, s2, v38429; GFX942-NEXT:    buffer_wbl2 sc18430; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2046 sc08431; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8432; GFX942-NEXT:    buffer_inv sc18433; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v58434; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]8435; GFX942-NEXT:    v_mov_b32_e32 v5, v38436; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]8437; GFX942-NEXT:    s_cbranch_execnz .LBB29_18438; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end8439; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]8440; GFX942-NEXT:    s_setpc_b64 s[30:31]8441;8442; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b__align4_pos:8443; GFX11-TRUE16:       ; %bb.0:8444; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8445; GFX11-TRUE16-NEXT:    flat_load_b32 v4, v[0:1] offset:20468446; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 08447; GFX11-TRUE16-NEXT:  .LBB29_1: ; %atomicrmw.start8448; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18449; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8450; GFX11-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v4.l, v2.l8451; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 08452; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8453; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v38454; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x08455; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 glc8456; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8457; GFX11-TRUE16-NEXT:    buffer_gl1_inv8458; GFX11-TRUE16-NEXT:    buffer_gl0_inv8459; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48460; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v38461; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08462; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8463; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08464; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB29_18465; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8466; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08467; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]8468;8469; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b__align4_pos:8470; GFX11-FAKE16:       ; %bb.0:8471; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8472; GFX11-FAKE16-NEXT:    flat_load_b32 v4, v[0:1] offset:20468473; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 08474; GFX11-FAKE16-NEXT:  .LBB29_1: ; %atomicrmw.start8475; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18476; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8477; GFX11-FAKE16-NEXT:    v_sub_f16_e32 v3, v4, v28478; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8479; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v38480; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v38481; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x08482; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 glc8483; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8484; GFX11-FAKE16-NEXT:    buffer_gl1_inv8485; GFX11-FAKE16-NEXT:    buffer_gl0_inv8486; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48487; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v38488; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08489; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8490; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08491; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB29_18492; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8493; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08494; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]8495;8496; GFX10-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b__align4_pos:8497; GFX10:       ; %bb.0:8498; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8499; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fe, v08500; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo8501; GFX10-NEXT:    s_mov_b32 s4, 08502; GFX10-NEXT:    flat_load_dword v4, v[0:1]8503; GFX10-NEXT:  .LBB29_1: ; %atomicrmw.start8504; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=18505; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8506; GFX10-NEXT:    v_sub_f16_e32 v3, v4, v28507; GFX10-NEXT:    v_and_b32_e32 v3, 0xffff, v38508; GFX10-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v38509; GFX10-NEXT:    s_waitcnt_vscnt null, 0x08510; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc8511; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8512; GFX10-NEXT:    buffer_gl1_inv8513; GFX10-NEXT:    buffer_gl0_inv8514; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48515; GFX10-NEXT:    v_mov_b32_e32 v4, v38516; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s48517; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s48518; GFX10-NEXT:    s_cbranch_execnz .LBB29_18519; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end8520; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s48521; GFX10-NEXT:    s_setpc_b64 s[30:31]8522;8523; GFX90A-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b__align4_pos:8524; GFX90A:       ; %bb.0:8525; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8526; GFX90A-NEXT:    flat_load_dword v5, v[0:1] offset:20468527; GFX90A-NEXT:    s_mov_b64 s[4:5], 08528; GFX90A-NEXT:    s_mov_b32 s6, 0xffff00008529; GFX90A-NEXT:  .LBB29_1: ; %atomicrmw.start8530; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=18531; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8532; GFX90A-NEXT:    v_sub_f16_e32 v3, v5, v28533; GFX90A-NEXT:    v_and_or_b32 v4, v5, s6, v38534; GFX90A-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2046 glc8535; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8536; GFX90A-NEXT:    buffer_wbinvl18537; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v58538; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8539; GFX90A-NEXT:    v_mov_b32_e32 v5, v38540; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]8541; GFX90A-NEXT:    s_cbranch_execnz .LBB29_18542; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end8543; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]8544; GFX90A-NEXT:    s_setpc_b64 s[30:31]8545;8546; GFX908-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b__align4_pos:8547; GFX908:       ; %bb.0:8548; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8549; GFX908-NEXT:    flat_load_dword v4, v[0:1] offset:20468550; GFX908-NEXT:    s_mov_b64 s[4:5], 08551; GFX908-NEXT:    s_mov_b32 s6, 0xffff00008552; GFX908-NEXT:  .LBB29_1: ; %atomicrmw.start8553; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=18554; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8555; GFX908-NEXT:    v_sub_f16_e32 v3, v4, v28556; GFX908-NEXT:    v_and_or_b32 v3, v4, s6, v38557; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2046 glc8558; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8559; GFX908-NEXT:    buffer_wbinvl18560; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v48561; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8562; GFX908-NEXT:    v_mov_b32_e32 v4, v38563; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]8564; GFX908-NEXT:    s_cbranch_execnz .LBB29_18565; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end8566; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]8567; GFX908-NEXT:    s_setpc_b64 s[30:31]8568;8569; GFX8-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b__align4_pos:8570; GFX8:       ; %bb.0:8571; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8572; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fe, v08573; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc8574; GFX8-NEXT:    flat_load_dword v4, v[0:1]8575; GFX8-NEXT:    s_mov_b64 s[4:5], 08576; GFX8-NEXT:  .LBB29_1: ; %atomicrmw.start8577; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=18578; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8579; GFX8-NEXT:    v_sub_f16_e32 v3, v4, v28580; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v48581; GFX8-NEXT:    v_or_b32_e32 v3, v5, v38582; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc8583; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8584; GFX8-NEXT:    buffer_wbinvl18585; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v48586; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8587; GFX8-NEXT:    v_mov_b32_e32 v4, v38588; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]8589; GFX8-NEXT:    s_cbranch_execnz .LBB29_18590; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end8591; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]8592; GFX8-NEXT:    s_setpc_b64 s[30:31]8593;8594; GFX7-LABEL: flat_agent_atomic_fsub_noret_f16__offset12b__align4_pos:8595; GFX7:       ; %bb.0:8596; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8597; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fe, v08598; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc8599; GFX7-NEXT:    flat_load_dword v3, v[0:1]8600; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v28601; GFX7-NEXT:    s_mov_b64 s[4:5], 08602; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v28603; GFX7-NEXT:  .LBB29_1: ; %atomicrmw.start8604; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=18605; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8606; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v38607; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38608; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v48609; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v28610; GFX7-NEXT:    v_or_b32_e32 v2, v5, v28611; GFX7-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc8612; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8613; GFX7-NEXT:    buffer_wbinvl18614; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v38615; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8616; GFX7-NEXT:    v_mov_b32_e32 v3, v28617; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]8618; GFX7-NEXT:    s_cbranch_execnz .LBB29_18619; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end8620; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]8621; GFX7-NEXT:    s_setpc_b64 s[30:31]8622  %gep = getelementptr inbounds half, ptr %ptr, i64 10238623  %unused = atomicrmw fsub ptr %gep, half %val syncscope("agent") seq_cst, align 48624  ret void8625}8626 8627define half @flat_system_atomic_fsub_ret_f16__offset12b_pos(ptr %ptr, half %val) #0 {8628; GFX12-TRUE16-LABEL: flat_system_atomic_fsub_ret_f16__offset12b_pos:8629; GFX12-TRUE16:       ; %bb.0:8630; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08631; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x08632; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x08633; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x08634; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x08635; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v08636; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)8637; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo8638; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 08639; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v38640; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v38641; GFX12-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]8642; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v38643; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8644; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff8645; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v48646; GFX12-TRUE16-NEXT:  .LBB30_1: ; %atomicrmw.start8647; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18648; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08649; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v58650; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)8651; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v68652; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 08653; GFX12-TRUE16-NEXT:    v_sub_f16_e32 v5.l, v5.l, v2.l8654; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8655; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v58656; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v58657; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS8658; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x08659; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_SYS8660; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08661; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS8662; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v68663; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8664; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08665; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8666; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08667; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB30_18668; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8669; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08670; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v58671; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08672; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]8673;8674; GFX12-FAKE16-LABEL: flat_system_atomic_fsub_ret_f16__offset12b_pos:8675; GFX12-FAKE16:       ; %bb.0:8676; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08677; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x08678; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x08679; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x08680; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x08681; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v08682; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)8683; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo8684; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 08685; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v38686; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v38687; GFX12-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]8688; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v38689; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8690; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff8691; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v48692; GFX12-FAKE16-NEXT:  .LBB30_1: ; %atomicrmw.start8693; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18694; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08695; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v58696; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8697; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v68698; GFX12-FAKE16-NEXT:    v_sub_f16_e32 v5, v5, v28699; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8700; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v58701; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v58702; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8703; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v58704; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS8705; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x08706; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_SYS8707; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08708; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS8709; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v68710; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8711; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08712; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8713; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08714; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB30_18715; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8716; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08717; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v58718; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08719; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]8720;8721; GFX942-LABEL: flat_system_atomic_fsub_ret_f16__offset12b_pos:8722; GFX942:       ; %bb.0:8723; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8724; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe8725; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]8726; GFX942-NEXT:    v_and_b32_e32 v0, -4, v48727; GFX942-NEXT:    v_mov_b32_e32 v1, v58728; GFX942-NEXT:    flat_load_dword v5, v[0:1]8729; GFX942-NEXT:    v_and_b32_e32 v3, 3, v48730; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v38731; GFX942-NEXT:    s_mov_b32 s0, 0xffff8732; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s08733; GFX942-NEXT:    v_not_b32_e32 v6, v48734; GFX942-NEXT:    s_mov_b64 s[0:1], 08735; GFX942-NEXT:  .LBB30_1: ; %atomicrmw.start8736; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=18737; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8738; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v3, v58739; GFX942-NEXT:    v_sub_f16_e32 v4, v4, v28740; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v3, v48741; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v48742; GFX942-NEXT:    buffer_wbl2 sc0 sc18743; GFX942-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] sc0 sc18744; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8745; GFX942-NEXT:    buffer_inv sc0 sc18746; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v58747; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]8748; GFX942-NEXT:    v_mov_b32_e32 v5, v48749; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]8750; GFX942-NEXT:    s_cbranch_execnz .LBB30_18751; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end8752; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]8753; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v3, v48754; GFX942-NEXT:    s_setpc_b64 s[30:31]8755;8756; GFX11-TRUE16-LABEL: flat_system_atomic_fsub_ret_f16__offset12b_pos:8757; GFX11-TRUE16:       ; %bb.0:8758; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8759; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v08760; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8761; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo8762; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 08763; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v38764; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v38765; GFX11-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]8766; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v38767; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8768; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff8769; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v48770; GFX11-TRUE16-NEXT:  .LBB30_1: ; %atomicrmw.start8771; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18772; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8773; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v58774; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)8775; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v68776; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 08777; GFX11-TRUE16-NEXT:    v_sub_f16_e32 v5.l, v5.l, v2.l8778; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8779; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v58780; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v58781; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x08782; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc8783; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8784; GFX11-TRUE16-NEXT:    buffer_gl1_inv8785; GFX11-TRUE16-NEXT:    buffer_gl0_inv8786; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v68787; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08788; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8789; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08790; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB30_18791; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8792; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08793; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v58794; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]8795;8796; GFX11-FAKE16-LABEL: flat_system_atomic_fsub_ret_f16__offset12b_pos:8797; GFX11-FAKE16:       ; %bb.0:8798; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8799; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v08800; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8801; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo8802; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 08803; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v38804; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v38805; GFX11-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]8806; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v38807; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8808; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff8809; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v48810; GFX11-FAKE16-NEXT:  .LBB30_1: ; %atomicrmw.start8811; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18812; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8813; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v58814; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8815; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v68816; GFX11-FAKE16-NEXT:    v_sub_f16_e32 v5, v5, v28817; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8818; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v58819; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v58820; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8821; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v58822; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x08823; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc8824; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8825; GFX11-FAKE16-NEXT:    buffer_gl1_inv8826; GFX11-FAKE16-NEXT:    buffer_gl0_inv8827; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v68828; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08829; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8830; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08831; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB30_18832; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8833; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08834; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v58835; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]8836;8837; GFX10-LABEL: flat_system_atomic_fsub_ret_f16__offset12b_pos:8838; GFX10:       ; %bb.0:8839; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8840; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v08841; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo8842; GFX10-NEXT:    s_mov_b32 s4, 08843; GFX10-NEXT:    v_and_b32_e32 v0, -4, v38844; GFX10-NEXT:    v_and_b32_e32 v3, 3, v38845; GFX10-NEXT:    flat_load_dword v5, v[0:1]8846; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v38847; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff8848; GFX10-NEXT:    v_not_b32_e32 v4, v48849; GFX10-NEXT:  .LBB30_1: ; %atomicrmw.start8850; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=18851; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8852; GFX10-NEXT:    v_mov_b32_e32 v6, v58853; GFX10-NEXT:    v_lshrrev_b32_e32 v5, v3, v68854; GFX10-NEXT:    v_sub_f16_e32 v5, v5, v28855; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_08856; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v58857; GFX10-NEXT:    s_waitcnt_vscnt null, 0x08858; GFX10-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc8859; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8860; GFX10-NEXT:    buffer_gl1_inv8861; GFX10-NEXT:    buffer_gl0_inv8862; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v68863; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s48864; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s48865; GFX10-NEXT:    s_cbranch_execnz .LBB30_18866; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end8867; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s48868; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v58869; GFX10-NEXT:    s_setpc_b64 s[30:31]8870;8871; GFX90A-LABEL: flat_system_atomic_fsub_ret_f16__offset12b_pos:8872; GFX90A:       ; %bb.0:8873; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8874; GFX90A-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v08875; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc8876; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v38877; GFX90A-NEXT:    flat_load_dword v5, v[0:1]8878; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v38879; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v38880; GFX90A-NEXT:    s_mov_b32 s4, 0xffff8881; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s48882; GFX90A-NEXT:    v_not_b32_e32 v6, v48883; GFX90A-NEXT:    s_mov_b64 s[4:5], 08884; GFX90A-NEXT:  .LBB30_1: ; %atomicrmw.start8885; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=18886; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8887; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v3, v58888; GFX90A-NEXT:    v_sub_f16_e32 v4, v4, v28889; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v3, v48890; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v48891; GFX90A-NEXT:    buffer_wbl28892; GFX90A-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] glc8893; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8894; GFX90A-NEXT:    buffer_invl28895; GFX90A-NEXT:    buffer_wbinvl18896; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v58897; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8898; GFX90A-NEXT:    v_mov_b32_e32 v5, v48899; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]8900; GFX90A-NEXT:    s_cbranch_execnz .LBB30_18901; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end8902; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]8903; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v3, v48904; GFX90A-NEXT:    s_setpc_b64 s[30:31]8905;8906; GFX908-LABEL: flat_system_atomic_fsub_ret_f16__offset12b_pos:8907; GFX908:       ; %bb.0:8908; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8909; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v08910; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc8911; GFX908-NEXT:    v_and_b32_e32 v0, -4, v38912; GFX908-NEXT:    flat_load_dword v4, v[0:1]8913; GFX908-NEXT:    v_and_b32_e32 v3, 3, v38914; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v38915; GFX908-NEXT:    s_mov_b32 s4, 0xffff8916; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v3, s48917; GFX908-NEXT:    v_not_b32_e32 v5, v58918; GFX908-NEXT:    s_mov_b64 s[4:5], 08919; GFX908-NEXT:  .LBB30_1: ; %atomicrmw.start8920; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=18921; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8922; GFX908-NEXT:    v_mov_b32_e32 v7, v48923; GFX908-NEXT:    v_lshrrev_b32_e32 v4, v3, v78924; GFX908-NEXT:    v_sub_f16_e32 v4, v4, v28925; GFX908-NEXT:    v_lshlrev_b32_e32 v4, v3, v48926; GFX908-NEXT:    v_and_or_b32 v6, v7, v5, v48927; GFX908-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[6:7] glc8928; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8929; GFX908-NEXT:    buffer_wbinvl18930; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v78931; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8932; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]8933; GFX908-NEXT:    s_cbranch_execnz .LBB30_18934; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end8935; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]8936; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v48937; GFX908-NEXT:    s_setpc_b64 s[30:31]8938;8939; GFX8-LABEL: flat_system_atomic_fsub_ret_f16__offset12b_pos:8940; GFX8:       ; %bb.0:8941; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8942; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v08943; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc8944; GFX8-NEXT:    v_and_b32_e32 v0, -4, v38945; GFX8-NEXT:    flat_load_dword v5, v[0:1]8946; GFX8-NEXT:    v_and_b32_e32 v3, 3, v38947; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v38948; GFX8-NEXT:    s_mov_b32 s4, 0xffff8949; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s48950; GFX8-NEXT:    v_not_b32_e32 v4, v48951; GFX8-NEXT:    s_mov_b64 s[4:5], 08952; GFX8-NEXT:  .LBB30_1: ; %atomicrmw.start8953; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=18954; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8955; GFX8-NEXT:    v_mov_b32_e32 v6, v58956; GFX8-NEXT:    v_lshrrev_b32_e32 v5, v3, v68957; GFX8-NEXT:    v_sub_f16_e32 v5, v5, v28958; GFX8-NEXT:    v_and_b32_e32 v7, v6, v48959; GFX8-NEXT:    v_lshlrev_b32_e32 v5, v3, v58960; GFX8-NEXT:    v_or_b32_e32 v5, v7, v58961; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc8962; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8963; GFX8-NEXT:    buffer_wbinvl18964; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v68965; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8966; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]8967; GFX8-NEXT:    s_cbranch_execnz .LBB30_18968; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end8969; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]8970; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v58971; GFX8-NEXT:    s_setpc_b64 s[30:31]8972;8973; GFX7-LABEL: flat_system_atomic_fsub_ret_f16__offset12b_pos:8974; GFX7:       ; %bb.0:8975; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8976; GFX7-NEXT:    v_add_i32_e32 v3, vcc, 0x7fe, v08977; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc8978; GFX7-NEXT:    v_and_b32_e32 v0, -4, v38979; GFX7-NEXT:    flat_load_dword v5, v[0:1]8980; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v28981; GFX7-NEXT:    v_and_b32_e32 v2, 3, v38982; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 3, v28983; GFX7-NEXT:    s_mov_b64 s[4:5], 08984; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v48985; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v28986; GFX7-NEXT:    v_not_b32_e32 v4, v48987; GFX7-NEXT:  .LBB30_1: ; %atomicrmw.start8988; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=18989; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8990; GFX7-NEXT:    v_mov_b32_e32 v6, v58991; GFX7-NEXT:    v_lshrrev_b32_e32 v5, v2, v68992; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v58993; GFX7-NEXT:    v_and_b32_e32 v7, v6, v48994; GFX7-NEXT:    v_sub_f32_e32 v5, v5, v38995; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v58996; GFX7-NEXT:    v_lshlrev_b32_e32 v5, v2, v58997; GFX7-NEXT:    v_or_b32_e32 v5, v7, v58998; GFX7-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc8999; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9000; GFX7-NEXT:    buffer_wbinvl19001; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v69002; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9003; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]9004; GFX7-NEXT:    s_cbranch_execnz .LBB30_19005; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end9006; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]9007; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v2, v59008; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v09009; GFX7-NEXT:    s_setpc_b64 s[30:31]9010  %gep = getelementptr inbounds half, ptr %ptr, i64 10239011  %result = atomicrmw fsub ptr %gep, half %val seq_cst9012  ret half %result9013}9014 9015define void @flat_system_atomic_fsub_noret_f16__offset12b_pos(ptr %ptr, half %val) #0 {9016; GFX12-TRUE16-LABEL: flat_system_atomic_fsub_noret_f16__offset12b_pos:9017; GFX12-TRUE16:       ; %bb.0:9018; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09019; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x09020; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x09021; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x09022; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x09023; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v09024; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)9025; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo9026; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 09027; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v39028; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v39029; GFX12-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]9030; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v39031; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9032; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff9033; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v39034; GFX12-TRUE16-NEXT:  .LBB31_1: ; %atomicrmw.start9035; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19036; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09037; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v49038; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 09039; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9040; GFX12-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v3.l, v2.l9041; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v39042; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9043; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v39044; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS9045; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x09046; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_SYS9047; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09048; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS9049; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v49050; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v39051; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9052; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s09053; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9054; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09055; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB31_19056; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end9057; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09058; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x09059; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]9060;9061; GFX12-FAKE16-LABEL: flat_system_atomic_fsub_noret_f16__offset12b_pos:9062; GFX12-FAKE16:       ; %bb.0:9063; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09064; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x09065; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x09066; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x09067; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x09068; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v09069; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)9070; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo9071; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 09072; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v39073; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v39074; GFX12-FAKE16-NEXT:    flat_load_b32 v4, v[0:1]9075; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v39076; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9077; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff9078; GFX12-FAKE16-NEXT:    v_not_b32_e32 v6, v39079; GFX12-FAKE16-NEXT:  .LBB31_1: ; %atomicrmw.start9080; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19081; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09082; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v49083; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9084; GFX12-FAKE16-NEXT:    v_sub_f16_e32 v3, v3, v29085; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v39086; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9087; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v39088; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v39089; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS9090; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x09091; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_SYS9092; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09093; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS9094; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v49095; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v39096; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9097; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s09098; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9099; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09100; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB31_19101; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end9102; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09103; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x09104; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]9105;9106; GFX942-LABEL: flat_system_atomic_fsub_noret_f16__offset12b_pos:9107; GFX942:       ; %bb.0:9108; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9109; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe9110; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]9111; GFX942-NEXT:    v_and_b32_e32 v0, -4, v49112; GFX942-NEXT:    v_mov_b32_e32 v1, v59113; GFX942-NEXT:    flat_load_dword v5, v[0:1]9114; GFX942-NEXT:    v_and_b32_e32 v3, 3, v49115; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v39116; GFX942-NEXT:    s_mov_b32 s0, 0xffff9117; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s09118; GFX942-NEXT:    v_not_b32_e32 v6, v49119; GFX942-NEXT:    s_mov_b64 s[0:1], 09120; GFX942-NEXT:  .LBB31_1: ; %atomicrmw.start9121; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=19122; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9123; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v3, v59124; GFX942-NEXT:    v_sub_f16_e32 v4, v4, v29125; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v3, v49126; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v49127; GFX942-NEXT:    buffer_wbl2 sc0 sc19128; GFX942-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] sc0 sc19129; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9130; GFX942-NEXT:    buffer_inv sc0 sc19131; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v59132; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]9133; GFX942-NEXT:    v_mov_b32_e32 v5, v49134; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]9135; GFX942-NEXT:    s_cbranch_execnz .LBB31_19136; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end9137; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]9138; GFX942-NEXT:    s_setpc_b64 s[30:31]9139;9140; GFX11-TRUE16-LABEL: flat_system_atomic_fsub_noret_f16__offset12b_pos:9141; GFX11-TRUE16:       ; %bb.0:9142; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9143; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v09144; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9145; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo9146; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 09147; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v39148; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v39149; GFX11-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]9150; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v39151; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9152; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff9153; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v39154; GFX11-TRUE16-NEXT:  .LBB31_1: ; %atomicrmw.start9155; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19156; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9157; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v49158; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 09159; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9160; GFX11-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v3.l, v2.l9161; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v39162; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9163; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v39164; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x09165; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc9166; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9167; GFX11-TRUE16-NEXT:    buffer_gl1_inv9168; GFX11-TRUE16-NEXT:    buffer_gl0_inv9169; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v49170; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v39171; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s09172; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9173; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09174; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB31_19175; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end9176; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09177; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]9178;9179; GFX11-FAKE16-LABEL: flat_system_atomic_fsub_noret_f16__offset12b_pos:9180; GFX11-FAKE16:       ; %bb.0:9181; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9182; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v09183; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9184; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo9185; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 09186; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v39187; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v39188; GFX11-FAKE16-NEXT:    flat_load_b32 v4, v[0:1]9189; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v39190; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9191; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff9192; GFX11-FAKE16-NEXT:    v_not_b32_e32 v6, v39193; GFX11-FAKE16-NEXT:  .LBB31_1: ; %atomicrmw.start9194; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19195; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9196; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v49197; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9198; GFX11-FAKE16-NEXT:    v_sub_f16_e32 v3, v3, v29199; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v39200; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9201; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v39202; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v39203; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x09204; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc9205; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9206; GFX11-FAKE16-NEXT:    buffer_gl1_inv9207; GFX11-FAKE16-NEXT:    buffer_gl0_inv9208; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v49209; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v39210; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s09211; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9212; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09213; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB31_19214; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end9215; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09216; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]9217;9218; GFX10-LABEL: flat_system_atomic_fsub_noret_f16__offset12b_pos:9219; GFX10:       ; %bb.0:9220; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9221; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v09222; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo9223; GFX10-NEXT:    s_mov_b32 s4, 09224; GFX10-NEXT:    v_and_b32_e32 v0, -4, v39225; GFX10-NEXT:    v_and_b32_e32 v3, 3, v39226; GFX10-NEXT:    flat_load_dword v4, v[0:1]9227; GFX10-NEXT:    v_lshlrev_b32_e32 v5, 3, v39228; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff9229; GFX10-NEXT:    v_not_b32_e32 v6, v39230; GFX10-NEXT:  .LBB31_1: ; %atomicrmw.start9231; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=19232; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9233; GFX10-NEXT:    v_lshrrev_b32_e32 v3, v5, v49234; GFX10-NEXT:    v_sub_f16_e32 v3, v3, v29235; GFX10-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_09236; GFX10-NEXT:    v_and_or_b32 v3, v4, v6, v39237; GFX10-NEXT:    s_waitcnt_vscnt null, 0x09238; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc9239; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9240; GFX10-NEXT:    buffer_gl1_inv9241; GFX10-NEXT:    buffer_gl0_inv9242; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v49243; GFX10-NEXT:    v_mov_b32_e32 v4, v39244; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s49245; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s49246; GFX10-NEXT:    s_cbranch_execnz .LBB31_19247; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end9248; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s49249; GFX10-NEXT:    s_setpc_b64 s[30:31]9250;9251; GFX90A-LABEL: flat_system_atomic_fsub_noret_f16__offset12b_pos:9252; GFX90A:       ; %bb.0:9253; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9254; GFX90A-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v09255; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc9256; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v39257; GFX90A-NEXT:    flat_load_dword v5, v[0:1]9258; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v39259; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v39260; GFX90A-NEXT:    s_mov_b32 s4, 0xffff9261; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s49262; GFX90A-NEXT:    v_not_b32_e32 v6, v49263; GFX90A-NEXT:    s_mov_b64 s[4:5], 09264; GFX90A-NEXT:  .LBB31_1: ; %atomicrmw.start9265; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=19266; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9267; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v3, v59268; GFX90A-NEXT:    v_sub_f16_e32 v4, v4, v29269; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v3, v49270; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v49271; GFX90A-NEXT:    buffer_wbl29272; GFX90A-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] glc9273; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9274; GFX90A-NEXT:    buffer_invl29275; GFX90A-NEXT:    buffer_wbinvl19276; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v59277; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9278; GFX90A-NEXT:    v_mov_b32_e32 v5, v49279; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]9280; GFX90A-NEXT:    s_cbranch_execnz .LBB31_19281; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end9282; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]9283; GFX90A-NEXT:    s_setpc_b64 s[30:31]9284;9285; GFX908-LABEL: flat_system_atomic_fsub_noret_f16__offset12b_pos:9286; GFX908:       ; %bb.0:9287; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9288; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v09289; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc9290; GFX908-NEXT:    v_and_b32_e32 v0, -4, v39291; GFX908-NEXT:    flat_load_dword v4, v[0:1]9292; GFX908-NEXT:    v_and_b32_e32 v3, 3, v39293; GFX908-NEXT:    v_lshlrev_b32_e32 v5, 3, v39294; GFX908-NEXT:    s_mov_b32 s4, 0xffff9295; GFX908-NEXT:    v_lshlrev_b32_e64 v3, v5, s49296; GFX908-NEXT:    v_not_b32_e32 v6, v39297; GFX908-NEXT:    s_mov_b64 s[4:5], 09298; GFX908-NEXT:  .LBB31_1: ; %atomicrmw.start9299; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=19300; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9301; GFX908-NEXT:    v_lshrrev_b32_e32 v3, v5, v49302; GFX908-NEXT:    v_sub_f16_e32 v3, v3, v29303; GFX908-NEXT:    v_lshlrev_b32_e32 v3, v5, v39304; GFX908-NEXT:    v_and_or_b32 v3, v4, v6, v39305; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc9306; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9307; GFX908-NEXT:    buffer_wbinvl19308; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v49309; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9310; GFX908-NEXT:    v_mov_b32_e32 v4, v39311; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]9312; GFX908-NEXT:    s_cbranch_execnz .LBB31_19313; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end9314; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]9315; GFX908-NEXT:    s_setpc_b64 s[30:31]9316;9317; GFX8-LABEL: flat_system_atomic_fsub_noret_f16__offset12b_pos:9318; GFX8:       ; %bb.0:9319; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9320; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v09321; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc9322; GFX8-NEXT:    v_and_b32_e32 v0, -4, v39323; GFX8-NEXT:    flat_load_dword v4, v[0:1]9324; GFX8-NEXT:    v_and_b32_e32 v3, 3, v39325; GFX8-NEXT:    v_lshlrev_b32_e32 v5, 3, v39326; GFX8-NEXT:    s_mov_b32 s4, 0xffff9327; GFX8-NEXT:    v_lshlrev_b32_e64 v3, v5, s49328; GFX8-NEXT:    v_not_b32_e32 v6, v39329; GFX8-NEXT:    s_mov_b64 s[4:5], 09330; GFX8-NEXT:  .LBB31_1: ; %atomicrmw.start9331; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=19332; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9333; GFX8-NEXT:    v_lshrrev_b32_e32 v3, v5, v49334; GFX8-NEXT:    v_sub_f16_e32 v3, v3, v29335; GFX8-NEXT:    v_and_b32_e32 v7, v4, v69336; GFX8-NEXT:    v_lshlrev_b32_e32 v3, v5, v39337; GFX8-NEXT:    v_or_b32_e32 v3, v7, v39338; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc9339; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9340; GFX8-NEXT:    buffer_wbinvl19341; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v49342; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9343; GFX8-NEXT:    v_mov_b32_e32 v4, v39344; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]9345; GFX8-NEXT:    s_cbranch_execnz .LBB31_19346; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end9347; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]9348; GFX8-NEXT:    s_setpc_b64 s[30:31]9349;9350; GFX7-LABEL: flat_system_atomic_fsub_noret_f16__offset12b_pos:9351; GFX7:       ; %bb.0:9352; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9353; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v09354; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc9355; GFX7-NEXT:    v_and_b32_e32 v0, -4, v49356; GFX7-NEXT:    flat_load_dword v3, v[0:1]9357; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v29358; GFX7-NEXT:    v_and_b32_e32 v4, 3, v49359; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v49360; GFX7-NEXT:    s_mov_b64 s[4:5], 09361; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v29362; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v49363; GFX7-NEXT:    v_not_b32_e32 v6, v29364; GFX7-NEXT:  .LBB31_1: ; %atomicrmw.start9365; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=19366; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9367; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v39368; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v29369; GFX7-NEXT:    v_and_b32_e32 v7, v3, v69370; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v59371; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v29372; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v29373; GFX7-NEXT:    v_or_b32_e32 v2, v7, v29374; GFX7-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc9375; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9376; GFX7-NEXT:    buffer_wbinvl19377; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v39378; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9379; GFX7-NEXT:    v_mov_b32_e32 v3, v29380; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]9381; GFX7-NEXT:    s_cbranch_execnz .LBB31_19382; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end9383; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]9384; GFX7-NEXT:    s_setpc_b64 s[30:31]9385  %gep = getelementptr inbounds half, ptr %ptr, i64 10239386  %unused = atomicrmw fsub ptr %gep, half %val seq_cst9387  ret void9388}9389 9390; --------------------------------------------------------------------9391; bfloat9392; --------------------------------------------------------------------9393 9394define bfloat @flat_agent_atomic_fsub_ret_bf16(ptr %ptr, bfloat %val) #0 {9395; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_ret_bf16:9396; GFX12-TRUE16:       ; %bb.0:9397; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09398; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x09399; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x09400; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x09401; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x09402; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v09403; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 09404; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)9405; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v39406; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v39407; GFX12-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]9408; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39409; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9410; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9411; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v49412; GFX12-TRUE16-NEXT:  .LBB32_1: ; %atomicrmw.start9413; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19414; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09415; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v59416; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 09417; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l9418; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9419; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69420; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59421; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)9422; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v79423; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l9424; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 19425; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v59426; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59427; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)9428; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff9429; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)9430; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo9431; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9432; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h9433; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v79434; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9435; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v59436; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x09437; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV9438; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09439; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV9440; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69441; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9442; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s09443; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9444; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09445; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB32_19446; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end9447; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09448; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59449; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x09450; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]9451;9452; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_ret_bf16:9453; GFX12-FAKE16:       ; %bb.0:9454; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09455; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x09456; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x09457; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x09458; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x09459; GFX12-FAKE16-NEXT:    v_dual_mov_b32 v3, v0 :: v_dual_lshlrev_b32 v2, 16, v29460; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 09461; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)9462; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v39463; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v39464; GFX12-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]9465; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39466; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9467; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9468; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v49469; GFX12-FAKE16-NEXT:  .LBB32_1: ; %atomicrmw.start9470; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19471; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09472; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v59473; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9474; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69475; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59476; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9477; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v29478; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 19479; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v59480; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59481; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)9482; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff9483; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)9484; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo9485; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9486; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v59487; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v59488; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9489; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v59490; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x09491; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV9492; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09493; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV9494; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69495; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9496; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s09497; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9498; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09499; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB32_19500; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end9501; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09502; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59503; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x09504; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]9505;9506; GFX942-LABEL: flat_agent_atomic_fsub_ret_bf16:9507; GFX942:       ; %bb.0:9508; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9509; GFX942-NEXT:    v_mov_b32_e32 v3, v09510; GFX942-NEXT:    v_and_b32_e32 v0, -4, v39511; GFX942-NEXT:    flat_load_dword v5, v[0:1]9512; GFX942-NEXT:    v_and_b32_e32 v3, 3, v39513; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v39514; GFX942-NEXT:    s_mov_b32 s0, 0xffff9515; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s09516; GFX942-NEXT:    v_not_b32_e32 v6, v49517; GFX942-NEXT:    s_mov_b64 s[0:1], 09518; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v29519; GFX942-NEXT:    s_movk_i32 s2, 0x7fff9520; GFX942-NEXT:  .LBB32_1: ; %atomicrmw.start9521; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=19522; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9523; GFX942-NEXT:    v_lshrrev_b32_sdwa v4, v3, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9524; GFX942-NEXT:    s_nop 09525; GFX942-NEXT:    v_sub_f32_e32 v4, v4, v29526; GFX942-NEXT:    v_bfe_u32 v7, v4, 16, 19527; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v49528; GFX942-NEXT:    v_add3_u32 v7, v7, v4, s29529; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v4, v49530; GFX942-NEXT:    s_nop 19531; GFX942-NEXT:    v_cndmask_b32_e32 v4, v7, v8, vcc9532; GFX942-NEXT:    v_lshlrev_b32_sdwa v4, v3, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19533; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v49534; GFX942-NEXT:    buffer_wbl2 sc19535; GFX942-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] sc09536; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9537; GFX942-NEXT:    buffer_inv sc19538; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v59539; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]9540; GFX942-NEXT:    v_mov_b32_e32 v5, v49541; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]9542; GFX942-NEXT:    s_cbranch_execnz .LBB32_19543; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end9544; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]9545; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v3, v49546; GFX942-NEXT:    s_setpc_b64 s[30:31]9547;9548; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_ret_bf16:9549; GFX11-TRUE16:       ; %bb.0:9550; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9551; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v09552; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 09553; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)9554; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v39555; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v39556; GFX11-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]9557; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39558; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9559; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9560; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v49561; GFX11-TRUE16-NEXT:    .p2align 69562; GFX11-TRUE16-NEXT:  .LBB32_1: ; %atomicrmw.start9563; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19564; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9565; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v59566; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 09567; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l9568; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9569; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69570; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59571; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)9572; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v79573; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l9574; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 19575; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v59576; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59577; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9578; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff9579; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo9580; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9581; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h9582; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v79583; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9584; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v59585; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x09586; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc9587; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9588; GFX11-TRUE16-NEXT:    buffer_gl1_inv9589; GFX11-TRUE16-NEXT:    buffer_gl0_inv9590; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69591; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s09592; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9593; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09594; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB32_19595; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end9596; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09597; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59598; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]9599;9600; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_ret_bf16:9601; GFX11-FAKE16:       ; %bb.0:9602; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9603; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v3, v0 :: v_dual_lshlrev_b32 v2, 16, v29604; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 09605; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)9606; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v39607; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v39608; GFX11-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]9609; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39610; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9611; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9612; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v49613; GFX11-FAKE16-NEXT:    .p2align 69614; GFX11-FAKE16-NEXT:  .LBB32_1: ; %atomicrmw.start9615; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19616; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9617; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v59618; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9619; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69620; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59621; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9622; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v29623; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 19624; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v59625; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59626; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9627; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff9628; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo9629; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9630; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v59631; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v59632; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9633; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v59634; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x09635; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc9636; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9637; GFX11-FAKE16-NEXT:    buffer_gl1_inv9638; GFX11-FAKE16-NEXT:    buffer_gl0_inv9639; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69640; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s09641; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9642; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09643; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB32_19644; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end9645; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09646; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59647; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]9648;9649; GFX10-LABEL: flat_agent_atomic_fsub_ret_bf16:9650; GFX10:       ; %bb.0:9651; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9652; GFX10-NEXT:    v_mov_b32_e32 v3, v09653; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v29654; GFX10-NEXT:    s_mov_b32 s4, 09655; GFX10-NEXT:    v_and_b32_e32 v0, -4, v39656; GFX10-NEXT:    v_and_b32_e32 v3, 3, v39657; GFX10-NEXT:    flat_load_dword v5, v[0:1]9658; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v39659; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9660; GFX10-NEXT:    v_not_b32_e32 v4, v49661; GFX10-NEXT:  .LBB32_1: ; %atomicrmw.start9662; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=19663; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9664; GFX10-NEXT:    v_mov_b32_e32 v6, v59665; GFX10-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9666; GFX10-NEXT:    v_sub_f32_e32 v5, v5, v29667; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 19668; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v59669; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59670; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff9671; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo9672; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19673; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v59674; GFX10-NEXT:    s_waitcnt_vscnt null, 0x09675; GFX10-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc9676; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9677; GFX10-NEXT:    buffer_gl1_inv9678; GFX10-NEXT:    buffer_gl0_inv9679; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69680; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s49681; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s49682; GFX10-NEXT:    s_cbranch_execnz .LBB32_19683; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end9684; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s49685; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v59686; GFX10-NEXT:    s_setpc_b64 s[30:31]9687;9688; GFX90A-LABEL: flat_agent_atomic_fsub_ret_bf16:9689; GFX90A:       ; %bb.0:9690; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9691; GFX90A-NEXT:    v_mov_b32_e32 v3, v09692; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v39693; GFX90A-NEXT:    flat_load_dword v5, v[0:1]9694; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v39695; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v39696; GFX90A-NEXT:    s_mov_b32 s4, 0xffff9697; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s49698; GFX90A-NEXT:    v_not_b32_e32 v6, v49699; GFX90A-NEXT:    s_mov_b64 s[4:5], 09700; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v29701; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff9702; GFX90A-NEXT:  .LBB32_1: ; %atomicrmw.start9703; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=19704; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9705; GFX90A-NEXT:    v_lshrrev_b32_sdwa v4, v3, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9706; GFX90A-NEXT:    v_sub_f32_e32 v4, v4, v29707; GFX90A-NEXT:    v_bfe_u32 v7, v4, 16, 19708; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v49709; GFX90A-NEXT:    v_add3_u32 v7, v7, v4, s69710; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v4, v49711; GFX90A-NEXT:    v_cndmask_b32_e32 v4, v7, v8, vcc9712; GFX90A-NEXT:    v_lshlrev_b32_sdwa v4, v3, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19713; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v49714; GFX90A-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] glc9715; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9716; GFX90A-NEXT:    buffer_wbinvl19717; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v59718; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9719; GFX90A-NEXT:    v_mov_b32_e32 v5, v49720; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]9721; GFX90A-NEXT:    s_cbranch_execnz .LBB32_19722; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end9723; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]9724; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v3, v49725; GFX90A-NEXT:    s_setpc_b64 s[30:31]9726;9727; GFX908-LABEL: flat_agent_atomic_fsub_ret_bf16:9728; GFX908:       ; %bb.0:9729; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9730; GFX908-NEXT:    v_mov_b32_e32 v3, v09731; GFX908-NEXT:    v_and_b32_e32 v0, -4, v39732; GFX908-NEXT:    flat_load_dword v5, v[0:1]9733; GFX908-NEXT:    v_and_b32_e32 v3, 3, v39734; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v39735; GFX908-NEXT:    s_mov_b32 s4, 0xffff9736; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s49737; GFX908-NEXT:    v_not_b32_e32 v4, v49738; GFX908-NEXT:    s_mov_b64 s[4:5], 09739; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v29740; GFX908-NEXT:    s_movk_i32 s6, 0x7fff9741; GFX908-NEXT:  .LBB32_1: ; %atomicrmw.start9742; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=19743; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9744; GFX908-NEXT:    v_mov_b32_e32 v6, v59745; GFX908-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9746; GFX908-NEXT:    v_sub_f32_e32 v5, v5, v29747; GFX908-NEXT:    v_bfe_u32 v7, v5, 16, 19748; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v59749; GFX908-NEXT:    v_add3_u32 v7, v7, v5, s69750; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v59751; GFX908-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc9752; GFX908-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19753; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v59754; GFX908-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc9755; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9756; GFX908-NEXT:    buffer_wbinvl19757; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v69758; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9759; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]9760; GFX908-NEXT:    s_cbranch_execnz .LBB32_19761; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end9762; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]9763; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v59764; GFX908-NEXT:    s_setpc_b64 s[30:31]9765;9766; GFX8-LABEL: flat_agent_atomic_fsub_ret_bf16:9767; GFX8:       ; %bb.0:9768; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9769; GFX8-NEXT:    v_mov_b32_e32 v3, v09770; GFX8-NEXT:    v_and_b32_e32 v0, -4, v39771; GFX8-NEXT:    flat_load_dword v5, v[0:1]9772; GFX8-NEXT:    v_and_b32_e32 v3, 3, v39773; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v39774; GFX8-NEXT:    s_mov_b32 s4, 0xffff9775; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s49776; GFX8-NEXT:    v_not_b32_e32 v4, v49777; GFX8-NEXT:    s_mov_b64 s[4:5], 09778; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v29779; GFX8-NEXT:  .LBB32_1: ; %atomicrmw.start9780; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=19781; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9782; GFX8-NEXT:    v_mov_b32_e32 v6, v59783; GFX8-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9784; GFX8-NEXT:    v_sub_f32_e32 v5, v5, v29785; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 19786; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v59787; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v89788; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v59789; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v59790; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc9791; GFX8-NEXT:    v_and_b32_e32 v7, v6, v49792; GFX8-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19793; GFX8-NEXT:    v_or_b32_e32 v5, v7, v59794; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc9795; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9796; GFX8-NEXT:    buffer_wbinvl19797; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v69798; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9799; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]9800; GFX8-NEXT:    s_cbranch_execnz .LBB32_19801; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end9802; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]9803; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v59804; GFX8-NEXT:    s_setpc_b64 s[30:31]9805;9806; GFX7-LABEL: flat_agent_atomic_fsub_ret_bf16:9807; GFX7:       ; %bb.0:9808; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9809; GFX7-NEXT:    v_mov_b32_e32 v3, v09810; GFX7-NEXT:    v_and_b32_e32 v0, -4, v39811; GFX7-NEXT:    flat_load_dword v5, v[0:1]9812; GFX7-NEXT:    v_and_b32_e32 v3, 3, v39813; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 3, v39814; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v39815; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v29816; GFX7-NEXT:    v_not_b32_e32 v4, v49817; GFX7-NEXT:    s_mov_b64 s[4:5], 09818; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v29819; GFX7-NEXT:  .LBB32_1: ; %atomicrmw.start9820; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=19821; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9822; GFX7-NEXT:    v_mov_b32_e32 v6, v59823; GFX7-NEXT:    v_lshrrev_b32_e32 v5, v3, v69824; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v59825; GFX7-NEXT:    v_sub_f32_e32 v5, v5, v29826; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v59827; GFX7-NEXT:    v_and_b32_e32 v7, v6, v49828; GFX7-NEXT:    v_lshlrev_b32_e32 v5, v3, v59829; GFX7-NEXT:    v_or_b32_e32 v5, v7, v59830; GFX7-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc9831; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9832; GFX7-NEXT:    buffer_wbinvl19833; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v69834; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9835; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]9836; GFX7-NEXT:    s_cbranch_execnz .LBB32_19837; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end9838; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]9839; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v3, v59840; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v09841; GFX7-NEXT:    s_setpc_b64 s[30:31]9842  %result = atomicrmw fsub ptr %ptr, bfloat %val syncscope("agent") seq_cst9843  ret bfloat %result9844}9845 9846define bfloat @flat_agent_atomic_fsub_ret_bf16__offset12b_pos(ptr %ptr, bfloat %val) #0 {9847; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_pos:9848; GFX12-TRUE16:       ; %bb.0:9849; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09850; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x09851; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x09852; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x09853; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x09854; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v09855; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)9856; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo9857; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 09858; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v39859; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v39860; GFX12-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]9861; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39862; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9863; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9864; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v49865; GFX12-TRUE16-NEXT:  .LBB33_1: ; %atomicrmw.start9866; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19867; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09868; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v59869; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 09870; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l9871; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9872; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69873; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59874; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)9875; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v79876; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l9877; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 19878; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v59879; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59880; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)9881; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff9882; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)9883; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo9884; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9885; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h9886; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v79887; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9888; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v59889; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x09890; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV9891; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09892; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV9893; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69894; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9895; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s09896; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9897; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09898; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB33_19899; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end9900; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09901; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59902; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x09903; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]9904;9905; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_pos:9906; GFX12-FAKE16:       ; %bb.0:9907; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09908; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x09909; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x09910; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x09911; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x09912; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v09913; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)9914; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo9915; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v29916; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)9917; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v39918; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v39919; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 09920; GFX12-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]9921; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39922; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9923; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9924; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v49925; GFX12-FAKE16-NEXT:  .LBB33_1: ; %atomicrmw.start9926; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19927; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09928; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v59929; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9930; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69931; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59932; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9933; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v29934; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 19935; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v59936; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59937; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)9938; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff9939; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)9940; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo9941; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9942; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v59943; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v59944; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9945; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v59946; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x09947; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV9948; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09949; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV9950; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69951; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9952; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s09953; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9954; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09955; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB33_19956; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end9957; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09958; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59959; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x09960; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]9961;9962; GFX942-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_pos:9963; GFX942:       ; %bb.0:9964; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9965; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe9966; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]9967; GFX942-NEXT:    v_and_b32_e32 v0, -4, v49968; GFX942-NEXT:    v_mov_b32_e32 v1, v59969; GFX942-NEXT:    flat_load_dword v3, v[0:1]9970; GFX942-NEXT:    v_and_b32_e32 v4, 3, v49971; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v49972; GFX942-NEXT:    s_mov_b32 s0, 0xffff9973; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s09974; GFX942-NEXT:    v_not_b32_e32 v5, v59975; GFX942-NEXT:    s_mov_b64 s[0:1], 09976; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v29977; GFX942-NEXT:    s_movk_i32 s2, 0x7fff9978; GFX942-NEXT:  .LBB33_1: ; %atomicrmw.start9979; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=19980; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9981; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9982; GFX942-NEXT:    s_nop 09983; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v69984; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 19985; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v29986; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s29987; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v29988; GFX942-NEXT:    s_nop 19989; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc9990; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19991; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v29992; GFX942-NEXT:    buffer_wbl2 sc19993; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc09994; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9995; GFX942-NEXT:    buffer_inv sc19996; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v39997; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]9998; GFX942-NEXT:    v_mov_b32_e32 v3, v29999; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]10000; GFX942-NEXT:    s_cbranch_execnz .LBB33_110001; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end10002; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]10003; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v4, v210004; GFX942-NEXT:    s_setpc_b64 s[30:31]10005;10006; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_pos:10007; GFX11-TRUE16:       ; %bb.0:10008; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10009; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v010010; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10011; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo10012; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 010013; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v310014; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v310015; GFX11-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]10016; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v310017; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10018; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10019; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v410020; GFX11-TRUE16-NEXT:    .p2align 610021; GFX11-TRUE16-NEXT:  .LBB33_1: ; %atomicrmw.start10022; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110023; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10024; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v510025; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 010026; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l10027; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10028; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v610029; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v510030; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10031; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v710032; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l10033; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 110034; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v510035; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510036; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10037; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff10038; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo10039; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10040; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h10041; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v710042; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10043; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v510044; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x010045; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc10046; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10047; GFX11-TRUE16-NEXT:    buffer_gl1_inv10048; GFX11-TRUE16-NEXT:    buffer_gl0_inv10049; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610050; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s010051; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10052; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010053; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB33_110054; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end10055; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010056; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v510057; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]10058;10059; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_pos:10060; GFX11-FAKE16:       ; %bb.0:10061; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10062; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v010063; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)10064; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo10065; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v210066; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v310067; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v310068; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 010069; GFX11-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]10070; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v310071; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10072; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10073; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v410074; GFX11-FAKE16-NEXT:    .p2align 610075; GFX11-FAKE16-NEXT:  .LBB33_1: ; %atomicrmw.start10076; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=110077; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10078; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v510079; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10080; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v610081; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v510082; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10083; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v210084; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 110085; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v510086; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510087; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10088; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff10089; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo10090; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10091; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v510092; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v510093; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10094; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v510095; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x010096; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc10097; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10098; GFX11-FAKE16-NEXT:    buffer_gl1_inv10099; GFX11-FAKE16-NEXT:    buffer_gl0_inv10100; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610101; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s010102; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10103; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010104; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB33_110105; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end10106; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010107; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v510108; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]10109;10110; GFX10-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_pos:10111; GFX10:       ; %bb.0:10112; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10113; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v010114; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo10115; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v210116; GFX10-NEXT:    v_and_b32_e32 v0, -4, v310117; GFX10-NEXT:    v_and_b32_e32 v3, 3, v310118; GFX10-NEXT:    s_mov_b32 s4, 010119; GFX10-NEXT:    flat_load_dword v5, v[0:1]10120; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v310121; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10122; GFX10-NEXT:    v_not_b32_e32 v4, v410123; GFX10-NEXT:  .LBB33_1: ; %atomicrmw.start10124; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=110125; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10126; GFX10-NEXT:    v_mov_b32_e32 v6, v510127; GFX10-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10128; GFX10-NEXT:    v_sub_f32_e32 v5, v5, v210129; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 110130; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v510131; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510132; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff10133; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo10134; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110135; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v510136; GFX10-NEXT:    s_waitcnt_vscnt null, 0x010137; GFX10-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc10138; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10139; GFX10-NEXT:    buffer_gl1_inv10140; GFX10-NEXT:    buffer_gl0_inv10141; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610142; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s410143; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s410144; GFX10-NEXT:    s_cbranch_execnz .LBB33_110145; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end10146; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s410147; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v510148; GFX10-NEXT:    s_setpc_b64 s[30:31]10149;10150; GFX90A-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_pos:10151; GFX90A:       ; %bb.0:10152; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10153; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v010154; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc10155; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v410156; GFX90A-NEXT:    flat_load_dword v3, v[0:1]10157; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v410158; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v410159; GFX90A-NEXT:    s_mov_b32 s4, 0xffff10160; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s410161; GFX90A-NEXT:    v_not_b32_e32 v5, v510162; GFX90A-NEXT:    s_mov_b64 s[4:5], 010163; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v210164; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff10165; GFX90A-NEXT:  .LBB33_1: ; %atomicrmw.start10166; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=110167; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10168; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10169; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v610170; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 110171; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v210172; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s610173; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v210174; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc10175; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110176; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v210177; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc10178; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10179; GFX90A-NEXT:    buffer_wbinvl110180; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v310181; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10182; GFX90A-NEXT:    v_mov_b32_e32 v3, v210183; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]10184; GFX90A-NEXT:    s_cbranch_execnz .LBB33_110185; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end10186; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]10187; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v4, v210188; GFX90A-NEXT:    s_setpc_b64 s[30:31]10189;10190; GFX908-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_pos:10191; GFX908:       ; %bb.0:10192; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10193; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v010194; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc10195; GFX908-NEXT:    v_and_b32_e32 v0, -4, v310196; GFX908-NEXT:    flat_load_dword v5, v[0:1]10197; GFX908-NEXT:    v_and_b32_e32 v3, 3, v310198; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v310199; GFX908-NEXT:    s_mov_b32 s4, 0xffff10200; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s410201; GFX908-NEXT:    v_not_b32_e32 v4, v410202; GFX908-NEXT:    s_mov_b64 s[4:5], 010203; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v210204; GFX908-NEXT:    s_movk_i32 s6, 0x7fff10205; GFX908-NEXT:  .LBB33_1: ; %atomicrmw.start10206; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=110207; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10208; GFX908-NEXT:    v_mov_b32_e32 v6, v510209; GFX908-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10210; GFX908-NEXT:    v_sub_f32_e32 v5, v5, v210211; GFX908-NEXT:    v_bfe_u32 v7, v5, 16, 110212; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v510213; GFX908-NEXT:    v_add3_u32 v7, v7, v5, s610214; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v510215; GFX908-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc10216; GFX908-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110217; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v510218; GFX908-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc10219; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10220; GFX908-NEXT:    buffer_wbinvl110221; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v610222; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10223; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]10224; GFX908-NEXT:    s_cbranch_execnz .LBB33_110225; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end10226; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]10227; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v510228; GFX908-NEXT:    s_setpc_b64 s[30:31]10229;10230; GFX8-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_pos:10231; GFX8:       ; %bb.0:10232; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10233; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v010234; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc10235; GFX8-NEXT:    v_and_b32_e32 v0, -4, v310236; GFX8-NEXT:    flat_load_dword v5, v[0:1]10237; GFX8-NEXT:    v_and_b32_e32 v3, 3, v310238; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v310239; GFX8-NEXT:    s_mov_b32 s4, 0xffff10240; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s410241; GFX8-NEXT:    v_not_b32_e32 v4, v410242; GFX8-NEXT:    s_mov_b64 s[4:5], 010243; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v210244; GFX8-NEXT:  .LBB33_1: ; %atomicrmw.start10245; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=110246; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10247; GFX8-NEXT:    v_mov_b32_e32 v6, v510248; GFX8-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10249; GFX8-NEXT:    v_sub_f32_e32 v5, v5, v210250; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 110251; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v510252; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v810253; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v510254; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v510255; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc10256; GFX8-NEXT:    v_and_b32_e32 v7, v6, v410257; GFX8-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110258; GFX8-NEXT:    v_or_b32_e32 v5, v7, v510259; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc10260; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10261; GFX8-NEXT:    buffer_wbinvl110262; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v610263; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10264; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]10265; GFX8-NEXT:    s_cbranch_execnz .LBB33_110266; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end10267; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]10268; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v510269; GFX8-NEXT:    s_setpc_b64 s[30:31]10270;10271; GFX7-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_pos:10272; GFX7:       ; %bb.0:10273; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10274; GFX7-NEXT:    v_add_i32_e32 v3, vcc, 0x7fe, v010275; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc10276; GFX7-NEXT:    v_and_b32_e32 v0, -4, v310277; GFX7-NEXT:    flat_load_dword v5, v[0:1]10278; GFX7-NEXT:    v_and_b32_e32 v3, 3, v310279; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 3, v310280; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v310281; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v210282; GFX7-NEXT:    v_not_b32_e32 v4, v410283; GFX7-NEXT:    s_mov_b64 s[4:5], 010284; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v210285; GFX7-NEXT:  .LBB33_1: ; %atomicrmw.start10286; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=110287; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10288; GFX7-NEXT:    v_mov_b32_e32 v6, v510289; GFX7-NEXT:    v_lshrrev_b32_e32 v5, v3, v610290; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v510291; GFX7-NEXT:    v_sub_f32_e32 v5, v5, v210292; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v510293; GFX7-NEXT:    v_and_b32_e32 v7, v6, v410294; GFX7-NEXT:    v_lshlrev_b32_e32 v5, v3, v510295; GFX7-NEXT:    v_or_b32_e32 v5, v7, v510296; GFX7-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc10297; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10298; GFX7-NEXT:    buffer_wbinvl110299; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v610300; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10301; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]10302; GFX7-NEXT:    s_cbranch_execnz .LBB33_110303; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end10304; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]10305; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v3, v510306; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v010307; GFX7-NEXT:    s_setpc_b64 s[30:31]10308  %gep = getelementptr inbounds bfloat, ptr %ptr, i64 102310309  %result = atomicrmw fsub ptr %gep, bfloat %val syncscope("agent") seq_cst10310  ret bfloat %result10311}10312 10313define bfloat @flat_agent_atomic_fsub_ret_bf16__offset12b_neg(ptr %ptr, bfloat %val) #0 {10314; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_neg:10315; GFX12-TRUE16:       ; %bb.0:10316; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x010317; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x010318; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x010319; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x010320; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x010321; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v010322; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)10323; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo10324; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 010325; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v310326; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v310327; GFX12-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]10328; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v310329; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10330; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10331; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v410332; GFX12-TRUE16-NEXT:  .LBB34_1: ; %atomicrmw.start10333; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110334; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x010335; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v510336; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 010337; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l10338; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10339; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v610340; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v510341; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10342; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v710343; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l10344; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 110345; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v510346; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510347; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)10348; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff10349; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)10350; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo10351; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10352; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h10353; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v710354; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10355; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v510356; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x010357; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV10358; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x010359; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV10360; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610361; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10362; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s010363; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10364; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010365; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB34_110366; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end10367; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010368; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v510369; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x010370; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]10371;10372; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_neg:10373; GFX12-FAKE16:       ; %bb.0:10374; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x010375; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x010376; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x010377; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x010378; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x010379; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v010380; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)10381; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo10382; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v210383; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)10384; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v310385; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v310386; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 010387; GFX12-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]10388; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v310389; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10390; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10391; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v410392; GFX12-FAKE16-NEXT:  .LBB34_1: ; %atomicrmw.start10393; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=110394; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x010395; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v510396; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10397; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v610398; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v510399; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10400; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v210401; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 110402; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v510403; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510404; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)10405; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff10406; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)10407; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo10408; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10409; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v510410; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v510411; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10412; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v510413; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x010414; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV10415; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x010416; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV10417; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610418; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10419; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s010420; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10421; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010422; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB34_110423; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end10424; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010425; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v510426; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x010427; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]10428;10429; GFX942-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_neg:10430; GFX942:       ; %bb.0:10431; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10432; GFX942-NEXT:    s_movk_i32 s0, 0xf80010433; GFX942-NEXT:    s_mov_b32 s1, -110434; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]10435; GFX942-NEXT:    v_and_b32_e32 v0, -4, v410436; GFX942-NEXT:    v_mov_b32_e32 v1, v510437; GFX942-NEXT:    flat_load_dword v3, v[0:1]10438; GFX942-NEXT:    v_and_b32_e32 v4, 3, v410439; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v410440; GFX942-NEXT:    s_mov_b32 s0, 0xffff10441; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s010442; GFX942-NEXT:    v_not_b32_e32 v5, v510443; GFX942-NEXT:    s_mov_b64 s[0:1], 010444; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v210445; GFX942-NEXT:    s_movk_i32 s2, 0x7fff10446; GFX942-NEXT:  .LBB34_1: ; %atomicrmw.start10447; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=110448; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10449; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10450; GFX942-NEXT:    s_nop 010451; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v610452; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 110453; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v210454; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s210455; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v210456; GFX942-NEXT:    s_nop 110457; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc10458; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110459; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v210460; GFX942-NEXT:    buffer_wbl2 sc110461; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc010462; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10463; GFX942-NEXT:    buffer_inv sc110464; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v310465; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]10466; GFX942-NEXT:    v_mov_b32_e32 v3, v210467; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]10468; GFX942-NEXT:    s_cbranch_execnz .LBB34_110469; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end10470; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]10471; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v4, v210472; GFX942-NEXT:    s_setpc_b64 s[30:31]10473;10474; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_neg:10475; GFX11-TRUE16:       ; %bb.0:10476; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10477; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v010478; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10479; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo10480; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 010481; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v310482; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v310483; GFX11-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]10484; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v310485; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10486; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10487; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v410488; GFX11-TRUE16-NEXT:    .p2align 610489; GFX11-TRUE16-NEXT:  .LBB34_1: ; %atomicrmw.start10490; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110491; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10492; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v510493; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 010494; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l10495; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10496; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v610497; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v510498; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10499; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v710500; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l10501; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 110502; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v510503; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510504; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10505; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff10506; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo10507; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10508; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h10509; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v710510; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10511; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v510512; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x010513; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc10514; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10515; GFX11-TRUE16-NEXT:    buffer_gl1_inv10516; GFX11-TRUE16-NEXT:    buffer_gl0_inv10517; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610518; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s010519; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10520; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010521; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB34_110522; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end10523; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010524; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v510525; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]10526;10527; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_neg:10528; GFX11-FAKE16:       ; %bb.0:10529; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10530; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v010531; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)10532; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo10533; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v210534; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v310535; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v310536; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 010537; GFX11-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]10538; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v310539; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10540; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10541; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v410542; GFX11-FAKE16-NEXT:    .p2align 610543; GFX11-FAKE16-NEXT:  .LBB34_1: ; %atomicrmw.start10544; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=110545; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10546; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v510547; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10548; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v610549; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v510550; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10551; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v210552; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 110553; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v510554; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510555; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10556; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff10557; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo10558; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10559; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v510560; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v510561; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10562; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v510563; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x010564; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc10565; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10566; GFX11-FAKE16-NEXT:    buffer_gl1_inv10567; GFX11-FAKE16-NEXT:    buffer_gl0_inv10568; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610569; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s010570; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10571; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010572; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB34_110573; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end10574; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010575; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v510576; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]10577;10578; GFX10-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_neg:10579; GFX10:       ; %bb.0:10580; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10581; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v010582; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo10583; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v210584; GFX10-NEXT:    v_and_b32_e32 v0, -4, v310585; GFX10-NEXT:    v_and_b32_e32 v3, 3, v310586; GFX10-NEXT:    s_mov_b32 s4, 010587; GFX10-NEXT:    flat_load_dword v5, v[0:1]10588; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v310589; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10590; GFX10-NEXT:    v_not_b32_e32 v4, v410591; GFX10-NEXT:  .LBB34_1: ; %atomicrmw.start10592; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=110593; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10594; GFX10-NEXT:    v_mov_b32_e32 v6, v510595; GFX10-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10596; GFX10-NEXT:    v_sub_f32_e32 v5, v5, v210597; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 110598; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v510599; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510600; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff10601; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo10602; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110603; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v510604; GFX10-NEXT:    s_waitcnt_vscnt null, 0x010605; GFX10-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc10606; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10607; GFX10-NEXT:    buffer_gl1_inv10608; GFX10-NEXT:    buffer_gl0_inv10609; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610610; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s410611; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s410612; GFX10-NEXT:    s_cbranch_execnz .LBB34_110613; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end10614; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s410615; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v510616; GFX10-NEXT:    s_setpc_b64 s[30:31]10617;10618; GFX90A-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_neg:10619; GFX90A:       ; %bb.0:10620; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10621; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v010622; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc10623; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v410624; GFX90A-NEXT:    flat_load_dword v3, v[0:1]10625; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v410626; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v410627; GFX90A-NEXT:    s_mov_b32 s4, 0xffff10628; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s410629; GFX90A-NEXT:    v_not_b32_e32 v5, v510630; GFX90A-NEXT:    s_mov_b64 s[4:5], 010631; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v210632; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff10633; GFX90A-NEXT:  .LBB34_1: ; %atomicrmw.start10634; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=110635; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10636; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10637; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v610638; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 110639; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v210640; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s610641; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v210642; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc10643; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110644; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v210645; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc10646; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10647; GFX90A-NEXT:    buffer_wbinvl110648; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v310649; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10650; GFX90A-NEXT:    v_mov_b32_e32 v3, v210651; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]10652; GFX90A-NEXT:    s_cbranch_execnz .LBB34_110653; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end10654; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]10655; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v4, v210656; GFX90A-NEXT:    s_setpc_b64 s[30:31]10657;10658; GFX908-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_neg:10659; GFX908:       ; %bb.0:10660; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10661; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v010662; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc10663; GFX908-NEXT:    v_and_b32_e32 v0, -4, v310664; GFX908-NEXT:    flat_load_dword v5, v[0:1]10665; GFX908-NEXT:    v_and_b32_e32 v3, 3, v310666; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v310667; GFX908-NEXT:    s_mov_b32 s4, 0xffff10668; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s410669; GFX908-NEXT:    v_not_b32_e32 v4, v410670; GFX908-NEXT:    s_mov_b64 s[4:5], 010671; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v210672; GFX908-NEXT:    s_movk_i32 s6, 0x7fff10673; GFX908-NEXT:  .LBB34_1: ; %atomicrmw.start10674; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=110675; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10676; GFX908-NEXT:    v_mov_b32_e32 v6, v510677; GFX908-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10678; GFX908-NEXT:    v_sub_f32_e32 v5, v5, v210679; GFX908-NEXT:    v_bfe_u32 v7, v5, 16, 110680; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v510681; GFX908-NEXT:    v_add3_u32 v7, v7, v5, s610682; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v510683; GFX908-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc10684; GFX908-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110685; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v510686; GFX908-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc10687; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10688; GFX908-NEXT:    buffer_wbinvl110689; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v610690; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10691; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]10692; GFX908-NEXT:    s_cbranch_execnz .LBB34_110693; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end10694; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]10695; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v510696; GFX908-NEXT:    s_setpc_b64 s[30:31]10697;10698; GFX8-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_neg:10699; GFX8:       ; %bb.0:10700; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10701; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v010702; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc10703; GFX8-NEXT:    v_and_b32_e32 v0, -4, v310704; GFX8-NEXT:    flat_load_dword v5, v[0:1]10705; GFX8-NEXT:    v_and_b32_e32 v3, 3, v310706; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v310707; GFX8-NEXT:    s_mov_b32 s4, 0xffff10708; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s410709; GFX8-NEXT:    v_not_b32_e32 v4, v410710; GFX8-NEXT:    s_mov_b64 s[4:5], 010711; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v210712; GFX8-NEXT:  .LBB34_1: ; %atomicrmw.start10713; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=110714; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10715; GFX8-NEXT:    v_mov_b32_e32 v6, v510716; GFX8-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10717; GFX8-NEXT:    v_sub_f32_e32 v5, v5, v210718; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 110719; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v510720; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v810721; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v510722; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v510723; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc10724; GFX8-NEXT:    v_and_b32_e32 v7, v6, v410725; GFX8-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110726; GFX8-NEXT:    v_or_b32_e32 v5, v7, v510727; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc10728; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10729; GFX8-NEXT:    buffer_wbinvl110730; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v610731; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10732; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]10733; GFX8-NEXT:    s_cbranch_execnz .LBB34_110734; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end10735; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]10736; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v510737; GFX8-NEXT:    s_setpc_b64 s[30:31]10738;10739; GFX7-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_neg:10740; GFX7:       ; %bb.0:10741; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10742; GFX7-NEXT:    v_add_i32_e32 v3, vcc, 0xfffff800, v010743; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc10744; GFX7-NEXT:    v_and_b32_e32 v0, -4, v310745; GFX7-NEXT:    flat_load_dword v5, v[0:1]10746; GFX7-NEXT:    v_and_b32_e32 v3, 3, v310747; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 3, v310748; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v310749; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v210750; GFX7-NEXT:    v_not_b32_e32 v4, v410751; GFX7-NEXT:    s_mov_b64 s[4:5], 010752; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v210753; GFX7-NEXT:  .LBB34_1: ; %atomicrmw.start10754; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=110755; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10756; GFX7-NEXT:    v_mov_b32_e32 v6, v510757; GFX7-NEXT:    v_lshrrev_b32_e32 v5, v3, v610758; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v510759; GFX7-NEXT:    v_sub_f32_e32 v5, v5, v210760; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v510761; GFX7-NEXT:    v_and_b32_e32 v7, v6, v410762; GFX7-NEXT:    v_lshlrev_b32_e32 v5, v3, v510763; GFX7-NEXT:    v_or_b32_e32 v5, v7, v510764; GFX7-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc10765; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10766; GFX7-NEXT:    buffer_wbinvl110767; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v610768; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10769; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]10770; GFX7-NEXT:    s_cbranch_execnz .LBB34_110771; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end10772; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]10773; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v3, v510774; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v010775; GFX7-NEXT:    s_setpc_b64 s[30:31]10776  %gep = getelementptr inbounds bfloat, ptr %ptr, i64 -102410777  %result = atomicrmw fsub ptr %gep, bfloat %val syncscope("agent") seq_cst10778  ret bfloat %result10779 }10780 10781define void @flat_agent_atomic_fsub_noret_bf16(ptr %ptr, bfloat %val) #0 {10782; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_noret_bf16:10783; GFX12-TRUE16:       ; %bb.0:10784; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x010785; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x010786; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x010787; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x010788; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x010789; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v010790; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 010791; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)10792; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v310793; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v310794; GFX12-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]10795; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v310796; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff10797; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10798; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v310799; GFX12-TRUE16-NEXT:  .LBB35_1: ; %atomicrmw.start10800; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110801; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x010802; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v410803; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 010804; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l10805; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10806; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v310807; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v710808; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l10809; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)10810; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 110811; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v310812; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v310813; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff10814; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)10815; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10816; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo10817; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h10818; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10819; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v710820; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v310821; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x010822; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV10823; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x010824; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV10825; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v410826; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v310827; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10828; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s010829; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10830; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010831; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB35_110832; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end10833; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010834; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x010835; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]10836;10837; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_noret_bf16:10838; GFX12-FAKE16:       ; %bb.0:10839; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x010840; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x010841; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x010842; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x010843; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x010844; GFX12-FAKE16-NEXT:    v_dual_mov_b32 v3, v0 :: v_dual_lshlrev_b32 v2, 16, v210845; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 010846; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)10847; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v310848; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v310849; GFX12-FAKE16-NEXT:    flat_load_b32 v4, v[0:1]10850; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v310851; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff10852; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10853; GFX12-FAKE16-NEXT:    v_not_b32_e32 v6, v310854; GFX12-FAKE16-NEXT:  .LBB35_1: ; %atomicrmw.start10855; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=110856; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x010857; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v410858; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10859; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v310860; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v210861; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)10862; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 110863; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v310864; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v310865; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff10866; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)10867; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10868; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v7, v8, vcc_lo10869; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v310870; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10871; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v310872; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v310873; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x010874; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV10875; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x010876; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV10877; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v410878; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v310879; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10880; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s010881; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10882; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010883; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB35_110884; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end10885; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010886; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x010887; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]10888;10889; GFX942-LABEL: flat_agent_atomic_fsub_noret_bf16:10890; GFX942:       ; %bb.0:10891; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10892; GFX942-NEXT:    v_mov_b32_e32 v3, v010893; GFX942-NEXT:    v_and_b32_e32 v0, -4, v310894; GFX942-NEXT:    flat_load_dword v5, v[0:1]10895; GFX942-NEXT:    v_and_b32_e32 v3, 3, v310896; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v310897; GFX942-NEXT:    s_mov_b32 s0, 0xffff10898; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s010899; GFX942-NEXT:    v_not_b32_e32 v6, v410900; GFX942-NEXT:    s_mov_b64 s[0:1], 010901; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v210902; GFX942-NEXT:    s_movk_i32 s2, 0x7fff10903; GFX942-NEXT:  .LBB35_1: ; %atomicrmw.start10904; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=110905; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10906; GFX942-NEXT:    v_lshrrev_b32_sdwa v4, v3, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10907; GFX942-NEXT:    s_nop 010908; GFX942-NEXT:    v_sub_f32_e32 v4, v4, v210909; GFX942-NEXT:    v_bfe_u32 v7, v4, 16, 110910; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v410911; GFX942-NEXT:    v_add3_u32 v7, v7, v4, s210912; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v4, v410913; GFX942-NEXT:    s_nop 110914; GFX942-NEXT:    v_cndmask_b32_e32 v4, v7, v8, vcc10915; GFX942-NEXT:    v_lshlrev_b32_sdwa v4, v3, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110916; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v410917; GFX942-NEXT:    buffer_wbl2 sc110918; GFX942-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] sc010919; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10920; GFX942-NEXT:    buffer_inv sc110921; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v510922; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]10923; GFX942-NEXT:    v_mov_b32_e32 v5, v410924; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]10925; GFX942-NEXT:    s_cbranch_execnz .LBB35_110926; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end10927; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]10928; GFX942-NEXT:    s_setpc_b64 s[30:31]10929;10930; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_noret_bf16:10931; GFX11-TRUE16:       ; %bb.0:10932; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10933; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v010934; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 010935; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)10936; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v310937; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v310938; GFX11-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]10939; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v310940; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff10941; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10942; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v310943; GFX11-TRUE16-NEXT:    .p2align 610944; GFX11-TRUE16-NEXT:  .LBB35_1: ; %atomicrmw.start10945; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110946; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10947; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v410948; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 010949; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l10950; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10951; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v310952; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v710953; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l10954; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)10955; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 110956; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v310957; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v310958; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff10959; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10960; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo10961; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h10962; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10963; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v710964; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v310965; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x010966; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc10967; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10968; GFX11-TRUE16-NEXT:    buffer_gl1_inv10969; GFX11-TRUE16-NEXT:    buffer_gl0_inv10970; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v410971; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v310972; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s010973; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10974; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010975; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB35_110976; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end10977; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010978; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]10979;10980; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_noret_bf16:10981; GFX11-FAKE16:       ; %bb.0:10982; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10983; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v3, v0 :: v_dual_lshlrev_b32 v2, 16, v210984; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 010985; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)10986; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v310987; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v310988; GFX11-FAKE16-NEXT:    flat_load_b32 v4, v[0:1]10989; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v310990; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff10991; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10992; GFX11-FAKE16-NEXT:    v_not_b32_e32 v6, v310993; GFX11-FAKE16-NEXT:    .p2align 610994; GFX11-FAKE16-NEXT:  .LBB35_1: ; %atomicrmw.start10995; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=110996; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10997; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v410998; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10999; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v311000; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v211001; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)11002; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 111003; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v311004; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311005; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff11006; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11007; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v7, v8, vcc_lo11008; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v311009; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11010; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v311011; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v311012; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x011013; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc11014; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11015; GFX11-FAKE16-NEXT:    buffer_gl1_inv11016; GFX11-FAKE16-NEXT:    buffer_gl0_inv11017; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411018; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v311019; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s011020; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)11021; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011022; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB35_111023; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end11024; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011025; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]11026;11027; GFX10-LABEL: flat_agent_atomic_fsub_noret_bf16:11028; GFX10:       ; %bb.0:11029; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11030; GFX10-NEXT:    v_mov_b32_e32 v3, v011031; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v211032; GFX10-NEXT:    s_mov_b32 s4, 011033; GFX10-NEXT:    v_and_b32_e32 v0, -4, v311034; GFX10-NEXT:    v_and_b32_e32 v3, 3, v311035; GFX10-NEXT:    flat_load_dword v4, v[0:1]11036; GFX10-NEXT:    v_lshlrev_b32_e32 v5, 3, v311037; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff11038; GFX10-NEXT:    v_not_b32_e32 v6, v311039; GFX10-NEXT:  .LBB35_1: ; %atomicrmw.start11040; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=111041; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11042; GFX10-NEXT:    v_lshrrev_b32_sdwa v3, v5, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11043; GFX10-NEXT:    v_sub_f32_e32 v3, v3, v211044; GFX10-NEXT:    v_bfe_u32 v7, v3, 16, 111045; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v311046; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311047; GFX10-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff11048; GFX10-NEXT:    v_cndmask_b32_e32 v3, v7, v8, vcc_lo11049; GFX10-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111050; GFX10-NEXT:    v_and_or_b32 v3, v4, v6, v311051; GFX10-NEXT:    s_waitcnt_vscnt null, 0x011052; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc11053; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11054; GFX10-NEXT:    buffer_gl1_inv11055; GFX10-NEXT:    buffer_gl0_inv11056; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411057; GFX10-NEXT:    v_mov_b32_e32 v4, v311058; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s411059; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s411060; GFX10-NEXT:    s_cbranch_execnz .LBB35_111061; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end11062; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s411063; GFX10-NEXT:    s_setpc_b64 s[30:31]11064;11065; GFX90A-LABEL: flat_agent_atomic_fsub_noret_bf16:11066; GFX90A:       ; %bb.0:11067; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11068; GFX90A-NEXT:    v_mov_b32_e32 v3, v011069; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v311070; GFX90A-NEXT:    flat_load_dword v5, v[0:1]11071; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v311072; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v311073; GFX90A-NEXT:    s_mov_b32 s4, 0xffff11074; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s411075; GFX90A-NEXT:    v_not_b32_e32 v6, v411076; GFX90A-NEXT:    s_mov_b64 s[4:5], 011077; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v211078; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff11079; GFX90A-NEXT:  .LBB35_1: ; %atomicrmw.start11080; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=111081; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11082; GFX90A-NEXT:    v_lshrrev_b32_sdwa v4, v3, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11083; GFX90A-NEXT:    v_sub_f32_e32 v4, v4, v211084; GFX90A-NEXT:    v_bfe_u32 v7, v4, 16, 111085; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v411086; GFX90A-NEXT:    v_add3_u32 v7, v7, v4, s611087; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v4, v411088; GFX90A-NEXT:    v_cndmask_b32_e32 v4, v7, v8, vcc11089; GFX90A-NEXT:    v_lshlrev_b32_sdwa v4, v3, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111090; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v411091; GFX90A-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] glc11092; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11093; GFX90A-NEXT:    buffer_wbinvl111094; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v511095; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11096; GFX90A-NEXT:    v_mov_b32_e32 v5, v411097; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]11098; GFX90A-NEXT:    s_cbranch_execnz .LBB35_111099; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end11100; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]11101; GFX90A-NEXT:    s_setpc_b64 s[30:31]11102;11103; GFX908-LABEL: flat_agent_atomic_fsub_noret_bf16:11104; GFX908:       ; %bb.0:11105; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11106; GFX908-NEXT:    v_mov_b32_e32 v3, v011107; GFX908-NEXT:    v_and_b32_e32 v0, -4, v311108; GFX908-NEXT:    flat_load_dword v4, v[0:1]11109; GFX908-NEXT:    v_and_b32_e32 v3, 3, v311110; GFX908-NEXT:    v_lshlrev_b32_e32 v5, 3, v311111; GFX908-NEXT:    s_mov_b32 s4, 0xffff11112; GFX908-NEXT:    v_lshlrev_b32_e64 v3, v5, s411113; GFX908-NEXT:    v_not_b32_e32 v6, v311114; GFX908-NEXT:    s_mov_b64 s[4:5], 011115; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v211116; GFX908-NEXT:    s_movk_i32 s6, 0x7fff11117; GFX908-NEXT:  .LBB35_1: ; %atomicrmw.start11118; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=111119; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11120; GFX908-NEXT:    v_lshrrev_b32_sdwa v3, v5, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11121; GFX908-NEXT:    v_sub_f32_e32 v3, v3, v211122; GFX908-NEXT:    v_bfe_u32 v7, v3, 16, 111123; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v311124; GFX908-NEXT:    v_add3_u32 v7, v7, v3, s611125; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v3, v311126; GFX908-NEXT:    v_cndmask_b32_e32 v3, v7, v8, vcc11127; GFX908-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111128; GFX908-NEXT:    v_and_or_b32 v3, v4, v6, v311129; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc11130; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11131; GFX908-NEXT:    buffer_wbinvl111132; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v411133; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11134; GFX908-NEXT:    v_mov_b32_e32 v4, v311135; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]11136; GFX908-NEXT:    s_cbranch_execnz .LBB35_111137; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end11138; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]11139; GFX908-NEXT:    s_setpc_b64 s[30:31]11140;11141; GFX8-LABEL: flat_agent_atomic_fsub_noret_bf16:11142; GFX8:       ; %bb.0:11143; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11144; GFX8-NEXT:    v_mov_b32_e32 v3, v011145; GFX8-NEXT:    v_and_b32_e32 v0, -4, v311146; GFX8-NEXT:    flat_load_dword v4, v[0:1]11147; GFX8-NEXT:    v_and_b32_e32 v3, 3, v311148; GFX8-NEXT:    v_lshlrev_b32_e32 v5, 3, v311149; GFX8-NEXT:    s_mov_b32 s4, 0xffff11150; GFX8-NEXT:    v_lshlrev_b32_e64 v3, v5, s411151; GFX8-NEXT:    v_not_b32_e32 v6, v311152; GFX8-NEXT:    s_mov_b64 s[4:5], 011153; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v211154; GFX8-NEXT:  .LBB35_1: ; %atomicrmw.start11155; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=111156; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11157; GFX8-NEXT:    v_lshrrev_b32_sdwa v3, v5, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11158; GFX8-NEXT:    v_sub_f32_e32 v3, v3, v211159; GFX8-NEXT:    v_bfe_u32 v8, v3, 16, 111160; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v311161; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v811162; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v311163; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v3, v311164; GFX8-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc11165; GFX8-NEXT:    v_and_b32_e32 v7, v4, v611166; GFX8-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111167; GFX8-NEXT:    v_or_b32_e32 v3, v7, v311168; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc11169; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11170; GFX8-NEXT:    buffer_wbinvl111171; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v411172; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11173; GFX8-NEXT:    v_mov_b32_e32 v4, v311174; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]11175; GFX8-NEXT:    s_cbranch_execnz .LBB35_111176; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end11177; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]11178; GFX8-NEXT:    s_setpc_b64 s[30:31]11179;11180; GFX7-LABEL: flat_agent_atomic_fsub_noret_bf16:11181; GFX7:       ; %bb.0:11182; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11183; GFX7-NEXT:    v_mov_b32_e32 v3, v011184; GFX7-NEXT:    v_and_b32_e32 v0, -4, v311185; GFX7-NEXT:    flat_load_dword v4, v[0:1]11186; GFX7-NEXT:    v_and_b32_e32 v3, 3, v311187; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 3, v311188; GFX7-NEXT:    v_lshl_b32_e32 v3, 0xffff, v511189; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v211190; GFX7-NEXT:    v_not_b32_e32 v6, v311191; GFX7-NEXT:    s_mov_b64 s[4:5], 011192; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v211193; GFX7-NEXT:  .LBB35_1: ; %atomicrmw.start11194; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=111195; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11196; GFX7-NEXT:    v_lshrrev_b32_e32 v3, v5, v411197; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v311198; GFX7-NEXT:    v_sub_f32_e32 v3, v3, v211199; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v311200; GFX7-NEXT:    v_and_b32_e32 v7, v4, v611201; GFX7-NEXT:    v_lshlrev_b32_e32 v3, v5, v311202; GFX7-NEXT:    v_or_b32_e32 v3, v7, v311203; GFX7-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc11204; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11205; GFX7-NEXT:    buffer_wbinvl111206; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v411207; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11208; GFX7-NEXT:    v_mov_b32_e32 v4, v311209; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]11210; GFX7-NEXT:    s_cbranch_execnz .LBB35_111211; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end11212; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]11213; GFX7-NEXT:    s_setpc_b64 s[30:31]11214  %unused = atomicrmw fsub ptr %ptr, bfloat %val syncscope("agent") seq_cst11215  ret void11216}11217 11218define void @flat_agent_atomic_fsub_noret_bf16__offset12b_pos(ptr %ptr, bfloat %val) #0 {11219; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b_pos:11220; GFX12-TRUE16:       ; %bb.0:11221; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x011222; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x011223; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x011224; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x011225; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x011226; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v011227; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)11228; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo11229; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 011230; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v311231; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v311232; GFX12-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]11233; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v311234; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11235; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff11236; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v311237; GFX12-TRUE16-NEXT:  .LBB36_1: ; %atomicrmw.start11238; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=111239; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x011240; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v411241; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 011242; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l11243; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)11244; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v311245; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v711246; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l11247; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)11248; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 111249; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v311250; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311251; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff11252; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)11253; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11254; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo11255; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h11256; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11257; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v711258; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v311259; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x011260; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV11261; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x011262; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV11263; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411264; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v311265; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11266; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s011267; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11268; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011269; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB36_111270; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end11271; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011272; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x011273; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]11274;11275; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b_pos:11276; GFX12-FAKE16:       ; %bb.0:11277; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x011278; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x011279; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x011280; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x011281; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x011282; GFX12-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v011283; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11284; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo11285; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v211286; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)11287; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v411288; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v411289; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 011290; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]11291; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v411292; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff11293; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11294; GFX12-FAKE16-NEXT:    v_not_b32_e32 v5, v511295; GFX12-FAKE16-NEXT:  .LBB36_1: ; %atomicrmw.start11296; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=111297; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x011298; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v311299; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11300; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v211301; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v611302; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)11303; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 111304; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v211305; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v211306; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff11307; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11308; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11309; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo11310; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v211311; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11312; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v211313; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v211314; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x011315; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV11316; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x011317; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV11318; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v311319; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v211320; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11321; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s011322; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11323; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011324; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB36_111325; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end11326; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011327; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x011328; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]11329;11330; GFX942-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b_pos:11331; GFX942:       ; %bb.0:11332; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11333; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe11334; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]11335; GFX942-NEXT:    v_and_b32_e32 v0, -4, v411336; GFX942-NEXT:    v_mov_b32_e32 v1, v511337; GFX942-NEXT:    flat_load_dword v3, v[0:1]11338; GFX942-NEXT:    v_and_b32_e32 v4, 3, v411339; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v411340; GFX942-NEXT:    s_mov_b32 s0, 0xffff11341; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s011342; GFX942-NEXT:    v_not_b32_e32 v5, v511343; GFX942-NEXT:    s_mov_b64 s[0:1], 011344; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v211345; GFX942-NEXT:    s_movk_i32 s2, 0x7fff11346; GFX942-NEXT:  .LBB36_1: ; %atomicrmw.start11347; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=111348; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11349; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11350; GFX942-NEXT:    s_nop 011351; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v611352; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 111353; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v211354; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s211355; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211356; GFX942-NEXT:    s_nop 111357; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc11358; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111359; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v211360; GFX942-NEXT:    buffer_wbl2 sc111361; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc011362; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11363; GFX942-NEXT:    buffer_inv sc111364; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311365; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]11366; GFX942-NEXT:    v_mov_b32_e32 v3, v211367; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]11368; GFX942-NEXT:    s_cbranch_execnz .LBB36_111369; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end11370; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]11371; GFX942-NEXT:    s_setpc_b64 s[30:31]11372;11373; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b_pos:11374; GFX11-TRUE16:       ; %bb.0:11375; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11376; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v011377; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11378; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo11379; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 011380; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v311381; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v311382; GFX11-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]11383; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v311384; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11385; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff11386; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v311387; GFX11-TRUE16-NEXT:    .p2align 611388; GFX11-TRUE16-NEXT:  .LBB36_1: ; %atomicrmw.start11389; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=111390; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11391; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v411392; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 011393; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l11394; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)11395; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v311396; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v711397; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l11398; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)11399; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 111400; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v311401; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311402; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff11403; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11404; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo11405; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h11406; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11407; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v711408; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v311409; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x011410; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc11411; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11412; GFX11-TRUE16-NEXT:    buffer_gl1_inv11413; GFX11-TRUE16-NEXT:    buffer_gl0_inv11414; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411415; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v311416; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s011417; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)11418; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011419; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB36_111420; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end11421; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011422; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]11423;11424; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b_pos:11425; GFX11-FAKE16:       ; %bb.0:11426; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11427; GFX11-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v011428; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)11429; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo11430; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v211431; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v411432; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v411433; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 011434; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]11435; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v411436; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11437; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff11438; GFX11-FAKE16-NEXT:    v_not_b32_e32 v5, v511439; GFX11-FAKE16-NEXT:    .p2align 611440; GFX11-FAKE16-NEXT:  .LBB36_1: ; %atomicrmw.start11441; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=111442; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11443; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v311444; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11445; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v211446; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v611447; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)11448; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 111449; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v211450; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v211451; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff11452; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11453; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo11454; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v211455; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11456; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v211457; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v211458; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x011459; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] glc11460; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11461; GFX11-FAKE16-NEXT:    buffer_gl1_inv11462; GFX11-FAKE16-NEXT:    buffer_gl0_inv11463; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v311464; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v211465; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s011466; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)11467; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011468; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB36_111469; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end11470; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011471; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]11472;11473; GFX10-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b_pos:11474; GFX10:       ; %bb.0:11475; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11476; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v011477; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo11478; GFX10-NEXT:    v_lshlrev_b32_e32 v6, 16, v211479; GFX10-NEXT:    v_and_b32_e32 v0, -4, v411480; GFX10-NEXT:    v_and_b32_e32 v4, 3, v411481; GFX10-NEXT:    s_mov_b32 s4, 011482; GFX10-NEXT:    flat_load_dword v3, v[0:1]11483; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 3, v411484; GFX10-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff11485; GFX10-NEXT:    v_not_b32_e32 v5, v511486; GFX10-NEXT:  .LBB36_1: ; %atomicrmw.start11487; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=111488; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11489; GFX10-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11490; GFX10-NEXT:    v_sub_f32_e32 v2, v2, v611491; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 111492; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v211493; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v211494; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff11495; GFX10-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo11496; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111497; GFX10-NEXT:    v_and_or_b32 v2, v3, v5, v211498; GFX10-NEXT:    s_waitcnt_vscnt null, 0x011499; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc11500; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11501; GFX10-NEXT:    buffer_gl1_inv11502; GFX10-NEXT:    buffer_gl0_inv11503; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v311504; GFX10-NEXT:    v_mov_b32_e32 v3, v211505; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s411506; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s411507; GFX10-NEXT:    s_cbranch_execnz .LBB36_111508; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end11509; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s411510; GFX10-NEXT:    s_setpc_b64 s[30:31]11511;11512; GFX90A-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b_pos:11513; GFX90A:       ; %bb.0:11514; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11515; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v011516; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc11517; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v411518; GFX90A-NEXT:    flat_load_dword v3, v[0:1]11519; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v411520; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v411521; GFX90A-NEXT:    s_mov_b32 s4, 0xffff11522; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s411523; GFX90A-NEXT:    v_not_b32_e32 v5, v511524; GFX90A-NEXT:    s_mov_b64 s[4:5], 011525; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v211526; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff11527; GFX90A-NEXT:  .LBB36_1: ; %atomicrmw.start11528; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=111529; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11530; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11531; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v611532; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 111533; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v211534; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s611535; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211536; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc11537; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111538; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v211539; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc11540; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11541; GFX90A-NEXT:    buffer_wbinvl111542; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311543; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11544; GFX90A-NEXT:    v_mov_b32_e32 v3, v211545; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]11546; GFX90A-NEXT:    s_cbranch_execnz .LBB36_111547; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end11548; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]11549; GFX90A-NEXT:    s_setpc_b64 s[30:31]11550;11551; GFX908-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b_pos:11552; GFX908:       ; %bb.0:11553; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11554; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v011555; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc11556; GFX908-NEXT:    v_and_b32_e32 v0, -4, v411557; GFX908-NEXT:    flat_load_dword v3, v[0:1]11558; GFX908-NEXT:    v_and_b32_e32 v4, 3, v411559; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 3, v411560; GFX908-NEXT:    s_mov_b32 s4, 0xffff11561; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v4, s411562; GFX908-NEXT:    v_not_b32_e32 v5, v511563; GFX908-NEXT:    s_mov_b64 s[4:5], 011564; GFX908-NEXT:    v_lshlrev_b32_e32 v6, 16, v211565; GFX908-NEXT:    s_movk_i32 s6, 0x7fff11566; GFX908-NEXT:  .LBB36_1: ; %atomicrmw.start11567; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=111568; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11569; GFX908-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11570; GFX908-NEXT:    v_sub_f32_e32 v2, v2, v611571; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 111572; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v211573; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s611574; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211575; GFX908-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc11576; GFX908-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111577; GFX908-NEXT:    v_and_or_b32 v2, v3, v5, v211578; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc11579; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11580; GFX908-NEXT:    buffer_wbinvl111581; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311582; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11583; GFX908-NEXT:    v_mov_b32_e32 v3, v211584; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]11585; GFX908-NEXT:    s_cbranch_execnz .LBB36_111586; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end11587; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]11588; GFX908-NEXT:    s_setpc_b64 s[30:31]11589;11590; GFX8-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b_pos:11591; GFX8:       ; %bb.0:11592; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11593; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0x7fe, v011594; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc11595; GFX8-NEXT:    v_and_b32_e32 v0, -4, v411596; GFX8-NEXT:    flat_load_dword v3, v[0:1]11597; GFX8-NEXT:    v_and_b32_e32 v4, 3, v411598; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 3, v411599; GFX8-NEXT:    s_mov_b32 s4, 0xffff11600; GFX8-NEXT:    v_lshlrev_b32_e64 v5, v4, s411601; GFX8-NEXT:    v_not_b32_e32 v5, v511602; GFX8-NEXT:    s_mov_b64 s[4:5], 011603; GFX8-NEXT:    v_lshlrev_b32_e32 v6, 16, v211604; GFX8-NEXT:  .LBB36_1: ; %atomicrmw.start11605; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=111606; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11607; GFX8-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11608; GFX8-NEXT:    v_sub_f32_e32 v2, v2, v611609; GFX8-NEXT:    v_bfe_u32 v8, v2, 16, 111610; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v211611; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v811612; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v211613; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211614; GFX8-NEXT:    v_cndmask_b32_e32 v2, v8, v9, vcc11615; GFX8-NEXT:    v_and_b32_e32 v7, v3, v511616; GFX8-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111617; GFX8-NEXT:    v_or_b32_e32 v2, v7, v211618; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc11619; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11620; GFX8-NEXT:    buffer_wbinvl111621; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311622; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11623; GFX8-NEXT:    v_mov_b32_e32 v3, v211624; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]11625; GFX8-NEXT:    s_cbranch_execnz .LBB36_111626; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end11627; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]11628; GFX8-NEXT:    s_setpc_b64 s[30:31]11629;11630; GFX7-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b_pos:11631; GFX7:       ; %bb.0:11632; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11633; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v011634; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc11635; GFX7-NEXT:    v_and_b32_e32 v0, -4, v411636; GFX7-NEXT:    flat_load_dword v3, v[0:1]11637; GFX7-NEXT:    v_and_b32_e32 v4, 3, v411638; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v411639; GFX7-NEXT:    v_lshl_b32_e32 v5, 0xffff, v411640; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v211641; GFX7-NEXT:    v_not_b32_e32 v5, v511642; GFX7-NEXT:    s_mov_b64 s[4:5], 011643; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v211644; GFX7-NEXT:  .LBB36_1: ; %atomicrmw.start11645; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=111646; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11647; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v311648; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v211649; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v611650; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v211651; GFX7-NEXT:    v_and_b32_e32 v7, v3, v511652; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v211653; GFX7-NEXT:    v_or_b32_e32 v2, v7, v211654; GFX7-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc11655; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11656; GFX7-NEXT:    buffer_wbinvl111657; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311658; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11659; GFX7-NEXT:    v_mov_b32_e32 v3, v211660; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]11661; GFX7-NEXT:    s_cbranch_execnz .LBB36_111662; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end11663; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]11664; GFX7-NEXT:    s_setpc_b64 s[30:31]11665  %gep = getelementptr inbounds bfloat, ptr %ptr, i64 102311666  %unused = atomicrmw fsub ptr %gep, bfloat %val syncscope("agent") seq_cst11667  ret void11668}11669 11670define void @flat_agent_atomic_fsub_noret_bf16__offset12b_neg(ptr %ptr, bfloat %val) #0 {11671; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b_neg:11672; GFX12-TRUE16:       ; %bb.0:11673; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x011674; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x011675; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x011676; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x011677; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x011678; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v011679; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)11680; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo11681; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 011682; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v311683; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v311684; GFX12-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]11685; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v311686; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11687; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff11688; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v311689; GFX12-TRUE16-NEXT:  .LBB37_1: ; %atomicrmw.start11690; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=111691; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x011692; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v411693; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 011694; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l11695; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)11696; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v311697; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v711698; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l11699; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)11700; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 111701; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v311702; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311703; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff11704; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)11705; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11706; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo11707; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h11708; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11709; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v711710; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v311711; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x011712; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV11713; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x011714; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV11715; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411716; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v311717; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11718; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s011719; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11720; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011721; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB37_111722; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end11723; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011724; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x011725; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]11726;11727; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b_neg:11728; GFX12-FAKE16:       ; %bb.0:11729; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x011730; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x011731; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x011732; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x011733; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x011734; GFX12-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v011735; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11736; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo11737; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v211738; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)11739; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v411740; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v411741; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 011742; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]11743; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v411744; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff11745; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11746; GFX12-FAKE16-NEXT:    v_not_b32_e32 v5, v511747; GFX12-FAKE16-NEXT:  .LBB37_1: ; %atomicrmw.start11748; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=111749; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x011750; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v311751; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11752; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v211753; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v611754; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)11755; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 111756; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v211757; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v211758; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff11759; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11760; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11761; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo11762; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v211763; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11764; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v211765; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v211766; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x011767; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV11768; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x011769; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV11770; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v311771; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v211772; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11773; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s011774; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11775; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011776; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB37_111777; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end11778; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011779; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x011780; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]11781;11782; GFX942-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b_neg:11783; GFX942:       ; %bb.0:11784; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11785; GFX942-NEXT:    s_movk_i32 s0, 0xf80011786; GFX942-NEXT:    s_mov_b32 s1, -111787; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]11788; GFX942-NEXT:    v_and_b32_e32 v0, -4, v411789; GFX942-NEXT:    v_mov_b32_e32 v1, v511790; GFX942-NEXT:    flat_load_dword v3, v[0:1]11791; GFX942-NEXT:    v_and_b32_e32 v4, 3, v411792; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v411793; GFX942-NEXT:    s_mov_b32 s0, 0xffff11794; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s011795; GFX942-NEXT:    v_not_b32_e32 v5, v511796; GFX942-NEXT:    s_mov_b64 s[0:1], 011797; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v211798; GFX942-NEXT:    s_movk_i32 s2, 0x7fff11799; GFX942-NEXT:  .LBB37_1: ; %atomicrmw.start11800; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=111801; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11802; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11803; GFX942-NEXT:    s_nop 011804; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v611805; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 111806; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v211807; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s211808; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211809; GFX942-NEXT:    s_nop 111810; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc11811; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111812; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v211813; GFX942-NEXT:    buffer_wbl2 sc111814; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc011815; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11816; GFX942-NEXT:    buffer_inv sc111817; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311818; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]11819; GFX942-NEXT:    v_mov_b32_e32 v3, v211820; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]11821; GFX942-NEXT:    s_cbranch_execnz .LBB37_111822; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end11823; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]11824; GFX942-NEXT:    s_setpc_b64 s[30:31]11825;11826; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b_neg:11827; GFX11-TRUE16:       ; %bb.0:11828; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11829; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v011830; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11831; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo11832; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 011833; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v311834; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v311835; GFX11-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]11836; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v311837; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11838; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff11839; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v311840; GFX11-TRUE16-NEXT:    .p2align 611841; GFX11-TRUE16-NEXT:  .LBB37_1: ; %atomicrmw.start11842; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=111843; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11844; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v411845; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 011846; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l11847; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)11848; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v311849; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v711850; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l11851; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)11852; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 111853; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v311854; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311855; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff11856; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11857; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo11858; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h11859; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11860; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v711861; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v311862; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x011863; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc11864; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11865; GFX11-TRUE16-NEXT:    buffer_gl1_inv11866; GFX11-TRUE16-NEXT:    buffer_gl0_inv11867; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411868; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v311869; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s011870; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)11871; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011872; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB37_111873; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end11874; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011875; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]11876;11877; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b_neg:11878; GFX11-FAKE16:       ; %bb.0:11879; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11880; GFX11-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v011881; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)11882; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo11883; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v211884; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v411885; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v411886; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 011887; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]11888; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v411889; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11890; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff11891; GFX11-FAKE16-NEXT:    v_not_b32_e32 v5, v511892; GFX11-FAKE16-NEXT:    .p2align 611893; GFX11-FAKE16-NEXT:  .LBB37_1: ; %atomicrmw.start11894; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=111895; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11896; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v311897; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11898; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v211899; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v611900; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)11901; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 111902; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v211903; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v211904; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff11905; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11906; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo11907; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v211908; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11909; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v211910; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v211911; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x011912; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] glc11913; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11914; GFX11-FAKE16-NEXT:    buffer_gl1_inv11915; GFX11-FAKE16-NEXT:    buffer_gl0_inv11916; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v311917; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v211918; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s011919; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)11920; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011921; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB37_111922; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end11923; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011924; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]11925;11926; GFX10-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b_neg:11927; GFX10:       ; %bb.0:11928; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11929; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v011930; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo11931; GFX10-NEXT:    v_lshlrev_b32_e32 v6, 16, v211932; GFX10-NEXT:    v_and_b32_e32 v0, -4, v411933; GFX10-NEXT:    v_and_b32_e32 v4, 3, v411934; GFX10-NEXT:    s_mov_b32 s4, 011935; GFX10-NEXT:    flat_load_dword v3, v[0:1]11936; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 3, v411937; GFX10-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff11938; GFX10-NEXT:    v_not_b32_e32 v5, v511939; GFX10-NEXT:  .LBB37_1: ; %atomicrmw.start11940; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=111941; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11942; GFX10-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11943; GFX10-NEXT:    v_sub_f32_e32 v2, v2, v611944; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 111945; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v211946; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v211947; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff11948; GFX10-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo11949; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111950; GFX10-NEXT:    v_and_or_b32 v2, v3, v5, v211951; GFX10-NEXT:    s_waitcnt_vscnt null, 0x011952; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc11953; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11954; GFX10-NEXT:    buffer_gl1_inv11955; GFX10-NEXT:    buffer_gl0_inv11956; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v311957; GFX10-NEXT:    v_mov_b32_e32 v3, v211958; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s411959; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s411960; GFX10-NEXT:    s_cbranch_execnz .LBB37_111961; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end11962; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s411963; GFX10-NEXT:    s_setpc_b64 s[30:31]11964;11965; GFX90A-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b_neg:11966; GFX90A:       ; %bb.0:11967; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11968; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v011969; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc11970; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v411971; GFX90A-NEXT:    flat_load_dword v3, v[0:1]11972; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v411973; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v411974; GFX90A-NEXT:    s_mov_b32 s4, 0xffff11975; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s411976; GFX90A-NEXT:    v_not_b32_e32 v5, v511977; GFX90A-NEXT:    s_mov_b64 s[4:5], 011978; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v211979; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff11980; GFX90A-NEXT:  .LBB37_1: ; %atomicrmw.start11981; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=111982; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11983; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11984; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v611985; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 111986; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v211987; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s611988; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211989; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc11990; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111991; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v211992; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc11993; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11994; GFX90A-NEXT:    buffer_wbinvl111995; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311996; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11997; GFX90A-NEXT:    v_mov_b32_e32 v3, v211998; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]11999; GFX90A-NEXT:    s_cbranch_execnz .LBB37_112000; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end12001; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]12002; GFX90A-NEXT:    s_setpc_b64 s[30:31]12003;12004; GFX908-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b_neg:12005; GFX908:       ; %bb.0:12006; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12007; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v012008; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc12009; GFX908-NEXT:    v_and_b32_e32 v0, -4, v412010; GFX908-NEXT:    flat_load_dword v3, v[0:1]12011; GFX908-NEXT:    v_and_b32_e32 v4, 3, v412012; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 3, v412013; GFX908-NEXT:    s_mov_b32 s4, 0xffff12014; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v4, s412015; GFX908-NEXT:    v_not_b32_e32 v5, v512016; GFX908-NEXT:    s_mov_b64 s[4:5], 012017; GFX908-NEXT:    v_lshlrev_b32_e32 v6, 16, v212018; GFX908-NEXT:    s_movk_i32 s6, 0x7fff12019; GFX908-NEXT:  .LBB37_1: ; %atomicrmw.start12020; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=112021; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12022; GFX908-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD12023; GFX908-NEXT:    v_sub_f32_e32 v2, v2, v612024; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 112025; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v212026; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s612027; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212028; GFX908-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc12029; GFX908-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112030; GFX908-NEXT:    v_and_or_b32 v2, v3, v5, v212031; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc12032; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12033; GFX908-NEXT:    buffer_wbinvl112034; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312035; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12036; GFX908-NEXT:    v_mov_b32_e32 v3, v212037; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]12038; GFX908-NEXT:    s_cbranch_execnz .LBB37_112039; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end12040; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]12041; GFX908-NEXT:    s_setpc_b64 s[30:31]12042;12043; GFX8-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b_neg:12044; GFX8:       ; %bb.0:12045; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12046; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0xfffff800, v012047; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc12048; GFX8-NEXT:    v_and_b32_e32 v0, -4, v412049; GFX8-NEXT:    flat_load_dword v3, v[0:1]12050; GFX8-NEXT:    v_and_b32_e32 v4, 3, v412051; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 3, v412052; GFX8-NEXT:    s_mov_b32 s4, 0xffff12053; GFX8-NEXT:    v_lshlrev_b32_e64 v5, v4, s412054; GFX8-NEXT:    v_not_b32_e32 v5, v512055; GFX8-NEXT:    s_mov_b64 s[4:5], 012056; GFX8-NEXT:    v_lshlrev_b32_e32 v6, 16, v212057; GFX8-NEXT:  .LBB37_1: ; %atomicrmw.start12058; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=112059; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12060; GFX8-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD12061; GFX8-NEXT:    v_sub_f32_e32 v2, v2, v612062; GFX8-NEXT:    v_bfe_u32 v8, v2, 16, 112063; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v212064; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v812065; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v212066; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212067; GFX8-NEXT:    v_cndmask_b32_e32 v2, v8, v9, vcc12068; GFX8-NEXT:    v_and_b32_e32 v7, v3, v512069; GFX8-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112070; GFX8-NEXT:    v_or_b32_e32 v2, v7, v212071; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc12072; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12073; GFX8-NEXT:    buffer_wbinvl112074; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312075; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12076; GFX8-NEXT:    v_mov_b32_e32 v3, v212077; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]12078; GFX8-NEXT:    s_cbranch_execnz .LBB37_112079; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end12080; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]12081; GFX8-NEXT:    s_setpc_b64 s[30:31]12082;12083; GFX7-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b_neg:12084; GFX7:       ; %bb.0:12085; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12086; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v012087; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc12088; GFX7-NEXT:    v_and_b32_e32 v0, -4, v412089; GFX7-NEXT:    flat_load_dword v3, v[0:1]12090; GFX7-NEXT:    v_and_b32_e32 v4, 3, v412091; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v412092; GFX7-NEXT:    v_lshl_b32_e32 v5, 0xffff, v412093; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v212094; GFX7-NEXT:    v_not_b32_e32 v5, v512095; GFX7-NEXT:    s_mov_b64 s[4:5], 012096; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v212097; GFX7-NEXT:  .LBB37_1: ; %atomicrmw.start12098; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=112099; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12100; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v312101; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v212102; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v612103; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v212104; GFX7-NEXT:    v_and_b32_e32 v7, v3, v512105; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v212106; GFX7-NEXT:    v_or_b32_e32 v2, v7, v212107; GFX7-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc12108; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12109; GFX7-NEXT:    buffer_wbinvl112110; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312111; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12112; GFX7-NEXT:    v_mov_b32_e32 v3, v212113; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]12114; GFX7-NEXT:    s_cbranch_execnz .LBB37_112115; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end12116; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]12117; GFX7-NEXT:    s_setpc_b64 s[30:31]12118  %gep = getelementptr inbounds bfloat, ptr %ptr, i64 -102412119  %unused = atomicrmw fsub ptr %gep, bfloat %val syncscope("agent") seq_cst12120  ret void12121}12122 12123define bfloat @flat_agent_atomic_fsub_ret_bf16__offset12b_pos__align4(ptr %ptr, bfloat %val) #0 {12124; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_pos__align4:12125; GFX12-TRUE16:       ; %bb.0:12126; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012127; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x012128; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x012129; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x012130; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x012131; GFX12-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204612132; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 012133; GFX12-TRUE16-NEXT:  .LBB38_1: ; %atomicrmw.start12134; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=112135; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012136; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v312137; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.l, 012138; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v2.l12139; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)12140; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v412141; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v312142; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v3.l12143; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)12144; GFX12-TRUE16-NEXT:    v_bfe_u32 v6, v5, 16, 112145; GFX12-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v512146; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v512147; GFX12-TRUE16-NEXT:    v_add3_u32 v6, v6, v5, 0x7fff12148; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)12149; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12150; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v6, v7, vcc_lo12151; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v5.h12152; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12153; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v312154; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x012155; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV12156; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012157; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV12158; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412159; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12160; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s012161; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12162; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012163; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB38_112164; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end12165; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012166; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v3.l12167; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x012168; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]12169;12170; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_pos__align4:12171; GFX12-FAKE16:       ; %bb.0:12172; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x012173; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x012174; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x012175; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x012176; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x012177; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204612178; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v212179; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 012180; GFX12-FAKE16-NEXT:  .LBB38_1: ; %atomicrmw.start12181; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=112182; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x012183; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v312184; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12185; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v412186; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v212187; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)12188; GFX12-FAKE16-NEXT:    v_bfe_u32 v5, v3, 16, 112189; GFX12-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v312190; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v312191; GFX12-FAKE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff12192; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)12193; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12194; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo12195; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v312196; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12197; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v312198; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x012199; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV12200; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x012201; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV12202; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412203; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12204; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s012205; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12206; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012207; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB38_112208; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end12209; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012210; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v312211; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x012212; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]12213;12214; GFX942-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_pos__align4:12215; GFX942:       ; %bb.0:12216; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12217; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:204612218; GFX942-NEXT:    s_mov_b64 s[0:1], 012219; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v212220; GFX942-NEXT:    s_movk_i32 s2, 0x7fff12221; GFX942-NEXT:    s_mov_b32 s3, 0xffff000012222; GFX942-NEXT:  .LBB38_1: ; %atomicrmw.start12223; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=112224; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12225; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v312226; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v412227; GFX942-NEXT:    v_bfe_u32 v5, v2, 16, 112228; GFX942-NEXT:    v_or_b32_e32 v6, 0x400000, v212229; GFX942-NEXT:    v_add3_u32 v5, v5, v2, s212230; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212231; GFX942-NEXT:    s_nop 112232; GFX942-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc12233; GFX942-NEXT:    v_lshrrev_b32_e32 v2, 16, v212234; GFX942-NEXT:    v_and_or_b32 v2, v3, s3, v212235; GFX942-NEXT:    buffer_wbl2 sc112236; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2046 sc012237; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12238; GFX942-NEXT:    buffer_inv sc112239; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312240; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]12241; GFX942-NEXT:    v_mov_b32_e32 v3, v212242; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]12243; GFX942-NEXT:    s_cbranch_execnz .LBB38_112244; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end12245; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]12246; GFX942-NEXT:    v_mov_b32_e32 v0, v212247; GFX942-NEXT:    s_setpc_b64 s[30:31]12248;12249; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_pos__align4:12250; GFX11-TRUE16:       ; %bb.0:12251; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12252; GFX11-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204612253; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 012254; GFX11-TRUE16-NEXT:    .p2align 612255; GFX11-TRUE16-NEXT:  .LBB38_1: ; %atomicrmw.start12256; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=112257; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12258; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v312259; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, 012260; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v2.l12261; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)12262; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v412263; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v312264; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v3.l12265; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)12266; GFX11-TRUE16-NEXT:    v_bfe_u32 v6, v5, 16, 112267; GFX11-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v512268; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v512269; GFX11-TRUE16-NEXT:    v_add3_u32 v6, v6, v5, 0x7fff12270; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12271; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v6, v7, vcc_lo12272; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v5.h12273; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12274; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v312275; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x012276; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 glc12277; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12278; GFX11-TRUE16-NEXT:    buffer_gl1_inv12279; GFX11-TRUE16-NEXT:    buffer_gl0_inv12280; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412281; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s012282; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12283; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012284; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB38_112285; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end12286; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012287; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v3.l12288; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]12289;12290; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_pos__align4:12291; GFX11-FAKE16:       ; %bb.0:12292; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12293; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204612294; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v212295; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 012296; GFX11-FAKE16-NEXT:    .p2align 612297; GFX11-FAKE16-NEXT:  .LBB38_1: ; %atomicrmw.start12298; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=112299; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12300; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v312301; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12302; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v412303; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v212304; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)12305; GFX11-FAKE16-NEXT:    v_bfe_u32 v5, v3, 16, 112306; GFX11-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v312307; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v312308; GFX11-FAKE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff12309; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12310; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo12311; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v312312; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12313; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v312314; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x012315; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 glc12316; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12317; GFX11-FAKE16-NEXT:    buffer_gl1_inv12318; GFX11-FAKE16-NEXT:    buffer_gl0_inv12319; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412320; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s012321; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12322; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012323; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB38_112324; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end12325; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012326; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v312327; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]12328;12329; GFX10-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_pos__align4:12330; GFX10:       ; %bb.0:12331; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12332; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v012333; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, 0, v1, vcc_lo12334; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 16, v212335; GFX10-NEXT:    s_mov_b32 s4, 012336; GFX10-NEXT:    flat_load_dword v0, v[3:4]12337; GFX10-NEXT:  .LBB38_1: ; %atomicrmw.start12338; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=112339; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12340; GFX10-NEXT:    v_mov_b32_e32 v6, v012341; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 16, v612342; GFX10-NEXT:    v_sub_f32_e32 v0, v0, v112343; GFX10-NEXT:    v_bfe_u32 v2, v0, 16, 112344; GFX10-NEXT:    v_or_b32_e32 v5, 0x400000, v012345; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v0, v012346; GFX10-NEXT:    v_add3_u32 v2, v2, v0, 0x7fff12347; GFX10-NEXT:    v_cndmask_b32_e32 v0, v2, v5, vcc_lo12348; GFX10-NEXT:    v_lshrrev_b32_e32 v0, 16, v012349; GFX10-NEXT:    v_and_or_b32 v5, 0xffff0000, v6, v012350; GFX10-NEXT:    s_waitcnt_vscnt null, 0x012351; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc12352; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12353; GFX10-NEXT:    buffer_gl1_inv12354; GFX10-NEXT:    buffer_gl0_inv12355; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v612356; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s412357; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s412358; GFX10-NEXT:    s_cbranch_execnz .LBB38_112359; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end12360; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s412361; GFX10-NEXT:    s_setpc_b64 s[30:31]12362;12363; GFX90A-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_pos__align4:12364; GFX90A:       ; %bb.0:12365; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12366; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:204612367; GFX90A-NEXT:    s_mov_b64 s[4:5], 012368; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v212369; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff12370; GFX90A-NEXT:    s_mov_b32 s7, 0xffff000012371; GFX90A-NEXT:  .LBB38_1: ; %atomicrmw.start12372; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=112373; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12374; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v312375; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v412376; GFX90A-NEXT:    v_bfe_u32 v5, v2, 16, 112377; GFX90A-NEXT:    v_or_b32_e32 v6, 0x400000, v212378; GFX90A-NEXT:    v_add3_u32 v5, v5, v2, s612379; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212380; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc12381; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, 16, v212382; GFX90A-NEXT:    v_and_or_b32 v2, v3, s7, v212383; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2046 glc12384; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12385; GFX90A-NEXT:    buffer_wbinvl112386; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312387; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12388; GFX90A-NEXT:    v_mov_b32_e32 v3, v212389; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]12390; GFX90A-NEXT:    s_cbranch_execnz .LBB38_112391; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end12392; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]12393; GFX90A-NEXT:    v_mov_b32_e32 v0, v212394; GFX90A-NEXT:    s_setpc_b64 s[30:31]12395;12396; GFX908-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_pos__align4:12397; GFX908:       ; %bb.0:12398; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12399; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:204612400; GFX908-NEXT:    s_mov_b64 s[4:5], 012401; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v212402; GFX908-NEXT:    s_movk_i32 s6, 0x7fff12403; GFX908-NEXT:    s_mov_b32 s7, 0xffff000012404; GFX908-NEXT:  .LBB38_1: ; %atomicrmw.start12405; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=112406; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12407; GFX908-NEXT:    v_mov_b32_e32 v4, v312408; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v412409; GFX908-NEXT:    v_sub_f32_e32 v3, v3, v212410; GFX908-NEXT:    v_bfe_u32 v5, v3, 16, 112411; GFX908-NEXT:    v_or_b32_e32 v6, 0x400000, v312412; GFX908-NEXT:    v_add3_u32 v5, v5, v3, s612413; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v3, v312414; GFX908-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc12415; GFX908-NEXT:    v_lshrrev_b32_e32 v3, 16, v312416; GFX908-NEXT:    v_and_or_b32 v3, v4, s7, v312417; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2046 glc12418; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12419; GFX908-NEXT:    buffer_wbinvl112420; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v412421; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12422; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]12423; GFX908-NEXT:    s_cbranch_execnz .LBB38_112424; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end12425; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]12426; GFX908-NEXT:    v_mov_b32_e32 v0, v312427; GFX908-NEXT:    s_setpc_b64 s[30:31]12428;12429; GFX8-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_pos__align4:12430; GFX8:       ; %bb.0:12431; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12432; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v012433; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc12434; GFX8-NEXT:    flat_load_dword v0, v[3:4]12435; GFX8-NEXT:    s_mov_b64 s[4:5], 012436; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 16, v212437; GFX8-NEXT:  .LBB38_1: ; %atomicrmw.start12438; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=112439; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12440; GFX8-NEXT:    v_mov_b32_e32 v6, v012441; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 16, v612442; GFX8-NEXT:    v_sub_f32_e32 v0, v0, v112443; GFX8-NEXT:    v_bfe_u32 v5, v0, 16, 112444; GFX8-NEXT:    v_add_u32_e32 v5, vcc, v5, v012445; GFX8-NEXT:    v_add_u32_e32 v5, vcc, 0x7fff, v512446; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v012447; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v0, v012448; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v612449; GFX8-NEXT:    v_cndmask_b32_e32 v0, v5, v7, vcc12450; GFX8-NEXT:    v_or_b32_sdwa v5, v2, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112451; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc12452; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12453; GFX8-NEXT:    buffer_wbinvl112454; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v612455; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12456; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]12457; GFX8-NEXT:    s_cbranch_execnz .LBB38_112458; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end12459; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]12460; GFX8-NEXT:    s_setpc_b64 s[30:31]12461;12462; GFX7-LABEL: flat_agent_atomic_fsub_ret_bf16__offset12b_pos__align4:12463; GFX7:       ; %bb.0:12464; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12465; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fe, v012466; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc12467; GFX7-NEXT:    flat_load_dword v3, v[0:1]12468; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v212469; GFX7-NEXT:    s_mov_b64 s[4:5], 012470; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v212471; GFX7-NEXT:  .LBB38_1: ; %atomicrmw.start12472; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=112473; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12474; GFX7-NEXT:    v_mov_b32_e32 v4, v312475; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v412476; GFX7-NEXT:    v_sub_f32_e32 v3, v3, v212477; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v412478; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v312479; GFX7-NEXT:    v_or_b32_e32 v3, v5, v312480; GFX7-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc12481; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12482; GFX7-NEXT:    buffer_wbinvl112483; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v412484; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12485; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]12486; GFX7-NEXT:    s_cbranch_execnz .LBB38_112487; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end12488; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]12489; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v312490; GFX7-NEXT:    s_setpc_b64 s[30:31]12491  %gep = getelementptr inbounds bfloat, ptr %ptr, i64 102312492  %result = atomicrmw fsub ptr %gep, bfloat %val syncscope("agent") seq_cst, align 412493  ret bfloat %result12494}12495 12496define void @flat_agent_atomic_fsub_noret_bf16__offset12b__align4_pos(ptr %ptr, bfloat %val) #0 {12497; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b__align4_pos:12498; GFX12-TRUE16:       ; %bb.0:12499; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012500; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x012501; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x012502; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x012503; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x012504; GFX12-TRUE16-NEXT:    flat_load_b32 v4, v[0:1] offset:204612505; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 012506; GFX12-TRUE16-NEXT:  .LBB39_1: ; %atomicrmw.start12507; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=112508; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.l, 012509; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v2.l12510; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012511; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v412512; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)12513; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v312514; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v3.l12515; GFX12-TRUE16-NEXT:    v_bfe_u32 v6, v5, 16, 112516; GFX12-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v512517; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v512518; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)12519; GFX12-TRUE16-NEXT:    v_add3_u32 v6, v6, v5, 0x7fff12520; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)12521; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v6, v7, vcc_lo12522; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12523; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v5.h12524; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v312525; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x012526; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV12527; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012528; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV12529; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412530; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v312531; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12532; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s012533; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12534; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012535; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB39_112536; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end12537; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012538; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x012539; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]12540;12541; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b__align4_pos:12542; GFX12-FAKE16:       ; %bb.0:12543; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x012544; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x012545; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x012546; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x012547; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x012548; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204612549; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v212550; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 012551; GFX12-FAKE16-NEXT:  .LBB39_1: ; %atomicrmw.start12552; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=112553; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x012554; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v312555; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12556; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v412557; GFX12-FAKE16-NEXT:    v_bfe_u32 v5, v2, 16, 112558; GFX12-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v212559; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v212560; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)12561; GFX12-FAKE16-NEXT:    v_add3_u32 v5, v5, v2, 0x7fff12562; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)12563; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc_lo12564; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12565; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v212566; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v3, v212567; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x012568; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV12569; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x012570; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV12571; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v312572; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v212573; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12574; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s012575; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12576; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012577; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB39_112578; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end12579; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012580; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x012581; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]12582;12583; GFX942-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b__align4_pos:12584; GFX942:       ; %bb.0:12585; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12586; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:204612587; GFX942-NEXT:    s_mov_b64 s[0:1], 012588; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v212589; GFX942-NEXT:    s_movk_i32 s2, 0x7fff12590; GFX942-NEXT:    s_mov_b32 s3, 0xffff000012591; GFX942-NEXT:  .LBB39_1: ; %atomicrmw.start12592; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=112593; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12594; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v312595; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v412596; GFX942-NEXT:    v_bfe_u32 v5, v2, 16, 112597; GFX942-NEXT:    v_or_b32_e32 v6, 0x400000, v212598; GFX942-NEXT:    v_add3_u32 v5, v5, v2, s212599; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212600; GFX942-NEXT:    s_nop 112601; GFX942-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc12602; GFX942-NEXT:    v_lshrrev_b32_e32 v2, 16, v212603; GFX942-NEXT:    v_and_or_b32 v2, v3, s3, v212604; GFX942-NEXT:    buffer_wbl2 sc112605; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2046 sc012606; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12607; GFX942-NEXT:    buffer_inv sc112608; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312609; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]12610; GFX942-NEXT:    v_mov_b32_e32 v3, v212611; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]12612; GFX942-NEXT:    s_cbranch_execnz .LBB39_112613; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end12614; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]12615; GFX942-NEXT:    s_setpc_b64 s[30:31]12616;12617; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b__align4_pos:12618; GFX11-TRUE16:       ; %bb.0:12619; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12620; GFX11-TRUE16-NEXT:    flat_load_b32 v4, v[0:1] offset:204612621; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 012622; GFX11-TRUE16-NEXT:    .p2align 612623; GFX11-TRUE16-NEXT:  .LBB39_1: ; %atomicrmw.start12624; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=112625; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, 012626; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v2.l12627; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12628; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v412629; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)12630; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v312631; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v3.l12632; GFX11-TRUE16-NEXT:    v_bfe_u32 v6, v5, 16, 112633; GFX11-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v512634; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v512635; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)12636; GFX11-TRUE16-NEXT:    v_add3_u32 v6, v6, v5, 0x7fff12637; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v6, v7, vcc_lo12638; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12639; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v5.h12640; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v312641; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x012642; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 glc12643; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12644; GFX11-TRUE16-NEXT:    buffer_gl1_inv12645; GFX11-TRUE16-NEXT:    buffer_gl0_inv12646; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412647; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v312648; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s012649; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12650; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012651; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB39_112652; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end12653; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012654; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]12655;12656; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b__align4_pos:12657; GFX11-FAKE16:       ; %bb.0:12658; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12659; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204612660; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v212661; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 012662; GFX11-FAKE16-NEXT:    .p2align 612663; GFX11-FAKE16-NEXT:  .LBB39_1: ; %atomicrmw.start12664; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=112665; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12666; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v312667; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12668; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v412669; GFX11-FAKE16-NEXT:    v_bfe_u32 v5, v2, 16, 112670; GFX11-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v212671; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v212672; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)12673; GFX11-FAKE16-NEXT:    v_add3_u32 v5, v5, v2, 0x7fff12674; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc_lo12675; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12676; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v212677; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v3, v212678; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x012679; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2046 glc12680; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12681; GFX11-FAKE16-NEXT:    buffer_gl1_inv12682; GFX11-FAKE16-NEXT:    buffer_gl0_inv12683; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v312684; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v212685; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s012686; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12687; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012688; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB39_112689; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end12690; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012691; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]12692;12693; GFX10-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b__align4_pos:12694; GFX10:       ; %bb.0:12695; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12696; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fe, v012697; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo12698; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v212699; GFX10-NEXT:    s_mov_b32 s4, 012700; GFX10-NEXT:    flat_load_dword v3, v[0:1]12701; GFX10-NEXT:  .LBB39_1: ; %atomicrmw.start12702; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=112703; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12704; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v312705; GFX10-NEXT:    v_sub_f32_e32 v2, v2, v412706; GFX10-NEXT:    v_bfe_u32 v5, v2, 16, 112707; GFX10-NEXT:    v_or_b32_e32 v6, 0x400000, v212708; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v212709; GFX10-NEXT:    v_add3_u32 v5, v5, v2, 0x7fff12710; GFX10-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc_lo12711; GFX10-NEXT:    v_lshrrev_b32_e32 v2, 16, v212712; GFX10-NEXT:    v_and_or_b32 v2, 0xffff0000, v3, v212713; GFX10-NEXT:    s_waitcnt_vscnt null, 0x012714; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc12715; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12716; GFX10-NEXT:    buffer_gl1_inv12717; GFX10-NEXT:    buffer_gl0_inv12718; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v312719; GFX10-NEXT:    v_mov_b32_e32 v3, v212720; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s412721; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s412722; GFX10-NEXT:    s_cbranch_execnz .LBB39_112723; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end12724; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s412725; GFX10-NEXT:    s_setpc_b64 s[30:31]12726;12727; GFX90A-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b__align4_pos:12728; GFX90A:       ; %bb.0:12729; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12730; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:204612731; GFX90A-NEXT:    s_mov_b64 s[4:5], 012732; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v212733; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff12734; GFX90A-NEXT:    s_mov_b32 s7, 0xffff000012735; GFX90A-NEXT:  .LBB39_1: ; %atomicrmw.start12736; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=112737; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12738; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v312739; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v412740; GFX90A-NEXT:    v_bfe_u32 v5, v2, 16, 112741; GFX90A-NEXT:    v_or_b32_e32 v6, 0x400000, v212742; GFX90A-NEXT:    v_add3_u32 v5, v5, v2, s612743; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212744; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc12745; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, 16, v212746; GFX90A-NEXT:    v_and_or_b32 v2, v3, s7, v212747; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2046 glc12748; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12749; GFX90A-NEXT:    buffer_wbinvl112750; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312751; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12752; GFX90A-NEXT:    v_mov_b32_e32 v3, v212753; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]12754; GFX90A-NEXT:    s_cbranch_execnz .LBB39_112755; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end12756; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]12757; GFX90A-NEXT:    s_setpc_b64 s[30:31]12758;12759; GFX908-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b__align4_pos:12760; GFX908:       ; %bb.0:12761; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12762; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:204612763; GFX908-NEXT:    s_mov_b64 s[4:5], 012764; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v212765; GFX908-NEXT:    s_movk_i32 s6, 0x7fff12766; GFX908-NEXT:    s_mov_b32 s7, 0xffff000012767; GFX908-NEXT:  .LBB39_1: ; %atomicrmw.start12768; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=112769; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12770; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v312771; GFX908-NEXT:    v_sub_f32_e32 v2, v2, v412772; GFX908-NEXT:    v_bfe_u32 v5, v2, 16, 112773; GFX908-NEXT:    v_or_b32_e32 v6, 0x400000, v212774; GFX908-NEXT:    v_add3_u32 v5, v5, v2, s612775; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212776; GFX908-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc12777; GFX908-NEXT:    v_lshrrev_b32_e32 v2, 16, v212778; GFX908-NEXT:    v_and_or_b32 v2, v3, s7, v212779; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2046 glc12780; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12781; GFX908-NEXT:    buffer_wbinvl112782; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312783; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12784; GFX908-NEXT:    v_mov_b32_e32 v3, v212785; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]12786; GFX908-NEXT:    s_cbranch_execnz .LBB39_112787; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end12788; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]12789; GFX908-NEXT:    s_setpc_b64 s[30:31]12790;12791; GFX8-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b__align4_pos:12792; GFX8:       ; %bb.0:12793; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12794; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fe, v012795; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc12796; GFX8-NEXT:    flat_load_dword v3, v[0:1]12797; GFX8-NEXT:    s_mov_b64 s[4:5], 012798; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v212799; GFX8-NEXT:  .LBB39_1: ; %atomicrmw.start12800; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=112801; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12802; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v312803; GFX8-NEXT:    v_sub_f32_e32 v2, v2, v412804; GFX8-NEXT:    v_bfe_u32 v6, v2, 16, 112805; GFX8-NEXT:    v_add_u32_e32 v6, vcc, v6, v212806; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0x7fff, v612807; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v212808; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212809; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v312810; GFX8-NEXT:    v_cndmask_b32_e32 v2, v6, v7, vcc12811; GFX8-NEXT:    v_or_b32_sdwa v2, v5, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112812; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc12813; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12814; GFX8-NEXT:    buffer_wbinvl112815; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312816; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12817; GFX8-NEXT:    v_mov_b32_e32 v3, v212818; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]12819; GFX8-NEXT:    s_cbranch_execnz .LBB39_112820; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end12821; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]12822; GFX8-NEXT:    s_setpc_b64 s[30:31]12823;12824; GFX7-LABEL: flat_agent_atomic_fsub_noret_bf16__offset12b__align4_pos:12825; GFX7:       ; %bb.0:12826; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12827; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fe, v012828; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc12829; GFX7-NEXT:    flat_load_dword v3, v[0:1]12830; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v212831; GFX7-NEXT:    s_mov_b64 s[4:5], 012832; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v212833; GFX7-NEXT:  .LBB39_1: ; %atomicrmw.start12834; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=112835; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12836; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v312837; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v412838; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v312839; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v212840; GFX7-NEXT:    v_or_b32_e32 v2, v5, v212841; GFX7-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc12842; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12843; GFX7-NEXT:    buffer_wbinvl112844; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312845; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12846; GFX7-NEXT:    v_mov_b32_e32 v3, v212847; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]12848; GFX7-NEXT:    s_cbranch_execnz .LBB39_112849; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end12850; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]12851; GFX7-NEXT:    s_setpc_b64 s[30:31]12852  %gep = getelementptr inbounds bfloat, ptr %ptr, i64 102312853  %unused = atomicrmw fsub ptr %gep, bfloat %val syncscope("agent") seq_cst, align 412854  ret void12855}12856 12857define bfloat @flat_system_atomic_fsub_ret_bf16__offset12b_pos(ptr %ptr, bfloat %val) #0 {12858; GFX12-TRUE16-LABEL: flat_system_atomic_fsub_ret_bf16__offset12b_pos:12859; GFX12-TRUE16:       ; %bb.0:12860; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012861; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x012862; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x012863; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x012864; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x012865; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v012866; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)12867; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo12868; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 012869; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v312870; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v312871; GFX12-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]12872; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v312873; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12874; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff12875; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v412876; GFX12-TRUE16-NEXT:  .LBB40_1: ; %atomicrmw.start12877; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=112878; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012879; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v512880; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 012881; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l12882; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)12883; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v612884; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v512885; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)12886; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v712887; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l12888; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 112889; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v512890; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v512891; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)12892; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff12893; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)12894; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo12895; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12896; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h12897; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v712898; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12899; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v512900; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS12901; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x012902; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_SYS12903; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012904; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS12905; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v612906; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12907; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s012908; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12909; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012910; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB40_112911; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end12912; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012913; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v512914; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x012915; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]12916;12917; GFX12-FAKE16-LABEL: flat_system_atomic_fsub_ret_bf16__offset12b_pos:12918; GFX12-FAKE16:       ; %bb.0:12919; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x012920; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x012921; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x012922; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x012923; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x012924; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v012925; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)12926; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo12927; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v212928; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)12929; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v312930; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v312931; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 012932; GFX12-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]12933; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v312934; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff12935; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12936; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v412937; GFX12-FAKE16-NEXT:  .LBB40_1: ; %atomicrmw.start12938; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=112939; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x012940; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v512941; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12942; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v612943; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v512944; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12945; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v212946; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 112947; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v512948; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v512949; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)12950; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff12951; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)12952; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo12953; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12954; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v512955; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v512956; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12957; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v512958; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS12959; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x012960; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_SYS12961; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x012962; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS12963; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v612964; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12965; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s012966; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12967; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012968; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB40_112969; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end12970; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012971; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v512972; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x012973; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]12974;12975; GFX942-LABEL: flat_system_atomic_fsub_ret_bf16__offset12b_pos:12976; GFX942:       ; %bb.0:12977; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12978; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe12979; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]12980; GFX942-NEXT:    v_and_b32_e32 v0, -4, v412981; GFX942-NEXT:    v_mov_b32_e32 v1, v512982; GFX942-NEXT:    flat_load_dword v3, v[0:1]12983; GFX942-NEXT:    v_and_b32_e32 v4, 3, v412984; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v412985; GFX942-NEXT:    s_mov_b32 s0, 0xffff12986; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s012987; GFX942-NEXT:    v_not_b32_e32 v5, v512988; GFX942-NEXT:    s_mov_b64 s[0:1], 012989; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v212990; GFX942-NEXT:    s_movk_i32 s2, 0x7fff12991; GFX942-NEXT:  .LBB40_1: ; %atomicrmw.start12992; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=112993; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12994; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD12995; GFX942-NEXT:    s_nop 012996; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v612997; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 112998; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v212999; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s213000; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213001; GFX942-NEXT:    s_nop 113002; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc13003; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113004; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v213005; GFX942-NEXT:    buffer_wbl2 sc0 sc113006; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc0 sc113007; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13008; GFX942-NEXT:    buffer_inv sc0 sc113009; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313010; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]13011; GFX942-NEXT:    v_mov_b32_e32 v3, v213012; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]13013; GFX942-NEXT:    s_cbranch_execnz .LBB40_113014; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end13015; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]13016; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v4, v213017; GFX942-NEXT:    s_setpc_b64 s[30:31]13018;13019; GFX11-TRUE16-LABEL: flat_system_atomic_fsub_ret_bf16__offset12b_pos:13020; GFX11-TRUE16:       ; %bb.0:13021; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13022; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v013023; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13024; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13025; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 013026; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v313027; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v313028; GFX11-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]13029; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v313030; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13031; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff13032; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v413033; GFX11-TRUE16-NEXT:    .p2align 613034; GFX11-TRUE16-NEXT:  .LBB40_1: ; %atomicrmw.start13035; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=113036; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13037; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v513038; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 013039; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l13040; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)13041; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v613042; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v513043; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)13044; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v713045; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l13046; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 113047; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v513048; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v513049; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)13050; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff13051; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo13052; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13053; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h13054; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v713055; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13056; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v513057; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x013058; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc13059; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13060; GFX11-TRUE16-NEXT:    buffer_gl1_inv13061; GFX11-TRUE16-NEXT:    buffer_gl0_inv13062; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v613063; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s013064; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)13065; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013066; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB40_113067; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end13068; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013069; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v513070; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]13071;13072; GFX11-FAKE16-LABEL: flat_system_atomic_fsub_ret_bf16__offset12b_pos:13073; GFX11-FAKE16:       ; %bb.0:13074; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13075; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v013076; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)13077; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13078; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v213079; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v313080; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v313081; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 013082; GFX11-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]13083; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v313084; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13085; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff13086; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v413087; GFX11-FAKE16-NEXT:    .p2align 613088; GFX11-FAKE16-NEXT:  .LBB40_1: ; %atomicrmw.start13089; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=113090; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13091; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v513092; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13093; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v613094; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v513095; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13096; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v213097; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 113098; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v513099; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v513100; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)13101; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff13102; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo13103; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13104; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v513105; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v513106; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13107; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v513108; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x013109; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc13110; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13111; GFX11-FAKE16-NEXT:    buffer_gl1_inv13112; GFX11-FAKE16-NEXT:    buffer_gl0_inv13113; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v613114; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s013115; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)13116; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013117; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB40_113118; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end13119; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013120; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v513121; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]13122;13123; GFX10-LABEL: flat_system_atomic_fsub_ret_bf16__offset12b_pos:13124; GFX10:       ; %bb.0:13125; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13126; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v013127; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo13128; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v213129; GFX10-NEXT:    v_and_b32_e32 v0, -4, v313130; GFX10-NEXT:    v_and_b32_e32 v3, 3, v313131; GFX10-NEXT:    s_mov_b32 s4, 013132; GFX10-NEXT:    flat_load_dword v5, v[0:1]13133; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v313134; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff13135; GFX10-NEXT:    v_not_b32_e32 v4, v413136; GFX10-NEXT:  .LBB40_1: ; %atomicrmw.start13137; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=113138; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13139; GFX10-NEXT:    v_mov_b32_e32 v6, v513140; GFX10-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13141; GFX10-NEXT:    v_sub_f32_e32 v5, v5, v213142; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 113143; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v513144; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v513145; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff13146; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo13147; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113148; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v513149; GFX10-NEXT:    s_waitcnt_vscnt null, 0x013150; GFX10-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc13151; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13152; GFX10-NEXT:    buffer_gl1_inv13153; GFX10-NEXT:    buffer_gl0_inv13154; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v613155; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s413156; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s413157; GFX10-NEXT:    s_cbranch_execnz .LBB40_113158; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end13159; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s413160; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v513161; GFX10-NEXT:    s_setpc_b64 s[30:31]13162;13163; GFX90A-LABEL: flat_system_atomic_fsub_ret_bf16__offset12b_pos:13164; GFX90A:       ; %bb.0:13165; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13166; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v013167; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc13168; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v413169; GFX90A-NEXT:    flat_load_dword v3, v[0:1]13170; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v413171; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v413172; GFX90A-NEXT:    s_mov_b32 s4, 0xffff13173; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s413174; GFX90A-NEXT:    v_not_b32_e32 v5, v513175; GFX90A-NEXT:    s_mov_b64 s[4:5], 013176; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v213177; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff13178; GFX90A-NEXT:  .LBB40_1: ; %atomicrmw.start13179; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=113180; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13181; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13182; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v613183; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 113184; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v213185; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s613186; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213187; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc13188; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113189; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v213190; GFX90A-NEXT:    buffer_wbl213191; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc13192; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13193; GFX90A-NEXT:    buffer_invl213194; GFX90A-NEXT:    buffer_wbinvl113195; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313196; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13197; GFX90A-NEXT:    v_mov_b32_e32 v3, v213198; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]13199; GFX90A-NEXT:    s_cbranch_execnz .LBB40_113200; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end13201; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]13202; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v4, v213203; GFX90A-NEXT:    s_setpc_b64 s[30:31]13204;13205; GFX908-LABEL: flat_system_atomic_fsub_ret_bf16__offset12b_pos:13206; GFX908:       ; %bb.0:13207; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13208; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v013209; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc13210; GFX908-NEXT:    v_and_b32_e32 v0, -4, v313211; GFX908-NEXT:    flat_load_dword v5, v[0:1]13212; GFX908-NEXT:    v_and_b32_e32 v3, 3, v313213; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v313214; GFX908-NEXT:    s_mov_b32 s4, 0xffff13215; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s413216; GFX908-NEXT:    v_not_b32_e32 v4, v413217; GFX908-NEXT:    s_mov_b64 s[4:5], 013218; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v213219; GFX908-NEXT:    s_movk_i32 s6, 0x7fff13220; GFX908-NEXT:  .LBB40_1: ; %atomicrmw.start13221; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=113222; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13223; GFX908-NEXT:    v_mov_b32_e32 v6, v513224; GFX908-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13225; GFX908-NEXT:    v_sub_f32_e32 v5, v5, v213226; GFX908-NEXT:    v_bfe_u32 v7, v5, 16, 113227; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v513228; GFX908-NEXT:    v_add3_u32 v7, v7, v5, s613229; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v513230; GFX908-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc13231; GFX908-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113232; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v513233; GFX908-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc13234; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13235; GFX908-NEXT:    buffer_wbinvl113236; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v613237; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13238; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]13239; GFX908-NEXT:    s_cbranch_execnz .LBB40_113240; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end13241; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]13242; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v513243; GFX908-NEXT:    s_setpc_b64 s[30:31]13244;13245; GFX8-LABEL: flat_system_atomic_fsub_ret_bf16__offset12b_pos:13246; GFX8:       ; %bb.0:13247; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13248; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v013249; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc13250; GFX8-NEXT:    v_and_b32_e32 v0, -4, v313251; GFX8-NEXT:    flat_load_dword v5, v[0:1]13252; GFX8-NEXT:    v_and_b32_e32 v3, 3, v313253; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v313254; GFX8-NEXT:    s_mov_b32 s4, 0xffff13255; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s413256; GFX8-NEXT:    v_not_b32_e32 v4, v413257; GFX8-NEXT:    s_mov_b64 s[4:5], 013258; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v213259; GFX8-NEXT:  .LBB40_1: ; %atomicrmw.start13260; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=113261; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13262; GFX8-NEXT:    v_mov_b32_e32 v6, v513263; GFX8-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13264; GFX8-NEXT:    v_sub_f32_e32 v5, v5, v213265; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 113266; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v513267; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v813268; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v513269; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v513270; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc13271; GFX8-NEXT:    v_and_b32_e32 v7, v6, v413272; GFX8-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113273; GFX8-NEXT:    v_or_b32_e32 v5, v7, v513274; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc13275; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13276; GFX8-NEXT:    buffer_wbinvl113277; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v613278; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13279; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]13280; GFX8-NEXT:    s_cbranch_execnz .LBB40_113281; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end13282; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]13283; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v513284; GFX8-NEXT:    s_setpc_b64 s[30:31]13285;13286; GFX7-LABEL: flat_system_atomic_fsub_ret_bf16__offset12b_pos:13287; GFX7:       ; %bb.0:13288; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13289; GFX7-NEXT:    v_add_i32_e32 v3, vcc, 0x7fe, v013290; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc13291; GFX7-NEXT:    v_and_b32_e32 v0, -4, v313292; GFX7-NEXT:    flat_load_dword v5, v[0:1]13293; GFX7-NEXT:    v_and_b32_e32 v3, 3, v313294; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 3, v313295; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v313296; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v213297; GFX7-NEXT:    v_not_b32_e32 v4, v413298; GFX7-NEXT:    s_mov_b64 s[4:5], 013299; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v213300; GFX7-NEXT:  .LBB40_1: ; %atomicrmw.start13301; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=113302; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13303; GFX7-NEXT:    v_mov_b32_e32 v6, v513304; GFX7-NEXT:    v_lshrrev_b32_e32 v5, v3, v613305; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v513306; GFX7-NEXT:    v_sub_f32_e32 v5, v5, v213307; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v513308; GFX7-NEXT:    v_and_b32_e32 v7, v6, v413309; GFX7-NEXT:    v_lshlrev_b32_e32 v5, v3, v513310; GFX7-NEXT:    v_or_b32_e32 v5, v7, v513311; GFX7-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc13312; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13313; GFX7-NEXT:    buffer_wbinvl113314; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v613315; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13316; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]13317; GFX7-NEXT:    s_cbranch_execnz .LBB40_113318; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end13319; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]13320; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v3, v513321; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v013322; GFX7-NEXT:    s_setpc_b64 s[30:31]13323  %gep = getelementptr inbounds bfloat, ptr %ptr, i64 102313324  %result = atomicrmw fsub ptr %gep, bfloat %val seq_cst13325  ret bfloat %result13326}13327 13328define void @flat_system_atomic_fsub_noret_bf16__offset12b_pos(ptr %ptr, bfloat %val) #0 {13329; GFX12-TRUE16-LABEL: flat_system_atomic_fsub_noret_bf16__offset12b_pos:13330; GFX12-TRUE16:       ; %bb.0:13331; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x013332; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x013333; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x013334; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x013335; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x013336; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v013337; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)13338; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13339; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 013340; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v313341; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v313342; GFX12-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]13343; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v313344; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13345; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff13346; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v313347; GFX12-TRUE16-NEXT:  .LBB41_1: ; %atomicrmw.start13348; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=113349; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x013350; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v413351; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 013352; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l13353; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)13354; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v313355; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v713356; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l13357; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)13358; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 113359; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v313360; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v313361; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff13362; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)13363; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13364; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo13365; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h13366; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13367; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v713368; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v313369; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS13370; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x013371; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_SYS13372; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x013373; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS13374; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v413375; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v313376; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13377; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s013378; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13379; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013380; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB41_113381; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end13382; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013383; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x013384; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]13385;13386; GFX12-FAKE16-LABEL: flat_system_atomic_fsub_noret_bf16__offset12b_pos:13387; GFX12-FAKE16:       ; %bb.0:13388; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x013389; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x013390; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x013391; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x013392; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x013393; GFX12-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v013394; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)13395; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13396; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v213397; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)13398; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v413399; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v413400; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 013401; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]13402; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v413403; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff13404; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13405; GFX12-FAKE16-NEXT:    v_not_b32_e32 v5, v513406; GFX12-FAKE16-NEXT:  .LBB41_1: ; %atomicrmw.start13407; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=113408; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x013409; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v313410; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13411; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v213412; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v613413; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)13414; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 113415; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v213416; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v213417; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff13418; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)13419; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13420; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo13421; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v213422; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13423; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v213424; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v213425; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS13426; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x013427; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_SYS13428; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x013429; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS13430; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v313431; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v213432; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13433; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s013434; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13435; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013436; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB41_113437; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end13438; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013439; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x013440; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]13441;13442; GFX942-LABEL: flat_system_atomic_fsub_noret_bf16__offset12b_pos:13443; GFX942:       ; %bb.0:13444; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13445; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe13446; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]13447; GFX942-NEXT:    v_and_b32_e32 v0, -4, v413448; GFX942-NEXT:    v_mov_b32_e32 v1, v513449; GFX942-NEXT:    flat_load_dword v3, v[0:1]13450; GFX942-NEXT:    v_and_b32_e32 v4, 3, v413451; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v413452; GFX942-NEXT:    s_mov_b32 s0, 0xffff13453; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s013454; GFX942-NEXT:    v_not_b32_e32 v5, v513455; GFX942-NEXT:    s_mov_b64 s[0:1], 013456; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v213457; GFX942-NEXT:    s_movk_i32 s2, 0x7fff13458; GFX942-NEXT:  .LBB41_1: ; %atomicrmw.start13459; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=113460; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13461; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13462; GFX942-NEXT:    s_nop 013463; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v613464; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 113465; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v213466; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s213467; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213468; GFX942-NEXT:    s_nop 113469; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc13470; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113471; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v213472; GFX942-NEXT:    buffer_wbl2 sc0 sc113473; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc0 sc113474; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13475; GFX942-NEXT:    buffer_inv sc0 sc113476; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313477; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]13478; GFX942-NEXT:    v_mov_b32_e32 v3, v213479; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]13480; GFX942-NEXT:    s_cbranch_execnz .LBB41_113481; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end13482; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]13483; GFX942-NEXT:    s_setpc_b64 s[30:31]13484;13485; GFX11-TRUE16-LABEL: flat_system_atomic_fsub_noret_bf16__offset12b_pos:13486; GFX11-TRUE16:       ; %bb.0:13487; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13488; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v013489; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13490; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13491; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 013492; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v313493; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v313494; GFX11-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]13495; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v313496; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13497; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff13498; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v313499; GFX11-TRUE16-NEXT:    .p2align 613500; GFX11-TRUE16-NEXT:  .LBB41_1: ; %atomicrmw.start13501; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=113502; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13503; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v413504; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 013505; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l13506; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)13507; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v313508; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v713509; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l13510; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)13511; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 113512; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v313513; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v313514; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff13515; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13516; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo13517; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h13518; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13519; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v713520; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v313521; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x013522; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc13523; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13524; GFX11-TRUE16-NEXT:    buffer_gl1_inv13525; GFX11-TRUE16-NEXT:    buffer_gl0_inv13526; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v413527; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v313528; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s013529; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)13530; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013531; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB41_113532; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end13533; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013534; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]13535;13536; GFX11-FAKE16-LABEL: flat_system_atomic_fsub_noret_bf16__offset12b_pos:13537; GFX11-FAKE16:       ; %bb.0:13538; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13539; GFX11-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v013540; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)13541; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13542; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v213543; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v413544; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v413545; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 013546; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]13547; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v413548; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13549; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff13550; GFX11-FAKE16-NEXT:    v_not_b32_e32 v5, v513551; GFX11-FAKE16-NEXT:    .p2align 613552; GFX11-FAKE16-NEXT:  .LBB41_1: ; %atomicrmw.start13553; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=113554; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13555; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v313556; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13557; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v213558; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v613559; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)13560; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 113561; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v213562; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v213563; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff13564; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13565; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo13566; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v213567; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13568; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v213569; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v213570; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x013571; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] glc13572; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13573; GFX11-FAKE16-NEXT:    buffer_gl1_inv13574; GFX11-FAKE16-NEXT:    buffer_gl0_inv13575; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v313576; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v213577; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s013578; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)13579; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013580; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB41_113581; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end13582; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013583; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]13584;13585; GFX10-LABEL: flat_system_atomic_fsub_noret_bf16__offset12b_pos:13586; GFX10:       ; %bb.0:13587; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13588; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v013589; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo13590; GFX10-NEXT:    v_lshlrev_b32_e32 v6, 16, v213591; GFX10-NEXT:    v_and_b32_e32 v0, -4, v413592; GFX10-NEXT:    v_and_b32_e32 v4, 3, v413593; GFX10-NEXT:    s_mov_b32 s4, 013594; GFX10-NEXT:    flat_load_dword v3, v[0:1]13595; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 3, v413596; GFX10-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff13597; GFX10-NEXT:    v_not_b32_e32 v5, v513598; GFX10-NEXT:  .LBB41_1: ; %atomicrmw.start13599; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=113600; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13601; GFX10-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13602; GFX10-NEXT:    v_sub_f32_e32 v2, v2, v613603; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 113604; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v213605; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v213606; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff13607; GFX10-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo13608; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113609; GFX10-NEXT:    v_and_or_b32 v2, v3, v5, v213610; GFX10-NEXT:    s_waitcnt_vscnt null, 0x013611; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc13612; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13613; GFX10-NEXT:    buffer_gl1_inv13614; GFX10-NEXT:    buffer_gl0_inv13615; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v313616; GFX10-NEXT:    v_mov_b32_e32 v3, v213617; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s413618; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s413619; GFX10-NEXT:    s_cbranch_execnz .LBB41_113620; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end13621; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s413622; GFX10-NEXT:    s_setpc_b64 s[30:31]13623;13624; GFX90A-LABEL: flat_system_atomic_fsub_noret_bf16__offset12b_pos:13625; GFX90A:       ; %bb.0:13626; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13627; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v013628; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc13629; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v413630; GFX90A-NEXT:    flat_load_dword v3, v[0:1]13631; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v413632; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v413633; GFX90A-NEXT:    s_mov_b32 s4, 0xffff13634; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s413635; GFX90A-NEXT:    v_not_b32_e32 v5, v513636; GFX90A-NEXT:    s_mov_b64 s[4:5], 013637; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v213638; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff13639; GFX90A-NEXT:  .LBB41_1: ; %atomicrmw.start13640; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=113641; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13642; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13643; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v613644; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 113645; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v213646; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s613647; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213648; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc13649; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113650; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v213651; GFX90A-NEXT:    buffer_wbl213652; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc13653; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13654; GFX90A-NEXT:    buffer_invl213655; GFX90A-NEXT:    buffer_wbinvl113656; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313657; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13658; GFX90A-NEXT:    v_mov_b32_e32 v3, v213659; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]13660; GFX90A-NEXT:    s_cbranch_execnz .LBB41_113661; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end13662; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]13663; GFX90A-NEXT:    s_setpc_b64 s[30:31]13664;13665; GFX908-LABEL: flat_system_atomic_fsub_noret_bf16__offset12b_pos:13666; GFX908:       ; %bb.0:13667; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13668; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v013669; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc13670; GFX908-NEXT:    v_and_b32_e32 v0, -4, v413671; GFX908-NEXT:    flat_load_dword v3, v[0:1]13672; GFX908-NEXT:    v_and_b32_e32 v4, 3, v413673; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 3, v413674; GFX908-NEXT:    s_mov_b32 s4, 0xffff13675; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v4, s413676; GFX908-NEXT:    v_not_b32_e32 v5, v513677; GFX908-NEXT:    s_mov_b64 s[4:5], 013678; GFX908-NEXT:    v_lshlrev_b32_e32 v6, 16, v213679; GFX908-NEXT:    s_movk_i32 s6, 0x7fff13680; GFX908-NEXT:  .LBB41_1: ; %atomicrmw.start13681; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=113682; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13683; GFX908-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13684; GFX908-NEXT:    v_sub_f32_e32 v2, v2, v613685; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 113686; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v213687; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s613688; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213689; GFX908-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc13690; GFX908-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113691; GFX908-NEXT:    v_and_or_b32 v2, v3, v5, v213692; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc13693; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13694; GFX908-NEXT:    buffer_wbinvl113695; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313696; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13697; GFX908-NEXT:    v_mov_b32_e32 v3, v213698; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]13699; GFX908-NEXT:    s_cbranch_execnz .LBB41_113700; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end13701; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]13702; GFX908-NEXT:    s_setpc_b64 s[30:31]13703;13704; GFX8-LABEL: flat_system_atomic_fsub_noret_bf16__offset12b_pos:13705; GFX8:       ; %bb.0:13706; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13707; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0x7fe, v013708; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc13709; GFX8-NEXT:    v_and_b32_e32 v0, -4, v413710; GFX8-NEXT:    flat_load_dword v3, v[0:1]13711; GFX8-NEXT:    v_and_b32_e32 v4, 3, v413712; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 3, v413713; GFX8-NEXT:    s_mov_b32 s4, 0xffff13714; GFX8-NEXT:    v_lshlrev_b32_e64 v5, v4, s413715; GFX8-NEXT:    v_not_b32_e32 v5, v513716; GFX8-NEXT:    s_mov_b64 s[4:5], 013717; GFX8-NEXT:    v_lshlrev_b32_e32 v6, 16, v213718; GFX8-NEXT:  .LBB41_1: ; %atomicrmw.start13719; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=113720; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13721; GFX8-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13722; GFX8-NEXT:    v_sub_f32_e32 v2, v2, v613723; GFX8-NEXT:    v_bfe_u32 v8, v2, 16, 113724; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v213725; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v813726; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v213727; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213728; GFX8-NEXT:    v_cndmask_b32_e32 v2, v8, v9, vcc13729; GFX8-NEXT:    v_and_b32_e32 v7, v3, v513730; GFX8-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113731; GFX8-NEXT:    v_or_b32_e32 v2, v7, v213732; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc13733; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13734; GFX8-NEXT:    buffer_wbinvl113735; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313736; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13737; GFX8-NEXT:    v_mov_b32_e32 v3, v213738; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]13739; GFX8-NEXT:    s_cbranch_execnz .LBB41_113740; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end13741; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]13742; GFX8-NEXT:    s_setpc_b64 s[30:31]13743;13744; GFX7-LABEL: flat_system_atomic_fsub_noret_bf16__offset12b_pos:13745; GFX7:       ; %bb.0:13746; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13747; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v013748; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc13749; GFX7-NEXT:    v_and_b32_e32 v0, -4, v413750; GFX7-NEXT:    flat_load_dword v3, v[0:1]13751; GFX7-NEXT:    v_and_b32_e32 v4, 3, v413752; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v413753; GFX7-NEXT:    v_lshl_b32_e32 v5, 0xffff, v413754; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v213755; GFX7-NEXT:    v_not_b32_e32 v5, v513756; GFX7-NEXT:    s_mov_b64 s[4:5], 013757; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v213758; GFX7-NEXT:  .LBB41_1: ; %atomicrmw.start13759; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=113760; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13761; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v313762; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v213763; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v613764; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v213765; GFX7-NEXT:    v_and_b32_e32 v7, v3, v513766; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v213767; GFX7-NEXT:    v_or_b32_e32 v2, v7, v213768; GFX7-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc13769; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13770; GFX7-NEXT:    buffer_wbinvl113771; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313772; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13773; GFX7-NEXT:    v_mov_b32_e32 v3, v213774; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]13775; GFX7-NEXT:    s_cbranch_execnz .LBB41_113776; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end13777; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]13778; GFX7-NEXT:    s_setpc_b64 s[30:31]13779  %gep = getelementptr inbounds bfloat, ptr %ptr, i64 102313780  %unused = atomicrmw fsub ptr %gep, bfloat %val seq_cst13781  ret void13782}13783 13784; --------------------------------------------------------------------13785; <2 x half>13786; --------------------------------------------------------------------13787 13788define <2 x half> @flat_agent_atomic_fsub_ret_v2f16(ptr %ptr, <2 x half> %val) #0 {13789; GFX12-LABEL: flat_agent_atomic_fsub_ret_v2f16:13790; GFX12:       ; %bb.0:13791; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x013792; GFX12-NEXT:    s_wait_expcnt 0x013793; GFX12-NEXT:    s_wait_samplecnt 0x013794; GFX12-NEXT:    s_wait_bvhcnt 0x013795; GFX12-NEXT:    s_wait_kmcnt 0x013796; GFX12-NEXT:    flat_load_b32 v3, v[0:1]13797; GFX12-NEXT:    s_mov_b32 s0, 013798; GFX12-NEXT:  .LBB42_1: ; %atomicrmw.start13799; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=113800; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x013801; GFX12-NEXT:    v_mov_b32_e32 v4, v313802; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)13803; GFX12-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]13804; GFX12-NEXT:    s_wait_storecnt 0x013805; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV13806; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x013807; GFX12-NEXT:    global_inv scope:SCOPE_DEV13808; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v413809; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)13810; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s013811; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)13812; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013813; GFX12-NEXT:    s_cbranch_execnz .LBB42_113814; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end13815; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s013816; GFX12-NEXT:    v_mov_b32_e32 v0, v313817; GFX12-NEXT:    s_wait_loadcnt 0x013818; GFX12-NEXT:    s_setpc_b64 s[30:31]13819;13820; GFX942-LABEL: flat_agent_atomic_fsub_ret_v2f16:13821; GFX942:       ; %bb.0:13822; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13823; GFX942-NEXT:    flat_load_dword v5, v[0:1]13824; GFX942-NEXT:    s_mov_b64 s[0:1], 013825; GFX942-NEXT:  .LBB42_1: ; %atomicrmw.start13826; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=113827; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13828; GFX942-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]13829; GFX942-NEXT:    buffer_wbl2 sc113830; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] sc013831; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13832; GFX942-NEXT:    buffer_inv sc113833; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v513834; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]13835; GFX942-NEXT:    v_mov_b32_e32 v5, v313836; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]13837; GFX942-NEXT:    s_cbranch_execnz .LBB42_113838; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end13839; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]13840; GFX942-NEXT:    v_mov_b32_e32 v0, v313841; GFX942-NEXT:    s_setpc_b64 s[30:31]13842;13843; GFX11-LABEL: flat_agent_atomic_fsub_ret_v2f16:13844; GFX11:       ; %bb.0:13845; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13846; GFX11-NEXT:    flat_load_b32 v3, v[0:1]13847; GFX11-NEXT:    s_mov_b32 s0, 013848; GFX11-NEXT:  .LBB42_1: ; %atomicrmw.start13849; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=113850; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13851; GFX11-NEXT:    v_mov_b32_e32 v4, v313852; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)13853; GFX11-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]13854; GFX11-NEXT:    s_waitcnt_vscnt null, 0x013855; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc13856; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13857; GFX11-NEXT:    buffer_gl1_inv13858; GFX11-NEXT:    buffer_gl0_inv13859; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v413860; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s013861; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)13862; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013863; GFX11-NEXT:    s_cbranch_execnz .LBB42_113864; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end13865; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s013866; GFX11-NEXT:    v_mov_b32_e32 v0, v313867; GFX11-NEXT:    s_setpc_b64 s[30:31]13868;13869; GFX10-LABEL: flat_agent_atomic_fsub_ret_v2f16:13870; GFX10:       ; %bb.0:13871; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13872; GFX10-NEXT:    flat_load_dword v3, v[0:1]13873; GFX10-NEXT:    s_mov_b32 s4, 013874; GFX10-NEXT:  .LBB42_1: ; %atomicrmw.start13875; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=113876; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13877; GFX10-NEXT:    v_mov_b32_e32 v4, v313878; GFX10-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]13879; GFX10-NEXT:    s_waitcnt_vscnt null, 0x013880; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc13881; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13882; GFX10-NEXT:    buffer_gl1_inv13883; GFX10-NEXT:    buffer_gl0_inv13884; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v413885; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s413886; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s413887; GFX10-NEXT:    s_cbranch_execnz .LBB42_113888; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end13889; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s413890; GFX10-NEXT:    v_mov_b32_e32 v0, v313891; GFX10-NEXT:    s_setpc_b64 s[30:31]13892;13893; GFX90A-LABEL: flat_agent_atomic_fsub_ret_v2f16:13894; GFX90A:       ; %bb.0:13895; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13896; GFX90A-NEXT:    flat_load_dword v5, v[0:1]13897; GFX90A-NEXT:    s_mov_b64 s[4:5], 013898; GFX90A-NEXT:  .LBB42_1: ; %atomicrmw.start13899; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=113900; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13901; GFX90A-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]13902; GFX90A-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] glc13903; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13904; GFX90A-NEXT:    buffer_wbinvl113905; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v513906; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13907; GFX90A-NEXT:    v_mov_b32_e32 v5, v313908; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]13909; GFX90A-NEXT:    s_cbranch_execnz .LBB42_113910; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end13911; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]13912; GFX90A-NEXT:    v_mov_b32_e32 v0, v313913; GFX90A-NEXT:    s_setpc_b64 s[30:31]13914;13915; GFX908-LABEL: flat_agent_atomic_fsub_ret_v2f16:13916; GFX908:       ; %bb.0:13917; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13918; GFX908-NEXT:    flat_load_dword v3, v[0:1]13919; GFX908-NEXT:    s_mov_b64 s[4:5], 013920; GFX908-NEXT:  .LBB42_1: ; %atomicrmw.start13921; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=113922; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13923; GFX908-NEXT:    v_mov_b32_e32 v4, v313924; GFX908-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]13925; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc13926; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13927; GFX908-NEXT:    buffer_wbinvl113928; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v413929; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13930; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]13931; GFX908-NEXT:    s_cbranch_execnz .LBB42_113932; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end13933; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]13934; GFX908-NEXT:    v_mov_b32_e32 v0, v313935; GFX908-NEXT:    s_setpc_b64 s[30:31]13936;13937; GFX8-LABEL: flat_agent_atomic_fsub_ret_v2f16:13938; GFX8:       ; %bb.0:13939; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13940; GFX8-NEXT:    flat_load_dword v3, v[0:1]13941; GFX8-NEXT:    s_mov_b64 s[4:5], 013942; GFX8-NEXT:  .LBB42_1: ; %atomicrmw.start13943; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=113944; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13945; GFX8-NEXT:    v_mov_b32_e32 v4, v313946; GFX8-NEXT:    v_sub_f16_sdwa v3, v4, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_113947; GFX8-NEXT:    v_sub_f16_e32 v5, v4, v213948; GFX8-NEXT:    v_or_b32_e32 v3, v5, v313949; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc13950; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13951; GFX8-NEXT:    buffer_wbinvl113952; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v413953; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13954; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]13955; GFX8-NEXT:    s_cbranch_execnz .LBB42_113956; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end13957; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]13958; GFX8-NEXT:    v_mov_b32_e32 v0, v313959; GFX8-NEXT:    s_setpc_b64 s[30:31]13960;13961; GFX7-LABEL: flat_agent_atomic_fsub_ret_v2f16:13962; GFX7:       ; %bb.0:13963; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13964; GFX7-NEXT:    flat_load_dword v5, v[0:1]13965; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v313966; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v213967; GFX7-NEXT:    s_mov_b64 s[4:5], 013968; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v313969; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13970; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v513971; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v513972; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v313973; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v613974; GFX7-NEXT:  .LBB42_1: ; %atomicrmw.start13975; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=113976; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v313977; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v213978; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v313979; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v213980; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v313981; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v413982; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v513983; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v613984; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v713985; GFX7-NEXT:    v_or_b32_e32 v7, v2, v313986; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v613987; GFX7-NEXT:    v_or_b32_e32 v6, v8, v213988; GFX7-NEXT:    flat_atomic_cmpswap v6, v[0:1], v[6:7] glc13989; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13990; GFX7-NEXT:    buffer_wbinvl113991; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v613992; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v613993; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v313994; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v713995; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13996; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]13997; GFX7-NEXT:    s_cbranch_execnz .LBB42_113998; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end13999; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]14000; GFX7-NEXT:    v_mov_b32_e32 v0, v214001; GFX7-NEXT:    v_mov_b32_e32 v1, v314002; GFX7-NEXT:    s_setpc_b64 s[30:31]14003  %result = atomicrmw fsub ptr %ptr, <2 x half> %val syncscope("agent") seq_cst14004  ret <2 x half> %result14005}14006 14007define <2 x half> @flat_agent_atomic_fsub_ret_v2f16__offset12b_pos(ptr %ptr, <2 x half> %val) #0 {14008; GFX12-LABEL: flat_agent_atomic_fsub_ret_v2f16__offset12b_pos:14009; GFX12:       ; %bb.0:14010; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014011; GFX12-NEXT:    s_wait_expcnt 0x014012; GFX12-NEXT:    s_wait_samplecnt 0x014013; GFX12-NEXT:    s_wait_bvhcnt 0x014014; GFX12-NEXT:    s_wait_kmcnt 0x014015; GFX12-NEXT:    flat_load_b32 v3, v[0:1] offset:204414016; GFX12-NEXT:    s_mov_b32 s0, 014017; GFX12-NEXT:  .LBB43_1: ; %atomicrmw.start14018; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=114019; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014020; GFX12-NEXT:    v_mov_b32_e32 v4, v314021; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)14022; GFX12-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14023; GFX12-NEXT:    s_wait_storecnt 0x014024; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV14025; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014026; GFX12-NEXT:    global_inv scope:SCOPE_DEV14027; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414028; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14029; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s014030; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14031; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014032; GFX12-NEXT:    s_cbranch_execnz .LBB43_114033; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end14034; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s014035; GFX12-NEXT:    v_mov_b32_e32 v0, v314036; GFX12-NEXT:    s_wait_loadcnt 0x014037; GFX12-NEXT:    s_setpc_b64 s[30:31]14038;14039; GFX942-LABEL: flat_agent_atomic_fsub_ret_v2f16__offset12b_pos:14040; GFX942:       ; %bb.0:14041; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14042; GFX942-NEXT:    flat_load_dword v5, v[0:1] offset:204414043; GFX942-NEXT:    s_mov_b64 s[0:1], 014044; GFX942-NEXT:  .LBB43_1: ; %atomicrmw.start14045; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=114046; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14047; GFX942-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]14048; GFX942-NEXT:    buffer_wbl2 sc114049; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 sc014050; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14051; GFX942-NEXT:    buffer_inv sc114052; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v514053; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]14054; GFX942-NEXT:    v_mov_b32_e32 v5, v314055; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]14056; GFX942-NEXT:    s_cbranch_execnz .LBB43_114057; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end14058; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]14059; GFX942-NEXT:    v_mov_b32_e32 v0, v314060; GFX942-NEXT:    s_setpc_b64 s[30:31]14061;14062; GFX11-LABEL: flat_agent_atomic_fsub_ret_v2f16__offset12b_pos:14063; GFX11:       ; %bb.0:14064; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14065; GFX11-NEXT:    flat_load_b32 v3, v[0:1] offset:204414066; GFX11-NEXT:    s_mov_b32 s0, 014067; GFX11-NEXT:  .LBB43_1: ; %atomicrmw.start14068; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=114069; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14070; GFX11-NEXT:    v_mov_b32_e32 v4, v314071; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)14072; GFX11-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14073; GFX11-NEXT:    s_waitcnt_vscnt null, 0x014074; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 glc14075; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14076; GFX11-NEXT:    buffer_gl1_inv14077; GFX11-NEXT:    buffer_gl0_inv14078; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414079; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s014080; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)14081; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014082; GFX11-NEXT:    s_cbranch_execnz .LBB43_114083; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end14084; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s014085; GFX11-NEXT:    v_mov_b32_e32 v0, v314086; GFX11-NEXT:    s_setpc_b64 s[30:31]14087;14088; GFX10-LABEL: flat_agent_atomic_fsub_ret_v2f16__offset12b_pos:14089; GFX10:       ; %bb.0:14090; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14091; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fc, v014092; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, 0, v1, vcc_lo14093; GFX10-NEXT:    s_mov_b32 s4, 014094; GFX10-NEXT:    flat_load_dword v0, v[3:4]14095; GFX10-NEXT:  .LBB43_1: ; %atomicrmw.start14096; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=114097; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14098; GFX10-NEXT:    v_mov_b32_e32 v1, v014099; GFX10-NEXT:    v_pk_add_f16 v0, v1, v2 neg_lo:[0,1] neg_hi:[0,1]14100; GFX10-NEXT:    s_waitcnt_vscnt null, 0x014101; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc14102; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14103; GFX10-NEXT:    buffer_gl1_inv14104; GFX10-NEXT:    buffer_gl0_inv14105; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v114106; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s414107; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s414108; GFX10-NEXT:    s_cbranch_execnz .LBB43_114109; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end14110; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s414111; GFX10-NEXT:    s_setpc_b64 s[30:31]14112;14113; GFX90A-LABEL: flat_agent_atomic_fsub_ret_v2f16__offset12b_pos:14114; GFX90A:       ; %bb.0:14115; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14116; GFX90A-NEXT:    flat_load_dword v5, v[0:1] offset:204414117; GFX90A-NEXT:    s_mov_b64 s[4:5], 014118; GFX90A-NEXT:  .LBB43_1: ; %atomicrmw.start14119; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=114120; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14121; GFX90A-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]14122; GFX90A-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 glc14123; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14124; GFX90A-NEXT:    buffer_wbinvl114125; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v514126; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14127; GFX90A-NEXT:    v_mov_b32_e32 v5, v314128; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]14129; GFX90A-NEXT:    s_cbranch_execnz .LBB43_114130; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end14131; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]14132; GFX90A-NEXT:    v_mov_b32_e32 v0, v314133; GFX90A-NEXT:    s_setpc_b64 s[30:31]14134;14135; GFX908-LABEL: flat_agent_atomic_fsub_ret_v2f16__offset12b_pos:14136; GFX908:       ; %bb.0:14137; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14138; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:204414139; GFX908-NEXT:    s_mov_b64 s[4:5], 014140; GFX908-NEXT:  .LBB43_1: ; %atomicrmw.start14141; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=114142; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14143; GFX908-NEXT:    v_mov_b32_e32 v4, v314144; GFX908-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14145; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2044 glc14146; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14147; GFX908-NEXT:    buffer_wbinvl114148; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v414149; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14150; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]14151; GFX908-NEXT:    s_cbranch_execnz .LBB43_114152; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end14153; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]14154; GFX908-NEXT:    v_mov_b32_e32 v0, v314155; GFX908-NEXT:    s_setpc_b64 s[30:31]14156;14157; GFX8-LABEL: flat_agent_atomic_fsub_ret_v2f16__offset12b_pos:14158; GFX8:       ; %bb.0:14159; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14160; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v014161; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc14162; GFX8-NEXT:    flat_load_dword v0, v[3:4]14163; GFX8-NEXT:    s_mov_b64 s[4:5], 014164; GFX8-NEXT:  .LBB43_1: ; %atomicrmw.start14165; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=114166; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14167; GFX8-NEXT:    v_mov_b32_e32 v1, v014168; GFX8-NEXT:    v_sub_f16_sdwa v0, v1, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_114169; GFX8-NEXT:    v_sub_f16_e32 v5, v1, v214170; GFX8-NEXT:    v_or_b32_e32 v0, v5, v014171; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc14172; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14173; GFX8-NEXT:    buffer_wbinvl114174; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v114175; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14176; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]14177; GFX8-NEXT:    s_cbranch_execnz .LBB43_114178; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end14179; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]14180; GFX8-NEXT:    s_setpc_b64 s[30:31]14181;14182; GFX7-LABEL: flat_agent_atomic_fsub_ret_v2f16__offset12b_pos:14183; GFX7:       ; %bb.0:14184; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14185; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fc, v014186; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc14187; GFX7-NEXT:    flat_load_dword v1, v[4:5]14188; GFX7-NEXT:    v_cvt_f16_f32_e32 v0, v314189; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v214190; GFX7-NEXT:    s_mov_b64 s[4:5], 014191; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v014192; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v314193; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14194; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v114195; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v114196; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v114197; GFX7-NEXT:  .LBB43_1: ; %atomicrmw.start14198; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=114199; GFX7-NEXT:    v_cvt_f16_f32_e32 v1, v114200; GFX7-NEXT:    v_cvt_f16_f32_e32 v0, v014201; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v114202; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v014203; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v114204; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v214205; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v314206; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v614207; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v714208; GFX7-NEXT:    v_or_b32_e32 v7, v0, v114209; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v614210; GFX7-NEXT:    v_or_b32_e32 v6, v8, v014211; GFX7-NEXT:    flat_atomic_cmpswap v6, v[4:5], v[6:7] glc14212; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14213; GFX7-NEXT:    buffer_wbinvl114214; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v614215; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v614216; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v114217; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v714218; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14219; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]14220; GFX7-NEXT:    s_cbranch_execnz .LBB43_114221; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end14222; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]14223; GFX7-NEXT:    s_setpc_b64 s[30:31]14224  %gep = getelementptr inbounds <2 x half>, ptr %ptr, i64 51114225  %result = atomicrmw fsub ptr %gep, <2 x half> %val syncscope("agent") seq_cst14226  ret <2 x half> %result14227}14228 14229define <2 x half> @flat_agent_atomic_fsub_ret_v2f16__offset12b_neg(ptr %ptr, <2 x half> %val) #0 {14230; GFX12-LABEL: flat_agent_atomic_fsub_ret_v2f16__offset12b_neg:14231; GFX12:       ; %bb.0:14232; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014233; GFX12-NEXT:    s_wait_expcnt 0x014234; GFX12-NEXT:    s_wait_samplecnt 0x014235; GFX12-NEXT:    s_wait_bvhcnt 0x014236; GFX12-NEXT:    s_wait_kmcnt 0x014237; GFX12-NEXT:    flat_load_b32 v3, v[0:1] offset:-204814238; GFX12-NEXT:    s_mov_b32 s0, 014239; GFX12-NEXT:  .LBB44_1: ; %atomicrmw.start14240; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=114241; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014242; GFX12-NEXT:    v_mov_b32_e32 v4, v314243; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)14244; GFX12-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14245; GFX12-NEXT:    s_wait_storecnt 0x014246; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV14247; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014248; GFX12-NEXT:    global_inv scope:SCOPE_DEV14249; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414250; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14251; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s014252; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14253; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014254; GFX12-NEXT:    s_cbranch_execnz .LBB44_114255; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end14256; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s014257; GFX12-NEXT:    v_mov_b32_e32 v0, v314258; GFX12-NEXT:    s_wait_loadcnt 0x014259; GFX12-NEXT:    s_setpc_b64 s[30:31]14260;14261; GFX942-LABEL: flat_agent_atomic_fsub_ret_v2f16__offset12b_neg:14262; GFX942:       ; %bb.0:14263; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14264; GFX942-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v014265; GFX942-NEXT:    s_movk_i32 s0, 0xf80014266; GFX942-NEXT:    s_nop 014267; GFX942-NEXT:    v_addc_co_u32_e32 v5, vcc, -1, v1, vcc14268; GFX942-NEXT:    flat_load_dword v7, v[4:5]14269; GFX942-NEXT:    s_mov_b32 s1, -114270; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]14271; GFX942-NEXT:    s_mov_b64 s[0:1], 014272; GFX942-NEXT:  .LBB44_1: ; %atomicrmw.start14273; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=114274; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14275; GFX942-NEXT:    v_pk_add_f16 v6, v7, v2 neg_lo:[0,1] neg_hi:[0,1]14276; GFX942-NEXT:    buffer_wbl2 sc114277; GFX942-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[6:7] sc014278; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14279; GFX942-NEXT:    buffer_inv sc114280; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v714281; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]14282; GFX942-NEXT:    v_mov_b32_e32 v7, v014283; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]14284; GFX942-NEXT:    s_cbranch_execnz .LBB44_114285; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end14286; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]14287; GFX942-NEXT:    s_setpc_b64 s[30:31]14288;14289; GFX11-LABEL: flat_agent_atomic_fsub_ret_v2f16__offset12b_neg:14290; GFX11:       ; %bb.0:14291; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14292; GFX11-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v014293; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)14294; GFX11-NEXT:    v_add_co_ci_u32_e64 v4, null, -1, v1, vcc_lo14295; GFX11-NEXT:    s_mov_b32 s0, 014296; GFX11-NEXT:    flat_load_b32 v0, v[3:4]14297; GFX11-NEXT:  .LBB44_1: ; %atomicrmw.start14298; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=114299; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14300; GFX11-NEXT:    v_mov_b32_e32 v1, v014301; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)14302; GFX11-NEXT:    v_pk_add_f16 v0, v1, v2 neg_lo:[0,1] neg_hi:[0,1]14303; GFX11-NEXT:    s_waitcnt_vscnt null, 0x014304; GFX11-NEXT:    flat_atomic_cmpswap_b32 v0, v[3:4], v[0:1] glc14305; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14306; GFX11-NEXT:    buffer_gl1_inv14307; GFX11-NEXT:    buffer_gl0_inv14308; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v114309; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s014310; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)14311; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014312; GFX11-NEXT:    s_cbranch_execnz .LBB44_114313; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end14314; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s014315; GFX11-NEXT:    s_setpc_b64 s[30:31]14316;14317; GFX10-LABEL: flat_agent_atomic_fsub_ret_v2f16__offset12b_neg:14318; GFX10:       ; %bb.0:14319; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14320; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v014321; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, -1, v1, vcc_lo14322; GFX10-NEXT:    s_mov_b32 s4, 014323; GFX10-NEXT:    flat_load_dword v0, v[3:4]14324; GFX10-NEXT:  .LBB44_1: ; %atomicrmw.start14325; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=114326; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14327; GFX10-NEXT:    v_mov_b32_e32 v1, v014328; GFX10-NEXT:    v_pk_add_f16 v0, v1, v2 neg_lo:[0,1] neg_hi:[0,1]14329; GFX10-NEXT:    s_waitcnt_vscnt null, 0x014330; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc14331; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14332; GFX10-NEXT:    buffer_gl1_inv14333; GFX10-NEXT:    buffer_gl0_inv14334; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v114335; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s414336; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s414337; GFX10-NEXT:    s_cbranch_execnz .LBB44_114338; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end14339; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s414340; GFX10-NEXT:    s_setpc_b64 s[30:31]14341;14342; GFX90A-LABEL: flat_agent_atomic_fsub_ret_v2f16__offset12b_neg:14343; GFX90A:       ; %bb.0:14344; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14345; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v014346; GFX90A-NEXT:    s_mov_b64 s[4:5], vcc14347; GFX90A-NEXT:    v_addc_co_u32_e64 v5, s[4:5], -1, v1, s[4:5]14348; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc14349; GFX90A-NEXT:    v_mov_b32_e32 v0, v414350; GFX90A-NEXT:    flat_load_dword v1, v[0:1]14351; GFX90A-NEXT:    s_mov_b64 s[4:5], 014352; GFX90A-NEXT:  .LBB44_1: ; %atomicrmw.start14353; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=114354; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14355; GFX90A-NEXT:    v_pk_add_f16 v0, v1, v2 neg_lo:[0,1] neg_hi:[0,1]14356; GFX90A-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc14357; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14358; GFX90A-NEXT:    buffer_wbinvl114359; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v114360; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14361; GFX90A-NEXT:    v_mov_b32_e32 v1, v014362; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]14363; GFX90A-NEXT:    s_cbranch_execnz .LBB44_114364; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end14365; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]14366; GFX90A-NEXT:    s_setpc_b64 s[30:31]14367;14368; GFX908-LABEL: flat_agent_atomic_fsub_ret_v2f16__offset12b_neg:14369; GFX908:       ; %bb.0:14370; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14371; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v014372; GFX908-NEXT:    s_mov_b64 s[4:5], vcc14373; GFX908-NEXT:    v_addc_co_u32_e64 v4, s[4:5], -1, v1, s[4:5]14374; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc14375; GFX908-NEXT:    v_mov_b32_e32 v0, v314376; GFX908-NEXT:    flat_load_dword v0, v[0:1]14377; GFX908-NEXT:    s_mov_b64 s[4:5], 014378; GFX908-NEXT:  .LBB44_1: ; %atomicrmw.start14379; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=114380; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14381; GFX908-NEXT:    v_mov_b32_e32 v1, v014382; GFX908-NEXT:    v_pk_add_f16 v0, v1, v2 neg_lo:[0,1] neg_hi:[0,1]14383; GFX908-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc14384; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14385; GFX908-NEXT:    buffer_wbinvl114386; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v114387; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14388; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]14389; GFX908-NEXT:    s_cbranch_execnz .LBB44_114390; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end14391; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]14392; GFX908-NEXT:    s_setpc_b64 s[30:31]14393;14394; GFX8-LABEL: flat_agent_atomic_fsub_ret_v2f16__offset12b_neg:14395; GFX8:       ; %bb.0:14396; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14397; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v014398; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, -1, v1, vcc14399; GFX8-NEXT:    flat_load_dword v0, v[3:4]14400; GFX8-NEXT:    s_mov_b64 s[4:5], 014401; GFX8-NEXT:  .LBB44_1: ; %atomicrmw.start14402; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=114403; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14404; GFX8-NEXT:    v_mov_b32_e32 v1, v014405; GFX8-NEXT:    v_sub_f16_sdwa v0, v1, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_114406; GFX8-NEXT:    v_sub_f16_e32 v5, v1, v214407; GFX8-NEXT:    v_or_b32_e32 v0, v5, v014408; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc14409; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14410; GFX8-NEXT:    buffer_wbinvl114411; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v114412; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14413; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]14414; GFX8-NEXT:    s_cbranch_execnz .LBB44_114415; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end14416; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]14417; GFX8-NEXT:    s_setpc_b64 s[30:31]14418;14419; GFX7-LABEL: flat_agent_atomic_fsub_ret_v2f16__offset12b_neg:14420; GFX7:       ; %bb.0:14421; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14422; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v014423; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, -1, v1, vcc14424; GFX7-NEXT:    flat_load_dword v1, v[4:5]14425; GFX7-NEXT:    v_cvt_f16_f32_e32 v0, v314426; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v214427; GFX7-NEXT:    s_mov_b64 s[4:5], 014428; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v014429; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v314430; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14431; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v114432; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v114433; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v114434; GFX7-NEXT:  .LBB44_1: ; %atomicrmw.start14435; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=114436; GFX7-NEXT:    v_cvt_f16_f32_e32 v1, v114437; GFX7-NEXT:    v_cvt_f16_f32_e32 v0, v014438; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v114439; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v014440; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v114441; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v214442; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v314443; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v614444; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v714445; GFX7-NEXT:    v_or_b32_e32 v7, v0, v114446; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v614447; GFX7-NEXT:    v_or_b32_e32 v6, v8, v014448; GFX7-NEXT:    flat_atomic_cmpswap v6, v[4:5], v[6:7] glc14449; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14450; GFX7-NEXT:    buffer_wbinvl114451; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v614452; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v614453; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v114454; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v714455; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14456; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]14457; GFX7-NEXT:    s_cbranch_execnz .LBB44_114458; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end14459; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]14460; GFX7-NEXT:    s_setpc_b64 s[30:31]14461  %gep = getelementptr inbounds <2 x half>, ptr %ptr, i64 -51214462  %result = atomicrmw fsub ptr %gep, <2 x half> %val syncscope("agent") seq_cst14463  ret <2 x half> %result14464}14465 14466define void @flat_agent_atomic_fsub_noret_v2f16(ptr %ptr, <2 x half> %val) #0 {14467; GFX12-LABEL: flat_agent_atomic_fsub_noret_v2f16:14468; GFX12:       ; %bb.0:14469; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014470; GFX12-NEXT:    s_wait_expcnt 0x014471; GFX12-NEXT:    s_wait_samplecnt 0x014472; GFX12-NEXT:    s_wait_bvhcnt 0x014473; GFX12-NEXT:    s_wait_kmcnt 0x014474; GFX12-NEXT:    flat_load_b32 v4, v[0:1]14475; GFX12-NEXT:    s_mov_b32 s0, 014476; GFX12-NEXT:  .LBB45_1: ; %atomicrmw.start14477; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=114478; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014479; GFX12-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14480; GFX12-NEXT:    s_wait_storecnt 0x014481; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV14482; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014483; GFX12-NEXT:    global_inv scope:SCOPE_DEV14484; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414485; GFX12-NEXT:    v_mov_b32_e32 v4, v314486; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14487; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s014488; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14489; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014490; GFX12-NEXT:    s_cbranch_execnz .LBB45_114491; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end14492; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s014493; GFX12-NEXT:    s_wait_loadcnt 0x014494; GFX12-NEXT:    s_setpc_b64 s[30:31]14495;14496; GFX942-LABEL: flat_agent_atomic_fsub_noret_v2f16:14497; GFX942:       ; %bb.0:14498; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14499; GFX942-NEXT:    flat_load_dword v5, v[0:1]14500; GFX942-NEXT:    s_mov_b64 s[0:1], 014501; GFX942-NEXT:  .LBB45_1: ; %atomicrmw.start14502; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=114503; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14504; GFX942-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]14505; GFX942-NEXT:    buffer_wbl2 sc114506; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] sc014507; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14508; GFX942-NEXT:    buffer_inv sc114509; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v514510; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]14511; GFX942-NEXT:    v_mov_b32_e32 v5, v314512; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]14513; GFX942-NEXT:    s_cbranch_execnz .LBB45_114514; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end14515; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]14516; GFX942-NEXT:    s_setpc_b64 s[30:31]14517;14518; GFX11-LABEL: flat_agent_atomic_fsub_noret_v2f16:14519; GFX11:       ; %bb.0:14520; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14521; GFX11-NEXT:    flat_load_b32 v4, v[0:1]14522; GFX11-NEXT:    s_mov_b32 s0, 014523; GFX11-NEXT:  .LBB45_1: ; %atomicrmw.start14524; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=114525; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14526; GFX11-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14527; GFX11-NEXT:    s_waitcnt_vscnt null, 0x014528; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc14529; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14530; GFX11-NEXT:    buffer_gl1_inv14531; GFX11-NEXT:    buffer_gl0_inv14532; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414533; GFX11-NEXT:    v_mov_b32_e32 v4, v314534; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s014535; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)14536; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014537; GFX11-NEXT:    s_cbranch_execnz .LBB45_114538; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end14539; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s014540; GFX11-NEXT:    s_setpc_b64 s[30:31]14541;14542; GFX10-LABEL: flat_agent_atomic_fsub_noret_v2f16:14543; GFX10:       ; %bb.0:14544; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14545; GFX10-NEXT:    flat_load_dword v4, v[0:1]14546; GFX10-NEXT:    s_mov_b32 s4, 014547; GFX10-NEXT:  .LBB45_1: ; %atomicrmw.start14548; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=114549; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14550; GFX10-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14551; GFX10-NEXT:    s_waitcnt_vscnt null, 0x014552; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc14553; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14554; GFX10-NEXT:    buffer_gl1_inv14555; GFX10-NEXT:    buffer_gl0_inv14556; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414557; GFX10-NEXT:    v_mov_b32_e32 v4, v314558; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s414559; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s414560; GFX10-NEXT:    s_cbranch_execnz .LBB45_114561; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end14562; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s414563; GFX10-NEXT:    s_setpc_b64 s[30:31]14564;14565; GFX90A-LABEL: flat_agent_atomic_fsub_noret_v2f16:14566; GFX90A:       ; %bb.0:14567; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14568; GFX90A-NEXT:    flat_load_dword v5, v[0:1]14569; GFX90A-NEXT:    s_mov_b64 s[4:5], 014570; GFX90A-NEXT:  .LBB45_1: ; %atomicrmw.start14571; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=114572; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14573; GFX90A-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]14574; GFX90A-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] glc14575; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14576; GFX90A-NEXT:    buffer_wbinvl114577; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v514578; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14579; GFX90A-NEXT:    v_mov_b32_e32 v5, v314580; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]14581; GFX90A-NEXT:    s_cbranch_execnz .LBB45_114582; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end14583; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]14584; GFX90A-NEXT:    s_setpc_b64 s[30:31]14585;14586; GFX908-LABEL: flat_agent_atomic_fsub_noret_v2f16:14587; GFX908:       ; %bb.0:14588; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14589; GFX908-NEXT:    flat_load_dword v4, v[0:1]14590; GFX908-NEXT:    s_mov_b64 s[4:5], 014591; GFX908-NEXT:  .LBB45_1: ; %atomicrmw.start14592; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=114593; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14594; GFX908-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14595; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc14596; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14597; GFX908-NEXT:    buffer_wbinvl114598; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v414599; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14600; GFX908-NEXT:    v_mov_b32_e32 v4, v314601; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]14602; GFX908-NEXT:    s_cbranch_execnz .LBB45_114603; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end14604; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]14605; GFX908-NEXT:    s_setpc_b64 s[30:31]14606;14607; GFX8-LABEL: flat_agent_atomic_fsub_noret_v2f16:14608; GFX8:       ; %bb.0:14609; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14610; GFX8-NEXT:    flat_load_dword v4, v[0:1]14611; GFX8-NEXT:    s_mov_b64 s[4:5], 014612; GFX8-NEXT:  .LBB45_1: ; %atomicrmw.start14613; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=114614; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14615; GFX8-NEXT:    v_sub_f16_sdwa v3, v4, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_114616; GFX8-NEXT:    v_sub_f16_e32 v5, v4, v214617; GFX8-NEXT:    v_or_b32_e32 v3, v5, v314618; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc14619; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14620; GFX8-NEXT:    buffer_wbinvl114621; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v414622; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14623; GFX8-NEXT:    v_mov_b32_e32 v4, v314624; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]14625; GFX8-NEXT:    s_cbranch_execnz .LBB45_114626; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end14627; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]14628; GFX8-NEXT:    s_setpc_b64 s[30:31]14629;14630; GFX7-LABEL: flat_agent_atomic_fsub_noret_v2f16:14631; GFX7:       ; %bb.0:14632; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14633; GFX7-NEXT:    flat_load_dword v5, v[0:1]14634; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v314635; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v214636; GFX7-NEXT:    s_mov_b64 s[4:5], 014637; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v314638; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14639; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v514640; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v514641; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v314642; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v614643; GFX7-NEXT:  .LBB45_1: ; %atomicrmw.start14644; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=114645; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v514646; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v414647; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v514648; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v414649; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v514650; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v214651; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v314652; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v614653; GFX7-NEXT:    v_cvt_f16_f32_e32 v7, v714654; GFX7-NEXT:    v_or_b32_e32 v6, v4, v514655; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v814656; GFX7-NEXT:    v_or_b32_e32 v5, v7, v414657; GFX7-NEXT:    flat_atomic_cmpswap v7, v[0:1], v[5:6] glc14658; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14659; GFX7-NEXT:    buffer_wbinvl114660; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v714661; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v714662; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v514663; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v614664; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14665; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]14666; GFX7-NEXT:    s_cbranch_execnz .LBB45_114667; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end14668; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]14669; GFX7-NEXT:    s_setpc_b64 s[30:31]14670  %unused = atomicrmw fsub ptr %ptr, <2 x half> %val syncscope("agent") seq_cst14671  ret void14672}14673 14674define void @flat_agent_atomic_fsub_noret_v2f16__offset12b_pos(ptr %ptr, <2 x half> %val) #0 {14675; GFX12-LABEL: flat_agent_atomic_fsub_noret_v2f16__offset12b_pos:14676; GFX12:       ; %bb.0:14677; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014678; GFX12-NEXT:    s_wait_expcnt 0x014679; GFX12-NEXT:    s_wait_samplecnt 0x014680; GFX12-NEXT:    s_wait_bvhcnt 0x014681; GFX12-NEXT:    s_wait_kmcnt 0x014682; GFX12-NEXT:    flat_load_b32 v4, v[0:1] offset:204414683; GFX12-NEXT:    s_mov_b32 s0, 014684; GFX12-NEXT:  .LBB46_1: ; %atomicrmw.start14685; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=114686; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014687; GFX12-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14688; GFX12-NEXT:    s_wait_storecnt 0x014689; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV14690; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014691; GFX12-NEXT:    global_inv scope:SCOPE_DEV14692; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414693; GFX12-NEXT:    v_mov_b32_e32 v4, v314694; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14695; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s014696; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14697; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014698; GFX12-NEXT:    s_cbranch_execnz .LBB46_114699; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end14700; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s014701; GFX12-NEXT:    s_wait_loadcnt 0x014702; GFX12-NEXT:    s_setpc_b64 s[30:31]14703;14704; GFX942-LABEL: flat_agent_atomic_fsub_noret_v2f16__offset12b_pos:14705; GFX942:       ; %bb.0:14706; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14707; GFX942-NEXT:    flat_load_dword v5, v[0:1] offset:204414708; GFX942-NEXT:    s_mov_b64 s[0:1], 014709; GFX942-NEXT:  .LBB46_1: ; %atomicrmw.start14710; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=114711; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14712; GFX942-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]14713; GFX942-NEXT:    buffer_wbl2 sc114714; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 sc014715; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14716; GFX942-NEXT:    buffer_inv sc114717; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v514718; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]14719; GFX942-NEXT:    v_mov_b32_e32 v5, v314720; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]14721; GFX942-NEXT:    s_cbranch_execnz .LBB46_114722; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end14723; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]14724; GFX942-NEXT:    s_setpc_b64 s[30:31]14725;14726; GFX11-LABEL: flat_agent_atomic_fsub_noret_v2f16__offset12b_pos:14727; GFX11:       ; %bb.0:14728; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14729; GFX11-NEXT:    flat_load_b32 v4, v[0:1] offset:204414730; GFX11-NEXT:    s_mov_b32 s0, 014731; GFX11-NEXT:  .LBB46_1: ; %atomicrmw.start14732; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=114733; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14734; GFX11-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14735; GFX11-NEXT:    s_waitcnt_vscnt null, 0x014736; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 glc14737; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14738; GFX11-NEXT:    buffer_gl1_inv14739; GFX11-NEXT:    buffer_gl0_inv14740; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414741; GFX11-NEXT:    v_mov_b32_e32 v4, v314742; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s014743; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)14744; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014745; GFX11-NEXT:    s_cbranch_execnz .LBB46_114746; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end14747; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s014748; GFX11-NEXT:    s_setpc_b64 s[30:31]14749;14750; GFX10-LABEL: flat_agent_atomic_fsub_noret_v2f16__offset12b_pos:14751; GFX10:       ; %bb.0:14752; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14753; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fc, v014754; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo14755; GFX10-NEXT:    s_mov_b32 s4, 014756; GFX10-NEXT:    flat_load_dword v4, v[0:1]14757; GFX10-NEXT:  .LBB46_1: ; %atomicrmw.start14758; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=114759; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14760; GFX10-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14761; GFX10-NEXT:    s_waitcnt_vscnt null, 0x014762; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc14763; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14764; GFX10-NEXT:    buffer_gl1_inv14765; GFX10-NEXT:    buffer_gl0_inv14766; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414767; GFX10-NEXT:    v_mov_b32_e32 v4, v314768; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s414769; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s414770; GFX10-NEXT:    s_cbranch_execnz .LBB46_114771; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end14772; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s414773; GFX10-NEXT:    s_setpc_b64 s[30:31]14774;14775; GFX90A-LABEL: flat_agent_atomic_fsub_noret_v2f16__offset12b_pos:14776; GFX90A:       ; %bb.0:14777; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14778; GFX90A-NEXT:    flat_load_dword v5, v[0:1] offset:204414779; GFX90A-NEXT:    s_mov_b64 s[4:5], 014780; GFX90A-NEXT:  .LBB46_1: ; %atomicrmw.start14781; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=114782; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14783; GFX90A-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]14784; GFX90A-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 glc14785; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14786; GFX90A-NEXT:    buffer_wbinvl114787; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v514788; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14789; GFX90A-NEXT:    v_mov_b32_e32 v5, v314790; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]14791; GFX90A-NEXT:    s_cbranch_execnz .LBB46_114792; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end14793; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]14794; GFX90A-NEXT:    s_setpc_b64 s[30:31]14795;14796; GFX908-LABEL: flat_agent_atomic_fsub_noret_v2f16__offset12b_pos:14797; GFX908:       ; %bb.0:14798; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14799; GFX908-NEXT:    flat_load_dword v4, v[0:1] offset:204414800; GFX908-NEXT:    s_mov_b64 s[4:5], 014801; GFX908-NEXT:  .LBB46_1: ; %atomicrmw.start14802; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=114803; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14804; GFX908-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14805; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2044 glc14806; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14807; GFX908-NEXT:    buffer_wbinvl114808; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v414809; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14810; GFX908-NEXT:    v_mov_b32_e32 v4, v314811; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]14812; GFX908-NEXT:    s_cbranch_execnz .LBB46_114813; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end14814; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]14815; GFX908-NEXT:    s_setpc_b64 s[30:31]14816;14817; GFX8-LABEL: flat_agent_atomic_fsub_noret_v2f16__offset12b_pos:14818; GFX8:       ; %bb.0:14819; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14820; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v014821; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc14822; GFX8-NEXT:    flat_load_dword v4, v[0:1]14823; GFX8-NEXT:    s_mov_b64 s[4:5], 014824; GFX8-NEXT:  .LBB46_1: ; %atomicrmw.start14825; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=114826; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14827; GFX8-NEXT:    v_sub_f16_sdwa v3, v4, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_114828; GFX8-NEXT:    v_sub_f16_e32 v5, v4, v214829; GFX8-NEXT:    v_or_b32_e32 v3, v5, v314830; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc14831; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14832; GFX8-NEXT:    buffer_wbinvl114833; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v414834; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14835; GFX8-NEXT:    v_mov_b32_e32 v4, v314836; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]14837; GFX8-NEXT:    s_cbranch_execnz .LBB46_114838; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end14839; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]14840; GFX8-NEXT:    s_setpc_b64 s[30:31]14841;14842; GFX7-LABEL: flat_agent_atomic_fsub_noret_v2f16__offset12b_pos:14843; GFX7:       ; %bb.0:14844; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14845; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fc, v014846; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc14847; GFX7-NEXT:    flat_load_dword v5, v[0:1]14848; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v314849; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v214850; GFX7-NEXT:    s_mov_b64 s[4:5], 014851; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v314852; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14853; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v514854; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v514855; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v314856; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v614857; GFX7-NEXT:  .LBB46_1: ; %atomicrmw.start14858; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=114859; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v514860; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v414861; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v514862; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v414863; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v514864; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v214865; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v314866; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v614867; GFX7-NEXT:    v_cvt_f16_f32_e32 v7, v714868; GFX7-NEXT:    v_or_b32_e32 v6, v4, v514869; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v814870; GFX7-NEXT:    v_or_b32_e32 v5, v7, v414871; GFX7-NEXT:    flat_atomic_cmpswap v7, v[0:1], v[5:6] glc14872; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14873; GFX7-NEXT:    buffer_wbinvl114874; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v714875; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v714876; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v514877; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v614878; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14879; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]14880; GFX7-NEXT:    s_cbranch_execnz .LBB46_114881; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end14882; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]14883; GFX7-NEXT:    s_setpc_b64 s[30:31]14884  %gep = getelementptr inbounds <2 x half>, ptr %ptr, i64 51114885  %unused = atomicrmw fsub ptr %gep, <2 x half> %val syncscope("agent") seq_cst14886  ret void14887}14888 14889define void @flat_agent_atomic_fsub_noret_v2f16__offset12b_neg(ptr %ptr, <2 x half> %val) #0 {14890; GFX12-LABEL: flat_agent_atomic_fsub_noret_v2f16__offset12b_neg:14891; GFX12:       ; %bb.0:14892; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014893; GFX12-NEXT:    s_wait_expcnt 0x014894; GFX12-NEXT:    s_wait_samplecnt 0x014895; GFX12-NEXT:    s_wait_bvhcnt 0x014896; GFX12-NEXT:    s_wait_kmcnt 0x014897; GFX12-NEXT:    flat_load_b32 v4, v[0:1] offset:-204814898; GFX12-NEXT:    s_mov_b32 s0, 014899; GFX12-NEXT:  .LBB47_1: ; %atomicrmw.start14900; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=114901; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014902; GFX12-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14903; GFX12-NEXT:    s_wait_storecnt 0x014904; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV14905; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014906; GFX12-NEXT:    global_inv scope:SCOPE_DEV14907; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414908; GFX12-NEXT:    v_mov_b32_e32 v4, v314909; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14910; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s014911; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14912; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014913; GFX12-NEXT:    s_cbranch_execnz .LBB47_114914; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end14915; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s014916; GFX12-NEXT:    s_wait_loadcnt 0x014917; GFX12-NEXT:    s_setpc_b64 s[30:31]14918;14919; GFX942-LABEL: flat_agent_atomic_fsub_noret_v2f16__offset12b_neg:14920; GFX942:       ; %bb.0:14921; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14922; GFX942-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v014923; GFX942-NEXT:    s_movk_i32 s0, 0xf80014924; GFX942-NEXT:    s_nop 014925; GFX942-NEXT:    v_addc_co_u32_e32 v5, vcc, -1, v1, vcc14926; GFX942-NEXT:    flat_load_dword v5, v[4:5]14927; GFX942-NEXT:    s_mov_b32 s1, -114928; GFX942-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, s[0:1]14929; GFX942-NEXT:    s_mov_b64 s[0:1], 014930; GFX942-NEXT:  .LBB47_1: ; %atomicrmw.start14931; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=114932; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14933; GFX942-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]14934; GFX942-NEXT:    buffer_wbl2 sc114935; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] sc014936; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14937; GFX942-NEXT:    buffer_inv sc114938; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v514939; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]14940; GFX942-NEXT:    v_mov_b32_e32 v5, v314941; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]14942; GFX942-NEXT:    s_cbranch_execnz .LBB47_114943; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end14944; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]14945; GFX942-NEXT:    s_setpc_b64 s[30:31]14946;14947; GFX11-LABEL: flat_agent_atomic_fsub_noret_v2f16__offset12b_neg:14948; GFX11:       ; %bb.0:14949; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14950; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v014951; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)14952; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo14953; GFX11-NEXT:    s_mov_b32 s0, 014954; GFX11-NEXT:    flat_load_b32 v4, v[0:1]14955; GFX11-NEXT:  .LBB47_1: ; %atomicrmw.start14956; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=114957; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14958; GFX11-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14959; GFX11-NEXT:    s_waitcnt_vscnt null, 0x014960; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc14961; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14962; GFX11-NEXT:    buffer_gl1_inv14963; GFX11-NEXT:    buffer_gl0_inv14964; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414965; GFX11-NEXT:    v_mov_b32_e32 v4, v314966; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s014967; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)14968; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014969; GFX11-NEXT:    s_cbranch_execnz .LBB47_114970; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end14971; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s014972; GFX11-NEXT:    s_setpc_b64 s[30:31]14973;14974; GFX10-LABEL: flat_agent_atomic_fsub_noret_v2f16__offset12b_neg:14975; GFX10:       ; %bb.0:14976; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14977; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v014978; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo14979; GFX10-NEXT:    s_mov_b32 s4, 014980; GFX10-NEXT:    flat_load_dword v4, v[0:1]14981; GFX10-NEXT:  .LBB47_1: ; %atomicrmw.start14982; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=114983; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14984; GFX10-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14985; GFX10-NEXT:    s_waitcnt_vscnt null, 0x014986; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc14987; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14988; GFX10-NEXT:    buffer_gl1_inv14989; GFX10-NEXT:    buffer_gl0_inv14990; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414991; GFX10-NEXT:    v_mov_b32_e32 v4, v314992; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s414993; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s414994; GFX10-NEXT:    s_cbranch_execnz .LBB47_114995; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end14996; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s414997; GFX10-NEXT:    s_setpc_b64 s[30:31]14998;14999; GFX90A-LABEL: flat_agent_atomic_fsub_noret_v2f16__offset12b_neg:15000; GFX90A:       ; %bb.0:15001; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15002; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v015003; GFX90A-NEXT:    s_mov_b64 s[4:5], vcc15004; GFX90A-NEXT:    v_addc_co_u32_e64 v5, s[4:5], -1, v1, s[4:5]15005; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc15006; GFX90A-NEXT:    v_mov_b32_e32 v0, v415007; GFX90A-NEXT:    flat_load_dword v1, v[0:1]15008; GFX90A-NEXT:    s_mov_b64 s[4:5], 015009; GFX90A-NEXT:  .LBB47_1: ; %atomicrmw.start15010; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=115011; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15012; GFX90A-NEXT:    v_pk_add_f16 v0, v1, v2 neg_lo:[0,1] neg_hi:[0,1]15013; GFX90A-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc15014; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15015; GFX90A-NEXT:    buffer_wbinvl115016; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v115017; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15018; GFX90A-NEXT:    v_mov_b32_e32 v1, v015019; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]15020; GFX90A-NEXT:    s_cbranch_execnz .LBB47_115021; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end15022; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]15023; GFX90A-NEXT:    s_setpc_b64 s[30:31]15024;15025; GFX908-LABEL: flat_agent_atomic_fsub_noret_v2f16__offset12b_neg:15026; GFX908:       ; %bb.0:15027; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15028; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v015029; GFX908-NEXT:    s_mov_b64 s[4:5], vcc15030; GFX908-NEXT:    v_addc_co_u32_e64 v4, s[4:5], -1, v1, s[4:5]15031; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc15032; GFX908-NEXT:    v_mov_b32_e32 v0, v315033; GFX908-NEXT:    flat_load_dword v1, v[0:1]15034; GFX908-NEXT:    s_mov_b64 s[4:5], 015035; GFX908-NEXT:  .LBB47_1: ; %atomicrmw.start15036; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=115037; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15038; GFX908-NEXT:    v_pk_add_f16 v0, v1, v2 neg_lo:[0,1] neg_hi:[0,1]15039; GFX908-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc15040; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15041; GFX908-NEXT:    buffer_wbinvl115042; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v115043; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15044; GFX908-NEXT:    v_mov_b32_e32 v1, v015045; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]15046; GFX908-NEXT:    s_cbranch_execnz .LBB47_115047; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end15048; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]15049; GFX908-NEXT:    s_setpc_b64 s[30:31]15050;15051; GFX8-LABEL: flat_agent_atomic_fsub_noret_v2f16__offset12b_neg:15052; GFX8:       ; %bb.0:15053; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15054; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffff800, v015055; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc15056; GFX8-NEXT:    flat_load_dword v4, v[0:1]15057; GFX8-NEXT:    s_mov_b64 s[4:5], 015058; GFX8-NEXT:  .LBB47_1: ; %atomicrmw.start15059; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=115060; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15061; GFX8-NEXT:    v_sub_f16_sdwa v3, v4, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_115062; GFX8-NEXT:    v_sub_f16_e32 v5, v4, v215063; GFX8-NEXT:    v_or_b32_e32 v3, v5, v315064; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc15065; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15066; GFX8-NEXT:    buffer_wbinvl115067; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v415068; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15069; GFX8-NEXT:    v_mov_b32_e32 v4, v315070; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]15071; GFX8-NEXT:    s_cbranch_execnz .LBB47_115072; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end15073; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]15074; GFX8-NEXT:    s_setpc_b64 s[30:31]15075;15076; GFX7-LABEL: flat_agent_atomic_fsub_noret_v2f16__offset12b_neg:15077; GFX7:       ; %bb.0:15078; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15079; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v015080; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc15081; GFX7-NEXT:    flat_load_dword v5, v[0:1]15082; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v315083; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v215084; GFX7-NEXT:    s_mov_b64 s[4:5], 015085; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v315086; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15087; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v515088; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v515089; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v315090; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v615091; GFX7-NEXT:  .LBB47_1: ; %atomicrmw.start15092; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=115093; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v515094; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v415095; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v515096; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v415097; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v515098; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v215099; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v315100; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v615101; GFX7-NEXT:    v_cvt_f16_f32_e32 v7, v715102; GFX7-NEXT:    v_or_b32_e32 v6, v4, v515103; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v815104; GFX7-NEXT:    v_or_b32_e32 v5, v7, v415105; GFX7-NEXT:    flat_atomic_cmpswap v7, v[0:1], v[5:6] glc15106; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15107; GFX7-NEXT:    buffer_wbinvl115108; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v715109; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v715110; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v515111; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v615112; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15113; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]15114; GFX7-NEXT:    s_cbranch_execnz .LBB47_115115; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end15116; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]15117; GFX7-NEXT:    s_setpc_b64 s[30:31]15118  %gep = getelementptr inbounds <2 x half>, ptr %ptr, i64 -51215119  %unused = atomicrmw fsub ptr %gep, <2 x half> %val syncscope("agent") seq_cst15120  ret void15121}15122 15123define <2 x half> @flat_system_atomic_fsub_ret_v2f16__offset12b_pos(ptr %ptr, <2 x half> %val) #0 {15124; GFX12-LABEL: flat_system_atomic_fsub_ret_v2f16__offset12b_pos:15125; GFX12:       ; %bb.0:15126; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015127; GFX12-NEXT:    s_wait_expcnt 0x015128; GFX12-NEXT:    s_wait_samplecnt 0x015129; GFX12-NEXT:    s_wait_bvhcnt 0x015130; GFX12-NEXT:    s_wait_kmcnt 0x015131; GFX12-NEXT:    flat_load_b32 v3, v[0:1] offset:204415132; GFX12-NEXT:    s_mov_b32 s0, 015133; GFX12-NEXT:  .LBB48_1: ; %atomicrmw.start15134; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=115135; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015136; GFX12-NEXT:    v_mov_b32_e32 v4, v315137; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)15138; GFX12-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15139; GFX12-NEXT:    global_wb scope:SCOPE_SYS15140; GFX12-NEXT:    s_wait_storecnt 0x015141; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS15142; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015143; GFX12-NEXT:    global_inv scope:SCOPE_SYS15144; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v415145; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15146; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s015147; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15148; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015149; GFX12-NEXT:    s_cbranch_execnz .LBB48_115150; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end15151; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s015152; GFX12-NEXT:    v_mov_b32_e32 v0, v315153; GFX12-NEXT:    s_wait_loadcnt 0x015154; GFX12-NEXT:    s_setpc_b64 s[30:31]15155;15156; GFX942-LABEL: flat_system_atomic_fsub_ret_v2f16__offset12b_pos:15157; GFX942:       ; %bb.0:15158; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15159; GFX942-NEXT:    flat_load_dword v5, v[0:1] offset:204415160; GFX942-NEXT:    s_mov_b64 s[0:1], 015161; GFX942-NEXT:  .LBB48_1: ; %atomicrmw.start15162; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=115163; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15164; GFX942-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]15165; GFX942-NEXT:    buffer_wbl2 sc0 sc115166; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 sc0 sc115167; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15168; GFX942-NEXT:    buffer_inv sc0 sc115169; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v515170; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]15171; GFX942-NEXT:    v_mov_b32_e32 v5, v315172; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]15173; GFX942-NEXT:    s_cbranch_execnz .LBB48_115174; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end15175; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]15176; GFX942-NEXT:    v_mov_b32_e32 v0, v315177; GFX942-NEXT:    s_setpc_b64 s[30:31]15178;15179; GFX11-LABEL: flat_system_atomic_fsub_ret_v2f16__offset12b_pos:15180; GFX11:       ; %bb.0:15181; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15182; GFX11-NEXT:    flat_load_b32 v3, v[0:1] offset:204415183; GFX11-NEXT:    s_mov_b32 s0, 015184; GFX11-NEXT:  .LBB48_1: ; %atomicrmw.start15185; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=115186; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15187; GFX11-NEXT:    v_mov_b32_e32 v4, v315188; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)15189; GFX11-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15190; GFX11-NEXT:    s_waitcnt_vscnt null, 0x015191; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 glc15192; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15193; GFX11-NEXT:    buffer_gl1_inv15194; GFX11-NEXT:    buffer_gl0_inv15195; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v415196; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s015197; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15198; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015199; GFX11-NEXT:    s_cbranch_execnz .LBB48_115200; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end15201; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s015202; GFX11-NEXT:    v_mov_b32_e32 v0, v315203; GFX11-NEXT:    s_setpc_b64 s[30:31]15204;15205; GFX10-LABEL: flat_system_atomic_fsub_ret_v2f16__offset12b_pos:15206; GFX10:       ; %bb.0:15207; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15208; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fc, v015209; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, 0, v1, vcc_lo15210; GFX10-NEXT:    s_mov_b32 s4, 015211; GFX10-NEXT:    flat_load_dword v0, v[3:4]15212; GFX10-NEXT:  .LBB48_1: ; %atomicrmw.start15213; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=115214; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15215; GFX10-NEXT:    v_mov_b32_e32 v1, v015216; GFX10-NEXT:    v_pk_add_f16 v0, v1, v2 neg_lo:[0,1] neg_hi:[0,1]15217; GFX10-NEXT:    s_waitcnt_vscnt null, 0x015218; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc15219; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15220; GFX10-NEXT:    buffer_gl1_inv15221; GFX10-NEXT:    buffer_gl0_inv15222; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v115223; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s415224; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s415225; GFX10-NEXT:    s_cbranch_execnz .LBB48_115226; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end15227; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s415228; GFX10-NEXT:    s_setpc_b64 s[30:31]15229;15230; GFX90A-LABEL: flat_system_atomic_fsub_ret_v2f16__offset12b_pos:15231; GFX90A:       ; %bb.0:15232; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15233; GFX90A-NEXT:    flat_load_dword v5, v[0:1] offset:204415234; GFX90A-NEXT:    s_mov_b64 s[4:5], 015235; GFX90A-NEXT:  .LBB48_1: ; %atomicrmw.start15236; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=115237; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15238; GFX90A-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]15239; GFX90A-NEXT:    buffer_wbl215240; GFX90A-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 glc15241; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15242; GFX90A-NEXT:    buffer_invl215243; GFX90A-NEXT:    buffer_wbinvl115244; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v515245; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15246; GFX90A-NEXT:    v_mov_b32_e32 v5, v315247; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]15248; GFX90A-NEXT:    s_cbranch_execnz .LBB48_115249; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end15250; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]15251; GFX90A-NEXT:    v_mov_b32_e32 v0, v315252; GFX90A-NEXT:    s_setpc_b64 s[30:31]15253;15254; GFX908-LABEL: flat_system_atomic_fsub_ret_v2f16__offset12b_pos:15255; GFX908:       ; %bb.0:15256; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15257; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:204415258; GFX908-NEXT:    s_mov_b64 s[4:5], 015259; GFX908-NEXT:  .LBB48_1: ; %atomicrmw.start15260; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=115261; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15262; GFX908-NEXT:    v_mov_b32_e32 v4, v315263; GFX908-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15264; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2044 glc15265; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15266; GFX908-NEXT:    buffer_wbinvl115267; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v415268; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15269; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]15270; GFX908-NEXT:    s_cbranch_execnz .LBB48_115271; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end15272; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]15273; GFX908-NEXT:    v_mov_b32_e32 v0, v315274; GFX908-NEXT:    s_setpc_b64 s[30:31]15275;15276; GFX8-LABEL: flat_system_atomic_fsub_ret_v2f16__offset12b_pos:15277; GFX8:       ; %bb.0:15278; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15279; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v015280; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc15281; GFX8-NEXT:    flat_load_dword v0, v[3:4]15282; GFX8-NEXT:    s_mov_b64 s[4:5], 015283; GFX8-NEXT:  .LBB48_1: ; %atomicrmw.start15284; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=115285; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15286; GFX8-NEXT:    v_mov_b32_e32 v1, v015287; GFX8-NEXT:    v_sub_f16_sdwa v0, v1, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_115288; GFX8-NEXT:    v_sub_f16_e32 v5, v1, v215289; GFX8-NEXT:    v_or_b32_e32 v0, v5, v015290; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc15291; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15292; GFX8-NEXT:    buffer_wbinvl115293; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v115294; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15295; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]15296; GFX8-NEXT:    s_cbranch_execnz .LBB48_115297; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end15298; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]15299; GFX8-NEXT:    s_setpc_b64 s[30:31]15300;15301; GFX7-LABEL: flat_system_atomic_fsub_ret_v2f16__offset12b_pos:15302; GFX7:       ; %bb.0:15303; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15304; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fc, v015305; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc15306; GFX7-NEXT:    flat_load_dword v1, v[4:5]15307; GFX7-NEXT:    v_cvt_f16_f32_e32 v0, v315308; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v215309; GFX7-NEXT:    s_mov_b64 s[4:5], 015310; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v015311; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v315312; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15313; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v115314; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v115315; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v115316; GFX7-NEXT:  .LBB48_1: ; %atomicrmw.start15317; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=115318; GFX7-NEXT:    v_cvt_f16_f32_e32 v1, v115319; GFX7-NEXT:    v_cvt_f16_f32_e32 v0, v015320; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v115321; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v015322; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v115323; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v215324; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v315325; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v615326; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v715327; GFX7-NEXT:    v_or_b32_e32 v7, v0, v115328; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v615329; GFX7-NEXT:    v_or_b32_e32 v6, v8, v015330; GFX7-NEXT:    flat_atomic_cmpswap v6, v[4:5], v[6:7] glc15331; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15332; GFX7-NEXT:    buffer_wbinvl115333; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v615334; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v615335; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v115336; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v715337; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15338; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]15339; GFX7-NEXT:    s_cbranch_execnz .LBB48_115340; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end15341; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]15342; GFX7-NEXT:    s_setpc_b64 s[30:31]15343  %gep = getelementptr inbounds <2 x half>, ptr %ptr, i64 51115344  %result = atomicrmw fsub ptr %gep, <2 x half> %val seq_cst15345  ret <2 x half> %result15346}15347 15348define void @flat_system_atomic_fsub_noret_v2f16__offset12b_pos(ptr %ptr, <2 x half> %val) #0 {15349; GFX12-LABEL: flat_system_atomic_fsub_noret_v2f16__offset12b_pos:15350; GFX12:       ; %bb.0:15351; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015352; GFX12-NEXT:    s_wait_expcnt 0x015353; GFX12-NEXT:    s_wait_samplecnt 0x015354; GFX12-NEXT:    s_wait_bvhcnt 0x015355; GFX12-NEXT:    s_wait_kmcnt 0x015356; GFX12-NEXT:    flat_load_b32 v4, v[0:1] offset:204415357; GFX12-NEXT:    s_mov_b32 s0, 015358; GFX12-NEXT:  .LBB49_1: ; %atomicrmw.start15359; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=115360; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015361; GFX12-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15362; GFX12-NEXT:    global_wb scope:SCOPE_SYS15363; GFX12-NEXT:    s_wait_storecnt 0x015364; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS15365; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015366; GFX12-NEXT:    global_inv scope:SCOPE_SYS15367; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v415368; GFX12-NEXT:    v_mov_b32_e32 v4, v315369; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15370; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s015371; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15372; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015373; GFX12-NEXT:    s_cbranch_execnz .LBB49_115374; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end15375; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s015376; GFX12-NEXT:    s_wait_loadcnt 0x015377; GFX12-NEXT:    s_setpc_b64 s[30:31]15378;15379; GFX942-LABEL: flat_system_atomic_fsub_noret_v2f16__offset12b_pos:15380; GFX942:       ; %bb.0:15381; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15382; GFX942-NEXT:    flat_load_dword v5, v[0:1] offset:204415383; GFX942-NEXT:    s_mov_b64 s[0:1], 015384; GFX942-NEXT:  .LBB49_1: ; %atomicrmw.start15385; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=115386; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15387; GFX942-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]15388; GFX942-NEXT:    buffer_wbl2 sc0 sc115389; GFX942-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 sc0 sc115390; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15391; GFX942-NEXT:    buffer_inv sc0 sc115392; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v515393; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]15394; GFX942-NEXT:    v_mov_b32_e32 v5, v315395; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]15396; GFX942-NEXT:    s_cbranch_execnz .LBB49_115397; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end15398; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]15399; GFX942-NEXT:    s_setpc_b64 s[30:31]15400;15401; GFX11-LABEL: flat_system_atomic_fsub_noret_v2f16__offset12b_pos:15402; GFX11:       ; %bb.0:15403; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15404; GFX11-NEXT:    flat_load_b32 v4, v[0:1] offset:204415405; GFX11-NEXT:    s_mov_b32 s0, 015406; GFX11-NEXT:  .LBB49_1: ; %atomicrmw.start15407; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=115408; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15409; GFX11-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15410; GFX11-NEXT:    s_waitcnt_vscnt null, 0x015411; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 glc15412; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15413; GFX11-NEXT:    buffer_gl1_inv15414; GFX11-NEXT:    buffer_gl0_inv15415; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v415416; GFX11-NEXT:    v_mov_b32_e32 v4, v315417; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s015418; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15419; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015420; GFX11-NEXT:    s_cbranch_execnz .LBB49_115421; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end15422; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s015423; GFX11-NEXT:    s_setpc_b64 s[30:31]15424;15425; GFX10-LABEL: flat_system_atomic_fsub_noret_v2f16__offset12b_pos:15426; GFX10:       ; %bb.0:15427; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15428; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fc, v015429; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo15430; GFX10-NEXT:    s_mov_b32 s4, 015431; GFX10-NEXT:    flat_load_dword v4, v[0:1]15432; GFX10-NEXT:  .LBB49_1: ; %atomicrmw.start15433; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=115434; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15435; GFX10-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15436; GFX10-NEXT:    s_waitcnt_vscnt null, 0x015437; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc15438; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15439; GFX10-NEXT:    buffer_gl1_inv15440; GFX10-NEXT:    buffer_gl0_inv15441; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v415442; GFX10-NEXT:    v_mov_b32_e32 v4, v315443; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s415444; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s415445; GFX10-NEXT:    s_cbranch_execnz .LBB49_115446; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end15447; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s415448; GFX10-NEXT:    s_setpc_b64 s[30:31]15449;15450; GFX90A-LABEL: flat_system_atomic_fsub_noret_v2f16__offset12b_pos:15451; GFX90A:       ; %bb.0:15452; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15453; GFX90A-NEXT:    flat_load_dword v5, v[0:1] offset:204415454; GFX90A-NEXT:    s_mov_b64 s[4:5], 015455; GFX90A-NEXT:  .LBB49_1: ; %atomicrmw.start15456; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=115457; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15458; GFX90A-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]15459; GFX90A-NEXT:    buffer_wbl215460; GFX90A-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[4:5] offset:2044 glc15461; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15462; GFX90A-NEXT:    buffer_invl215463; GFX90A-NEXT:    buffer_wbinvl115464; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v515465; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15466; GFX90A-NEXT:    v_mov_b32_e32 v5, v315467; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]15468; GFX90A-NEXT:    s_cbranch_execnz .LBB49_115469; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end15470; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]15471; GFX90A-NEXT:    s_setpc_b64 s[30:31]15472;15473; GFX908-LABEL: flat_system_atomic_fsub_noret_v2f16__offset12b_pos:15474; GFX908:       ; %bb.0:15475; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15476; GFX908-NEXT:    flat_load_dword v4, v[0:1] offset:204415477; GFX908-NEXT:    s_mov_b64 s[4:5], 015478; GFX908-NEXT:  .LBB49_1: ; %atomicrmw.start15479; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=115480; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15481; GFX908-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15482; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2044 glc15483; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15484; GFX908-NEXT:    buffer_wbinvl115485; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v415486; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15487; GFX908-NEXT:    v_mov_b32_e32 v4, v315488; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]15489; GFX908-NEXT:    s_cbranch_execnz .LBB49_115490; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end15491; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]15492; GFX908-NEXT:    s_setpc_b64 s[30:31]15493;15494; GFX8-LABEL: flat_system_atomic_fsub_noret_v2f16__offset12b_pos:15495; GFX8:       ; %bb.0:15496; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15497; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v015498; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc15499; GFX8-NEXT:    flat_load_dword v4, v[0:1]15500; GFX8-NEXT:    s_mov_b64 s[4:5], 015501; GFX8-NEXT:  .LBB49_1: ; %atomicrmw.start15502; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=115503; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15504; GFX8-NEXT:    v_sub_f16_sdwa v3, v4, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_115505; GFX8-NEXT:    v_sub_f16_e32 v5, v4, v215506; GFX8-NEXT:    v_or_b32_e32 v3, v5, v315507; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc15508; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15509; GFX8-NEXT:    buffer_wbinvl115510; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v415511; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15512; GFX8-NEXT:    v_mov_b32_e32 v4, v315513; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]15514; GFX8-NEXT:    s_cbranch_execnz .LBB49_115515; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end15516; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]15517; GFX8-NEXT:    s_setpc_b64 s[30:31]15518;15519; GFX7-LABEL: flat_system_atomic_fsub_noret_v2f16__offset12b_pos:15520; GFX7:       ; %bb.0:15521; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15522; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fc, v015523; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc15524; GFX7-NEXT:    flat_load_dword v5, v[0:1]15525; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v315526; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v215527; GFX7-NEXT:    s_mov_b64 s[4:5], 015528; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v315529; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15530; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v515531; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v515532; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v315533; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v615534; GFX7-NEXT:  .LBB49_1: ; %atomicrmw.start15535; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=115536; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v515537; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v415538; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v515539; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v415540; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v515541; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v215542; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v315543; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v615544; GFX7-NEXT:    v_cvt_f16_f32_e32 v7, v715545; GFX7-NEXT:    v_or_b32_e32 v6, v4, v515546; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v815547; GFX7-NEXT:    v_or_b32_e32 v5, v7, v415548; GFX7-NEXT:    flat_atomic_cmpswap v7, v[0:1], v[5:6] glc15549; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15550; GFX7-NEXT:    buffer_wbinvl115551; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v715552; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v715553; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v515554; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v615555; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15556; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]15557; GFX7-NEXT:    s_cbranch_execnz .LBB49_115558; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end15559; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]15560; GFX7-NEXT:    s_setpc_b64 s[30:31]15561  %gep = getelementptr inbounds <2 x half>, ptr %ptr, i64 51115562  %unused = atomicrmw fsub ptr %gep, <2 x half> %val seq_cst15563  ret void15564}15565 15566; --------------------------------------------------------------------15567; <2 x bfloat>15568; --------------------------------------------------------------------15569 15570define <2 x bfloat> @flat_agent_atomic_fsub_ret_v2bf16(ptr %ptr, <2 x bfloat> %val) #0 {15571; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_ret_v2bf16:15572; GFX12-TRUE16:       ; %bb.0:15573; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x015574; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x015575; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x015576; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x015577; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x015578; GFX12-TRUE16-NEXT:    flat_load_b32 v3, v[0:1]15579; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v215580; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v215581; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 015582; GFX12-TRUE16-NEXT:  .LBB50_1: ; %atomicrmw.start15583; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=115584; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x015585; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v315586; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15587; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v615588; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v415589; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v615590; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)15591; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 115592; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v215593; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v515594; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)15595; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff15596; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 115597; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v315598; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v315599; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)15600; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff15601; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)15602; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo15603; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v515604; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)15605; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo15606; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)15607; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h15608; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x015609; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV15610; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x015611; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV15612; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v615613; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)15614; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s015615; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)15616; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015617; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB50_115618; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end15619; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s015620; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v315621; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x015622; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]15623;15624; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_ret_v2bf16:15625; GFX12-FAKE16:       ; %bb.0:15626; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x015627; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x015628; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x015629; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x015630; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x015631; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]15632; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v215633; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v215634; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 015635; GFX12-FAKE16-NEXT:  .LBB50_1: ; %atomicrmw.start15636; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=115637; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x015638; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v315639; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15640; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v615641; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v215642; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v615643; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)15644; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 115645; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v415646; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v515647; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v515648; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)15649; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff15650; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 115651; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v315652; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v315653; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)15654; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo15655; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff15656; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)15657; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15658; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s015659; GFX12-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030215660; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x015661; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV15662; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x015663; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV15664; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v615665; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)15666; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s115667; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)15668; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s115669; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB50_115670; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end15671; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s115672; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v315673; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x015674; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]15675;15676; GFX942-LABEL: flat_agent_atomic_fsub_ret_v2bf16:15677; GFX942:       ; %bb.0:15678; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15679; GFX942-NEXT:    flat_load_dword v3, v[0:1]15680; GFX942-NEXT:    s_mov_b64 s[2:3], 015681; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v215682; GFX942-NEXT:    s_movk_i32 s4, 0x7fff15683; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v215684; GFX942-NEXT:    s_mov_b32 s5, 0x706030215685; GFX942-NEXT:  .LBB50_1: ; %atomicrmw.start15686; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=115687; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15688; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v315689; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v315690; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v415691; GFX942-NEXT:    v_sub_f32_e32 v6, v6, v515692; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 115693; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 115694; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v215695; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v615696; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s415697; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s415698; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v615699; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v215700; GFX942-NEXT:    s_nop 015701; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc15702; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]15703; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s515704; GFX942-NEXT:    buffer_wbl2 sc115705; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc015706; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15707; GFX942-NEXT:    buffer_inv sc115708; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315709; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]15710; GFX942-NEXT:    v_mov_b32_e32 v3, v215711; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]15712; GFX942-NEXT:    s_cbranch_execnz .LBB50_115713; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end15714; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]15715; GFX942-NEXT:    v_mov_b32_e32 v0, v215716; GFX942-NEXT:    s_setpc_b64 s[30:31]15717;15718; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_ret_v2bf16:15719; GFX11-TRUE16:       ; %bb.0:15720; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15721; GFX11-TRUE16-NEXT:    flat_load_b32 v3, v[0:1]15722; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v215723; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v215724; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 015725; GFX11-TRUE16-NEXT:    .p2align 615726; GFX11-TRUE16-NEXT:  .LBB50_1: ; %atomicrmw.start15727; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=115728; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15729; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v315730; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15731; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v615732; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v415733; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v615734; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)15735; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 115736; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v215737; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v515738; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)15739; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff15740; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 115741; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v315742; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v315743; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)15744; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff15745; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo15746; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v515747; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo15748; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)15749; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h15750; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x015751; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] glc15752; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15753; GFX11-TRUE16-NEXT:    buffer_gl1_inv15754; GFX11-TRUE16-NEXT:    buffer_gl0_inv15755; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v615756; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s015757; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15758; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015759; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB50_115760; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end15761; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s015762; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, v315763; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]15764;15765; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_ret_v2bf16:15766; GFX11-FAKE16:       ; %bb.0:15767; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15768; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]15769; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v215770; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v215771; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 015772; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x115773; GFX11-FAKE16-NEXT:    .p2align 615774; GFX11-FAKE16-NEXT:  .LBB50_1: ; %atomicrmw.start15775; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=115776; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15777; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v315778; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15779; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v615780; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v215781; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v615782; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)15783; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 115784; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v415785; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v515786; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v515787; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)15788; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff15789; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 115790; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v315791; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v315792; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)15793; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo15794; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff15795; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15796; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s015797; GFX11-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030215798; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x015799; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] glc15800; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15801; GFX11-FAKE16-NEXT:    buffer_gl1_inv15802; GFX11-FAKE16-NEXT:    buffer_gl0_inv15803; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v615804; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s115805; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15806; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s115807; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB50_115808; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end15809; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x215810; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s115811; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v315812; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]15813;15814; GFX10-LABEL: flat_agent_atomic_fsub_ret_v2bf16:15815; GFX10:       ; %bb.0:15816; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15817; GFX10-NEXT:    flat_load_dword v3, v[0:1]15818; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v215819; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff0000, v215820; GFX10-NEXT:    s_mov_b32 s5, 015821; GFX10-NEXT:  .LBB50_1: ; %atomicrmw.start15822; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=115823; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15824; GFX10-NEXT:    v_mov_b32_e32 v6, v315825; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 16, v615826; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v615827; GFX10-NEXT:    v_sub_f32_e32 v3, v3, v415828; GFX10-NEXT:    v_sub_f32_e32 v5, v5, v215829; GFX10-NEXT:    v_bfe_u32 v7, v3, 16, 115830; GFX10-NEXT:    v_bfe_u32 v8, v5, 16, 115831; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v315832; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v515833; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v515834; GFX10-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff15835; GFX10-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff15836; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v3, v315837; GFX10-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo15838; GFX10-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s415839; GFX10-NEXT:    v_perm_b32 v5, v5, v3, 0x706030215840; GFX10-NEXT:    s_waitcnt_vscnt null, 0x015841; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[5:6] glc15842; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15843; GFX10-NEXT:    buffer_gl1_inv15844; GFX10-NEXT:    buffer_gl0_inv15845; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v615846; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s515847; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s515848; GFX10-NEXT:    s_cbranch_execnz .LBB50_115849; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end15850; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s515851; GFX10-NEXT:    v_mov_b32_e32 v0, v315852; GFX10-NEXT:    s_setpc_b64 s[30:31]15853;15854; GFX90A-LABEL: flat_agent_atomic_fsub_ret_v2bf16:15855; GFX90A:       ; %bb.0:15856; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15857; GFX90A-NEXT:    flat_load_dword v3, v[0:1]15858; GFX90A-NEXT:    s_mov_b64 s[6:7], 015859; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v215860; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff15861; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v215862; GFX90A-NEXT:    s_mov_b32 s9, 0x706030215863; GFX90A-NEXT:  .LBB50_1: ; %atomicrmw.start15864; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=115865; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15866; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v315867; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v315868; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v415869; GFX90A-NEXT:    v_sub_f32_e32 v6, v6, v515870; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 115871; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 115872; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v215873; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v615874; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s815875; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s815876; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v615877; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v215878; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]15879; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc15880; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s915881; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc15882; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15883; GFX90A-NEXT:    buffer_wbinvl115884; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315885; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]15886; GFX90A-NEXT:    v_mov_b32_e32 v3, v215887; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]15888; GFX90A-NEXT:    s_cbranch_execnz .LBB50_115889; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end15890; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]15891; GFX90A-NEXT:    v_mov_b32_e32 v0, v215892; GFX90A-NEXT:    s_setpc_b64 s[30:31]15893;15894; GFX908-LABEL: flat_agent_atomic_fsub_ret_v2bf16:15895; GFX908:       ; %bb.0:15896; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15897; GFX908-NEXT:    flat_load_dword v3, v[0:1]15898; GFX908-NEXT:    s_mov_b64 s[6:7], 015899; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v215900; GFX908-NEXT:    s_movk_i32 s8, 0x7fff15901; GFX908-NEXT:    v_and_b32_e32 v2, 0xffff0000, v215902; GFX908-NEXT:    s_mov_b32 s9, 0x706030215903; GFX908-NEXT:  .LBB50_1: ; %atomicrmw.start15904; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=115905; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15906; GFX908-NEXT:    v_mov_b32_e32 v6, v315907; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v615908; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v615909; GFX908-NEXT:    v_sub_f32_e32 v3, v3, v415910; GFX908-NEXT:    v_sub_f32_e32 v5, v5, v215911; GFX908-NEXT:    v_bfe_u32 v7, v3, 16, 115912; GFX908-NEXT:    v_bfe_u32 v9, v5, 16, 115913; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v315914; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v515915; GFX908-NEXT:    v_add3_u32 v7, v7, v3, s815916; GFX908-NEXT:    v_add3_u32 v9, v9, v5, s815917; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v515918; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v3, v315919; GFX908-NEXT:    v_cndmask_b32_e64 v3, v7, v8, s[4:5]15920; GFX908-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc15921; GFX908-NEXT:    v_perm_b32 v5, v5, v3, s915922; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[5:6] glc15923; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15924; GFX908-NEXT:    buffer_wbinvl115925; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v615926; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]15927; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]15928; GFX908-NEXT:    s_cbranch_execnz .LBB50_115929; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end15930; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]15931; GFX908-NEXT:    v_mov_b32_e32 v0, v315932; GFX908-NEXT:    s_setpc_b64 s[30:31]15933;15934; GFX8-LABEL: flat_agent_atomic_fsub_ret_v2bf16:15935; GFX8:       ; %bb.0:15936; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15937; GFX8-NEXT:    flat_load_dword v3, v[0:1]15938; GFX8-NEXT:    s_mov_b64 s[6:7], 015939; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v215940; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v215941; GFX8-NEXT:  .LBB50_1: ; %atomicrmw.start15942; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=115943; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15944; GFX8-NEXT:    v_mov_b32_e32 v6, v315945; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 16, v615946; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v615947; GFX8-NEXT:    v_sub_f32_e32 v3, v3, v415948; GFX8-NEXT:    v_sub_f32_e32 v5, v5, v215949; GFX8-NEXT:    v_bfe_u32 v7, v3, 16, 115950; GFX8-NEXT:    v_bfe_u32 v9, v5, 16, 115951; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v315952; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v515953; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v715954; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v915955; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v515956; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v515957; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v315958; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v3, v315959; GFX8-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc15960; GFX8-NEXT:    v_cndmask_b32_e64 v3, v7, v8, s[4:5]15961; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v515962; GFX8-NEXT:    v_alignbit_b32 v5, v5, v3, 1615963; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[5:6] glc15964; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15965; GFX8-NEXT:    buffer_wbinvl115966; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v615967; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]15968; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]15969; GFX8-NEXT:    s_cbranch_execnz .LBB50_115970; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end15971; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]15972; GFX8-NEXT:    v_mov_b32_e32 v0, v315973; GFX8-NEXT:    s_setpc_b64 s[30:31]15974;15975; GFX7-LABEL: flat_agent_atomic_fsub_ret_v2bf16:15976; GFX7:       ; %bb.0:15977; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15978; GFX7-NEXT:    flat_load_dword v5, v[0:1]15979; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v215980; GFX7-NEXT:    v_mul_f32_e32 v6, 1.0, v315981; GFX7-NEXT:    s_mov_b64 s[4:5], 015982; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v215983; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15984; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v515985; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v515986; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v615987; GFX7-NEXT:  .LBB50_1: ; %atomicrmw.start15988; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=115989; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v215990; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v315991; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v215992; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v315993; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v215994; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v515995; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v415996; GFX7-NEXT:    v_alignbit_b32 v3, v2, v3, 1615997; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v715998; GFX7-NEXT:    v_alignbit_b32 v2, v2, v6, 1615999; GFX7-NEXT:    flat_atomic_cmpswap v6, v[0:1], v[2:3] glc16000; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16001; GFX7-NEXT:    buffer_wbinvl116002; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v316003; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v616004; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]16005; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v616006; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]16007; GFX7-NEXT:    s_cbranch_execnz .LBB50_116008; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end16009; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]16010; GFX7-NEXT:    v_mov_b32_e32 v0, v316011; GFX7-NEXT:    v_mov_b32_e32 v1, v216012; GFX7-NEXT:    s_setpc_b64 s[30:31]16013  %result = atomicrmw fsub ptr %ptr, <2 x bfloat> %val syncscope("agent") seq_cst16014  ret <2 x bfloat> %result16015}16016 16017define <2 x bfloat> @flat_agent_atomic_fsub_ret_v2bf16__offset12b_pos(ptr %ptr, <2 x bfloat> %val) #0 {16018; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_ret_v2bf16__offset12b_pos:16019; GFX12-TRUE16:       ; %bb.0:16020; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x016021; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x016022; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x016023; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x016024; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x016025; GFX12-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204416026; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v216027; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v216028; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 016029; GFX12-TRUE16-NEXT:  .LBB51_1: ; %atomicrmw.start16030; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=116031; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x016032; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v316033; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16034; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616035; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v416036; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616037; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16038; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 116039; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v216040; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516041; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)16042; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16043; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 116044; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316045; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v316046; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)16047; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16048; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)16049; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo16050; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516051; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)16052; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16053; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)16054; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h16055; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x016056; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV16057; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x016058; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV16059; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616060; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16061; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s016062; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16063; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s016064; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB51_116065; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end16066; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s016067; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v316068; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x016069; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]16070;16071; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_ret_v2bf16__offset12b_pos:16072; GFX12-FAKE16:       ; %bb.0:16073; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x016074; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x016075; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x016076; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x016077; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x016078; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204416079; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v216080; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216081; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 016082; GFX12-FAKE16-NEXT:  .LBB51_1: ; %atomicrmw.start16083; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=116084; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x016085; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v316086; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16087; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616088; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v216089; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616090; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16091; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 116092; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v416093; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516094; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516095; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16096; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16097; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 116098; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316099; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v316100; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)16101; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16102; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16103; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)16104; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16105; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s016106; GFX12-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030216107; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x016108; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV16109; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x016110; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV16111; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616112; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16113; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s116114; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16115; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s116116; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB51_116117; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end16118; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s116119; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v316120; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x016121; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]16122;16123; GFX942-LABEL: flat_agent_atomic_fsub_ret_v2bf16__offset12b_pos:16124; GFX942:       ; %bb.0:16125; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16126; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:204416127; GFX942-NEXT:    s_mov_b64 s[2:3], 016128; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v216129; GFX942-NEXT:    s_movk_i32 s4, 0x7fff16130; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v216131; GFX942-NEXT:    s_mov_b32 s5, 0x706030216132; GFX942-NEXT:  .LBB51_1: ; %atomicrmw.start16133; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=116134; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16135; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v316136; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v316137; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v416138; GFX942-NEXT:    v_sub_f32_e32 v6, v6, v516139; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 116140; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 116141; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v216142; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v616143; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s416144; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s416145; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v616146; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v216147; GFX942-NEXT:    s_nop 016148; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc16149; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]16150; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s516151; GFX942-NEXT:    buffer_wbl2 sc116152; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 sc016153; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16154; GFX942-NEXT:    buffer_inv sc116155; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v316156; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]16157; GFX942-NEXT:    v_mov_b32_e32 v3, v216158; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]16159; GFX942-NEXT:    s_cbranch_execnz .LBB51_116160; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end16161; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]16162; GFX942-NEXT:    v_mov_b32_e32 v0, v216163; GFX942-NEXT:    s_setpc_b64 s[30:31]16164;16165; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_ret_v2bf16__offset12b_pos:16166; GFX11-TRUE16:       ; %bb.0:16167; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16168; GFX11-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204416169; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v216170; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v216171; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 016172; GFX11-TRUE16-NEXT:    .p2align 616173; GFX11-TRUE16-NEXT:  .LBB51_1: ; %atomicrmw.start16174; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=116175; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16176; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v316177; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16178; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616179; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v416180; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616181; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16182; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 116183; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v216184; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516185; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)16186; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16187; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 116188; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316189; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v316190; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)16191; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16192; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo16193; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516194; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16195; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)16196; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h16197; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x016198; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] offset:2044 glc16199; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16200; GFX11-TRUE16-NEXT:    buffer_gl1_inv16201; GFX11-TRUE16-NEXT:    buffer_gl0_inv16202; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616203; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s016204; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)16205; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s016206; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB51_116207; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end16208; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s016209; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, v316210; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]16211;16212; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_ret_v2bf16__offset12b_pos:16213; GFX11-FAKE16:       ; %bb.0:16214; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16215; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204416216; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v216217; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216218; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 016219; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x116220; GFX11-FAKE16-NEXT:    .p2align 616221; GFX11-FAKE16-NEXT:  .LBB51_1: ; %atomicrmw.start16222; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=116223; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16224; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v316225; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16226; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616227; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v216228; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616229; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16230; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 116231; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v416232; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516233; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516234; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16235; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16236; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 116237; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316238; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v316239; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16240; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16241; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16242; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16243; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s016244; GFX11-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030216245; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x016246; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] offset:2044 glc16247; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16248; GFX11-FAKE16-NEXT:    buffer_gl1_inv16249; GFX11-FAKE16-NEXT:    buffer_gl0_inv16250; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616251; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s116252; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)16253; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s116254; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB51_116255; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end16256; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x216257; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s116258; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v316259; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]16260;16261; GFX10-LABEL: flat_agent_atomic_fsub_ret_v2bf16__offset12b_pos:16262; GFX10:       ; %bb.0:16263; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16264; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fc, v016265; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, 0, v1, vcc_lo16266; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 16, v216267; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216268; GFX10-NEXT:    s_mov_b32 s5, 016269; GFX10-NEXT:    flat_load_dword v0, v[3:4]16270; GFX10-NEXT:  .LBB51_1: ; %atomicrmw.start16271; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=116272; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16273; GFX10-NEXT:    v_mov_b32_e32 v6, v016274; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 16, v616275; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616276; GFX10-NEXT:    v_sub_f32_e32 v0, v0, v116277; GFX10-NEXT:    v_sub_f32_e32 v5, v5, v216278; GFX10-NEXT:    v_bfe_u32 v7, v0, 16, 116279; GFX10-NEXT:    v_bfe_u32 v8, v5, 16, 116280; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v016281; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v516282; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516283; GFX10-NEXT:    v_add3_u32 v7, v7, v0, 0x7fff16284; GFX10-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16285; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v0, v016286; GFX10-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16287; GFX10-NEXT:    v_cndmask_b32_e64 v0, v7, v9, s416288; GFX10-NEXT:    v_perm_b32 v5, v5, v0, 0x706030216289; GFX10-NEXT:    s_waitcnt_vscnt null, 0x016290; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc16291; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16292; GFX10-NEXT:    buffer_gl1_inv16293; GFX10-NEXT:    buffer_gl0_inv16294; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v616295; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s516296; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s516297; GFX10-NEXT:    s_cbranch_execnz .LBB51_116298; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end16299; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s516300; GFX10-NEXT:    s_setpc_b64 s[30:31]16301;16302; GFX90A-LABEL: flat_agent_atomic_fsub_ret_v2bf16__offset12b_pos:16303; GFX90A:       ; %bb.0:16304; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16305; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:204416306; GFX90A-NEXT:    s_mov_b64 s[6:7], 016307; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v216308; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff16309; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v216310; GFX90A-NEXT:    s_mov_b32 s9, 0x706030216311; GFX90A-NEXT:  .LBB51_1: ; %atomicrmw.start16312; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=116313; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16314; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v316315; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v316316; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v416317; GFX90A-NEXT:    v_sub_f32_e32 v6, v6, v516318; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 116319; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 116320; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v216321; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v616322; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s816323; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s816324; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v616325; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v216326; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]16327; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc16328; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s916329; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc16330; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16331; GFX90A-NEXT:    buffer_wbinvl116332; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v316333; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]16334; GFX90A-NEXT:    v_mov_b32_e32 v3, v216335; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]16336; GFX90A-NEXT:    s_cbranch_execnz .LBB51_116337; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end16338; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]16339; GFX90A-NEXT:    v_mov_b32_e32 v0, v216340; GFX90A-NEXT:    s_setpc_b64 s[30:31]16341;16342; GFX908-LABEL: flat_agent_atomic_fsub_ret_v2bf16__offset12b_pos:16343; GFX908:       ; %bb.0:16344; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16345; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:204416346; GFX908-NEXT:    s_mov_b64 s[6:7], 016347; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v216348; GFX908-NEXT:    s_movk_i32 s8, 0x7fff16349; GFX908-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216350; GFX908-NEXT:    s_mov_b32 s9, 0x706030216351; GFX908-NEXT:  .LBB51_1: ; %atomicrmw.start16352; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=116353; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16354; GFX908-NEXT:    v_mov_b32_e32 v6, v316355; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v616356; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616357; GFX908-NEXT:    v_sub_f32_e32 v3, v3, v416358; GFX908-NEXT:    v_sub_f32_e32 v5, v5, v216359; GFX908-NEXT:    v_bfe_u32 v7, v3, 16, 116360; GFX908-NEXT:    v_bfe_u32 v9, v5, 16, 116361; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v316362; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v516363; GFX908-NEXT:    v_add3_u32 v7, v7, v3, s816364; GFX908-NEXT:    v_add3_u32 v9, v9, v5, s816365; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v516366; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v3, v316367; GFX908-NEXT:    v_cndmask_b32_e64 v3, v7, v8, s[4:5]16368; GFX908-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc16369; GFX908-NEXT:    v_perm_b32 v5, v5, v3, s916370; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[5:6] offset:2044 glc16371; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16372; GFX908-NEXT:    buffer_wbinvl116373; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v616374; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]16375; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]16376; GFX908-NEXT:    s_cbranch_execnz .LBB51_116377; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end16378; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]16379; GFX908-NEXT:    v_mov_b32_e32 v0, v316380; GFX908-NEXT:    s_setpc_b64 s[30:31]16381;16382; GFX8-LABEL: flat_agent_atomic_fsub_ret_v2bf16__offset12b_pos:16383; GFX8:       ; %bb.0:16384; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16385; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v016386; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc16387; GFX8-NEXT:    flat_load_dword v0, v[3:4]16388; GFX8-NEXT:    s_mov_b64 s[6:7], 016389; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 16, v216390; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216391; GFX8-NEXT:  .LBB51_1: ; %atomicrmw.start16392; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=116393; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16394; GFX8-NEXT:    v_mov_b32_e32 v6, v016395; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 16, v616396; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616397; GFX8-NEXT:    v_sub_f32_e32 v0, v0, v116398; GFX8-NEXT:    v_sub_f32_e32 v5, v5, v216399; GFX8-NEXT:    v_bfe_u32 v7, v0, 16, 116400; GFX8-NEXT:    v_bfe_u32 v9, v5, 16, 116401; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v016402; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v516403; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v716404; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v916405; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v516406; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v516407; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v016408; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v0, v016409; GFX8-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc16410; GFX8-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[4:5]16411; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v516412; GFX8-NEXT:    v_alignbit_b32 v5, v5, v0, 1616413; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc16414; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16415; GFX8-NEXT:    buffer_wbinvl116416; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v616417; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]16418; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]16419; GFX8-NEXT:    s_cbranch_execnz .LBB51_116420; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end16421; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]16422; GFX8-NEXT:    s_setpc_b64 s[30:31]16423;16424; GFX7-LABEL: flat_agent_atomic_fsub_ret_v2bf16__offset12b_pos:16425; GFX7:       ; %bb.0:16426; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16427; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fc, v016428; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc16429; GFX7-NEXT:    flat_load_dword v0, v[4:5]16430; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v216431; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v316432; GFX7-NEXT:    s_mov_b64 s[4:5], 016433; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v116434; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v316435; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16436; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v016437; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v016438; GFX7-NEXT:  .LBB51_1: ; %atomicrmw.start16439; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=116440; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v116441; GFX7-NEXT:    v_mul_f32_e32 v0, 1.0, v016442; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v116443; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v016444; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v116445; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v316446; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v216447; GFX7-NEXT:    v_alignbit_b32 v1, v1, v0, 1616448; GFX7-NEXT:    v_lshrrev_b32_e32 v0, 16, v716449; GFX7-NEXT:    v_alignbit_b32 v0, v0, v6, 1616450; GFX7-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc16451; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16452; GFX7-NEXT:    buffer_wbinvl116453; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v116454; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v016455; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]16456; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v016457; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]16458; GFX7-NEXT:    s_cbranch_execnz .LBB51_116459; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end16460; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]16461; GFX7-NEXT:    s_setpc_b64 s[30:31]16462  %gep = getelementptr inbounds <2 x bfloat>, ptr %ptr, i64 51116463  %result = atomicrmw fsub ptr %gep, <2 x bfloat> %val syncscope("agent") seq_cst16464  ret <2 x bfloat> %result16465}16466 16467define <2 x bfloat> @flat_agent_atomic_fsub_ret_v2bf16__offset12b_neg(ptr %ptr, <2 x bfloat> %val) #0 {16468; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_ret_v2bf16__offset12b_neg:16469; GFX12-TRUE16:       ; %bb.0:16470; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x016471; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x016472; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x016473; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x016474; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x016475; GFX12-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:-204816476; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v216477; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v216478; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 016479; GFX12-TRUE16-NEXT:  .LBB52_1: ; %atomicrmw.start16480; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=116481; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x016482; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v316483; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16484; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616485; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v416486; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616487; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16488; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 116489; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v216490; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516491; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)16492; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16493; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 116494; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316495; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v316496; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)16497; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16498; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)16499; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo16500; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516501; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)16502; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16503; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)16504; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h16505; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x016506; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV16507; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x016508; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV16509; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616510; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16511; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s016512; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16513; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s016514; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB52_116515; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end16516; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s016517; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v316518; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x016519; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]16520;16521; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_ret_v2bf16__offset12b_neg:16522; GFX12-FAKE16:       ; %bb.0:16523; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x016524; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x016525; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x016526; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x016527; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x016528; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:-204816529; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v216530; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216531; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 016532; GFX12-FAKE16-NEXT:  .LBB52_1: ; %atomicrmw.start16533; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=116534; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x016535; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v316536; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16537; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616538; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v216539; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616540; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16541; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 116542; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v416543; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516544; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516545; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16546; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16547; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 116548; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316549; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v316550; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)16551; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16552; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16553; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)16554; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16555; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s016556; GFX12-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030216557; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x016558; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV16559; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x016560; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV16561; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616562; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16563; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s116564; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16565; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s116566; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB52_116567; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end16568; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s116569; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v316570; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x016571; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]16572;16573; GFX942-LABEL: flat_agent_atomic_fsub_ret_v2bf16__offset12b_neg:16574; GFX942:       ; %bb.0:16575; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16576; GFX942-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v016577; GFX942-NEXT:    s_movk_i32 s0, 0xf80016578; GFX942-NEXT:    s_nop 016579; GFX942-NEXT:    v_addc_co_u32_e32 v5, vcc, -1, v1, vcc16580; GFX942-NEXT:    flat_load_dword v3, v[4:5]16581; GFX942-NEXT:    s_mov_b32 s1, -116582; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]16583; GFX942-NEXT:    s_mov_b64 s[2:3], 016584; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 16, v216585; GFX942-NEXT:    s_movk_i32 s4, 0x7fff16586; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v216587; GFX942-NEXT:    s_mov_b32 s5, 0x706030216588; GFX942-NEXT:  .LBB52_1: ; %atomicrmw.start16589; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=116590; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16591; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 16, v316592; GFX942-NEXT:    v_and_b32_e32 v2, 0xffff0000, v316593; GFX942-NEXT:    v_sub_f32_e32 v0, v0, v116594; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v616595; GFX942-NEXT:    v_bfe_u32 v7, v0, 16, 116596; GFX942-NEXT:    v_bfe_u32 v9, v2, 16, 116597; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v016598; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v216599; GFX942-NEXT:    v_add3_u32 v7, v7, v0, s416600; GFX942-NEXT:    v_add3_u32 v9, v9, v2, s416601; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v216602; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v0, v016603; GFX942-NEXT:    s_nop 016604; GFX942-NEXT:    v_cndmask_b32_e32 v2, v9, v10, vcc16605; GFX942-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[0:1]16606; GFX942-NEXT:    v_perm_b32 v2, v2, v0, s516607; GFX942-NEXT:    buffer_wbl2 sc116608; GFX942-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[2:3] sc016609; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16610; GFX942-NEXT:    buffer_inv sc116611; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v316612; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]16613; GFX942-NEXT:    v_mov_b32_e32 v3, v016614; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]16615; GFX942-NEXT:    s_cbranch_execnz .LBB52_116616; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end16617; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]16618; GFX942-NEXT:    s_setpc_b64 s[30:31]16619;16620; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_ret_v2bf16__offset12b_neg:16621; GFX11-TRUE16:       ; %bb.0:16622; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16623; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v016624; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)16625; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, -1, v1, vcc_lo16626; GFX11-TRUE16-NEXT:    v_and_b32_e32 v1, 0xffff0000, v216627; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v216628; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 016629; GFX11-TRUE16-NEXT:    flat_load_b32 v0, v[3:4]16630; GFX11-TRUE16-NEXT:    .p2align 616631; GFX11-TRUE16-NEXT:  .LBB52_1: ; %atomicrmw.start16632; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=116633; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16634; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v016635; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16636; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616637; GFX11-TRUE16-NEXT:    v_dual_sub_f32 v5, v5, v1 :: v_dual_lshlrev_b32 v0, 16, v616638; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)16639; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 116640; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v0, v0, v216641; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516642; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)16643; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16644; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v0, 16, 116645; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v016646; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v0, v016647; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)16648; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v0, 0x7fff16649; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v0, v7, v9, vcc_lo16650; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516651; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16652; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)16653; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v0.h16654; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x016655; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v0, v[3:4], v[5:6] glc16656; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16657; GFX11-TRUE16-NEXT:    buffer_gl1_inv16658; GFX11-TRUE16-NEXT:    buffer_gl0_inv16659; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v616660; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s016661; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)16662; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s016663; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB52_116664; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end16665; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s016666; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]16667;16668; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_ret_v2bf16__offset12b_neg:16669; GFX11-FAKE16:       ; %bb.0:16670; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16671; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v016672; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)16673; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v4, null, -1, v1, vcc_lo16674; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v216675; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216676; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 016677; GFX11-FAKE16-NEXT:    flat_load_b32 v0, v[3:4]16678; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x116679; GFX11-FAKE16-NEXT:    .p2align 616680; GFX11-FAKE16-NEXT:  .LBB52_1: ; %atomicrmw.start16681; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=116682; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16683; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v016684; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16685; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616686; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v216687; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 16, v616688; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16689; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 116690; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v0, v0, v116691; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516692; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516693; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16694; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16695; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v0, 16, 116696; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v016697; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v0, v016698; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16699; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16700; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v0, 0x7fff16701; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16702; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, v7, v9, s016703; GFX11-FAKE16-NEXT:    v_perm_b32 v5, v5, v0, 0x706030216704; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x016705; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v0, v[3:4], v[5:6] glc16706; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16707; GFX11-FAKE16-NEXT:    buffer_gl1_inv16708; GFX11-FAKE16-NEXT:    buffer_gl0_inv16709; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v616710; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s116711; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)16712; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s116713; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB52_116714; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end16715; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x216716; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s116717; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]16718;16719; GFX10-LABEL: flat_agent_atomic_fsub_ret_v2bf16__offset12b_neg:16720; GFX10:       ; %bb.0:16721; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16722; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v016723; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, -1, v1, vcc_lo16724; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 16, v216725; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216726; GFX10-NEXT:    s_mov_b32 s5, 016727; GFX10-NEXT:    flat_load_dword v0, v[3:4]16728; GFX10-NEXT:  .LBB52_1: ; %atomicrmw.start16729; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=116730; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16731; GFX10-NEXT:    v_mov_b32_e32 v6, v016732; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 16, v616733; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616734; GFX10-NEXT:    v_sub_f32_e32 v0, v0, v116735; GFX10-NEXT:    v_sub_f32_e32 v5, v5, v216736; GFX10-NEXT:    v_bfe_u32 v7, v0, 16, 116737; GFX10-NEXT:    v_bfe_u32 v8, v5, 16, 116738; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v016739; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v516740; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516741; GFX10-NEXT:    v_add3_u32 v7, v7, v0, 0x7fff16742; GFX10-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16743; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v0, v016744; GFX10-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16745; GFX10-NEXT:    v_cndmask_b32_e64 v0, v7, v9, s416746; GFX10-NEXT:    v_perm_b32 v5, v5, v0, 0x706030216747; GFX10-NEXT:    s_waitcnt_vscnt null, 0x016748; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc16749; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16750; GFX10-NEXT:    buffer_gl1_inv16751; GFX10-NEXT:    buffer_gl0_inv16752; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v616753; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s516754; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s516755; GFX10-NEXT:    s_cbranch_execnz .LBB52_116756; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end16757; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s516758; GFX10-NEXT:    s_setpc_b64 s[30:31]16759;16760; GFX90A-LABEL: flat_agent_atomic_fsub_ret_v2bf16__offset12b_neg:16761; GFX90A:       ; %bb.0:16762; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16763; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v016764; GFX90A-NEXT:    s_mov_b64 s[4:5], vcc16765; GFX90A-NEXT:    v_addc_co_u32_e64 v5, s[4:5], -1, v1, s[4:5]16766; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc16767; GFX90A-NEXT:    v_mov_b32_e32 v0, v416768; GFX90A-NEXT:    flat_load_dword v1, v[0:1]16769; GFX90A-NEXT:    s_mov_b64 s[6:7], 016770; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 16, v216771; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff16772; GFX90A-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216773; GFX90A-NEXT:    s_mov_b32 s9, 0x706030216774; GFX90A-NEXT:  .LBB52_1: ; %atomicrmw.start16775; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=116776; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16777; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v116778; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v116779; GFX90A-NEXT:    v_sub_f32_e32 v0, v0, v316780; GFX90A-NEXT:    v_sub_f32_e32 v6, v6, v216781; GFX90A-NEXT:    v_bfe_u32 v7, v0, 16, 116782; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 116783; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v016784; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v616785; GFX90A-NEXT:    v_add3_u32 v7, v7, v0, s816786; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s816787; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v616788; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v0, v016789; GFX90A-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[4:5]16790; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc16791; GFX90A-NEXT:    v_perm_b32 v0, v6, v0, s916792; GFX90A-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc16793; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16794; GFX90A-NEXT:    buffer_wbinvl116795; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v116796; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]16797; GFX90A-NEXT:    v_mov_b32_e32 v1, v016798; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]16799; GFX90A-NEXT:    s_cbranch_execnz .LBB52_116800; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end16801; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]16802; GFX90A-NEXT:    s_setpc_b64 s[30:31]16803;16804; GFX908-LABEL: flat_agent_atomic_fsub_ret_v2bf16__offset12b_neg:16805; GFX908:       ; %bb.0:16806; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16807; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v016808; GFX908-NEXT:    s_mov_b64 s[4:5], vcc16809; GFX908-NEXT:    v_addc_co_u32_e64 v4, s[4:5], -1, v1, s[4:5]16810; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc16811; GFX908-NEXT:    v_mov_b32_e32 v0, v316812; GFX908-NEXT:    flat_load_dword v0, v[0:1]16813; GFX908-NEXT:    s_mov_b64 s[6:7], 016814; GFX908-NEXT:    v_lshlrev_b32_e32 v1, 16, v216815; GFX908-NEXT:    s_movk_i32 s8, 0x7fff16816; GFX908-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216817; GFX908-NEXT:    s_mov_b32 s9, 0x706030216818; GFX908-NEXT:  .LBB52_1: ; %atomicrmw.start16819; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=116820; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16821; GFX908-NEXT:    v_mov_b32_e32 v6, v016822; GFX908-NEXT:    v_lshlrev_b32_e32 v0, 16, v616823; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616824; GFX908-NEXT:    v_sub_f32_e32 v0, v0, v116825; GFX908-NEXT:    v_sub_f32_e32 v5, v5, v216826; GFX908-NEXT:    v_bfe_u32 v7, v0, 16, 116827; GFX908-NEXT:    v_bfe_u32 v9, v5, 16, 116828; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v016829; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v516830; GFX908-NEXT:    v_add3_u32 v7, v7, v0, s816831; GFX908-NEXT:    v_add3_u32 v9, v9, v5, s816832; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v516833; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v0, v016834; GFX908-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[4:5]16835; GFX908-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc16836; GFX908-NEXT:    v_perm_b32 v5, v5, v0, s916837; GFX908-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc16838; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16839; GFX908-NEXT:    buffer_wbinvl116840; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v616841; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]16842; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]16843; GFX908-NEXT:    s_cbranch_execnz .LBB52_116844; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end16845; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]16846; GFX908-NEXT:    s_setpc_b64 s[30:31]16847;16848; GFX8-LABEL: flat_agent_atomic_fsub_ret_v2bf16__offset12b_neg:16849; GFX8:       ; %bb.0:16850; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16851; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v016852; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, -1, v1, vcc16853; GFX8-NEXT:    flat_load_dword v0, v[3:4]16854; GFX8-NEXT:    s_mov_b64 s[6:7], 016855; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 16, v216856; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216857; GFX8-NEXT:  .LBB52_1: ; %atomicrmw.start16858; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=116859; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16860; GFX8-NEXT:    v_mov_b32_e32 v6, v016861; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 16, v616862; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616863; GFX8-NEXT:    v_sub_f32_e32 v0, v0, v116864; GFX8-NEXT:    v_sub_f32_e32 v5, v5, v216865; GFX8-NEXT:    v_bfe_u32 v7, v0, 16, 116866; GFX8-NEXT:    v_bfe_u32 v9, v5, 16, 116867; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v016868; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v516869; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v716870; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v916871; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v516872; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v516873; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v016874; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v0, v016875; GFX8-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc16876; GFX8-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[4:5]16877; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v516878; GFX8-NEXT:    v_alignbit_b32 v5, v5, v0, 1616879; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc16880; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16881; GFX8-NEXT:    buffer_wbinvl116882; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v616883; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]16884; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]16885; GFX8-NEXT:    s_cbranch_execnz .LBB52_116886; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end16887; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]16888; GFX8-NEXT:    s_setpc_b64 s[30:31]16889;16890; GFX7-LABEL: flat_agent_atomic_fsub_ret_v2bf16__offset12b_neg:16891; GFX7:       ; %bb.0:16892; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16893; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v016894; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, -1, v1, vcc16895; GFX7-NEXT:    flat_load_dword v0, v[4:5]16896; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v216897; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v316898; GFX7-NEXT:    s_mov_b64 s[4:5], 016899; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v116900; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v316901; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16902; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v016903; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v016904; GFX7-NEXT:  .LBB52_1: ; %atomicrmw.start16905; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=116906; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v116907; GFX7-NEXT:    v_mul_f32_e32 v0, 1.0, v016908; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v116909; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v016910; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v116911; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v316912; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v216913; GFX7-NEXT:    v_alignbit_b32 v1, v1, v0, 1616914; GFX7-NEXT:    v_lshrrev_b32_e32 v0, 16, v716915; GFX7-NEXT:    v_alignbit_b32 v0, v0, v6, 1616916; GFX7-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc16917; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16918; GFX7-NEXT:    buffer_wbinvl116919; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v116920; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v016921; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]16922; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v016923; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]16924; GFX7-NEXT:    s_cbranch_execnz .LBB52_116925; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end16926; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]16927; GFX7-NEXT:    s_setpc_b64 s[30:31]16928  %gep = getelementptr inbounds <2 x bfloat>, ptr %ptr, i64 -51216929  %result = atomicrmw fsub ptr %gep, <2 x bfloat> %val syncscope("agent") seq_cst16930  ret <2 x bfloat> %result16931}16932 16933define void @flat_agent_atomic_fsub_noret_v2bf16(ptr %ptr, <2 x bfloat> %val) #0 {16934; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_noret_v2bf16:16935; GFX12-TRUE16:       ; %bb.0:16936; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x016937; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x016938; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x016939; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x016940; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x016941; GFX12-TRUE16-NEXT:    flat_load_b32 v3, v[0:1]16942; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v216943; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v216944; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 016945; GFX12-TRUE16-NEXT:  .LBB53_1: ; %atomicrmw.start16946; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=116947; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x016948; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v316949; GFX12-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v316950; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16951; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v2, v2, v516952; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v6, v6, v416953; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16954; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 116955; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 116956; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v216957; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v216958; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v616959; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff16960; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff16961; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)16962; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_3)16963; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo16964; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v616965; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)16966; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo16967; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h16968; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x016969; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV16970; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x016971; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV16972; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v316973; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v216974; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16975; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s016976; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16977; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s016978; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB53_116979; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end16980; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s016981; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x016982; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]16983;16984; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_noret_v2bf16:16985; GFX12-FAKE16:       ; %bb.0:16986; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x016987; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x016988; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x016989; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x016990; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x016991; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]16992; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v216993; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v216994; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 016995; GFX12-FAKE16-NEXT:  .LBB53_1: ; %atomicrmw.start16996; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=116997; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x016998; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v316999; GFX12-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317000; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17001; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v417002; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v6, v6, v517003; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17004; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 117005; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 117006; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217007; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617008; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617009; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17010; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17011; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v217012; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)17013; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)17014; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo17015; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)17016; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s017017; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)17018; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030217019; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x017020; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV17021; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x017022; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV17023; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317024; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v217025; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17026; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s117027; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17028; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s117029; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB53_117030; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end17031; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s117032; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x017033; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]17034;17035; GFX942-LABEL: flat_agent_atomic_fsub_noret_v2bf16:17036; GFX942:       ; %bb.0:17037; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17038; GFX942-NEXT:    flat_load_dword v3, v[0:1]17039; GFX942-NEXT:    s_mov_b64 s[2:3], 017040; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v217041; GFX942-NEXT:    s_movk_i32 s4, 0x7fff17042; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217043; GFX942-NEXT:    s_mov_b32 s5, 0x706030217044; GFX942-NEXT:  .LBB53_1: ; %atomicrmw.start17045; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=117046; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17047; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v317048; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317049; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v417050; GFX942-NEXT:    v_sub_f32_e32 v6, v6, v517051; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 117052; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 117053; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v217054; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v617055; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s417056; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s417057; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617058; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v217059; GFX942-NEXT:    s_nop 017060; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17061; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]17062; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s517063; GFX942-NEXT:    buffer_wbl2 sc117064; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc017065; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17066; GFX942-NEXT:    buffer_inv sc117067; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317068; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]17069; GFX942-NEXT:    v_mov_b32_e32 v3, v217070; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]17071; GFX942-NEXT:    s_cbranch_execnz .LBB53_117072; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end17073; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]17074; GFX942-NEXT:    s_setpc_b64 s[30:31]17075;17076; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_noret_v2bf16:17077; GFX11-TRUE16:       ; %bb.0:17078; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17079; GFX11-TRUE16-NEXT:    flat_load_b32 v3, v[0:1]17080; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v217081; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v217082; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 017083; GFX11-TRUE16-NEXT:    .p2align 617084; GFX11-TRUE16-NEXT:  .LBB53_1: ; %atomicrmw.start17085; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=117086; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17087; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317088; GFX11-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317089; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17090; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v2, v2, v517091; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v6, v6, v417092; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17093; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 117094; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 117095; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217096; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v217097; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617098; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17099; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17100; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)17101; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo17102; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617103; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo17104; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)17105; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h17106; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x017107; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] glc17108; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17109; GFX11-TRUE16-NEXT:    buffer_gl1_inv17110; GFX11-TRUE16-NEXT:    buffer_gl0_inv17111; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317112; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v217113; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s017114; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17115; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s017116; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB53_117117; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end17118; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s017119; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]17120;17121; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_noret_v2bf16:17122; GFX11-FAKE16:       ; %bb.0:17123; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17124; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]17125; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v217126; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217127; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 017128; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x117129; GFX11-FAKE16-NEXT:    .p2align 617130; GFX11-FAKE16-NEXT:  .LBB53_1: ; %atomicrmw.start17131; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=117132; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17133; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317134; GFX11-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317135; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17136; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v417137; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v6, v6, v517138; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17139; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 117140; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 117141; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217142; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617143; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617144; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17145; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17146; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v217147; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17148; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo17149; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s017150; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)17151; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030217152; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x017153; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] glc17154; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17155; GFX11-FAKE16-NEXT:    buffer_gl1_inv17156; GFX11-FAKE16-NEXT:    buffer_gl0_inv17157; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317158; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v217159; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s117160; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17161; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s117162; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB53_117163; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end17164; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x217165; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s117166; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]17167;17168; GFX10-LABEL: flat_agent_atomic_fsub_noret_v2bf16:17169; GFX10:       ; %bb.0:17170; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17171; GFX10-NEXT:    flat_load_dword v3, v[0:1]17172; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v217173; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217174; GFX10-NEXT:    s_mov_b32 s5, 017175; GFX10-NEXT:  .LBB53_1: ; %atomicrmw.start17176; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=117177; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17178; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v317179; GFX10-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317180; GFX10-NEXT:    v_sub_f32_e32 v2, v2, v417181; GFX10-NEXT:    v_sub_f32_e32 v6, v6, v517182; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 117183; GFX10-NEXT:    v_bfe_u32 v8, v6, 16, 117184; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v217185; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v617186; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617187; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17188; GFX10-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17189; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v2, v217190; GFX10-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo17191; GFX10-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s417192; GFX10-NEXT:    v_perm_b32 v2, v6, v2, 0x706030217193; GFX10-NEXT:    s_waitcnt_vscnt null, 0x017194; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc17195; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17196; GFX10-NEXT:    buffer_gl1_inv17197; GFX10-NEXT:    buffer_gl0_inv17198; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317199; GFX10-NEXT:    v_mov_b32_e32 v3, v217200; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s517201; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s517202; GFX10-NEXT:    s_cbranch_execnz .LBB53_117203; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end17204; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s517205; GFX10-NEXT:    s_setpc_b64 s[30:31]17206;17207; GFX90A-LABEL: flat_agent_atomic_fsub_noret_v2bf16:17208; GFX90A:       ; %bb.0:17209; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17210; GFX90A-NEXT:    flat_load_dword v3, v[0:1]17211; GFX90A-NEXT:    s_mov_b64 s[6:7], 017212; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v217213; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff17214; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217215; GFX90A-NEXT:    s_mov_b32 s9, 0x706030217216; GFX90A-NEXT:  .LBB53_1: ; %atomicrmw.start17217; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=117218; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17219; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v317220; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317221; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v417222; GFX90A-NEXT:    v_sub_f32_e32 v6, v6, v517223; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 117224; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 117225; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v217226; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v617227; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s817228; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s817229; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617230; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v217231; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]17232; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17233; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s917234; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc17235; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17236; GFX90A-NEXT:    buffer_wbinvl117237; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317238; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17239; GFX90A-NEXT:    v_mov_b32_e32 v3, v217240; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]17241; GFX90A-NEXT:    s_cbranch_execnz .LBB53_117242; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end17243; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]17244; GFX90A-NEXT:    s_setpc_b64 s[30:31]17245;17246; GFX908-LABEL: flat_agent_atomic_fsub_noret_v2bf16:17247; GFX908:       ; %bb.0:17248; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17249; GFX908-NEXT:    flat_load_dword v3, v[0:1]17250; GFX908-NEXT:    s_mov_b64 s[6:7], 017251; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v217252; GFX908-NEXT:    s_movk_i32 s8, 0x7fff17253; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217254; GFX908-NEXT:    s_mov_b32 s9, 0x706030217255; GFX908-NEXT:  .LBB53_1: ; %atomicrmw.start17256; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=117257; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17258; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v317259; GFX908-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317260; GFX908-NEXT:    v_sub_f32_e32 v2, v2, v417261; GFX908-NEXT:    v_sub_f32_e32 v6, v6, v517262; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 117263; GFX908-NEXT:    v_bfe_u32 v9, v6, 16, 117264; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v217265; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v617266; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s817267; GFX908-NEXT:    v_add3_u32 v9, v9, v6, s817268; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617269; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v217270; GFX908-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]17271; GFX908-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17272; GFX908-NEXT:    v_perm_b32 v2, v6, v2, s917273; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc17274; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17275; GFX908-NEXT:    buffer_wbinvl117276; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317277; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17278; GFX908-NEXT:    v_mov_b32_e32 v3, v217279; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]17280; GFX908-NEXT:    s_cbranch_execnz .LBB53_117281; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end17282; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]17283; GFX908-NEXT:    s_setpc_b64 s[30:31]17284;17285; GFX8-LABEL: flat_agent_atomic_fsub_noret_v2bf16:17286; GFX8:       ; %bb.0:17287; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17288; GFX8-NEXT:    flat_load_dword v3, v[0:1]17289; GFX8-NEXT:    s_mov_b64 s[6:7], 017290; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v217291; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217292; GFX8-NEXT:  .LBB53_1: ; %atomicrmw.start17293; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=117294; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17295; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v317296; GFX8-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317297; GFX8-NEXT:    v_sub_f32_e32 v2, v2, v417298; GFX8-NEXT:    v_sub_f32_e32 v6, v6, v517299; GFX8-NEXT:    v_bfe_u32 v7, v2, 16, 117300; GFX8-NEXT:    v_bfe_u32 v9, v6, 16, 117301; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v217302; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v617303; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v717304; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v917305; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v617306; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617307; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v217308; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v217309; GFX8-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17310; GFX8-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]17311; GFX8-NEXT:    v_lshrrev_b32_e32 v6, 16, v617312; GFX8-NEXT:    v_alignbit_b32 v2, v6, v2, 1617313; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc17314; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17315; GFX8-NEXT:    buffer_wbinvl117316; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317317; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17318; GFX8-NEXT:    v_mov_b32_e32 v3, v217319; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]17320; GFX8-NEXT:    s_cbranch_execnz .LBB53_117321; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end17322; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]17323; GFX8-NEXT:    s_setpc_b64 s[30:31]17324;17325; GFX7-LABEL: flat_agent_atomic_fsub_noret_v2bf16:17326; GFX7:       ; %bb.0:17327; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17328; GFX7-NEXT:    flat_load_dword v5, v[0:1]17329; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v217330; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v317331; GFX7-NEXT:    s_mov_b64 s[4:5], 017332; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217333; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v317334; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17335; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v517336; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v517337; GFX7-NEXT:  .LBB53_1: ; %atomicrmw.start17338; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=117339; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v417340; GFX7-NEXT:    v_mul_f32_e32 v5, 1.0, v517341; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v417342; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v517343; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v417344; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v317345; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v217346; GFX7-NEXT:    v_alignbit_b32 v5, v4, v5, 1617347; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v717348; GFX7-NEXT:    v_alignbit_b32 v4, v4, v6, 1617349; GFX7-NEXT:    flat_atomic_cmpswap v6, v[0:1], v[4:5] glc17350; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17351; GFX7-NEXT:    buffer_wbinvl117352; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v517353; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v617354; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]17355; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v617356; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]17357; GFX7-NEXT:    s_cbranch_execnz .LBB53_117358; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end17359; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]17360; GFX7-NEXT:    s_setpc_b64 s[30:31]17361  %unused = atomicrmw fsub ptr %ptr, <2 x bfloat> %val syncscope("agent") seq_cst17362  ret void17363}17364 17365define void @flat_agent_atomic_fsub_noret_v2bf16__offset12b_pos(ptr %ptr, <2 x bfloat> %val) #0 {17366; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_noret_v2bf16__offset12b_pos:17367; GFX12-TRUE16:       ; %bb.0:17368; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x017369; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x017370; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x017371; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x017372; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x017373; GFX12-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204417374; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v217375; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v217376; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 017377; GFX12-TRUE16-NEXT:  .LBB54_1: ; %atomicrmw.start17378; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=117379; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x017380; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317381; GFX12-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317382; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17383; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v2, v2, v517384; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v6, v6, v417385; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17386; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 117387; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 117388; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217389; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v217390; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617391; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17392; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17393; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)17394; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_3)17395; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo17396; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617397; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)17398; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo17399; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h17400; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x017401; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV17402; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x017403; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV17404; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317405; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v217406; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17407; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s017408; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17409; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s017410; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB54_117411; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end17412; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s017413; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x017414; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]17415;17416; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_noret_v2bf16__offset12b_pos:17417; GFX12-FAKE16:       ; %bb.0:17418; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x017419; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x017420; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x017421; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x017422; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x017423; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204417424; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v217425; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217426; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 017427; GFX12-FAKE16-NEXT:  .LBB54_1: ; %atomicrmw.start17428; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=117429; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x017430; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317431; GFX12-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317432; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17433; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v417434; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v6, v6, v517435; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17436; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 117437; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 117438; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217439; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617440; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617441; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17442; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17443; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v217444; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)17445; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)17446; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo17447; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)17448; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s017449; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)17450; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030217451; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x017452; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV17453; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x017454; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV17455; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317456; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v217457; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17458; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s117459; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17460; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s117461; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB54_117462; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end17463; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s117464; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x017465; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]17466;17467; GFX942-LABEL: flat_agent_atomic_fsub_noret_v2bf16__offset12b_pos:17468; GFX942:       ; %bb.0:17469; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17470; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:204417471; GFX942-NEXT:    s_mov_b64 s[2:3], 017472; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v217473; GFX942-NEXT:    s_movk_i32 s4, 0x7fff17474; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217475; GFX942-NEXT:    s_mov_b32 s5, 0x706030217476; GFX942-NEXT:  .LBB54_1: ; %atomicrmw.start17477; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=117478; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17479; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v317480; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317481; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v417482; GFX942-NEXT:    v_sub_f32_e32 v6, v6, v517483; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 117484; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 117485; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v217486; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v617487; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s417488; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s417489; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617490; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v217491; GFX942-NEXT:    s_nop 017492; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17493; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]17494; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s517495; GFX942-NEXT:    buffer_wbl2 sc117496; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 sc017497; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17498; GFX942-NEXT:    buffer_inv sc117499; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317500; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]17501; GFX942-NEXT:    v_mov_b32_e32 v3, v217502; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]17503; GFX942-NEXT:    s_cbranch_execnz .LBB54_117504; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end17505; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]17506; GFX942-NEXT:    s_setpc_b64 s[30:31]17507;17508; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_noret_v2bf16__offset12b_pos:17509; GFX11-TRUE16:       ; %bb.0:17510; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17511; GFX11-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204417512; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v217513; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v217514; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 017515; GFX11-TRUE16-NEXT:    .p2align 617516; GFX11-TRUE16-NEXT:  .LBB54_1: ; %atomicrmw.start17517; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=117518; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17519; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317520; GFX11-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317521; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17522; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v2, v2, v517523; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v6, v6, v417524; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17525; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 117526; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 117527; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217528; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v217529; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617530; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17531; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17532; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)17533; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo17534; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617535; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo17536; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)17537; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h17538; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x017539; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2044 glc17540; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17541; GFX11-TRUE16-NEXT:    buffer_gl1_inv17542; GFX11-TRUE16-NEXT:    buffer_gl0_inv17543; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317544; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v217545; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s017546; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17547; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s017548; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB54_117549; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end17550; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s017551; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]17552;17553; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_noret_v2bf16__offset12b_pos:17554; GFX11-FAKE16:       ; %bb.0:17555; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17556; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204417557; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v217558; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217559; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 017560; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x117561; GFX11-FAKE16-NEXT:    .p2align 617562; GFX11-FAKE16-NEXT:  .LBB54_1: ; %atomicrmw.start17563; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=117564; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17565; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317566; GFX11-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317567; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17568; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v417569; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v6, v6, v517570; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17571; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 117572; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 117573; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217574; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617575; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617576; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17577; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17578; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v217579; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17580; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo17581; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s017582; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)17583; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030217584; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x017585; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2044 glc17586; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17587; GFX11-FAKE16-NEXT:    buffer_gl1_inv17588; GFX11-FAKE16-NEXT:    buffer_gl0_inv17589; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317590; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v217591; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s117592; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17593; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s117594; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB54_117595; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end17596; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x217597; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s117598; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]17599;17600; GFX10-LABEL: flat_agent_atomic_fsub_noret_v2bf16__offset12b_pos:17601; GFX10:       ; %bb.0:17602; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17603; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fc, v017604; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo17605; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v217606; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217607; GFX10-NEXT:    s_mov_b32 s5, 017608; GFX10-NEXT:    flat_load_dword v3, v[0:1]17609; GFX10-NEXT:  .LBB54_1: ; %atomicrmw.start17610; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=117611; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17612; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v317613; GFX10-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317614; GFX10-NEXT:    v_sub_f32_e32 v2, v2, v417615; GFX10-NEXT:    v_sub_f32_e32 v6, v6, v517616; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 117617; GFX10-NEXT:    v_bfe_u32 v8, v6, 16, 117618; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v217619; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v617620; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617621; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17622; GFX10-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17623; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v2, v217624; GFX10-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo17625; GFX10-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s417626; GFX10-NEXT:    v_perm_b32 v2, v6, v2, 0x706030217627; GFX10-NEXT:    s_waitcnt_vscnt null, 0x017628; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc17629; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17630; GFX10-NEXT:    buffer_gl1_inv17631; GFX10-NEXT:    buffer_gl0_inv17632; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317633; GFX10-NEXT:    v_mov_b32_e32 v3, v217634; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s517635; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s517636; GFX10-NEXT:    s_cbranch_execnz .LBB54_117637; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end17638; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s517639; GFX10-NEXT:    s_setpc_b64 s[30:31]17640;17641; GFX90A-LABEL: flat_agent_atomic_fsub_noret_v2bf16__offset12b_pos:17642; GFX90A:       ; %bb.0:17643; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17644; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:204417645; GFX90A-NEXT:    s_mov_b64 s[6:7], 017646; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v217647; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff17648; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217649; GFX90A-NEXT:    s_mov_b32 s9, 0x706030217650; GFX90A-NEXT:  .LBB54_1: ; %atomicrmw.start17651; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=117652; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17653; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v317654; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317655; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v417656; GFX90A-NEXT:    v_sub_f32_e32 v6, v6, v517657; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 117658; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 117659; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v217660; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v617661; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s817662; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s817663; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617664; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v217665; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]17666; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17667; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s917668; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc17669; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17670; GFX90A-NEXT:    buffer_wbinvl117671; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317672; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17673; GFX90A-NEXT:    v_mov_b32_e32 v3, v217674; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]17675; GFX90A-NEXT:    s_cbranch_execnz .LBB54_117676; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end17677; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]17678; GFX90A-NEXT:    s_setpc_b64 s[30:31]17679;17680; GFX908-LABEL: flat_agent_atomic_fsub_noret_v2bf16__offset12b_pos:17681; GFX908:       ; %bb.0:17682; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17683; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:204417684; GFX908-NEXT:    s_mov_b64 s[6:7], 017685; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v217686; GFX908-NEXT:    s_movk_i32 s8, 0x7fff17687; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217688; GFX908-NEXT:    s_mov_b32 s9, 0x706030217689; GFX908-NEXT:  .LBB54_1: ; %atomicrmw.start17690; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=117691; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17692; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v317693; GFX908-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317694; GFX908-NEXT:    v_sub_f32_e32 v2, v2, v417695; GFX908-NEXT:    v_sub_f32_e32 v6, v6, v517696; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 117697; GFX908-NEXT:    v_bfe_u32 v9, v6, 16, 117698; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v217699; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v617700; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s817701; GFX908-NEXT:    v_add3_u32 v9, v9, v6, s817702; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617703; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v217704; GFX908-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]17705; GFX908-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17706; GFX908-NEXT:    v_perm_b32 v2, v6, v2, s917707; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc17708; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17709; GFX908-NEXT:    buffer_wbinvl117710; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317711; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17712; GFX908-NEXT:    v_mov_b32_e32 v3, v217713; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]17714; GFX908-NEXT:    s_cbranch_execnz .LBB54_117715; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end17716; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]17717; GFX908-NEXT:    s_setpc_b64 s[30:31]17718;17719; GFX8-LABEL: flat_agent_atomic_fsub_noret_v2bf16__offset12b_pos:17720; GFX8:       ; %bb.0:17721; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17722; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v017723; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc17724; GFX8-NEXT:    flat_load_dword v3, v[0:1]17725; GFX8-NEXT:    s_mov_b64 s[6:7], 017726; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v217727; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217728; GFX8-NEXT:  .LBB54_1: ; %atomicrmw.start17729; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=117730; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17731; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v317732; GFX8-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317733; GFX8-NEXT:    v_sub_f32_e32 v2, v2, v417734; GFX8-NEXT:    v_sub_f32_e32 v6, v6, v517735; GFX8-NEXT:    v_bfe_u32 v7, v2, 16, 117736; GFX8-NEXT:    v_bfe_u32 v9, v6, 16, 117737; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v217738; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v617739; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v717740; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v917741; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v617742; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617743; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v217744; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v217745; GFX8-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17746; GFX8-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]17747; GFX8-NEXT:    v_lshrrev_b32_e32 v6, 16, v617748; GFX8-NEXT:    v_alignbit_b32 v2, v6, v2, 1617749; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc17750; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17751; GFX8-NEXT:    buffer_wbinvl117752; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317753; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17754; GFX8-NEXT:    v_mov_b32_e32 v3, v217755; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]17756; GFX8-NEXT:    s_cbranch_execnz .LBB54_117757; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end17758; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]17759; GFX8-NEXT:    s_setpc_b64 s[30:31]17760;17761; GFX7-LABEL: flat_agent_atomic_fsub_noret_v2bf16__offset12b_pos:17762; GFX7:       ; %bb.0:17763; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17764; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fc, v017765; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc17766; GFX7-NEXT:    flat_load_dword v5, v[0:1]17767; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v217768; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v317769; GFX7-NEXT:    s_mov_b64 s[4:5], 017770; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217771; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v317772; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17773; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v517774; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v517775; GFX7-NEXT:  .LBB54_1: ; %atomicrmw.start17776; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=117777; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v417778; GFX7-NEXT:    v_mul_f32_e32 v5, 1.0, v517779; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v417780; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v517781; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v417782; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v317783; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v217784; GFX7-NEXT:    v_alignbit_b32 v5, v4, v5, 1617785; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v717786; GFX7-NEXT:    v_alignbit_b32 v4, v4, v6, 1617787; GFX7-NEXT:    flat_atomic_cmpswap v6, v[0:1], v[4:5] glc17788; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17789; GFX7-NEXT:    buffer_wbinvl117790; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v517791; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v617792; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]17793; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v617794; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]17795; GFX7-NEXT:    s_cbranch_execnz .LBB54_117796; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end17797; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]17798; GFX7-NEXT:    s_setpc_b64 s[30:31]17799  %gep = getelementptr inbounds <2 x bfloat>, ptr %ptr, i64 51117800  %unused = atomicrmw fsub ptr %gep, <2 x bfloat> %val syncscope("agent") seq_cst17801  ret void17802}17803 17804define void @flat_agent_atomic_fsub_noret_v2bf16__offset12b_neg(ptr %ptr, <2 x bfloat> %val) #0 {17805; GFX12-TRUE16-LABEL: flat_agent_atomic_fsub_noret_v2bf16__offset12b_neg:17806; GFX12-TRUE16:       ; %bb.0:17807; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x017808; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x017809; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x017810; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x017811; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x017812; GFX12-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:-204817813; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v217814; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v217815; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 017816; GFX12-TRUE16-NEXT:  .LBB55_1: ; %atomicrmw.start17817; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=117818; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x017819; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317820; GFX12-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317821; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17822; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v2, v2, v517823; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v6, v6, v417824; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17825; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 117826; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 117827; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217828; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v217829; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617830; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17831; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17832; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)17833; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_3)17834; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo17835; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617836; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)17837; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo17838; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h17839; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x017840; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV17841; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x017842; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV17843; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317844; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v217845; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17846; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s017847; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17848; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s017849; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB55_117850; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end17851; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s017852; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x017853; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]17854;17855; GFX12-FAKE16-LABEL: flat_agent_atomic_fsub_noret_v2bf16__offset12b_neg:17856; GFX12-FAKE16:       ; %bb.0:17857; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x017858; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x017859; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x017860; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x017861; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x017862; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:-204817863; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v217864; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217865; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 017866; GFX12-FAKE16-NEXT:  .LBB55_1: ; %atomicrmw.start17867; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=117868; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x017869; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317870; GFX12-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317871; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17872; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v417873; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v6, v6, v517874; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17875; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 117876; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 117877; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217878; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617879; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617880; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17881; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17882; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v217883; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)17884; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)17885; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo17886; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)17887; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s017888; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)17889; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030217890; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x017891; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV17892; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x017893; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV17894; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317895; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v217896; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17897; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s117898; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17899; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s117900; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB55_117901; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end17902; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s117903; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x017904; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]17905;17906; GFX942-LABEL: flat_agent_atomic_fsub_noret_v2bf16__offset12b_neg:17907; GFX942:       ; %bb.0:17908; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17909; GFX942-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v017910; GFX942-NEXT:    s_movk_i32 s0, 0xf80017911; GFX942-NEXT:    s_nop 017912; GFX942-NEXT:    v_addc_co_u32_e32 v5, vcc, -1, v1, vcc17913; GFX942-NEXT:    flat_load_dword v3, v[4:5]17914; GFX942-NEXT:    s_mov_b32 s1, -117915; GFX942-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, s[0:1]17916; GFX942-NEXT:    s_mov_b64 s[2:3], 017917; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v217918; GFX942-NEXT:    s_movk_i32 s4, 0x7fff17919; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217920; GFX942-NEXT:    s_mov_b32 s5, 0x706030217921; GFX942-NEXT:  .LBB55_1: ; %atomicrmw.start17922; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=117923; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17924; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v317925; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317926; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v417927; GFX942-NEXT:    v_sub_f32_e32 v6, v6, v517928; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 117929; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 117930; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v217931; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v617932; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s417933; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s417934; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617935; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v217936; GFX942-NEXT:    s_nop 017937; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17938; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]17939; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s517940; GFX942-NEXT:    buffer_wbl2 sc117941; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc017942; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17943; GFX942-NEXT:    buffer_inv sc117944; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317945; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]17946; GFX942-NEXT:    v_mov_b32_e32 v3, v217947; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]17948; GFX942-NEXT:    s_cbranch_execnz .LBB55_117949; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end17950; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]17951; GFX942-NEXT:    s_setpc_b64 s[30:31]17952;17953; GFX11-TRUE16-LABEL: flat_agent_atomic_fsub_noret_v2bf16__offset12b_neg:17954; GFX11-TRUE16:       ; %bb.0:17955; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17956; GFX11-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v017957; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)17958; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo17959; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v217960; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v217961; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 017962; GFX11-TRUE16-NEXT:    flat_load_b32 v3, v[0:1]17963; GFX11-TRUE16-NEXT:    .p2align 617964; GFX11-TRUE16-NEXT:  .LBB55_1: ; %atomicrmw.start17965; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=117966; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17967; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317968; GFX11-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317969; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17970; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v2, v2, v517971; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v6, v6, v417972; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17973; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 117974; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 117975; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217976; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v217977; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617978; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17979; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17980; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)17981; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo17982; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617983; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo17984; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)17985; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h17986; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x017987; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] glc17988; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17989; GFX11-TRUE16-NEXT:    buffer_gl1_inv17990; GFX11-TRUE16-NEXT:    buffer_gl0_inv17991; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317992; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v217993; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s017994; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17995; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s017996; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB55_117997; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end17998; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s017999; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]18000;18001; GFX11-FAKE16-LABEL: flat_agent_atomic_fsub_noret_v2bf16__offset12b_neg:18002; GFX11-FAKE16:       ; %bb.0:18003; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18004; GFX11-FAKE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v018005; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)18006; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo18007; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v218008; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218009; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 018010; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]18011; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x118012; GFX11-FAKE16-NEXT:    .p2align 618013; GFX11-FAKE16-NEXT:  .LBB55_1: ; %atomicrmw.start18014; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=118015; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18016; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318017; GFX11-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318018; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18019; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v418020; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v6, v6, v518021; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18022; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 118023; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 118024; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218025; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618026; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618027; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18028; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18029; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v218030; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18031; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18032; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s018033; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)18034; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218035; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x018036; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] glc18037; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18038; GFX11-FAKE16-NEXT:    buffer_gl1_inv18039; GFX11-FAKE16-NEXT:    buffer_gl0_inv18040; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318041; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v218042; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s118043; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)18044; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s118045; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB55_118046; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end18047; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x218048; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s118049; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]18050;18051; GFX10-LABEL: flat_agent_atomic_fsub_noret_v2bf16__offset12b_neg:18052; GFX10:       ; %bb.0:18053; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18054; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v018055; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo18056; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v218057; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218058; GFX10-NEXT:    s_mov_b32 s5, 018059; GFX10-NEXT:    flat_load_dword v3, v[0:1]18060; GFX10-NEXT:  .LBB55_1: ; %atomicrmw.start18061; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=118062; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18063; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v318064; GFX10-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318065; GFX10-NEXT:    v_sub_f32_e32 v2, v2, v418066; GFX10-NEXT:    v_sub_f32_e32 v6, v6, v518067; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 118068; GFX10-NEXT:    v_bfe_u32 v8, v6, 16, 118069; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v218070; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v618071; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618072; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18073; GFX10-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18074; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v2, v218075; GFX10-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18076; GFX10-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s418077; GFX10-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218078; GFX10-NEXT:    s_waitcnt_vscnt null, 0x018079; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc18080; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18081; GFX10-NEXT:    buffer_gl1_inv18082; GFX10-NEXT:    buffer_gl0_inv18083; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318084; GFX10-NEXT:    v_mov_b32_e32 v3, v218085; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s518086; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s518087; GFX10-NEXT:    s_cbranch_execnz .LBB55_118088; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end18089; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s518090; GFX10-NEXT:    s_setpc_b64 s[30:31]18091;18092; GFX90A-LABEL: flat_agent_atomic_fsub_noret_v2bf16__offset12b_neg:18093; GFX90A:       ; %bb.0:18094; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18095; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v018096; GFX90A-NEXT:    s_mov_b64 s[4:5], vcc18097; GFX90A-NEXT:    v_addc_co_u32_e64 v5, s[4:5], -1, v1, s[4:5]18098; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc18099; GFX90A-NEXT:    v_mov_b32_e32 v0, v418100; GFX90A-NEXT:    flat_load_dword v1, v[0:1]18101; GFX90A-NEXT:    s_mov_b64 s[6:7], 018102; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 16, v218103; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff18104; GFX90A-NEXT:    v_and_b32_e32 v2, 0xffff0000, v218105; GFX90A-NEXT:    s_mov_b32 s9, 0x706030218106; GFX90A-NEXT:  .LBB55_1: ; %atomicrmw.start18107; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=118108; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18109; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v118110; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v118111; GFX90A-NEXT:    v_sub_f32_e32 v0, v0, v318112; GFX90A-NEXT:    v_sub_f32_e32 v6, v6, v218113; GFX90A-NEXT:    v_bfe_u32 v7, v0, 16, 118114; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 118115; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v018116; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v618117; GFX90A-NEXT:    v_add3_u32 v7, v7, v0, s818118; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s818119; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618120; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v0, v018121; GFX90A-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[4:5]18122; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18123; GFX90A-NEXT:    v_perm_b32 v0, v6, v0, s918124; GFX90A-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc18125; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18126; GFX90A-NEXT:    buffer_wbinvl118127; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v118128; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]18129; GFX90A-NEXT:    v_mov_b32_e32 v1, v018130; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]18131; GFX90A-NEXT:    s_cbranch_execnz .LBB55_118132; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end18133; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]18134; GFX90A-NEXT:    s_setpc_b64 s[30:31]18135;18136; GFX908-LABEL: flat_agent_atomic_fsub_noret_v2bf16__offset12b_neg:18137; GFX908:       ; %bb.0:18138; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18139; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v018140; GFX908-NEXT:    s_mov_b64 s[4:5], vcc18141; GFX908-NEXT:    v_addc_co_u32_e64 v4, s[4:5], -1, v1, s[4:5]18142; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc18143; GFX908-NEXT:    v_mov_b32_e32 v0, v318144; GFX908-NEXT:    flat_load_dword v1, v[0:1]18145; GFX908-NEXT:    s_mov_b64 s[6:7], 018146; GFX908-NEXT:    v_lshlrev_b32_e32 v5, 16, v218147; GFX908-NEXT:    s_movk_i32 s8, 0x7fff18148; GFX908-NEXT:    v_and_b32_e32 v2, 0xffff0000, v218149; GFX908-NEXT:    s_mov_b32 s9, 0x706030218150; GFX908-NEXT:  .LBB55_1: ; %atomicrmw.start18151; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=118152; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18153; GFX908-NEXT:    v_lshlrev_b32_e32 v0, 16, v118154; GFX908-NEXT:    v_and_b32_e32 v6, 0xffff0000, v118155; GFX908-NEXT:    v_sub_f32_e32 v0, v0, v518156; GFX908-NEXT:    v_sub_f32_e32 v6, v6, v218157; GFX908-NEXT:    v_bfe_u32 v7, v0, 16, 118158; GFX908-NEXT:    v_bfe_u32 v9, v6, 16, 118159; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v018160; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v618161; GFX908-NEXT:    v_add3_u32 v7, v7, v0, s818162; GFX908-NEXT:    v_add3_u32 v9, v9, v6, s818163; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618164; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v0, v018165; GFX908-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[4:5]18166; GFX908-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18167; GFX908-NEXT:    v_perm_b32 v0, v6, v0, s918168; GFX908-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc18169; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18170; GFX908-NEXT:    buffer_wbinvl118171; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v118172; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]18173; GFX908-NEXT:    v_mov_b32_e32 v1, v018174; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]18175; GFX908-NEXT:    s_cbranch_execnz .LBB55_118176; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end18177; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]18178; GFX908-NEXT:    s_setpc_b64 s[30:31]18179;18180; GFX8-LABEL: flat_agent_atomic_fsub_noret_v2bf16__offset12b_neg:18181; GFX8:       ; %bb.0:18182; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18183; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffff800, v018184; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc18185; GFX8-NEXT:    flat_load_dword v3, v[0:1]18186; GFX8-NEXT:    s_mov_b64 s[6:7], 018187; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v218188; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218189; GFX8-NEXT:  .LBB55_1: ; %atomicrmw.start18190; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=118191; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18192; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v318193; GFX8-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318194; GFX8-NEXT:    v_sub_f32_e32 v2, v2, v418195; GFX8-NEXT:    v_sub_f32_e32 v6, v6, v518196; GFX8-NEXT:    v_bfe_u32 v7, v2, 16, 118197; GFX8-NEXT:    v_bfe_u32 v9, v6, 16, 118198; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v218199; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v618200; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v718201; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v918202; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v618203; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618204; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v218205; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v218206; GFX8-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18207; GFX8-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]18208; GFX8-NEXT:    v_lshrrev_b32_e32 v6, 16, v618209; GFX8-NEXT:    v_alignbit_b32 v2, v6, v2, 1618210; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc18211; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18212; GFX8-NEXT:    buffer_wbinvl118213; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318214; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]18215; GFX8-NEXT:    v_mov_b32_e32 v3, v218216; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]18217; GFX8-NEXT:    s_cbranch_execnz .LBB55_118218; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end18219; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]18220; GFX8-NEXT:    s_setpc_b64 s[30:31]18221;18222; GFX7-LABEL: flat_agent_atomic_fsub_noret_v2bf16__offset12b_neg:18223; GFX7:       ; %bb.0:18224; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18225; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v018226; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc18227; GFX7-NEXT:    flat_load_dword v5, v[0:1]18228; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v218229; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v318230; GFX7-NEXT:    s_mov_b64 s[4:5], 018231; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v218232; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v318233; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18234; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v518235; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v518236; GFX7-NEXT:  .LBB55_1: ; %atomicrmw.start18237; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=118238; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v418239; GFX7-NEXT:    v_mul_f32_e32 v5, 1.0, v518240; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v418241; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v518242; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v418243; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v318244; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v218245; GFX7-NEXT:    v_alignbit_b32 v5, v4, v5, 1618246; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v718247; GFX7-NEXT:    v_alignbit_b32 v4, v4, v6, 1618248; GFX7-NEXT:    flat_atomic_cmpswap v6, v[0:1], v[4:5] glc18249; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18250; GFX7-NEXT:    buffer_wbinvl118251; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v518252; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v618253; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]18254; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v618255; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]18256; GFX7-NEXT:    s_cbranch_execnz .LBB55_118257; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end18258; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]18259; GFX7-NEXT:    s_setpc_b64 s[30:31]18260  %gep = getelementptr inbounds <2 x bfloat>, ptr %ptr, i64 -51218261  %unused = atomicrmw fsub ptr %gep, <2 x bfloat> %val syncscope("agent") seq_cst18262  ret void18263}18264 18265define <2 x bfloat> @flat_system_atomic_fsub_ret_v2bf16__offset12b_pos(ptr %ptr, <2 x bfloat> %val) #0 {18266; GFX12-TRUE16-LABEL: flat_system_atomic_fsub_ret_v2bf16__offset12b_pos:18267; GFX12-TRUE16:       ; %bb.0:18268; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x018269; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x018270; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x018271; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x018272; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x018273; GFX12-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204418274; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v218275; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v218276; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 018277; GFX12-TRUE16-NEXT:  .LBB56_1: ; %atomicrmw.start18278; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=118279; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x018280; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v318281; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18282; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v618283; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v418284; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v618285; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18286; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 118287; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v218288; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v518289; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)18290; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff18291; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 118292; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v318293; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v318294; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)18295; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff18296; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)18297; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo18298; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v518299; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)18300; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo18301; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)18302; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h18303; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS18304; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x018305; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS18306; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x018307; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS18308; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v618309; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18310; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s018311; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18312; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s018313; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB56_118314; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end18315; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s018316; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v318317; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x018318; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]18319;18320; GFX12-FAKE16-LABEL: flat_system_atomic_fsub_ret_v2bf16__offset12b_pos:18321; GFX12-FAKE16:       ; %bb.0:18322; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x018323; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x018324; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x018325; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x018326; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x018327; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204418328; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v218329; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v218330; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 018331; GFX12-FAKE16-NEXT:  .LBB56_1: ; %atomicrmw.start18332; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=118333; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x018334; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v318335; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18336; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v618337; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v218338; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v618339; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18340; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 118341; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v418342; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v518343; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v518344; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)18345; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff18346; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 118347; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v318348; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v318349; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)18350; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo18351; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff18352; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)18353; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18354; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s018355; GFX12-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030218356; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS18357; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x018358; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS18359; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x018360; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS18361; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v618362; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18363; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s118364; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18365; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s118366; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB56_118367; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end18368; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s118369; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v318370; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x018371; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]18372;18373; GFX942-LABEL: flat_system_atomic_fsub_ret_v2bf16__offset12b_pos:18374; GFX942:       ; %bb.0:18375; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18376; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:204418377; GFX942-NEXT:    s_mov_b64 s[2:3], 018378; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v218379; GFX942-NEXT:    s_movk_i32 s4, 0x7fff18380; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218381; GFX942-NEXT:    s_mov_b32 s5, 0x706030218382; GFX942-NEXT:  .LBB56_1: ; %atomicrmw.start18383; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=118384; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18385; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v318386; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318387; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v418388; GFX942-NEXT:    v_sub_f32_e32 v6, v6, v518389; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 118390; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 118391; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v218392; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v618393; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s418394; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s418395; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618396; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v218397; GFX942-NEXT:    s_nop 018398; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18399; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]18400; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s518401; GFX942-NEXT:    buffer_wbl2 sc0 sc118402; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 sc0 sc118403; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18404; GFX942-NEXT:    buffer_inv sc0 sc118405; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318406; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]18407; GFX942-NEXT:    v_mov_b32_e32 v3, v218408; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]18409; GFX942-NEXT:    s_cbranch_execnz .LBB56_118410; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end18411; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]18412; GFX942-NEXT:    v_mov_b32_e32 v0, v218413; GFX942-NEXT:    s_setpc_b64 s[30:31]18414;18415; GFX11-TRUE16-LABEL: flat_system_atomic_fsub_ret_v2bf16__offset12b_pos:18416; GFX11-TRUE16:       ; %bb.0:18417; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18418; GFX11-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204418419; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v218420; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v218421; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 018422; GFX11-TRUE16-NEXT:    .p2align 618423; GFX11-TRUE16-NEXT:  .LBB56_1: ; %atomicrmw.start18424; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=118425; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18426; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v318427; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18428; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v618429; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v418430; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v618431; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18432; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 118433; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v218434; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v518435; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)18436; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff18437; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 118438; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v318439; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v318440; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)18441; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff18442; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo18443; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v518444; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo18445; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)18446; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h18447; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x018448; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] offset:2044 glc18449; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18450; GFX11-TRUE16-NEXT:    buffer_gl1_inv18451; GFX11-TRUE16-NEXT:    buffer_gl0_inv18452; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v618453; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s018454; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)18455; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s018456; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB56_118457; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end18458; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s018459; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, v318460; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]18461;18462; GFX11-FAKE16-LABEL: flat_system_atomic_fsub_ret_v2bf16__offset12b_pos:18463; GFX11-FAKE16:       ; %bb.0:18464; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18465; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204418466; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v218467; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v218468; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 018469; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x118470; GFX11-FAKE16-NEXT:    .p2align 618471; GFX11-FAKE16-NEXT:  .LBB56_1: ; %atomicrmw.start18472; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=118473; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18474; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v318475; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18476; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v618477; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v218478; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v618479; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18480; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 118481; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v418482; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v518483; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v518484; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)18485; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff18486; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 118487; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v318488; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v318489; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)18490; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo18491; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff18492; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18493; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s018494; GFX11-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030218495; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x018496; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] offset:2044 glc18497; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18498; GFX11-FAKE16-NEXT:    buffer_gl1_inv18499; GFX11-FAKE16-NEXT:    buffer_gl0_inv18500; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v618501; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s118502; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)18503; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s118504; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB56_118505; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end18506; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x218507; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s118508; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v318509; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]18510;18511; GFX10-LABEL: flat_system_atomic_fsub_ret_v2bf16__offset12b_pos:18512; GFX10:       ; %bb.0:18513; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18514; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fc, v018515; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, 0, v1, vcc_lo18516; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 16, v218517; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff0000, v218518; GFX10-NEXT:    s_mov_b32 s5, 018519; GFX10-NEXT:    flat_load_dword v0, v[3:4]18520; GFX10-NEXT:  .LBB56_1: ; %atomicrmw.start18521; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=118522; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18523; GFX10-NEXT:    v_mov_b32_e32 v6, v018524; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 16, v618525; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v618526; GFX10-NEXT:    v_sub_f32_e32 v0, v0, v118527; GFX10-NEXT:    v_sub_f32_e32 v5, v5, v218528; GFX10-NEXT:    v_bfe_u32 v7, v0, 16, 118529; GFX10-NEXT:    v_bfe_u32 v8, v5, 16, 118530; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v018531; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v518532; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v518533; GFX10-NEXT:    v_add3_u32 v7, v7, v0, 0x7fff18534; GFX10-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff18535; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v0, v018536; GFX10-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo18537; GFX10-NEXT:    v_cndmask_b32_e64 v0, v7, v9, s418538; GFX10-NEXT:    v_perm_b32 v5, v5, v0, 0x706030218539; GFX10-NEXT:    s_waitcnt_vscnt null, 0x018540; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc18541; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18542; GFX10-NEXT:    buffer_gl1_inv18543; GFX10-NEXT:    buffer_gl0_inv18544; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v618545; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s518546; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s518547; GFX10-NEXT:    s_cbranch_execnz .LBB56_118548; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end18549; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s518550; GFX10-NEXT:    s_setpc_b64 s[30:31]18551;18552; GFX90A-LABEL: flat_system_atomic_fsub_ret_v2bf16__offset12b_pos:18553; GFX90A:       ; %bb.0:18554; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18555; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:204418556; GFX90A-NEXT:    s_mov_b64 s[6:7], 018557; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v218558; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff18559; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218560; GFX90A-NEXT:    s_mov_b32 s9, 0x706030218561; GFX90A-NEXT:  .LBB56_1: ; %atomicrmw.start18562; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=118563; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18564; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v318565; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318566; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v418567; GFX90A-NEXT:    v_sub_f32_e32 v6, v6, v518568; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 118569; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 118570; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v218571; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v618572; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s818573; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s818574; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618575; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v218576; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]18577; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18578; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s918579; GFX90A-NEXT:    buffer_wbl218580; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc18581; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18582; GFX90A-NEXT:    buffer_invl218583; GFX90A-NEXT:    buffer_wbinvl118584; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318585; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]18586; GFX90A-NEXT:    v_mov_b32_e32 v3, v218587; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]18588; GFX90A-NEXT:    s_cbranch_execnz .LBB56_118589; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end18590; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]18591; GFX90A-NEXT:    v_mov_b32_e32 v0, v218592; GFX90A-NEXT:    s_setpc_b64 s[30:31]18593;18594; GFX908-LABEL: flat_system_atomic_fsub_ret_v2bf16__offset12b_pos:18595; GFX908:       ; %bb.0:18596; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18597; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:204418598; GFX908-NEXT:    s_mov_b64 s[6:7], 018599; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v218600; GFX908-NEXT:    s_movk_i32 s8, 0x7fff18601; GFX908-NEXT:    v_and_b32_e32 v2, 0xffff0000, v218602; GFX908-NEXT:    s_mov_b32 s9, 0x706030218603; GFX908-NEXT:  .LBB56_1: ; %atomicrmw.start18604; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=118605; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18606; GFX908-NEXT:    v_mov_b32_e32 v6, v318607; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v618608; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v618609; GFX908-NEXT:    v_sub_f32_e32 v3, v3, v418610; GFX908-NEXT:    v_sub_f32_e32 v5, v5, v218611; GFX908-NEXT:    v_bfe_u32 v7, v3, 16, 118612; GFX908-NEXT:    v_bfe_u32 v9, v5, 16, 118613; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v318614; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v518615; GFX908-NEXT:    v_add3_u32 v7, v7, v3, s818616; GFX908-NEXT:    v_add3_u32 v9, v9, v5, s818617; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v518618; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v3, v318619; GFX908-NEXT:    v_cndmask_b32_e64 v3, v7, v8, s[4:5]18620; GFX908-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc18621; GFX908-NEXT:    v_perm_b32 v5, v5, v3, s918622; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[5:6] offset:2044 glc18623; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18624; GFX908-NEXT:    buffer_wbinvl118625; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v618626; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]18627; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]18628; GFX908-NEXT:    s_cbranch_execnz .LBB56_118629; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end18630; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]18631; GFX908-NEXT:    v_mov_b32_e32 v0, v318632; GFX908-NEXT:    s_setpc_b64 s[30:31]18633;18634; GFX8-LABEL: flat_system_atomic_fsub_ret_v2bf16__offset12b_pos:18635; GFX8:       ; %bb.0:18636; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18637; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v018638; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc18639; GFX8-NEXT:    flat_load_dword v0, v[3:4]18640; GFX8-NEXT:    s_mov_b64 s[6:7], 018641; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 16, v218642; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v218643; GFX8-NEXT:  .LBB56_1: ; %atomicrmw.start18644; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=118645; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18646; GFX8-NEXT:    v_mov_b32_e32 v6, v018647; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 16, v618648; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v618649; GFX8-NEXT:    v_sub_f32_e32 v0, v0, v118650; GFX8-NEXT:    v_sub_f32_e32 v5, v5, v218651; GFX8-NEXT:    v_bfe_u32 v7, v0, 16, 118652; GFX8-NEXT:    v_bfe_u32 v9, v5, 16, 118653; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v018654; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v518655; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v718656; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v918657; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v518658; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v518659; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v018660; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v0, v018661; GFX8-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc18662; GFX8-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[4:5]18663; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v518664; GFX8-NEXT:    v_alignbit_b32 v5, v5, v0, 1618665; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc18666; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18667; GFX8-NEXT:    buffer_wbinvl118668; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v618669; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]18670; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]18671; GFX8-NEXT:    s_cbranch_execnz .LBB56_118672; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end18673; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]18674; GFX8-NEXT:    s_setpc_b64 s[30:31]18675;18676; GFX7-LABEL: flat_system_atomic_fsub_ret_v2bf16__offset12b_pos:18677; GFX7:       ; %bb.0:18678; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18679; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fc, v018680; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc18681; GFX7-NEXT:    flat_load_dword v0, v[4:5]18682; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v218683; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v318684; GFX7-NEXT:    s_mov_b64 s[4:5], 018685; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v118686; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v318687; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18688; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v018689; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v018690; GFX7-NEXT:  .LBB56_1: ; %atomicrmw.start18691; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=118692; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v118693; GFX7-NEXT:    v_mul_f32_e32 v0, 1.0, v018694; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v118695; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v018696; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v118697; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v318698; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v218699; GFX7-NEXT:    v_alignbit_b32 v1, v1, v0, 1618700; GFX7-NEXT:    v_lshrrev_b32_e32 v0, 16, v718701; GFX7-NEXT:    v_alignbit_b32 v0, v0, v6, 1618702; GFX7-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc18703; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18704; GFX7-NEXT:    buffer_wbinvl118705; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v118706; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v018707; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]18708; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v018709; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]18710; GFX7-NEXT:    s_cbranch_execnz .LBB56_118711; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end18712; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]18713; GFX7-NEXT:    s_setpc_b64 s[30:31]18714  %gep = getelementptr inbounds <2 x bfloat>, ptr %ptr, i64 51118715  %result = atomicrmw fsub ptr %gep, <2 x bfloat> %val seq_cst18716  ret <2 x bfloat> %result18717}18718 18719define void @flat_system_atomic_fsub_noret_v2bf16__offset12b_pos(ptr %ptr, <2 x bfloat> %val) #0 {18720; GFX12-TRUE16-LABEL: flat_system_atomic_fsub_noret_v2bf16__offset12b_pos:18721; GFX12-TRUE16:       ; %bb.0:18722; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x018723; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x018724; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x018725; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x018726; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x018727; GFX12-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204418728; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v218729; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v218730; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 018731; GFX12-TRUE16-NEXT:  .LBB57_1: ; %atomicrmw.start18732; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=118733; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x018734; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318735; GFX12-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318736; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18737; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v2, v2, v518738; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v6, v6, v418739; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18740; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 118741; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 118742; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218743; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v218744; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618745; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18746; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18747; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)18748; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_3)18749; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo18750; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618751; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)18752; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo18753; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h18754; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS18755; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x018756; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS18757; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x018758; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS18759; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318760; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v218761; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18762; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s018763; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18764; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s018765; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB57_118766; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end18767; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s018768; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x018769; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]18770;18771; GFX12-FAKE16-LABEL: flat_system_atomic_fsub_noret_v2bf16__offset12b_pos:18772; GFX12-FAKE16:       ; %bb.0:18773; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x018774; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x018775; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x018776; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x018777; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x018778; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204418779; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v218780; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218781; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 018782; GFX12-FAKE16-NEXT:  .LBB57_1: ; %atomicrmw.start18783; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=118784; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x018785; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318786; GFX12-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318787; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18788; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v418789; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v6, v6, v518790; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18791; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 118792; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 118793; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218794; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618795; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618796; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18797; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18798; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v218799; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)18800; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)18801; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18802; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)18803; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s018804; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)18805; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218806; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS18807; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x018808; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS18809; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x018810; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS18811; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318812; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v218813; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18814; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s118815; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18816; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s118817; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB57_118818; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end18819; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s118820; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x018821; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]18822;18823; GFX942-LABEL: flat_system_atomic_fsub_noret_v2bf16__offset12b_pos:18824; GFX942:       ; %bb.0:18825; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18826; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:204418827; GFX942-NEXT:    s_mov_b64 s[2:3], 018828; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v218829; GFX942-NEXT:    s_movk_i32 s4, 0x7fff18830; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218831; GFX942-NEXT:    s_mov_b32 s5, 0x706030218832; GFX942-NEXT:  .LBB57_1: ; %atomicrmw.start18833; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=118834; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18835; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v318836; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318837; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v418838; GFX942-NEXT:    v_sub_f32_e32 v6, v6, v518839; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 118840; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 118841; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v218842; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v618843; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s418844; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s418845; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618846; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v218847; GFX942-NEXT:    s_nop 018848; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18849; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]18850; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s518851; GFX942-NEXT:    buffer_wbl2 sc0 sc118852; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 sc0 sc118853; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18854; GFX942-NEXT:    buffer_inv sc0 sc118855; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318856; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]18857; GFX942-NEXT:    v_mov_b32_e32 v3, v218858; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]18859; GFX942-NEXT:    s_cbranch_execnz .LBB57_118860; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end18861; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]18862; GFX942-NEXT:    s_setpc_b64 s[30:31]18863;18864; GFX11-TRUE16-LABEL: flat_system_atomic_fsub_noret_v2bf16__offset12b_pos:18865; GFX11-TRUE16:       ; %bb.0:18866; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18867; GFX11-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204418868; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v218869; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v218870; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 018871; GFX11-TRUE16-NEXT:    .p2align 618872; GFX11-TRUE16-NEXT:  .LBB57_1: ; %atomicrmw.start18873; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=118874; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18875; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318876; GFX11-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318877; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18878; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v2, v2, v518879; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v6, v6, v418880; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18881; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 118882; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 118883; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218884; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v218885; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618886; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18887; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18888; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)18889; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo18890; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618891; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo18892; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)18893; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h18894; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x018895; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2044 glc18896; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18897; GFX11-TRUE16-NEXT:    buffer_gl1_inv18898; GFX11-TRUE16-NEXT:    buffer_gl0_inv18899; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318900; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v218901; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s018902; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)18903; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s018904; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB57_118905; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end18906; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s018907; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]18908;18909; GFX11-FAKE16-LABEL: flat_system_atomic_fsub_noret_v2bf16__offset12b_pos:18910; GFX11-FAKE16:       ; %bb.0:18911; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18912; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204418913; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v218914; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218915; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 018916; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x118917; GFX11-FAKE16-NEXT:    .p2align 618918; GFX11-FAKE16-NEXT:  .LBB57_1: ; %atomicrmw.start18919; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=118920; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18921; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318922; GFX11-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318923; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18924; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v418925; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v6, v6, v518926; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18927; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 118928; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 118929; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218930; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618931; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618932; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18933; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18934; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v218935; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18936; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18937; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s018938; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)18939; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218940; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x018941; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2044 glc18942; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18943; GFX11-FAKE16-NEXT:    buffer_gl1_inv18944; GFX11-FAKE16-NEXT:    buffer_gl0_inv18945; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318946; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v218947; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s118948; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)18949; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s118950; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB57_118951; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end18952; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x218953; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s118954; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]18955;18956; GFX10-LABEL: flat_system_atomic_fsub_noret_v2bf16__offset12b_pos:18957; GFX10:       ; %bb.0:18958; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18959; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fc, v018960; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo18961; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v218962; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218963; GFX10-NEXT:    s_mov_b32 s5, 018964; GFX10-NEXT:    flat_load_dword v3, v[0:1]18965; GFX10-NEXT:  .LBB57_1: ; %atomicrmw.start18966; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=118967; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18968; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v318969; GFX10-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318970; GFX10-NEXT:    v_sub_f32_e32 v2, v2, v418971; GFX10-NEXT:    v_sub_f32_e32 v6, v6, v518972; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 118973; GFX10-NEXT:    v_bfe_u32 v8, v6, 16, 118974; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v218975; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v618976; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618977; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18978; GFX10-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18979; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v2, v218980; GFX10-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18981; GFX10-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s418982; GFX10-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218983; GFX10-NEXT:    s_waitcnt_vscnt null, 0x018984; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc18985; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18986; GFX10-NEXT:    buffer_gl1_inv18987; GFX10-NEXT:    buffer_gl0_inv18988; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318989; GFX10-NEXT:    v_mov_b32_e32 v3, v218990; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s518991; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s518992; GFX10-NEXT:    s_cbranch_execnz .LBB57_118993; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end18994; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s518995; GFX10-NEXT:    s_setpc_b64 s[30:31]18996;18997; GFX90A-LABEL: flat_system_atomic_fsub_noret_v2bf16__offset12b_pos:18998; GFX90A:       ; %bb.0:18999; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19000; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:204419001; GFX90A-NEXT:    s_mov_b64 s[6:7], 019002; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v219003; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff19004; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219005; GFX90A-NEXT:    s_mov_b32 s9, 0x706030219006; GFX90A-NEXT:  .LBB57_1: ; %atomicrmw.start19007; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=119008; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19009; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v319010; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319011; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v419012; GFX90A-NEXT:    v_sub_f32_e32 v6, v6, v519013; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 119014; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 119015; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v219016; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v619017; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s819018; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s819019; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v619020; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v219021; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]19022; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc19023; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s919024; GFX90A-NEXT:    buffer_wbl219025; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc19026; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19027; GFX90A-NEXT:    buffer_invl219028; GFX90A-NEXT:    buffer_wbinvl119029; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v319030; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]19031; GFX90A-NEXT:    v_mov_b32_e32 v3, v219032; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]19033; GFX90A-NEXT:    s_cbranch_execnz .LBB57_119034; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end19035; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]19036; GFX90A-NEXT:    s_setpc_b64 s[30:31]19037;19038; GFX908-LABEL: flat_system_atomic_fsub_noret_v2bf16__offset12b_pos:19039; GFX908:       ; %bb.0:19040; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19041; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:204419042; GFX908-NEXT:    s_mov_b64 s[6:7], 019043; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v219044; GFX908-NEXT:    s_movk_i32 s8, 0x7fff19045; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219046; GFX908-NEXT:    s_mov_b32 s9, 0x706030219047; GFX908-NEXT:  .LBB57_1: ; %atomicrmw.start19048; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=119049; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19050; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v319051; GFX908-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319052; GFX908-NEXT:    v_sub_f32_e32 v2, v2, v419053; GFX908-NEXT:    v_sub_f32_e32 v6, v6, v519054; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 119055; GFX908-NEXT:    v_bfe_u32 v9, v6, 16, 119056; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v219057; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v619058; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s819059; GFX908-NEXT:    v_add3_u32 v9, v9, v6, s819060; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v6, v619061; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v219062; GFX908-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]19063; GFX908-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc19064; GFX908-NEXT:    v_perm_b32 v2, v6, v2, s919065; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc19066; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19067; GFX908-NEXT:    buffer_wbinvl119068; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v319069; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]19070; GFX908-NEXT:    v_mov_b32_e32 v3, v219071; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]19072; GFX908-NEXT:    s_cbranch_execnz .LBB57_119073; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end19074; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]19075; GFX908-NEXT:    s_setpc_b64 s[30:31]19076;19077; GFX8-LABEL: flat_system_atomic_fsub_noret_v2bf16__offset12b_pos:19078; GFX8:       ; %bb.0:19079; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19080; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v019081; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc19082; GFX8-NEXT:    flat_load_dword v3, v[0:1]19083; GFX8-NEXT:    s_mov_b64 s[6:7], 019084; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v219085; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219086; GFX8-NEXT:  .LBB57_1: ; %atomicrmw.start19087; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=119088; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19089; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v319090; GFX8-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319091; GFX8-NEXT:    v_sub_f32_e32 v2, v2, v419092; GFX8-NEXT:    v_sub_f32_e32 v6, v6, v519093; GFX8-NEXT:    v_bfe_u32 v7, v2, 16, 119094; GFX8-NEXT:    v_bfe_u32 v9, v6, 16, 119095; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v219096; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v619097; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v719098; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v919099; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v619100; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v6, v619101; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v219102; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v219103; GFX8-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc19104; GFX8-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]19105; GFX8-NEXT:    v_lshrrev_b32_e32 v6, 16, v619106; GFX8-NEXT:    v_alignbit_b32 v2, v6, v2, 1619107; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc19108; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19109; GFX8-NEXT:    buffer_wbinvl119110; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v319111; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]19112; GFX8-NEXT:    v_mov_b32_e32 v3, v219113; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]19114; GFX8-NEXT:    s_cbranch_execnz .LBB57_119115; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end19116; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]19117; GFX8-NEXT:    s_setpc_b64 s[30:31]19118;19119; GFX7-LABEL: flat_system_atomic_fsub_noret_v2bf16__offset12b_pos:19120; GFX7:       ; %bb.0:19121; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19122; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fc, v019123; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc19124; GFX7-NEXT:    flat_load_dword v5, v[0:1]19125; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v219126; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v319127; GFX7-NEXT:    s_mov_b64 s[4:5], 019128; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v219129; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v319130; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19131; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v519132; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v519133; GFX7-NEXT:  .LBB57_1: ; %atomicrmw.start19134; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=119135; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v419136; GFX7-NEXT:    v_mul_f32_e32 v5, 1.0, v519137; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v419138; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v519139; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v419140; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v319141; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v219142; GFX7-NEXT:    v_alignbit_b32 v5, v4, v5, 1619143; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v719144; GFX7-NEXT:    v_alignbit_b32 v4, v4, v6, 1619145; GFX7-NEXT:    flat_atomic_cmpswap v6, v[0:1], v[4:5] glc19146; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19147; GFX7-NEXT:    buffer_wbinvl119148; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v519149; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v619150; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]19151; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v619152; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]19153; GFX7-NEXT:    s_cbranch_execnz .LBB57_119154; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end19155; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]19156; GFX7-NEXT:    s_setpc_b64 s[30:31]19157  %gep = getelementptr inbounds <2 x bfloat>, ptr %ptr, i64 51119158  %unused = atomicrmw fsub ptr %gep, <2 x bfloat> %val seq_cst19159  ret void19160}19161 19162attributes #0 = { nounwind }19163attributes #1 = { nounwind "denormal-fp-math-f32"="preserve-sign,preserve-sign" }19164