brintos

brintos / llvm-project-archived public Read only

0
0
Text · 920.1 KiB · b79d0df Raw
20284 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; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=tahiti < %s | FileCheck -check-prefix=GFX6 %s13 14; --------------------------------------------------------------------15; float16; --------------------------------------------------------------------17 18define float @global_agent_atomic_fsub_ret_f32(ptr addrspace(1) %ptr, float %val) #0 {19; GFX12-LABEL: global_agent_atomic_fsub_ret_f32:20; GFX12:       ; %bb.0:21; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x022; GFX12-NEXT:    s_wait_expcnt 0x023; GFX12-NEXT:    s_wait_samplecnt 0x024; GFX12-NEXT:    s_wait_bvhcnt 0x025; GFX12-NEXT:    s_wait_kmcnt 0x026; GFX12-NEXT:    global_load_b32 v3, v[0:1], off27; GFX12-NEXT:    s_mov_b32 s0, 028; GFX12-NEXT:  .LBB0_1: ; %atomicrmw.start29; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=130; GFX12-NEXT:    s_wait_loadcnt 0x031; GFX12-NEXT:    v_mov_b32_e32 v4, v332; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)33; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v234; GFX12-NEXT:    s_wait_storecnt 0x035; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV36; GFX12-NEXT:    s_wait_loadcnt 0x037; GFX12-NEXT:    global_inv scope:SCOPE_DEV38; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v439; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)40; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s041; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)42; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s043; GFX12-NEXT:    s_cbranch_execnz .LBB0_144; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end45; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s046; GFX12-NEXT:    v_mov_b32_e32 v0, v347; GFX12-NEXT:    s_wait_loadcnt 0x048; GFX12-NEXT:    s_setpc_b64 s[30:31]49;50; GFX942-LABEL: global_agent_atomic_fsub_ret_f32:51; GFX942:       ; %bb.0:52; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)53; GFX942-NEXT:    global_load_dword v5, v[0:1], off54; GFX942-NEXT:    s_mov_b64 s[0:1], 055; GFX942-NEXT:  .LBB0_1: ; %atomicrmw.start56; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=157; GFX942-NEXT:    s_waitcnt vmcnt(0)58; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v259; GFX942-NEXT:    buffer_wbl2 sc160; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off sc061; GFX942-NEXT:    s_waitcnt vmcnt(0)62; GFX942-NEXT:    buffer_inv sc163; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v564; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]65; GFX942-NEXT:    v_mov_b32_e32 v5, v366; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]67; GFX942-NEXT:    s_cbranch_execnz .LBB0_168; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end69; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]70; GFX942-NEXT:    v_mov_b32_e32 v0, v371; GFX942-NEXT:    s_setpc_b64 s[30:31]72;73; GFX11-LABEL: global_agent_atomic_fsub_ret_f32:74; GFX11:       ; %bb.0:75; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)76; GFX11-NEXT:    global_load_b32 v3, v[0:1], off77; GFX11-NEXT:    s_mov_b32 s0, 078; GFX11-NEXT:  .LBB0_1: ; %atomicrmw.start79; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=180; GFX11-NEXT:    s_waitcnt vmcnt(0)81; GFX11-NEXT:    v_mov_b32_e32 v4, v382; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)83; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v284; GFX11-NEXT:    s_waitcnt_vscnt null, 0x085; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc86; GFX11-NEXT:    s_waitcnt vmcnt(0)87; GFX11-NEXT:    buffer_gl1_inv88; GFX11-NEXT:    buffer_gl0_inv89; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v490; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s091; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)92; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s093; GFX11-NEXT:    s_cbranch_execnz .LBB0_194; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end95; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s096; GFX11-NEXT:    v_mov_b32_e32 v0, v397; GFX11-NEXT:    s_setpc_b64 s[30:31]98;99; GFX10-LABEL: global_agent_atomic_fsub_ret_f32:100; GFX10:       ; %bb.0:101; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)102; GFX10-NEXT:    global_load_dword v3, v[0:1], off103; GFX10-NEXT:    s_mov_b32 s4, 0104; GFX10-NEXT:  .LBB0_1: ; %atomicrmw.start105; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1106; GFX10-NEXT:    s_waitcnt vmcnt(0)107; GFX10-NEXT:    v_mov_b32_e32 v4, v3108; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v2109; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0110; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc111; GFX10-NEXT:    s_waitcnt vmcnt(0)112; GFX10-NEXT:    buffer_gl1_inv113; GFX10-NEXT:    buffer_gl0_inv114; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4115; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s4116; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s4117; GFX10-NEXT:    s_cbranch_execnz .LBB0_1118; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end119; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s4120; GFX10-NEXT:    v_mov_b32_e32 v0, v3121; GFX10-NEXT:    s_setpc_b64 s[30:31]122;123; GFX90A-LABEL: global_agent_atomic_fsub_ret_f32:124; GFX90A:       ; %bb.0:125; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)126; GFX90A-NEXT:    global_load_dword v5, v[0:1], off127; GFX90A-NEXT:    s_mov_b64 s[4:5], 0128; GFX90A-NEXT:  .LBB0_1: ; %atomicrmw.start129; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1130; GFX90A-NEXT:    s_waitcnt vmcnt(0)131; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v2132; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off glc133; GFX90A-NEXT:    s_waitcnt vmcnt(0)134; GFX90A-NEXT:    buffer_wbinvl1135; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v5136; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]137; GFX90A-NEXT:    v_mov_b32_e32 v5, v3138; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]139; GFX90A-NEXT:    s_cbranch_execnz .LBB0_1140; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end141; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]142; GFX90A-NEXT:    v_mov_b32_e32 v0, v3143; GFX90A-NEXT:    s_setpc_b64 s[30:31]144;145; GFX908-LABEL: global_agent_atomic_fsub_ret_f32:146; GFX908:       ; %bb.0:147; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)148; GFX908-NEXT:    global_load_dword v3, v[0:1], off149; GFX908-NEXT:    s_mov_b64 s[4:5], 0150; GFX908-NEXT:  .LBB0_1: ; %atomicrmw.start151; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1152; GFX908-NEXT:    s_waitcnt vmcnt(0)153; GFX908-NEXT:    v_mov_b32_e32 v4, v3154; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v2155; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc156; GFX908-NEXT:    s_waitcnt vmcnt(0)157; GFX908-NEXT:    buffer_wbinvl1158; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4159; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]160; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]161; GFX908-NEXT:    s_cbranch_execnz .LBB0_1162; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end163; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]164; GFX908-NEXT:    v_mov_b32_e32 v0, v3165; GFX908-NEXT:    s_setpc_b64 s[30:31]166;167; GFX8-LABEL: global_agent_atomic_fsub_ret_f32:168; GFX8:       ; %bb.0:169; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)170; GFX8-NEXT:    flat_load_dword v3, v[0:1]171; GFX8-NEXT:    s_mov_b64 s[4:5], 0172; GFX8-NEXT:  .LBB0_1: ; %atomicrmw.start173; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1174; GFX8-NEXT:    s_waitcnt vmcnt(0)175; GFX8-NEXT:    v_mov_b32_e32 v4, v3176; GFX8-NEXT:    v_sub_f32_e32 v3, v4, v2177; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc178; GFX8-NEXT:    s_waitcnt vmcnt(0)179; GFX8-NEXT:    buffer_wbinvl1180; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4181; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]182; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]183; GFX8-NEXT:    s_cbranch_execnz .LBB0_1184; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end185; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]186; GFX8-NEXT:    v_mov_b32_e32 v0, v3187; GFX8-NEXT:    s_setpc_b64 s[30:31]188;189; GFX7-LABEL: global_agent_atomic_fsub_ret_f32:190; GFX7:       ; %bb.0:191; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)192; GFX7-NEXT:    s_mov_b32 s6, 0193; GFX7-NEXT:    s_mov_b32 s7, 0xf000194; GFX7-NEXT:    s_mov_b32 s4, s6195; GFX7-NEXT:    s_mov_b32 s5, s6196; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64197; GFX7-NEXT:    s_mov_b64 s[8:9], 0198; GFX7-NEXT:  .LBB0_1: ; %atomicrmw.start199; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=1200; GFX7-NEXT:    s_waitcnt vmcnt(0)201; GFX7-NEXT:    v_mov_b32_e32 v5, v3202; GFX7-NEXT:    v_sub_f32_e32 v4, v5, v2203; GFX7-NEXT:    v_mov_b32_e32 v3, v4204; GFX7-NEXT:    v_mov_b32_e32 v4, v5205; GFX7-NEXT:    buffer_atomic_cmpswap v[3:4], v[0:1], s[4:7], 0 addr64 glc206; GFX7-NEXT:    s_waitcnt vmcnt(0)207; GFX7-NEXT:    buffer_wbinvl1208; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v5209; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]210; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]211; GFX7-NEXT:    s_cbranch_execnz .LBB0_1212; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end213; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]214; GFX7-NEXT:    v_mov_b32_e32 v0, v3215; GFX7-NEXT:    s_setpc_b64 s[30:31]216;217; GFX6-LABEL: global_agent_atomic_fsub_ret_f32:218; GFX6:       ; %bb.0:219; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)220; GFX6-NEXT:    s_mov_b32 s6, 0221; GFX6-NEXT:    s_mov_b32 s7, 0xf000222; GFX6-NEXT:    s_mov_b32 s4, s6223; GFX6-NEXT:    s_mov_b32 s5, s6224; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64225; GFX6-NEXT:    s_mov_b64 s[8:9], 0226; GFX6-NEXT:  .LBB0_1: ; %atomicrmw.start227; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=1228; GFX6-NEXT:    s_waitcnt vmcnt(0)229; GFX6-NEXT:    v_mov_b32_e32 v5, v3230; GFX6-NEXT:    s_waitcnt expcnt(0)231; GFX6-NEXT:    v_sub_f32_e32 v4, v5, v2232; GFX6-NEXT:    v_mov_b32_e32 v3, v4233; GFX6-NEXT:    v_mov_b32_e32 v4, v5234; GFX6-NEXT:    buffer_atomic_cmpswap v[3:4], v[0:1], s[4:7], 0 addr64 glc235; GFX6-NEXT:    s_waitcnt vmcnt(0)236; GFX6-NEXT:    buffer_wbinvl1237; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v5238; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]239; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]240; GFX6-NEXT:    s_cbranch_execnz .LBB0_1241; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end242; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]243; GFX6-NEXT:    v_mov_b32_e32 v0, v3244; GFX6-NEXT:    s_waitcnt expcnt(0)245; GFX6-NEXT:    s_setpc_b64 s[30:31]246  %result = atomicrmw fsub ptr addrspace(1) %ptr, float %val syncscope("agent") seq_cst247  ret float %result248}249 250define float @global_agent_atomic_fsub_ret_f32__offset12b_pos(ptr addrspace(1) %ptr, float %val) #0 {251; GFX12-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_pos:252; GFX12:       ; %bb.0:253; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0254; GFX12-NEXT:    s_wait_expcnt 0x0255; GFX12-NEXT:    s_wait_samplecnt 0x0256; GFX12-NEXT:    s_wait_bvhcnt 0x0257; GFX12-NEXT:    s_wait_kmcnt 0x0258; GFX12-NEXT:    global_load_b32 v3, v[0:1], off offset:2044259; GFX12-NEXT:    s_mov_b32 s0, 0260; GFX12-NEXT:  .LBB1_1: ; %atomicrmw.start261; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=1262; GFX12-NEXT:    s_wait_loadcnt 0x0263; GFX12-NEXT:    v_mov_b32_e32 v4, v3264; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)265; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v2266; GFX12-NEXT:    s_wait_storecnt 0x0267; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV268; GFX12-NEXT:    s_wait_loadcnt 0x0269; GFX12-NEXT:    global_inv scope:SCOPE_DEV270; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4271; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)272; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s0273; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)274; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0275; GFX12-NEXT:    s_cbranch_execnz .LBB1_1276; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end277; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s0278; GFX12-NEXT:    v_mov_b32_e32 v0, v3279; GFX12-NEXT:    s_wait_loadcnt 0x0280; GFX12-NEXT:    s_setpc_b64 s[30:31]281;282; GFX942-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_pos:283; GFX942:       ; %bb.0:284; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)285; GFX942-NEXT:    global_load_dword v5, v[0:1], off offset:2044286; GFX942-NEXT:    s_mov_b64 s[0:1], 0287; GFX942-NEXT:  .LBB1_1: ; %atomicrmw.start288; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1289; GFX942-NEXT:    s_waitcnt vmcnt(0)290; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v2291; GFX942-NEXT:    buffer_wbl2 sc1292; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 sc0293; GFX942-NEXT:    s_waitcnt vmcnt(0)294; GFX942-NEXT:    buffer_inv sc1295; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v5296; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]297; GFX942-NEXT:    v_mov_b32_e32 v5, v3298; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]299; GFX942-NEXT:    s_cbranch_execnz .LBB1_1300; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end301; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]302; GFX942-NEXT:    v_mov_b32_e32 v0, v3303; GFX942-NEXT:    s_setpc_b64 s[30:31]304;305; GFX11-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_pos:306; GFX11:       ; %bb.0:307; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)308; GFX11-NEXT:    global_load_b32 v3, v[0:1], off offset:2044309; GFX11-NEXT:    s_mov_b32 s0, 0310; GFX11-NEXT:  .LBB1_1: ; %atomicrmw.start311; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1312; GFX11-NEXT:    s_waitcnt vmcnt(0)313; GFX11-NEXT:    v_mov_b32_e32 v4, v3314; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)315; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v2316; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0317; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 glc318; GFX11-NEXT:    s_waitcnt vmcnt(0)319; GFX11-NEXT:    buffer_gl1_inv320; GFX11-NEXT:    buffer_gl0_inv321; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4322; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s0323; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)324; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0325; GFX11-NEXT:    s_cbranch_execnz .LBB1_1326; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end327; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s0328; GFX11-NEXT:    v_mov_b32_e32 v0, v3329; GFX11-NEXT:    s_setpc_b64 s[30:31]330;331; GFX10-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_pos:332; GFX10:       ; %bb.0:333; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)334; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:2044335; GFX10-NEXT:    s_mov_b32 s4, 0336; GFX10-NEXT:  .LBB1_1: ; %atomicrmw.start337; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1338; GFX10-NEXT:    s_waitcnt vmcnt(0)339; GFX10-NEXT:    v_mov_b32_e32 v4, v3340; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v2341; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0342; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc343; GFX10-NEXT:    s_waitcnt vmcnt(0)344; GFX10-NEXT:    buffer_gl1_inv345; GFX10-NEXT:    buffer_gl0_inv346; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4347; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s4348; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s4349; GFX10-NEXT:    s_cbranch_execnz .LBB1_1350; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end351; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s4352; GFX10-NEXT:    v_mov_b32_e32 v0, v3353; GFX10-NEXT:    s_setpc_b64 s[30:31]354;355; GFX90A-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_pos:356; GFX90A:       ; %bb.0:357; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)358; GFX90A-NEXT:    global_load_dword v5, v[0:1], off offset:2044359; GFX90A-NEXT:    s_mov_b64 s[4:5], 0360; GFX90A-NEXT:  .LBB1_1: ; %atomicrmw.start361; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1362; GFX90A-NEXT:    s_waitcnt vmcnt(0)363; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v2364; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 glc365; GFX90A-NEXT:    s_waitcnt vmcnt(0)366; GFX90A-NEXT:    buffer_wbinvl1367; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v5368; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]369; GFX90A-NEXT:    v_mov_b32_e32 v5, v3370; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]371; GFX90A-NEXT:    s_cbranch_execnz .LBB1_1372; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end373; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]374; GFX90A-NEXT:    v_mov_b32_e32 v0, v3375; GFX90A-NEXT:    s_setpc_b64 s[30:31]376;377; GFX908-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_pos:378; GFX908:       ; %bb.0:379; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)380; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:2044381; GFX908-NEXT:    s_mov_b64 s[4:5], 0382; GFX908-NEXT:  .LBB1_1: ; %atomicrmw.start383; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1384; GFX908-NEXT:    s_waitcnt vmcnt(0)385; GFX908-NEXT:    v_mov_b32_e32 v4, v3386; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v2387; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc388; GFX908-NEXT:    s_waitcnt vmcnt(0)389; GFX908-NEXT:    buffer_wbinvl1390; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4391; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]392; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]393; GFX908-NEXT:    s_cbranch_execnz .LBB1_1394; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end395; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]396; GFX908-NEXT:    v_mov_b32_e32 v0, v3397; GFX908-NEXT:    s_setpc_b64 s[30:31]398;399; GFX8-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_pos:400; GFX8:       ; %bb.0:401; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)402; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v0403; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc404; GFX8-NEXT:    flat_load_dword v0, v[3:4]405; GFX8-NEXT:    s_mov_b64 s[4:5], 0406; GFX8-NEXT:  .LBB1_1: ; %atomicrmw.start407; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1408; GFX8-NEXT:    s_waitcnt vmcnt(0)409; GFX8-NEXT:    v_mov_b32_e32 v1, v0410; GFX8-NEXT:    v_sub_f32_e32 v0, v1, v2411; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc412; GFX8-NEXT:    s_waitcnt vmcnt(0)413; GFX8-NEXT:    buffer_wbinvl1414; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1415; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]416; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]417; GFX8-NEXT:    s_cbranch_execnz .LBB1_1418; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end419; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]420; GFX8-NEXT:    s_setpc_b64 s[30:31]421;422; GFX7-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_pos:423; GFX7:       ; %bb.0:424; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)425; GFX7-NEXT:    s_mov_b32 s6, 0426; GFX7-NEXT:    s_mov_b32 s7, 0xf000427; GFX7-NEXT:    s_mov_b32 s4, s6428; GFX7-NEXT:    s_mov_b32 s5, s6429; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:2044430; GFX7-NEXT:    s_mov_b64 s[8:9], 0431; GFX7-NEXT:  .LBB1_1: ; %atomicrmw.start432; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=1433; GFX7-NEXT:    s_waitcnt vmcnt(0)434; GFX7-NEXT:    v_mov_b32_e32 v5, v3435; GFX7-NEXT:    v_sub_f32_e32 v4, v5, v2436; GFX7-NEXT:    v_mov_b32_e32 v3, v4437; GFX7-NEXT:    v_mov_b32_e32 v4, v5438; GFX7-NEXT:    buffer_atomic_cmpswap v[3:4], v[0:1], s[4:7], 0 addr64 offset:2044 glc439; GFX7-NEXT:    s_waitcnt vmcnt(0)440; GFX7-NEXT:    buffer_wbinvl1441; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v5442; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]443; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]444; GFX7-NEXT:    s_cbranch_execnz .LBB1_1445; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end446; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]447; GFX7-NEXT:    v_mov_b32_e32 v0, v3448; GFX7-NEXT:    s_setpc_b64 s[30:31]449;450; GFX6-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_pos:451; GFX6:       ; %bb.0:452; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)453; GFX6-NEXT:    s_mov_b32 s6, 0454; GFX6-NEXT:    s_mov_b32 s7, 0xf000455; GFX6-NEXT:    s_mov_b32 s4, s6456; GFX6-NEXT:    s_mov_b32 s5, s6457; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:2044458; GFX6-NEXT:    s_mov_b64 s[8:9], 0459; GFX6-NEXT:  .LBB1_1: ; %atomicrmw.start460; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=1461; GFX6-NEXT:    s_waitcnt vmcnt(0)462; GFX6-NEXT:    v_mov_b32_e32 v5, v3463; GFX6-NEXT:    s_waitcnt expcnt(0)464; GFX6-NEXT:    v_sub_f32_e32 v4, v5, v2465; GFX6-NEXT:    v_mov_b32_e32 v3, v4466; GFX6-NEXT:    v_mov_b32_e32 v4, v5467; GFX6-NEXT:    buffer_atomic_cmpswap v[3:4], v[0:1], s[4:7], 0 addr64 offset:2044 glc468; GFX6-NEXT:    s_waitcnt vmcnt(0)469; GFX6-NEXT:    buffer_wbinvl1470; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v5471; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]472; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]473; GFX6-NEXT:    s_cbranch_execnz .LBB1_1474; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end475; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]476; GFX6-NEXT:    v_mov_b32_e32 v0, v3477; GFX6-NEXT:    s_waitcnt expcnt(0)478; GFX6-NEXT:    s_setpc_b64 s[30:31]479  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 511480  %result = atomicrmw fsub ptr addrspace(1) %gep, float %val syncscope("agent") seq_cst481  ret float %result482}483 484define float @global_agent_atomic_fsub_ret_f32__offset12b_neg(ptr addrspace(1) %ptr, float %val) #0 {485; GFX12-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_neg:486; GFX12:       ; %bb.0:487; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0488; GFX12-NEXT:    s_wait_expcnt 0x0489; GFX12-NEXT:    s_wait_samplecnt 0x0490; GFX12-NEXT:    s_wait_bvhcnt 0x0491; GFX12-NEXT:    s_wait_kmcnt 0x0492; GFX12-NEXT:    global_load_b32 v3, v[0:1], off offset:-2048493; GFX12-NEXT:    s_mov_b32 s0, 0494; GFX12-NEXT:  .LBB2_1: ; %atomicrmw.start495; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=1496; GFX12-NEXT:    s_wait_loadcnt 0x0497; GFX12-NEXT:    v_mov_b32_e32 v4, v3498; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)499; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v2500; GFX12-NEXT:    s_wait_storecnt 0x0501; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV502; GFX12-NEXT:    s_wait_loadcnt 0x0503; GFX12-NEXT:    global_inv scope:SCOPE_DEV504; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4505; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)506; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s0507; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)508; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0509; GFX12-NEXT:    s_cbranch_execnz .LBB2_1510; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end511; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s0512; GFX12-NEXT:    v_mov_b32_e32 v0, v3513; GFX12-NEXT:    s_wait_loadcnt 0x0514; GFX12-NEXT:    s_setpc_b64 s[30:31]515;516; GFX942-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_neg:517; GFX942:       ; %bb.0:518; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)519; GFX942-NEXT:    global_load_dword v5, v[0:1], off offset:-2048520; GFX942-NEXT:    s_mov_b64 s[0:1], 0521; GFX942-NEXT:  .LBB2_1: ; %atomicrmw.start522; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1523; GFX942-NEXT:    s_waitcnt vmcnt(0)524; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v2525; GFX942-NEXT:    buffer_wbl2 sc1526; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:-2048 sc0527; GFX942-NEXT:    s_waitcnt vmcnt(0)528; GFX942-NEXT:    buffer_inv sc1529; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v5530; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]531; GFX942-NEXT:    v_mov_b32_e32 v5, v3532; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]533; GFX942-NEXT:    s_cbranch_execnz .LBB2_1534; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end535; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]536; GFX942-NEXT:    v_mov_b32_e32 v0, v3537; GFX942-NEXT:    s_setpc_b64 s[30:31]538;539; GFX11-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_neg:540; GFX11:       ; %bb.0:541; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)542; GFX11-NEXT:    global_load_b32 v3, v[0:1], off offset:-2048543; GFX11-NEXT:    s_mov_b32 s0, 0544; GFX11-NEXT:  .LBB2_1: ; %atomicrmw.start545; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1546; GFX11-NEXT:    s_waitcnt vmcnt(0)547; GFX11-NEXT:    v_mov_b32_e32 v4, v3548; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)549; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v2550; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0551; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:-2048 glc552; GFX11-NEXT:    s_waitcnt vmcnt(0)553; GFX11-NEXT:    buffer_gl1_inv554; GFX11-NEXT:    buffer_gl0_inv555; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4556; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s0557; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)558; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0559; GFX11-NEXT:    s_cbranch_execnz .LBB2_1560; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end561; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s0562; GFX11-NEXT:    v_mov_b32_e32 v0, v3563; GFX11-NEXT:    s_setpc_b64 s[30:31]564;565; GFX10-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_neg:566; GFX10:       ; %bb.0:567; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)568; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:-2048569; GFX10-NEXT:    s_mov_b32 s4, 0570; GFX10-NEXT:  .LBB2_1: ; %atomicrmw.start571; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1572; GFX10-NEXT:    s_waitcnt vmcnt(0)573; GFX10-NEXT:    v_mov_b32_e32 v4, v3574; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v2575; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0576; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:-2048 glc577; GFX10-NEXT:    s_waitcnt vmcnt(0)578; GFX10-NEXT:    buffer_gl1_inv579; GFX10-NEXT:    buffer_gl0_inv580; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4581; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s4582; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s4583; GFX10-NEXT:    s_cbranch_execnz .LBB2_1584; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end585; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s4586; GFX10-NEXT:    v_mov_b32_e32 v0, v3587; GFX10-NEXT:    s_setpc_b64 s[30:31]588;589; GFX90A-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_neg:590; GFX90A:       ; %bb.0:591; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)592; GFX90A-NEXT:    global_load_dword v5, v[0:1], off offset:-2048593; GFX90A-NEXT:    s_mov_b64 s[4:5], 0594; GFX90A-NEXT:  .LBB2_1: ; %atomicrmw.start595; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1596; GFX90A-NEXT:    s_waitcnt vmcnt(0)597; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v2598; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:-2048 glc599; GFX90A-NEXT:    s_waitcnt vmcnt(0)600; GFX90A-NEXT:    buffer_wbinvl1601; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v5602; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]603; GFX90A-NEXT:    v_mov_b32_e32 v5, v3604; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]605; GFX90A-NEXT:    s_cbranch_execnz .LBB2_1606; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end607; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]608; GFX90A-NEXT:    v_mov_b32_e32 v0, v3609; GFX90A-NEXT:    s_setpc_b64 s[30:31]610;611; GFX908-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_neg:612; GFX908:       ; %bb.0:613; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)614; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:-2048615; GFX908-NEXT:    s_mov_b64 s[4:5], 0616; GFX908-NEXT:  .LBB2_1: ; %atomicrmw.start617; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1618; GFX908-NEXT:    s_waitcnt vmcnt(0)619; GFX908-NEXT:    v_mov_b32_e32 v4, v3620; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v2621; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:-2048 glc622; GFX908-NEXT:    s_waitcnt vmcnt(0)623; GFX908-NEXT:    buffer_wbinvl1624; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4625; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]626; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]627; GFX908-NEXT:    s_cbranch_execnz .LBB2_1628; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end629; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]630; GFX908-NEXT:    v_mov_b32_e32 v0, v3631; GFX908-NEXT:    s_setpc_b64 s[30:31]632;633; GFX8-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_neg:634; GFX8:       ; %bb.0:635; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)636; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v0637; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, -1, v1, vcc638; GFX8-NEXT:    flat_load_dword v0, v[3:4]639; GFX8-NEXT:    s_mov_b64 s[4:5], 0640; GFX8-NEXT:  .LBB2_1: ; %atomicrmw.start641; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1642; GFX8-NEXT:    s_waitcnt vmcnt(0)643; GFX8-NEXT:    v_mov_b32_e32 v1, v0644; GFX8-NEXT:    v_sub_f32_e32 v0, v1, v2645; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc646; GFX8-NEXT:    s_waitcnt vmcnt(0)647; GFX8-NEXT:    buffer_wbinvl1648; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1649; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]650; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]651; GFX8-NEXT:    s_cbranch_execnz .LBB2_1652; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end653; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]654; GFX8-NEXT:    s_setpc_b64 s[30:31]655;656; GFX7-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_neg:657; GFX7:       ; %bb.0:658; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)659; GFX7-NEXT:    s_movk_i32 s4, 0xf800660; GFX7-NEXT:    v_mov_b32_e32 v4, v1661; GFX7-NEXT:    v_mov_b32_e32 v3, v0662; GFX7-NEXT:    s_mov_b32 s5, -1663; GFX7-NEXT:    s_mov_b32 s7, 0xf000664; GFX7-NEXT:    s_mov_b32 s6, 0665; GFX7-NEXT:    buffer_load_dword v0, v[3:4], s[4:7], 0 addr64666; GFX7-NEXT:    v_add_i32_e32 v3, vcc, 0xfffff800, v3667; GFX7-NEXT:    v_addc_u32_e32 v4, vcc, -1, v4, vcc668; GFX7-NEXT:    s_mov_b64 s[8:9], 0669; GFX7-NEXT:    s_mov_b32 s4, s6670; GFX7-NEXT:    s_mov_b32 s5, s6671; GFX7-NEXT:  .LBB2_1: ; %atomicrmw.start672; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=1673; GFX7-NEXT:    s_waitcnt vmcnt(0)674; GFX7-NEXT:    v_mov_b32_e32 v6, v0675; GFX7-NEXT:    v_sub_f32_e32 v5, v6, v2676; GFX7-NEXT:    v_mov_b32_e32 v0, v5677; GFX7-NEXT:    v_mov_b32_e32 v1, v6678; GFX7-NEXT:    buffer_atomic_cmpswap v[0:1], v[3:4], s[4:7], 0 addr64 glc679; GFX7-NEXT:    s_waitcnt vmcnt(0)680; GFX7-NEXT:    buffer_wbinvl1681; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v6682; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]683; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]684; GFX7-NEXT:    s_cbranch_execnz .LBB2_1685; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end686; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]687; GFX7-NEXT:    s_setpc_b64 s[30:31]688;689; GFX6-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_neg:690; GFX6:       ; %bb.0:691; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)692; GFX6-NEXT:    s_movk_i32 s4, 0xf800693; GFX6-NEXT:    v_mov_b32_e32 v4, v1694; GFX6-NEXT:    v_mov_b32_e32 v3, v0695; GFX6-NEXT:    s_mov_b32 s5, -1696; GFX6-NEXT:    s_mov_b32 s7, 0xf000697; GFX6-NEXT:    s_mov_b32 s6, 0698; GFX6-NEXT:    buffer_load_dword v0, v[3:4], s[4:7], 0 addr64699; GFX6-NEXT:    v_add_i32_e32 v3, vcc, 0xfffff800, v3700; GFX6-NEXT:    v_addc_u32_e32 v4, vcc, -1, v4, vcc701; GFX6-NEXT:    s_mov_b64 s[8:9], 0702; GFX6-NEXT:    s_mov_b32 s4, s6703; GFX6-NEXT:    s_mov_b32 s5, s6704; GFX6-NEXT:  .LBB2_1: ; %atomicrmw.start705; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=1706; GFX6-NEXT:    s_waitcnt vmcnt(0)707; GFX6-NEXT:    v_mov_b32_e32 v6, v0708; GFX6-NEXT:    v_sub_f32_e32 v5, v6, v2709; GFX6-NEXT:    s_waitcnt expcnt(0)710; GFX6-NEXT:    v_mov_b32_e32 v0, v5711; GFX6-NEXT:    v_mov_b32_e32 v1, v6712; GFX6-NEXT:    buffer_atomic_cmpswap v[0:1], v[3:4], s[4:7], 0 addr64 glc713; GFX6-NEXT:    s_waitcnt vmcnt(0)714; GFX6-NEXT:    buffer_wbinvl1715; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v6716; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]717; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]718; GFX6-NEXT:    s_cbranch_execnz .LBB2_1719; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end720; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]721; GFX6-NEXT:    s_waitcnt expcnt(0)722; GFX6-NEXT:    s_setpc_b64 s[30:31]723  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 -512724  %result = atomicrmw fsub ptr addrspace(1) %gep, float %val syncscope("agent") seq_cst725  ret float %result726}727 728define void @global_agent_atomic_fsub_noret_f32(ptr addrspace(1) %ptr, float %val) #0 {729; GFX12-LABEL: global_agent_atomic_fsub_noret_f32:730; GFX12:       ; %bb.0:731; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0732; GFX12-NEXT:    s_wait_expcnt 0x0733; GFX12-NEXT:    s_wait_samplecnt 0x0734; GFX12-NEXT:    s_wait_bvhcnt 0x0735; GFX12-NEXT:    s_wait_kmcnt 0x0736; GFX12-NEXT:    global_load_b32 v4, v[0:1], off737; GFX12-NEXT:    s_mov_b32 s0, 0738; GFX12-NEXT:  .LBB3_1: ; %atomicrmw.start739; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=1740; GFX12-NEXT:    s_wait_loadcnt 0x0741; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v2742; GFX12-NEXT:    s_wait_storecnt 0x0743; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV744; GFX12-NEXT:    s_wait_loadcnt 0x0745; GFX12-NEXT:    global_inv scope:SCOPE_DEV746; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4747; GFX12-NEXT:    v_mov_b32_e32 v4, v3748; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)749; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s0750; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)751; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0752; GFX12-NEXT:    s_cbranch_execnz .LBB3_1753; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end754; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s0755; GFX12-NEXT:    s_wait_loadcnt 0x0756; GFX12-NEXT:    s_setpc_b64 s[30:31]757;758; GFX942-LABEL: global_agent_atomic_fsub_noret_f32:759; GFX942:       ; %bb.0:760; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)761; GFX942-NEXT:    global_load_dword v5, v[0:1], off762; GFX942-NEXT:    s_mov_b64 s[0:1], 0763; GFX942-NEXT:  .LBB3_1: ; %atomicrmw.start764; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1765; GFX942-NEXT:    s_waitcnt vmcnt(0)766; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v2767; GFX942-NEXT:    buffer_wbl2 sc1768; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off sc0769; GFX942-NEXT:    s_waitcnt vmcnt(0)770; GFX942-NEXT:    buffer_inv sc1771; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v5772; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]773; GFX942-NEXT:    v_mov_b32_e32 v5, v3774; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]775; GFX942-NEXT:    s_cbranch_execnz .LBB3_1776; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end777; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]778; GFX942-NEXT:    s_setpc_b64 s[30:31]779;780; GFX11-LABEL: global_agent_atomic_fsub_noret_f32:781; GFX11:       ; %bb.0:782; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)783; GFX11-NEXT:    global_load_b32 v4, v[0:1], off784; GFX11-NEXT:    s_mov_b32 s0, 0785; GFX11-NEXT:  .LBB3_1: ; %atomicrmw.start786; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1787; GFX11-NEXT:    s_waitcnt vmcnt(0)788; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v2789; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0790; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc791; GFX11-NEXT:    s_waitcnt vmcnt(0)792; GFX11-NEXT:    buffer_gl1_inv793; GFX11-NEXT:    buffer_gl0_inv794; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4795; GFX11-NEXT:    v_mov_b32_e32 v4, v3796; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s0797; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)798; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0799; GFX11-NEXT:    s_cbranch_execnz .LBB3_1800; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end801; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s0802; GFX11-NEXT:    s_setpc_b64 s[30:31]803;804; GFX10-LABEL: global_agent_atomic_fsub_noret_f32:805; GFX10:       ; %bb.0:806; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)807; GFX10-NEXT:    global_load_dword v4, v[0:1], off808; GFX10-NEXT:    s_mov_b32 s4, 0809; GFX10-NEXT:  .LBB3_1: ; %atomicrmw.start810; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1811; GFX10-NEXT:    s_waitcnt vmcnt(0)812; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v2813; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0814; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc815; GFX10-NEXT:    s_waitcnt vmcnt(0)816; GFX10-NEXT:    buffer_gl1_inv817; GFX10-NEXT:    buffer_gl0_inv818; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4819; GFX10-NEXT:    v_mov_b32_e32 v4, v3820; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s4821; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s4822; GFX10-NEXT:    s_cbranch_execnz .LBB3_1823; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end824; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s4825; GFX10-NEXT:    s_setpc_b64 s[30:31]826;827; GFX90A-LABEL: global_agent_atomic_fsub_noret_f32:828; GFX90A:       ; %bb.0:829; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)830; GFX90A-NEXT:    global_load_dword v5, v[0:1], off831; GFX90A-NEXT:    s_mov_b64 s[4:5], 0832; GFX90A-NEXT:  .LBB3_1: ; %atomicrmw.start833; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1834; GFX90A-NEXT:    s_waitcnt vmcnt(0)835; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v2836; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off glc837; GFX90A-NEXT:    s_waitcnt vmcnt(0)838; GFX90A-NEXT:    buffer_wbinvl1839; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v5840; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]841; GFX90A-NEXT:    v_mov_b32_e32 v5, v3842; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]843; GFX90A-NEXT:    s_cbranch_execnz .LBB3_1844; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end845; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]846; GFX90A-NEXT:    s_setpc_b64 s[30:31]847;848; GFX908-LABEL: global_agent_atomic_fsub_noret_f32:849; GFX908:       ; %bb.0:850; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)851; GFX908-NEXT:    global_load_dword v4, v[0:1], off852; GFX908-NEXT:    s_mov_b64 s[4:5], 0853; GFX908-NEXT:  .LBB3_1: ; %atomicrmw.start854; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1855; GFX908-NEXT:    s_waitcnt vmcnt(0)856; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v2857; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc858; GFX908-NEXT:    s_waitcnt vmcnt(0)859; GFX908-NEXT:    buffer_wbinvl1860; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4861; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]862; GFX908-NEXT:    v_mov_b32_e32 v4, v3863; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]864; GFX908-NEXT:    s_cbranch_execnz .LBB3_1865; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end866; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]867; GFX908-NEXT:    s_setpc_b64 s[30:31]868;869; GFX8-LABEL: global_agent_atomic_fsub_noret_f32:870; GFX8:       ; %bb.0:871; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)872; GFX8-NEXT:    flat_load_dword v4, v[0:1]873; GFX8-NEXT:    s_mov_b64 s[4:5], 0874; GFX8-NEXT:  .LBB3_1: ; %atomicrmw.start875; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1876; GFX8-NEXT:    s_waitcnt vmcnt(0)877; GFX8-NEXT:    v_sub_f32_e32 v3, v4, v2878; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc879; GFX8-NEXT:    s_waitcnt vmcnt(0)880; GFX8-NEXT:    buffer_wbinvl1881; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4882; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]883; GFX8-NEXT:    v_mov_b32_e32 v4, v3884; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]885; GFX8-NEXT:    s_cbranch_execnz .LBB3_1886; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end887; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]888; GFX8-NEXT:    s_setpc_b64 s[30:31]889;890; GFX7-LABEL: global_agent_atomic_fsub_noret_f32:891; GFX7:       ; %bb.0:892; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)893; GFX7-NEXT:    s_mov_b32 s6, 0894; GFX7-NEXT:    s_mov_b32 s7, 0xf000895; GFX7-NEXT:    s_mov_b32 s4, s6896; GFX7-NEXT:    s_mov_b32 s5, s6897; GFX7-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr64898; GFX7-NEXT:    s_mov_b64 s[8:9], 0899; GFX7-NEXT:  .LBB3_1: ; %atomicrmw.start900; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=1901; GFX7-NEXT:    s_waitcnt vmcnt(0)902; GFX7-NEXT:    v_sub_f32_e32 v3, v4, v2903; GFX7-NEXT:    v_mov_b32_e32 v6, v4904; GFX7-NEXT:    v_mov_b32_e32 v5, v3905; GFX7-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 glc906; GFX7-NEXT:    s_waitcnt vmcnt(0)907; GFX7-NEXT:    buffer_wbinvl1908; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v4909; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]910; GFX7-NEXT:    v_mov_b32_e32 v4, v5911; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]912; GFX7-NEXT:    s_cbranch_execnz .LBB3_1913; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end914; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]915; GFX7-NEXT:    s_setpc_b64 s[30:31]916;917; GFX6-LABEL: global_agent_atomic_fsub_noret_f32:918; GFX6:       ; %bb.0:919; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)920; GFX6-NEXT:    s_mov_b32 s6, 0921; GFX6-NEXT:    s_mov_b32 s7, 0xf000922; GFX6-NEXT:    s_mov_b32 s4, s6923; GFX6-NEXT:    s_mov_b32 s5, s6924; GFX6-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr64925; GFX6-NEXT:    s_mov_b64 s[8:9], 0926; GFX6-NEXT:  .LBB3_1: ; %atomicrmw.start927; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=1928; GFX6-NEXT:    s_waitcnt vmcnt(0)929; GFX6-NEXT:    v_sub_f32_e32 v3, v4, v2930; GFX6-NEXT:    s_waitcnt expcnt(0)931; GFX6-NEXT:    v_mov_b32_e32 v6, v4932; GFX6-NEXT:    v_mov_b32_e32 v5, v3933; GFX6-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 glc934; GFX6-NEXT:    s_waitcnt vmcnt(0)935; GFX6-NEXT:    buffer_wbinvl1936; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v4937; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]938; GFX6-NEXT:    v_mov_b32_e32 v4, v5939; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]940; GFX6-NEXT:    s_cbranch_execnz .LBB3_1941; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end942; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]943; GFX6-NEXT:    s_waitcnt expcnt(0)944; GFX6-NEXT:    s_setpc_b64 s[30:31]945  %unused = atomicrmw fsub ptr addrspace(1) %ptr, float %val syncscope("agent") seq_cst946  ret void947}948 949define void @global_agent_atomic_fsub_noret_f32__offset12b_pos(ptr addrspace(1) %ptr, float %val) #0 {950; GFX12-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_pos:951; GFX12:       ; %bb.0:952; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0953; GFX12-NEXT:    s_wait_expcnt 0x0954; GFX12-NEXT:    s_wait_samplecnt 0x0955; GFX12-NEXT:    s_wait_bvhcnt 0x0956; GFX12-NEXT:    s_wait_kmcnt 0x0957; GFX12-NEXT:    global_load_b32 v4, v[0:1], off offset:2044958; GFX12-NEXT:    s_mov_b32 s0, 0959; GFX12-NEXT:  .LBB4_1: ; %atomicrmw.start960; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=1961; GFX12-NEXT:    s_wait_loadcnt 0x0962; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v2963; GFX12-NEXT:    s_wait_storecnt 0x0964; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV965; GFX12-NEXT:    s_wait_loadcnt 0x0966; GFX12-NEXT:    global_inv scope:SCOPE_DEV967; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4968; GFX12-NEXT:    v_mov_b32_e32 v4, v3969; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)970; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s0971; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)972; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0973; GFX12-NEXT:    s_cbranch_execnz .LBB4_1974; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end975; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s0976; GFX12-NEXT:    s_wait_loadcnt 0x0977; GFX12-NEXT:    s_setpc_b64 s[30:31]978;979; GFX942-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_pos:980; GFX942:       ; %bb.0:981; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)982; GFX942-NEXT:    global_load_dword v5, v[0:1], off offset:2044983; GFX942-NEXT:    s_mov_b64 s[0:1], 0984; GFX942-NEXT:  .LBB4_1: ; %atomicrmw.start985; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1986; GFX942-NEXT:    s_waitcnt vmcnt(0)987; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v2988; GFX942-NEXT:    buffer_wbl2 sc1989; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 sc0990; GFX942-NEXT:    s_waitcnt vmcnt(0)991; GFX942-NEXT:    buffer_inv sc1992; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v5993; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]994; GFX942-NEXT:    v_mov_b32_e32 v5, v3995; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]996; GFX942-NEXT:    s_cbranch_execnz .LBB4_1997; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end998; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]999; GFX942-NEXT:    s_setpc_b64 s[30:31]1000;1001; GFX11-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_pos:1002; GFX11:       ; %bb.0:1003; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1004; GFX11-NEXT:    global_load_b32 v4, v[0:1], off offset:20441005; GFX11-NEXT:    s_mov_b32 s0, 01006; GFX11-NEXT:  .LBB4_1: ; %atomicrmw.start1007; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=11008; GFX11-NEXT:    s_waitcnt vmcnt(0)1009; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v21010; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01011; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 glc1012; GFX11-NEXT:    s_waitcnt vmcnt(0)1013; GFX11-NEXT:    buffer_gl1_inv1014; GFX11-NEXT:    buffer_gl0_inv1015; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41016; GFX11-NEXT:    v_mov_b32_e32 v4, v31017; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s01018; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1019; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01020; GFX11-NEXT:    s_cbranch_execnz .LBB4_11021; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end1022; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s01023; GFX11-NEXT:    s_setpc_b64 s[30:31]1024;1025; GFX10-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_pos:1026; GFX10:       ; %bb.0:1027; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1028; GFX10-NEXT:    global_load_dword v4, v[0:1], off offset:20441029; GFX10-NEXT:    s_mov_b32 s4, 01030; GFX10-NEXT:  .LBB4_1: ; %atomicrmw.start1031; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=11032; GFX10-NEXT:    s_waitcnt vmcnt(0)1033; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v21034; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01035; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc1036; GFX10-NEXT:    s_waitcnt vmcnt(0)1037; GFX10-NEXT:    buffer_gl1_inv1038; GFX10-NEXT:    buffer_gl0_inv1039; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41040; GFX10-NEXT:    v_mov_b32_e32 v4, v31041; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s41042; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s41043; GFX10-NEXT:    s_cbranch_execnz .LBB4_11044; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end1045; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s41046; GFX10-NEXT:    s_setpc_b64 s[30:31]1047;1048; GFX90A-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_pos:1049; GFX90A:       ; %bb.0:1050; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1051; GFX90A-NEXT:    global_load_dword v5, v[0:1], off offset:20441052; GFX90A-NEXT:    s_mov_b64 s[4:5], 01053; GFX90A-NEXT:  .LBB4_1: ; %atomicrmw.start1054; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11055; GFX90A-NEXT:    s_waitcnt vmcnt(0)1056; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v21057; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 glc1058; GFX90A-NEXT:    s_waitcnt vmcnt(0)1059; GFX90A-NEXT:    buffer_wbinvl11060; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51061; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1062; GFX90A-NEXT:    v_mov_b32_e32 v5, v31063; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1064; GFX90A-NEXT:    s_cbranch_execnz .LBB4_11065; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1066; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1067; GFX90A-NEXT:    s_setpc_b64 s[30:31]1068;1069; GFX908-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_pos:1070; GFX908:       ; %bb.0:1071; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1072; GFX908-NEXT:    global_load_dword v4, v[0:1], off offset:20441073; GFX908-NEXT:    s_mov_b64 s[4:5], 01074; GFX908-NEXT:  .LBB4_1: ; %atomicrmw.start1075; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11076; GFX908-NEXT:    s_waitcnt vmcnt(0)1077; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v21078; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc1079; GFX908-NEXT:    s_waitcnt vmcnt(0)1080; GFX908-NEXT:    buffer_wbinvl11081; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41082; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1083; GFX908-NEXT:    v_mov_b32_e32 v4, v31084; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1085; GFX908-NEXT:    s_cbranch_execnz .LBB4_11086; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1087; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1088; GFX908-NEXT:    s_setpc_b64 s[30:31]1089;1090; GFX8-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_pos:1091; GFX8:       ; %bb.0:1092; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1093; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v01094; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc1095; GFX8-NEXT:    flat_load_dword v4, v[0:1]1096; GFX8-NEXT:    s_mov_b64 s[4:5], 01097; GFX8-NEXT:  .LBB4_1: ; %atomicrmw.start1098; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11099; GFX8-NEXT:    s_waitcnt vmcnt(0)1100; GFX8-NEXT:    v_sub_f32_e32 v3, v4, v21101; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1102; GFX8-NEXT:    s_waitcnt vmcnt(0)1103; GFX8-NEXT:    buffer_wbinvl11104; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41105; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1106; GFX8-NEXT:    v_mov_b32_e32 v4, v31107; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1108; GFX8-NEXT:    s_cbranch_execnz .LBB4_11109; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1110; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1111; GFX8-NEXT:    s_setpc_b64 s[30:31]1112;1113; GFX7-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_pos:1114; GFX7:       ; %bb.0:1115; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1116; GFX7-NEXT:    s_mov_b32 s6, 01117; GFX7-NEXT:    s_mov_b32 s7, 0xf0001118; GFX7-NEXT:    s_mov_b32 s4, s61119; GFX7-NEXT:    s_mov_b32 s5, s61120; GFX7-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr64 offset:20441121; GFX7-NEXT:    s_mov_b64 s[8:9], 01122; GFX7-NEXT:  .LBB4_1: ; %atomicrmw.start1123; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=11124; GFX7-NEXT:    s_waitcnt vmcnt(0)1125; GFX7-NEXT:    v_sub_f32_e32 v3, v4, v21126; GFX7-NEXT:    v_mov_b32_e32 v6, v41127; GFX7-NEXT:    v_mov_b32_e32 v5, v31128; GFX7-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 offset:2044 glc1129; GFX7-NEXT:    s_waitcnt vmcnt(0)1130; GFX7-NEXT:    buffer_wbinvl11131; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v41132; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]1133; GFX7-NEXT:    v_mov_b32_e32 v4, v51134; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]1135; GFX7-NEXT:    s_cbranch_execnz .LBB4_11136; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end1137; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]1138; GFX7-NEXT:    s_setpc_b64 s[30:31]1139;1140; GFX6-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_pos:1141; GFX6:       ; %bb.0:1142; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1143; GFX6-NEXT:    s_mov_b32 s6, 01144; GFX6-NEXT:    s_mov_b32 s7, 0xf0001145; GFX6-NEXT:    s_mov_b32 s4, s61146; GFX6-NEXT:    s_mov_b32 s5, s61147; GFX6-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr64 offset:20441148; GFX6-NEXT:    s_mov_b64 s[8:9], 01149; GFX6-NEXT:  .LBB4_1: ; %atomicrmw.start1150; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=11151; GFX6-NEXT:    s_waitcnt vmcnt(0)1152; GFX6-NEXT:    v_sub_f32_e32 v3, v4, v21153; GFX6-NEXT:    s_waitcnt expcnt(0)1154; GFX6-NEXT:    v_mov_b32_e32 v6, v41155; GFX6-NEXT:    v_mov_b32_e32 v5, v31156; GFX6-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 offset:2044 glc1157; GFX6-NEXT:    s_waitcnt vmcnt(0)1158; GFX6-NEXT:    buffer_wbinvl11159; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v41160; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]1161; GFX6-NEXT:    v_mov_b32_e32 v4, v51162; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]1163; GFX6-NEXT:    s_cbranch_execnz .LBB4_11164; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end1165; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]1166; GFX6-NEXT:    s_waitcnt expcnt(0)1167; GFX6-NEXT:    s_setpc_b64 s[30:31]1168  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 5111169  %unused = atomicrmw fsub ptr addrspace(1) %gep, float %val syncscope("agent") seq_cst1170  ret void1171}1172 1173define void @global_agent_atomic_fsub_noret_f32__offset12b_neg(ptr addrspace(1) %ptr, float %val) #0 {1174; GFX12-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_neg:1175; GFX12:       ; %bb.0:1176; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01177; GFX12-NEXT:    s_wait_expcnt 0x01178; GFX12-NEXT:    s_wait_samplecnt 0x01179; GFX12-NEXT:    s_wait_bvhcnt 0x01180; GFX12-NEXT:    s_wait_kmcnt 0x01181; GFX12-NEXT:    global_load_b32 v4, v[0:1], off offset:-20481182; GFX12-NEXT:    s_mov_b32 s0, 01183; GFX12-NEXT:  .LBB5_1: ; %atomicrmw.start1184; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=11185; GFX12-NEXT:    s_wait_loadcnt 0x01186; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v21187; GFX12-NEXT:    s_wait_storecnt 0x01188; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV1189; GFX12-NEXT:    s_wait_loadcnt 0x01190; GFX12-NEXT:    global_inv scope:SCOPE_DEV1191; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41192; GFX12-NEXT:    v_mov_b32_e32 v4, v31193; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1194; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s01195; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1196; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01197; GFX12-NEXT:    s_cbranch_execnz .LBB5_11198; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end1199; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s01200; GFX12-NEXT:    s_wait_loadcnt 0x01201; GFX12-NEXT:    s_setpc_b64 s[30:31]1202;1203; GFX942-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_neg:1204; GFX942:       ; %bb.0:1205; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1206; GFX942-NEXT:    global_load_dword v5, v[0:1], off offset:-20481207; GFX942-NEXT:    s_mov_b64 s[0:1], 01208; GFX942-NEXT:  .LBB5_1: ; %atomicrmw.start1209; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11210; GFX942-NEXT:    s_waitcnt vmcnt(0)1211; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v21212; GFX942-NEXT:    buffer_wbl2 sc11213; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:-2048 sc01214; GFX942-NEXT:    s_waitcnt vmcnt(0)1215; GFX942-NEXT:    buffer_inv sc11216; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51217; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1218; GFX942-NEXT:    v_mov_b32_e32 v5, v31219; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1220; GFX942-NEXT:    s_cbranch_execnz .LBB5_11221; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1222; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1223; GFX942-NEXT:    s_setpc_b64 s[30:31]1224;1225; GFX11-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_neg:1226; GFX11:       ; %bb.0:1227; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1228; GFX11-NEXT:    global_load_b32 v4, v[0:1], off offset:-20481229; GFX11-NEXT:    s_mov_b32 s0, 01230; GFX11-NEXT:  .LBB5_1: ; %atomicrmw.start1231; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=11232; GFX11-NEXT:    s_waitcnt vmcnt(0)1233; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v21234; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01235; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:-2048 glc1236; GFX11-NEXT:    s_waitcnt vmcnt(0)1237; GFX11-NEXT:    buffer_gl1_inv1238; GFX11-NEXT:    buffer_gl0_inv1239; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41240; GFX11-NEXT:    v_mov_b32_e32 v4, v31241; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s01242; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1243; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01244; GFX11-NEXT:    s_cbranch_execnz .LBB5_11245; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end1246; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s01247; GFX11-NEXT:    s_setpc_b64 s[30:31]1248;1249; GFX10-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_neg:1250; GFX10:       ; %bb.0:1251; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1252; GFX10-NEXT:    global_load_dword v4, v[0:1], off offset:-20481253; GFX10-NEXT:    s_mov_b32 s4, 01254; GFX10-NEXT:  .LBB5_1: ; %atomicrmw.start1255; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=11256; GFX10-NEXT:    s_waitcnt vmcnt(0)1257; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v21258; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01259; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:-2048 glc1260; GFX10-NEXT:    s_waitcnt vmcnt(0)1261; GFX10-NEXT:    buffer_gl1_inv1262; GFX10-NEXT:    buffer_gl0_inv1263; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41264; GFX10-NEXT:    v_mov_b32_e32 v4, v31265; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s41266; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s41267; GFX10-NEXT:    s_cbranch_execnz .LBB5_11268; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end1269; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s41270; GFX10-NEXT:    s_setpc_b64 s[30:31]1271;1272; GFX90A-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_neg:1273; GFX90A:       ; %bb.0:1274; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1275; GFX90A-NEXT:    global_load_dword v5, v[0:1], off offset:-20481276; GFX90A-NEXT:    s_mov_b64 s[4:5], 01277; GFX90A-NEXT:  .LBB5_1: ; %atomicrmw.start1278; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11279; GFX90A-NEXT:    s_waitcnt vmcnt(0)1280; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v21281; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:-2048 glc1282; GFX90A-NEXT:    s_waitcnt vmcnt(0)1283; GFX90A-NEXT:    buffer_wbinvl11284; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51285; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1286; GFX90A-NEXT:    v_mov_b32_e32 v5, v31287; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1288; GFX90A-NEXT:    s_cbranch_execnz .LBB5_11289; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1290; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1291; GFX90A-NEXT:    s_setpc_b64 s[30:31]1292;1293; GFX908-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_neg:1294; GFX908:       ; %bb.0:1295; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1296; GFX908-NEXT:    global_load_dword v4, v[0:1], off offset:-20481297; GFX908-NEXT:    s_mov_b64 s[4:5], 01298; GFX908-NEXT:  .LBB5_1: ; %atomicrmw.start1299; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11300; GFX908-NEXT:    s_waitcnt vmcnt(0)1301; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v21302; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:-2048 glc1303; GFX908-NEXT:    s_waitcnt vmcnt(0)1304; GFX908-NEXT:    buffer_wbinvl11305; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41306; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1307; GFX908-NEXT:    v_mov_b32_e32 v4, v31308; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1309; GFX908-NEXT:    s_cbranch_execnz .LBB5_11310; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1311; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1312; GFX908-NEXT:    s_setpc_b64 s[30:31]1313;1314; GFX8-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_neg:1315; GFX8:       ; %bb.0:1316; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1317; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffff800, v01318; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc1319; GFX8-NEXT:    flat_load_dword v4, v[0:1]1320; GFX8-NEXT:    s_mov_b64 s[4:5], 01321; GFX8-NEXT:  .LBB5_1: ; %atomicrmw.start1322; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11323; GFX8-NEXT:    s_waitcnt vmcnt(0)1324; GFX8-NEXT:    v_sub_f32_e32 v3, v4, v21325; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1326; GFX8-NEXT:    s_waitcnt vmcnt(0)1327; GFX8-NEXT:    buffer_wbinvl11328; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41329; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1330; GFX8-NEXT:    v_mov_b32_e32 v4, v31331; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1332; GFX8-NEXT:    s_cbranch_execnz .LBB5_11333; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1334; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1335; GFX8-NEXT:    s_setpc_b64 s[30:31]1336;1337; GFX7-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_neg:1338; GFX7:       ; %bb.0:1339; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1340; GFX7-NEXT:    s_movk_i32 s4, 0xf8001341; GFX7-NEXT:    s_mov_b32 s5, -11342; GFX7-NEXT:    s_mov_b32 s7, 0xf0001343; GFX7-NEXT:    s_mov_b32 s6, 01344; GFX7-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr641345; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v01346; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc1347; GFX7-NEXT:    s_mov_b64 s[8:9], 01348; GFX7-NEXT:    s_mov_b32 s4, s61349; GFX7-NEXT:    s_mov_b32 s5, s61350; GFX7-NEXT:  .LBB5_1: ; %atomicrmw.start1351; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=11352; GFX7-NEXT:    s_waitcnt vmcnt(0)1353; GFX7-NEXT:    v_sub_f32_e32 v3, v4, v21354; GFX7-NEXT:    v_mov_b32_e32 v6, v41355; GFX7-NEXT:    v_mov_b32_e32 v5, v31356; GFX7-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 glc1357; GFX7-NEXT:    s_waitcnt vmcnt(0)1358; GFX7-NEXT:    buffer_wbinvl11359; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v41360; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]1361; GFX7-NEXT:    v_mov_b32_e32 v4, v51362; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]1363; GFX7-NEXT:    s_cbranch_execnz .LBB5_11364; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end1365; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]1366; GFX7-NEXT:    s_setpc_b64 s[30:31]1367;1368; GFX6-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_neg:1369; GFX6:       ; %bb.0:1370; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1371; GFX6-NEXT:    s_movk_i32 s4, 0xf8001372; GFX6-NEXT:    s_mov_b32 s5, -11373; GFX6-NEXT:    s_mov_b32 s7, 0xf0001374; GFX6-NEXT:    s_mov_b32 s6, 01375; GFX6-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr641376; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v01377; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc1378; GFX6-NEXT:    s_mov_b64 s[8:9], 01379; GFX6-NEXT:    s_mov_b32 s4, s61380; GFX6-NEXT:    s_mov_b32 s5, s61381; GFX6-NEXT:  .LBB5_1: ; %atomicrmw.start1382; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=11383; GFX6-NEXT:    s_waitcnt vmcnt(0)1384; GFX6-NEXT:    v_sub_f32_e32 v3, v4, v21385; GFX6-NEXT:    s_waitcnt expcnt(0)1386; GFX6-NEXT:    v_mov_b32_e32 v6, v41387; GFX6-NEXT:    v_mov_b32_e32 v5, v31388; GFX6-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 glc1389; GFX6-NEXT:    s_waitcnt vmcnt(0)1390; GFX6-NEXT:    buffer_wbinvl11391; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v41392; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]1393; GFX6-NEXT:    v_mov_b32_e32 v4, v51394; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]1395; GFX6-NEXT:    s_cbranch_execnz .LBB5_11396; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end1397; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]1398; GFX6-NEXT:    s_waitcnt expcnt(0)1399; GFX6-NEXT:    s_setpc_b64 s[30:31]1400  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 -5121401  %unused = atomicrmw fsub ptr addrspace(1) %gep, float %val syncscope("agent") seq_cst1402  ret void1403}1404 1405define float @global_system_atomic_fsub_ret_f32__offset12b_pos(ptr addrspace(1) %ptr, float %val) #0 {1406; GFX12-LABEL: global_system_atomic_fsub_ret_f32__offset12b_pos:1407; GFX12:       ; %bb.0:1408; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01409; GFX12-NEXT:    s_wait_expcnt 0x01410; GFX12-NEXT:    s_wait_samplecnt 0x01411; GFX12-NEXT:    s_wait_bvhcnt 0x01412; GFX12-NEXT:    s_wait_kmcnt 0x01413; GFX12-NEXT:    global_load_b32 v3, v[0:1], off offset:20441414; GFX12-NEXT:    s_mov_b32 s0, 01415; GFX12-NEXT:  .LBB6_1: ; %atomicrmw.start1416; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=11417; GFX12-NEXT:    s_wait_loadcnt 0x01418; GFX12-NEXT:    v_mov_b32_e32 v4, v31419; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)1420; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v21421; GFX12-NEXT:    global_wb scope:SCOPE_SYS1422; GFX12-NEXT:    s_wait_storecnt 0x01423; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS1424; GFX12-NEXT:    s_wait_loadcnt 0x01425; GFX12-NEXT:    global_inv scope:SCOPE_SYS1426; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41427; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1428; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s01429; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1430; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01431; GFX12-NEXT:    s_cbranch_execnz .LBB6_11432; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end1433; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s01434; GFX12-NEXT:    v_mov_b32_e32 v0, v31435; GFX12-NEXT:    s_wait_loadcnt 0x01436; GFX12-NEXT:    s_setpc_b64 s[30:31]1437;1438; GFX942-LABEL: global_system_atomic_fsub_ret_f32__offset12b_pos:1439; GFX942:       ; %bb.0:1440; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1441; GFX942-NEXT:    global_load_dword v5, v[0:1], off offset:20441442; GFX942-NEXT:    s_mov_b64 s[0:1], 01443; GFX942-NEXT:  .LBB6_1: ; %atomicrmw.start1444; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11445; GFX942-NEXT:    s_waitcnt vmcnt(0)1446; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v21447; GFX942-NEXT:    buffer_wbl2 sc0 sc11448; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 sc0 sc11449; GFX942-NEXT:    s_waitcnt vmcnt(0)1450; GFX942-NEXT:    buffer_inv sc0 sc11451; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51452; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1453; GFX942-NEXT:    v_mov_b32_e32 v5, v31454; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1455; GFX942-NEXT:    s_cbranch_execnz .LBB6_11456; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1457; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1458; GFX942-NEXT:    v_mov_b32_e32 v0, v31459; GFX942-NEXT:    s_setpc_b64 s[30:31]1460;1461; GFX11-LABEL: global_system_atomic_fsub_ret_f32__offset12b_pos:1462; GFX11:       ; %bb.0:1463; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1464; GFX11-NEXT:    global_load_b32 v3, v[0:1], off offset:20441465; GFX11-NEXT:    s_mov_b32 s0, 01466; GFX11-NEXT:  .LBB6_1: ; %atomicrmw.start1467; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=11468; GFX11-NEXT:    s_waitcnt vmcnt(0)1469; GFX11-NEXT:    v_mov_b32_e32 v4, v31470; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1471; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v21472; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01473; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 glc1474; GFX11-NEXT:    s_waitcnt vmcnt(0)1475; GFX11-NEXT:    buffer_gl1_inv1476; GFX11-NEXT:    buffer_gl0_inv1477; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41478; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s01479; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1480; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01481; GFX11-NEXT:    s_cbranch_execnz .LBB6_11482; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end1483; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s01484; GFX11-NEXT:    v_mov_b32_e32 v0, v31485; GFX11-NEXT:    s_setpc_b64 s[30:31]1486;1487; GFX10-LABEL: global_system_atomic_fsub_ret_f32__offset12b_pos:1488; GFX10:       ; %bb.0:1489; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1490; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:20441491; GFX10-NEXT:    s_mov_b32 s4, 01492; GFX10-NEXT:  .LBB6_1: ; %atomicrmw.start1493; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=11494; GFX10-NEXT:    s_waitcnt vmcnt(0)1495; GFX10-NEXT:    v_mov_b32_e32 v4, v31496; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v21497; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01498; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc1499; GFX10-NEXT:    s_waitcnt vmcnt(0)1500; GFX10-NEXT:    buffer_gl1_inv1501; GFX10-NEXT:    buffer_gl0_inv1502; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41503; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s41504; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s41505; GFX10-NEXT:    s_cbranch_execnz .LBB6_11506; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end1507; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s41508; GFX10-NEXT:    v_mov_b32_e32 v0, v31509; GFX10-NEXT:    s_setpc_b64 s[30:31]1510;1511; GFX90A-LABEL: global_system_atomic_fsub_ret_f32__offset12b_pos:1512; GFX90A:       ; %bb.0:1513; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1514; GFX90A-NEXT:    global_load_dword v5, v[0:1], off offset:20441515; GFX90A-NEXT:    s_mov_b64 s[4:5], 01516; GFX90A-NEXT:  .LBB6_1: ; %atomicrmw.start1517; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11518; GFX90A-NEXT:    s_waitcnt vmcnt(0)1519; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v21520; GFX90A-NEXT:    buffer_wbl21521; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 glc1522; GFX90A-NEXT:    s_waitcnt vmcnt(0)1523; GFX90A-NEXT:    buffer_invl21524; GFX90A-NEXT:    buffer_wbinvl11525; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51526; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1527; GFX90A-NEXT:    v_mov_b32_e32 v5, v31528; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1529; GFX90A-NEXT:    s_cbranch_execnz .LBB6_11530; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1531; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1532; GFX90A-NEXT:    v_mov_b32_e32 v0, v31533; GFX90A-NEXT:    s_setpc_b64 s[30:31]1534;1535; GFX908-LABEL: global_system_atomic_fsub_ret_f32__offset12b_pos:1536; GFX908:       ; %bb.0:1537; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1538; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:20441539; GFX908-NEXT:    s_mov_b64 s[4:5], 01540; GFX908-NEXT:  .LBB6_1: ; %atomicrmw.start1541; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11542; GFX908-NEXT:    s_waitcnt vmcnt(0)1543; GFX908-NEXT:    v_mov_b32_e32 v4, v31544; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v21545; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc1546; GFX908-NEXT:    s_waitcnt vmcnt(0)1547; GFX908-NEXT:    buffer_wbinvl11548; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41549; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1550; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1551; GFX908-NEXT:    s_cbranch_execnz .LBB6_11552; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1553; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1554; GFX908-NEXT:    v_mov_b32_e32 v0, v31555; GFX908-NEXT:    s_setpc_b64 s[30:31]1556;1557; GFX8-LABEL: global_system_atomic_fsub_ret_f32__offset12b_pos:1558; GFX8:       ; %bb.0:1559; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1560; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v01561; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc1562; GFX8-NEXT:    flat_load_dword v0, v[3:4]1563; GFX8-NEXT:    s_mov_b64 s[4:5], 01564; GFX8-NEXT:  .LBB6_1: ; %atomicrmw.start1565; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11566; GFX8-NEXT:    s_waitcnt vmcnt(0)1567; GFX8-NEXT:    v_mov_b32_e32 v1, v01568; GFX8-NEXT:    v_sub_f32_e32 v0, v1, v21569; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc1570; GFX8-NEXT:    s_waitcnt vmcnt(0)1571; GFX8-NEXT:    buffer_wbinvl11572; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v11573; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1574; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1575; GFX8-NEXT:    s_cbranch_execnz .LBB6_11576; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1577; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1578; GFX8-NEXT:    s_setpc_b64 s[30:31]1579;1580; GFX7-LABEL: global_system_atomic_fsub_ret_f32__offset12b_pos:1581; GFX7:       ; %bb.0:1582; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1583; GFX7-NEXT:    s_mov_b32 s6, 01584; GFX7-NEXT:    s_mov_b32 s7, 0xf0001585; GFX7-NEXT:    s_mov_b32 s4, s61586; GFX7-NEXT:    s_mov_b32 s5, s61587; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:20441588; GFX7-NEXT:    s_mov_b64 s[8:9], 01589; GFX7-NEXT:  .LBB6_1: ; %atomicrmw.start1590; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=11591; GFX7-NEXT:    s_waitcnt vmcnt(0)1592; GFX7-NEXT:    v_mov_b32_e32 v5, v31593; GFX7-NEXT:    v_sub_f32_e32 v4, v5, v21594; GFX7-NEXT:    v_mov_b32_e32 v3, v41595; GFX7-NEXT:    v_mov_b32_e32 v4, v51596; GFX7-NEXT:    buffer_atomic_cmpswap v[3:4], v[0:1], s[4:7], 0 addr64 offset:2044 glc1597; GFX7-NEXT:    s_waitcnt vmcnt(0)1598; GFX7-NEXT:    buffer_wbinvl11599; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51600; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]1601; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]1602; GFX7-NEXT:    s_cbranch_execnz .LBB6_11603; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end1604; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]1605; GFX7-NEXT:    v_mov_b32_e32 v0, v31606; GFX7-NEXT:    s_setpc_b64 s[30:31]1607;1608; GFX6-LABEL: global_system_atomic_fsub_ret_f32__offset12b_pos:1609; GFX6:       ; %bb.0:1610; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1611; GFX6-NEXT:    s_mov_b32 s6, 01612; GFX6-NEXT:    s_mov_b32 s7, 0xf0001613; GFX6-NEXT:    s_mov_b32 s4, s61614; GFX6-NEXT:    s_mov_b32 s5, s61615; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:20441616; GFX6-NEXT:    s_mov_b64 s[8:9], 01617; GFX6-NEXT:  .LBB6_1: ; %atomicrmw.start1618; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=11619; GFX6-NEXT:    s_waitcnt vmcnt(0)1620; GFX6-NEXT:    v_mov_b32_e32 v5, v31621; GFX6-NEXT:    s_waitcnt expcnt(0)1622; GFX6-NEXT:    v_sub_f32_e32 v4, v5, v21623; GFX6-NEXT:    v_mov_b32_e32 v3, v41624; GFX6-NEXT:    v_mov_b32_e32 v4, v51625; GFX6-NEXT:    buffer_atomic_cmpswap v[3:4], v[0:1], s[4:7], 0 addr64 offset:2044 glc1626; GFX6-NEXT:    s_waitcnt vmcnt(0)1627; GFX6-NEXT:    buffer_wbinvl11628; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51629; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]1630; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]1631; GFX6-NEXT:    s_cbranch_execnz .LBB6_11632; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end1633; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]1634; GFX6-NEXT:    v_mov_b32_e32 v0, v31635; GFX6-NEXT:    s_waitcnt expcnt(0)1636; GFX6-NEXT:    s_setpc_b64 s[30:31]1637  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 5111638  %result = atomicrmw fsub ptr addrspace(1) %gep, float %val seq_cst1639  ret float %result1640}1641 1642define void @global_system_atomic_fsub_noret_f32__offset12b_pos(ptr addrspace(1) %ptr, float %val) #0 {1643; GFX12-LABEL: global_system_atomic_fsub_noret_f32__offset12b_pos:1644; GFX12:       ; %bb.0:1645; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01646; GFX12-NEXT:    s_wait_expcnt 0x01647; GFX12-NEXT:    s_wait_samplecnt 0x01648; GFX12-NEXT:    s_wait_bvhcnt 0x01649; GFX12-NEXT:    s_wait_kmcnt 0x01650; GFX12-NEXT:    global_load_b32 v4, v[0:1], off offset:20441651; GFX12-NEXT:    s_mov_b32 s0, 01652; GFX12-NEXT:  .LBB7_1: ; %atomicrmw.start1653; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=11654; GFX12-NEXT:    s_wait_loadcnt 0x01655; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v21656; GFX12-NEXT:    global_wb scope:SCOPE_SYS1657; GFX12-NEXT:    s_wait_storecnt 0x01658; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS1659; GFX12-NEXT:    s_wait_loadcnt 0x01660; GFX12-NEXT:    global_inv scope:SCOPE_SYS1661; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41662; GFX12-NEXT:    v_mov_b32_e32 v4, v31663; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1664; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s01665; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1666; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01667; GFX12-NEXT:    s_cbranch_execnz .LBB7_11668; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end1669; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s01670; GFX12-NEXT:    s_wait_loadcnt 0x01671; GFX12-NEXT:    s_setpc_b64 s[30:31]1672;1673; GFX942-LABEL: global_system_atomic_fsub_noret_f32__offset12b_pos:1674; GFX942:       ; %bb.0:1675; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1676; GFX942-NEXT:    global_load_dword v5, v[0:1], off offset:20441677; GFX942-NEXT:    s_mov_b64 s[0:1], 01678; GFX942-NEXT:  .LBB7_1: ; %atomicrmw.start1679; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11680; GFX942-NEXT:    s_waitcnt vmcnt(0)1681; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v21682; GFX942-NEXT:    buffer_wbl2 sc0 sc11683; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 sc0 sc11684; GFX942-NEXT:    s_waitcnt vmcnt(0)1685; GFX942-NEXT:    buffer_inv sc0 sc11686; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51687; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1688; GFX942-NEXT:    v_mov_b32_e32 v5, v31689; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1690; GFX942-NEXT:    s_cbranch_execnz .LBB7_11691; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1692; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1693; GFX942-NEXT:    s_setpc_b64 s[30:31]1694;1695; GFX11-LABEL: global_system_atomic_fsub_noret_f32__offset12b_pos:1696; GFX11:       ; %bb.0:1697; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1698; GFX11-NEXT:    global_load_b32 v4, v[0:1], off offset:20441699; GFX11-NEXT:    s_mov_b32 s0, 01700; GFX11-NEXT:  .LBB7_1: ; %atomicrmw.start1701; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=11702; GFX11-NEXT:    s_waitcnt vmcnt(0)1703; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v21704; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01705; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 glc1706; GFX11-NEXT:    s_waitcnt vmcnt(0)1707; GFX11-NEXT:    buffer_gl1_inv1708; GFX11-NEXT:    buffer_gl0_inv1709; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41710; GFX11-NEXT:    v_mov_b32_e32 v4, v31711; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s01712; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1713; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01714; GFX11-NEXT:    s_cbranch_execnz .LBB7_11715; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end1716; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s01717; GFX11-NEXT:    s_setpc_b64 s[30:31]1718;1719; GFX10-LABEL: global_system_atomic_fsub_noret_f32__offset12b_pos:1720; GFX10:       ; %bb.0:1721; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1722; GFX10-NEXT:    global_load_dword v4, v[0:1], off offset:20441723; GFX10-NEXT:    s_mov_b32 s4, 01724; GFX10-NEXT:  .LBB7_1: ; %atomicrmw.start1725; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=11726; GFX10-NEXT:    s_waitcnt vmcnt(0)1727; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v21728; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01729; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc1730; GFX10-NEXT:    s_waitcnt vmcnt(0)1731; GFX10-NEXT:    buffer_gl1_inv1732; GFX10-NEXT:    buffer_gl0_inv1733; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41734; GFX10-NEXT:    v_mov_b32_e32 v4, v31735; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s41736; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s41737; GFX10-NEXT:    s_cbranch_execnz .LBB7_11738; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end1739; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s41740; GFX10-NEXT:    s_setpc_b64 s[30:31]1741;1742; GFX90A-LABEL: global_system_atomic_fsub_noret_f32__offset12b_pos:1743; GFX90A:       ; %bb.0:1744; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1745; GFX90A-NEXT:    global_load_dword v5, v[0:1], off offset:20441746; GFX90A-NEXT:    s_mov_b64 s[4:5], 01747; GFX90A-NEXT:  .LBB7_1: ; %atomicrmw.start1748; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11749; GFX90A-NEXT:    s_waitcnt vmcnt(0)1750; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v21751; GFX90A-NEXT:    buffer_wbl21752; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 glc1753; GFX90A-NEXT:    s_waitcnt vmcnt(0)1754; GFX90A-NEXT:    buffer_invl21755; GFX90A-NEXT:    buffer_wbinvl11756; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51757; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1758; GFX90A-NEXT:    v_mov_b32_e32 v5, v31759; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1760; GFX90A-NEXT:    s_cbranch_execnz .LBB7_11761; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1762; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1763; GFX90A-NEXT:    s_setpc_b64 s[30:31]1764;1765; GFX908-LABEL: global_system_atomic_fsub_noret_f32__offset12b_pos:1766; GFX908:       ; %bb.0:1767; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1768; GFX908-NEXT:    global_load_dword v4, v[0:1], off offset:20441769; GFX908-NEXT:    s_mov_b64 s[4:5], 01770; GFX908-NEXT:  .LBB7_1: ; %atomicrmw.start1771; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11772; GFX908-NEXT:    s_waitcnt vmcnt(0)1773; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v21774; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc1775; GFX908-NEXT:    s_waitcnt vmcnt(0)1776; GFX908-NEXT:    buffer_wbinvl11777; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41778; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1779; GFX908-NEXT:    v_mov_b32_e32 v4, v31780; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1781; GFX908-NEXT:    s_cbranch_execnz .LBB7_11782; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1783; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1784; GFX908-NEXT:    s_setpc_b64 s[30:31]1785;1786; GFX8-LABEL: global_system_atomic_fsub_noret_f32__offset12b_pos:1787; GFX8:       ; %bb.0:1788; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1789; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v01790; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc1791; GFX8-NEXT:    flat_load_dword v4, v[0:1]1792; GFX8-NEXT:    s_mov_b64 s[4:5], 01793; GFX8-NEXT:  .LBB7_1: ; %atomicrmw.start1794; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11795; GFX8-NEXT:    s_waitcnt vmcnt(0)1796; GFX8-NEXT:    v_sub_f32_e32 v3, v4, v21797; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1798; GFX8-NEXT:    s_waitcnt vmcnt(0)1799; GFX8-NEXT:    buffer_wbinvl11800; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41801; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1802; GFX8-NEXT:    v_mov_b32_e32 v4, v31803; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1804; GFX8-NEXT:    s_cbranch_execnz .LBB7_11805; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1806; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1807; GFX8-NEXT:    s_setpc_b64 s[30:31]1808;1809; GFX7-LABEL: global_system_atomic_fsub_noret_f32__offset12b_pos:1810; GFX7:       ; %bb.0:1811; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1812; GFX7-NEXT:    s_mov_b32 s6, 01813; GFX7-NEXT:    s_mov_b32 s7, 0xf0001814; GFX7-NEXT:    s_mov_b32 s4, s61815; GFX7-NEXT:    s_mov_b32 s5, s61816; GFX7-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr64 offset:20441817; GFX7-NEXT:    s_mov_b64 s[8:9], 01818; GFX7-NEXT:  .LBB7_1: ; %atomicrmw.start1819; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=11820; GFX7-NEXT:    s_waitcnt vmcnt(0)1821; GFX7-NEXT:    v_sub_f32_e32 v3, v4, v21822; GFX7-NEXT:    v_mov_b32_e32 v6, v41823; GFX7-NEXT:    v_mov_b32_e32 v5, v31824; GFX7-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 offset:2044 glc1825; GFX7-NEXT:    s_waitcnt vmcnt(0)1826; GFX7-NEXT:    buffer_wbinvl11827; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v41828; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]1829; GFX7-NEXT:    v_mov_b32_e32 v4, v51830; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]1831; GFX7-NEXT:    s_cbranch_execnz .LBB7_11832; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end1833; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]1834; GFX7-NEXT:    s_setpc_b64 s[30:31]1835;1836; GFX6-LABEL: global_system_atomic_fsub_noret_f32__offset12b_pos:1837; GFX6:       ; %bb.0:1838; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1839; GFX6-NEXT:    s_mov_b32 s6, 01840; GFX6-NEXT:    s_mov_b32 s7, 0xf0001841; GFX6-NEXT:    s_mov_b32 s4, s61842; GFX6-NEXT:    s_mov_b32 s5, s61843; GFX6-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr64 offset:20441844; GFX6-NEXT:    s_mov_b64 s[8:9], 01845; GFX6-NEXT:  .LBB7_1: ; %atomicrmw.start1846; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=11847; GFX6-NEXT:    s_waitcnt vmcnt(0)1848; GFX6-NEXT:    v_sub_f32_e32 v3, v4, v21849; GFX6-NEXT:    s_waitcnt expcnt(0)1850; GFX6-NEXT:    v_mov_b32_e32 v6, v41851; GFX6-NEXT:    v_mov_b32_e32 v5, v31852; GFX6-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 offset:2044 glc1853; GFX6-NEXT:    s_waitcnt vmcnt(0)1854; GFX6-NEXT:    buffer_wbinvl11855; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v41856; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]1857; GFX6-NEXT:    v_mov_b32_e32 v4, v51858; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]1859; GFX6-NEXT:    s_cbranch_execnz .LBB7_11860; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end1861; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]1862; GFX6-NEXT:    s_waitcnt expcnt(0)1863; GFX6-NEXT:    s_setpc_b64 s[30:31]1864  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 5111865  %unused = atomicrmw fsub ptr addrspace(1) %gep, float %val seq_cst1866  ret void1867}1868 1869; --------------------------------------------------------------------1870; float with ftz/daz1871; --------------------------------------------------------------------1872 1873define float @global_agent_atomic_fsub_ret_f32__ftz(ptr addrspace(1) %ptr, float %val) #1 {1874; GFX12-LABEL: global_agent_atomic_fsub_ret_f32__ftz:1875; GFX12:       ; %bb.0:1876; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01877; GFX12-NEXT:    s_wait_expcnt 0x01878; GFX12-NEXT:    s_wait_samplecnt 0x01879; GFX12-NEXT:    s_wait_bvhcnt 0x01880; GFX12-NEXT:    s_wait_kmcnt 0x01881; GFX12-NEXT:    global_load_b32 v3, v[0:1], off1882; GFX12-NEXT:    s_mov_b32 s0, 01883; GFX12-NEXT:  .LBB8_1: ; %atomicrmw.start1884; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=11885; GFX12-NEXT:    s_wait_loadcnt 0x01886; GFX12-NEXT:    v_mov_b32_e32 v4, v31887; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)1888; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v21889; GFX12-NEXT:    s_wait_storecnt 0x01890; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV1891; GFX12-NEXT:    s_wait_loadcnt 0x01892; GFX12-NEXT:    global_inv scope:SCOPE_DEV1893; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41894; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1895; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s01896; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1897; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01898; GFX12-NEXT:    s_cbranch_execnz .LBB8_11899; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end1900; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s01901; GFX12-NEXT:    v_mov_b32_e32 v0, v31902; GFX12-NEXT:    s_wait_loadcnt 0x01903; GFX12-NEXT:    s_setpc_b64 s[30:31]1904;1905; GFX942-LABEL: global_agent_atomic_fsub_ret_f32__ftz:1906; GFX942:       ; %bb.0:1907; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1908; GFX942-NEXT:    global_load_dword v5, v[0:1], off1909; GFX942-NEXT:    s_mov_b64 s[0:1], 01910; GFX942-NEXT:  .LBB8_1: ; %atomicrmw.start1911; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11912; GFX942-NEXT:    s_waitcnt vmcnt(0)1913; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v21914; GFX942-NEXT:    buffer_wbl2 sc11915; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off sc01916; GFX942-NEXT:    s_waitcnt vmcnt(0)1917; GFX942-NEXT:    buffer_inv sc11918; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51919; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1920; GFX942-NEXT:    v_mov_b32_e32 v5, v31921; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1922; GFX942-NEXT:    s_cbranch_execnz .LBB8_11923; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1924; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1925; GFX942-NEXT:    v_mov_b32_e32 v0, v31926; GFX942-NEXT:    s_setpc_b64 s[30:31]1927;1928; GFX11-LABEL: global_agent_atomic_fsub_ret_f32__ftz:1929; GFX11:       ; %bb.0:1930; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1931; GFX11-NEXT:    global_load_b32 v3, v[0:1], off1932; GFX11-NEXT:    s_mov_b32 s0, 01933; GFX11-NEXT:  .LBB8_1: ; %atomicrmw.start1934; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=11935; GFX11-NEXT:    s_waitcnt vmcnt(0)1936; GFX11-NEXT:    v_mov_b32_e32 v4, v31937; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1938; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v21939; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01940; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc1941; GFX11-NEXT:    s_waitcnt vmcnt(0)1942; GFX11-NEXT:    buffer_gl1_inv1943; GFX11-NEXT:    buffer_gl0_inv1944; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41945; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s01946; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1947; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01948; GFX11-NEXT:    s_cbranch_execnz .LBB8_11949; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end1950; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s01951; GFX11-NEXT:    v_mov_b32_e32 v0, v31952; GFX11-NEXT:    s_setpc_b64 s[30:31]1953;1954; GFX10-LABEL: global_agent_atomic_fsub_ret_f32__ftz:1955; GFX10:       ; %bb.0:1956; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1957; GFX10-NEXT:    global_load_dword v3, v[0:1], off1958; GFX10-NEXT:    s_mov_b32 s4, 01959; GFX10-NEXT:  .LBB8_1: ; %atomicrmw.start1960; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=11961; GFX10-NEXT:    s_waitcnt vmcnt(0)1962; GFX10-NEXT:    v_mov_b32_e32 v4, v31963; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v21964; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01965; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc1966; GFX10-NEXT:    s_waitcnt vmcnt(0)1967; GFX10-NEXT:    buffer_gl1_inv1968; GFX10-NEXT:    buffer_gl0_inv1969; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41970; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s41971; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s41972; GFX10-NEXT:    s_cbranch_execnz .LBB8_11973; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end1974; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s41975; GFX10-NEXT:    v_mov_b32_e32 v0, v31976; GFX10-NEXT:    s_setpc_b64 s[30:31]1977;1978; GFX90A-LABEL: global_agent_atomic_fsub_ret_f32__ftz:1979; GFX90A:       ; %bb.0:1980; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1981; GFX90A-NEXT:    global_load_dword v5, v[0:1], off1982; GFX90A-NEXT:    s_mov_b64 s[4:5], 01983; GFX90A-NEXT:  .LBB8_1: ; %atomicrmw.start1984; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11985; GFX90A-NEXT:    s_waitcnt vmcnt(0)1986; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v21987; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off glc1988; GFX90A-NEXT:    s_waitcnt vmcnt(0)1989; GFX90A-NEXT:    buffer_wbinvl11990; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51991; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1992; GFX90A-NEXT:    v_mov_b32_e32 v5, v31993; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1994; GFX90A-NEXT:    s_cbranch_execnz .LBB8_11995; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1996; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1997; GFX90A-NEXT:    v_mov_b32_e32 v0, v31998; GFX90A-NEXT:    s_setpc_b64 s[30:31]1999;2000; GFX908-LABEL: global_agent_atomic_fsub_ret_f32__ftz:2001; GFX908:       ; %bb.0:2002; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2003; GFX908-NEXT:    global_load_dword v3, v[0:1], off2004; GFX908-NEXT:    s_mov_b64 s[4:5], 02005; GFX908-NEXT:  .LBB8_1: ; %atomicrmw.start2006; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12007; GFX908-NEXT:    s_waitcnt vmcnt(0)2008; GFX908-NEXT:    v_mov_b32_e32 v4, v32009; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v22010; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc2011; GFX908-NEXT:    s_waitcnt vmcnt(0)2012; GFX908-NEXT:    buffer_wbinvl12013; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42014; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2015; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2016; GFX908-NEXT:    s_cbranch_execnz .LBB8_12017; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2018; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2019; GFX908-NEXT:    v_mov_b32_e32 v0, v32020; GFX908-NEXT:    s_setpc_b64 s[30:31]2021;2022; GFX8-LABEL: global_agent_atomic_fsub_ret_f32__ftz:2023; GFX8:       ; %bb.0:2024; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2025; GFX8-NEXT:    flat_load_dword v3, v[0:1]2026; GFX8-NEXT:    s_mov_b64 s[4:5], 02027; GFX8-NEXT:  .LBB8_1: ; %atomicrmw.start2028; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12029; GFX8-NEXT:    s_waitcnt vmcnt(0)2030; GFX8-NEXT:    v_mov_b32_e32 v4, v32031; GFX8-NEXT:    v_sub_f32_e32 v3, v4, v22032; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc2033; GFX8-NEXT:    s_waitcnt vmcnt(0)2034; GFX8-NEXT:    buffer_wbinvl12035; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42036; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2037; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2038; GFX8-NEXT:    s_cbranch_execnz .LBB8_12039; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2040; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2041; GFX8-NEXT:    v_mov_b32_e32 v0, v32042; GFX8-NEXT:    s_setpc_b64 s[30:31]2043;2044; GFX7-LABEL: global_agent_atomic_fsub_ret_f32__ftz:2045; GFX7:       ; %bb.0:2046; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2047; GFX7-NEXT:    s_mov_b32 s6, 02048; GFX7-NEXT:    s_mov_b32 s7, 0xf0002049; GFX7-NEXT:    s_mov_b32 s4, s62050; GFX7-NEXT:    s_mov_b32 s5, s62051; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr642052; GFX7-NEXT:    s_mov_b64 s[8:9], 02053; GFX7-NEXT:  .LBB8_1: ; %atomicrmw.start2054; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=12055; GFX7-NEXT:    s_waitcnt vmcnt(0)2056; GFX7-NEXT:    v_mov_b32_e32 v5, v32057; GFX7-NEXT:    v_sub_f32_e32 v4, v5, v22058; GFX7-NEXT:    v_mov_b32_e32 v3, v42059; GFX7-NEXT:    v_mov_b32_e32 v4, v52060; GFX7-NEXT:    buffer_atomic_cmpswap v[3:4], v[0:1], s[4:7], 0 addr64 glc2061; GFX7-NEXT:    s_waitcnt vmcnt(0)2062; GFX7-NEXT:    buffer_wbinvl12063; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v52064; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]2065; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]2066; GFX7-NEXT:    s_cbranch_execnz .LBB8_12067; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end2068; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]2069; GFX7-NEXT:    v_mov_b32_e32 v0, v32070; GFX7-NEXT:    s_setpc_b64 s[30:31]2071;2072; GFX6-LABEL: global_agent_atomic_fsub_ret_f32__ftz:2073; GFX6:       ; %bb.0:2074; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2075; GFX6-NEXT:    s_mov_b32 s6, 02076; GFX6-NEXT:    s_mov_b32 s7, 0xf0002077; GFX6-NEXT:    s_mov_b32 s4, s62078; GFX6-NEXT:    s_mov_b32 s5, s62079; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr642080; GFX6-NEXT:    s_mov_b64 s[8:9], 02081; GFX6-NEXT:  .LBB8_1: ; %atomicrmw.start2082; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=12083; GFX6-NEXT:    s_waitcnt vmcnt(0)2084; GFX6-NEXT:    v_mov_b32_e32 v5, v32085; GFX6-NEXT:    s_waitcnt expcnt(0)2086; GFX6-NEXT:    v_sub_f32_e32 v4, v5, v22087; GFX6-NEXT:    v_mov_b32_e32 v3, v42088; GFX6-NEXT:    v_mov_b32_e32 v4, v52089; GFX6-NEXT:    buffer_atomic_cmpswap v[3:4], v[0:1], s[4:7], 0 addr64 glc2090; GFX6-NEXT:    s_waitcnt vmcnt(0)2091; GFX6-NEXT:    buffer_wbinvl12092; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v52093; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]2094; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]2095; GFX6-NEXT:    s_cbranch_execnz .LBB8_12096; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end2097; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]2098; GFX6-NEXT:    v_mov_b32_e32 v0, v32099; GFX6-NEXT:    s_waitcnt expcnt(0)2100; GFX6-NEXT:    s_setpc_b64 s[30:31]2101  %result = atomicrmw fsub ptr addrspace(1) %ptr, float %val syncscope("agent") seq_cst2102  ret float %result2103}2104 2105define float @global_agent_atomic_fsub_ret_f32__offset12b_pos__ftz(ptr addrspace(1) %ptr, float %val) #1 {2106; GFX12-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_pos__ftz:2107; GFX12:       ; %bb.0:2108; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02109; GFX12-NEXT:    s_wait_expcnt 0x02110; GFX12-NEXT:    s_wait_samplecnt 0x02111; GFX12-NEXT:    s_wait_bvhcnt 0x02112; GFX12-NEXT:    s_wait_kmcnt 0x02113; GFX12-NEXT:    global_load_b32 v3, v[0:1], off offset:20442114; GFX12-NEXT:    s_mov_b32 s0, 02115; GFX12-NEXT:  .LBB9_1: ; %atomicrmw.start2116; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=12117; GFX12-NEXT:    s_wait_loadcnt 0x02118; GFX12-NEXT:    v_mov_b32_e32 v4, v32119; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)2120; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v22121; GFX12-NEXT:    s_wait_storecnt 0x02122; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV2123; GFX12-NEXT:    s_wait_loadcnt 0x02124; GFX12-NEXT:    global_inv scope:SCOPE_DEV2125; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42126; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2127; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s02128; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2129; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02130; GFX12-NEXT:    s_cbranch_execnz .LBB9_12131; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end2132; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s02133; GFX12-NEXT:    v_mov_b32_e32 v0, v32134; GFX12-NEXT:    s_wait_loadcnt 0x02135; GFX12-NEXT:    s_setpc_b64 s[30:31]2136;2137; GFX942-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_pos__ftz:2138; GFX942:       ; %bb.0:2139; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2140; GFX942-NEXT:    global_load_dword v5, v[0:1], off offset:20442141; GFX942-NEXT:    s_mov_b64 s[0:1], 02142; GFX942-NEXT:  .LBB9_1: ; %atomicrmw.start2143; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12144; GFX942-NEXT:    s_waitcnt vmcnt(0)2145; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v22146; GFX942-NEXT:    buffer_wbl2 sc12147; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 sc02148; GFX942-NEXT:    s_waitcnt vmcnt(0)2149; GFX942-NEXT:    buffer_inv sc12150; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v52151; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2152; GFX942-NEXT:    v_mov_b32_e32 v5, v32153; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2154; GFX942-NEXT:    s_cbranch_execnz .LBB9_12155; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2156; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2157; GFX942-NEXT:    v_mov_b32_e32 v0, v32158; GFX942-NEXT:    s_setpc_b64 s[30:31]2159;2160; GFX11-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_pos__ftz:2161; GFX11:       ; %bb.0:2162; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2163; GFX11-NEXT:    global_load_b32 v3, v[0:1], off offset:20442164; GFX11-NEXT:    s_mov_b32 s0, 02165; GFX11-NEXT:  .LBB9_1: ; %atomicrmw.start2166; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=12167; GFX11-NEXT:    s_waitcnt vmcnt(0)2168; GFX11-NEXT:    v_mov_b32_e32 v4, v32169; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2170; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v22171; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02172; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 glc2173; GFX11-NEXT:    s_waitcnt vmcnt(0)2174; GFX11-NEXT:    buffer_gl1_inv2175; GFX11-NEXT:    buffer_gl0_inv2176; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42177; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s02178; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2179; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02180; GFX11-NEXT:    s_cbranch_execnz .LBB9_12181; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end2182; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s02183; GFX11-NEXT:    v_mov_b32_e32 v0, v32184; GFX11-NEXT:    s_setpc_b64 s[30:31]2185;2186; GFX10-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_pos__ftz:2187; GFX10:       ; %bb.0:2188; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2189; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:20442190; GFX10-NEXT:    s_mov_b32 s4, 02191; GFX10-NEXT:  .LBB9_1: ; %atomicrmw.start2192; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=12193; GFX10-NEXT:    s_waitcnt vmcnt(0)2194; GFX10-NEXT:    v_mov_b32_e32 v4, v32195; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v22196; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02197; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc2198; GFX10-NEXT:    s_waitcnt vmcnt(0)2199; GFX10-NEXT:    buffer_gl1_inv2200; GFX10-NEXT:    buffer_gl0_inv2201; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42202; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s42203; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s42204; GFX10-NEXT:    s_cbranch_execnz .LBB9_12205; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end2206; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s42207; GFX10-NEXT:    v_mov_b32_e32 v0, v32208; GFX10-NEXT:    s_setpc_b64 s[30:31]2209;2210; GFX90A-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_pos__ftz:2211; GFX90A:       ; %bb.0:2212; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2213; GFX90A-NEXT:    global_load_dword v5, v[0:1], off offset:20442214; GFX90A-NEXT:    s_mov_b64 s[4:5], 02215; GFX90A-NEXT:  .LBB9_1: ; %atomicrmw.start2216; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12217; GFX90A-NEXT:    s_waitcnt vmcnt(0)2218; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v22219; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 glc2220; GFX90A-NEXT:    s_waitcnt vmcnt(0)2221; GFX90A-NEXT:    buffer_wbinvl12222; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v52223; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2224; GFX90A-NEXT:    v_mov_b32_e32 v5, v32225; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2226; GFX90A-NEXT:    s_cbranch_execnz .LBB9_12227; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2228; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2229; GFX90A-NEXT:    v_mov_b32_e32 v0, v32230; GFX90A-NEXT:    s_setpc_b64 s[30:31]2231;2232; GFX908-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_pos__ftz:2233; GFX908:       ; %bb.0:2234; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2235; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:20442236; GFX908-NEXT:    s_mov_b64 s[4:5], 02237; GFX908-NEXT:  .LBB9_1: ; %atomicrmw.start2238; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12239; GFX908-NEXT:    s_waitcnt vmcnt(0)2240; GFX908-NEXT:    v_mov_b32_e32 v4, v32241; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v22242; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc2243; GFX908-NEXT:    s_waitcnt vmcnt(0)2244; GFX908-NEXT:    buffer_wbinvl12245; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42246; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2247; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2248; GFX908-NEXT:    s_cbranch_execnz .LBB9_12249; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2250; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2251; GFX908-NEXT:    v_mov_b32_e32 v0, v32252; GFX908-NEXT:    s_setpc_b64 s[30:31]2253;2254; GFX8-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_pos__ftz:2255; GFX8:       ; %bb.0:2256; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2257; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v02258; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc2259; GFX8-NEXT:    flat_load_dword v0, v[3:4]2260; GFX8-NEXT:    s_mov_b64 s[4:5], 02261; GFX8-NEXT:  .LBB9_1: ; %atomicrmw.start2262; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12263; GFX8-NEXT:    s_waitcnt vmcnt(0)2264; GFX8-NEXT:    v_mov_b32_e32 v1, v02265; GFX8-NEXT:    v_sub_f32_e32 v0, v1, v22266; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc2267; GFX8-NEXT:    s_waitcnt vmcnt(0)2268; GFX8-NEXT:    buffer_wbinvl12269; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v12270; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2271; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2272; GFX8-NEXT:    s_cbranch_execnz .LBB9_12273; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2274; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2275; GFX8-NEXT:    s_setpc_b64 s[30:31]2276;2277; GFX7-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_pos__ftz:2278; GFX7:       ; %bb.0:2279; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2280; GFX7-NEXT:    s_mov_b32 s6, 02281; GFX7-NEXT:    s_mov_b32 s7, 0xf0002282; GFX7-NEXT:    s_mov_b32 s4, s62283; GFX7-NEXT:    s_mov_b32 s5, s62284; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:20442285; GFX7-NEXT:    s_mov_b64 s[8:9], 02286; GFX7-NEXT:  .LBB9_1: ; %atomicrmw.start2287; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=12288; GFX7-NEXT:    s_waitcnt vmcnt(0)2289; GFX7-NEXT:    v_mov_b32_e32 v5, v32290; GFX7-NEXT:    v_sub_f32_e32 v4, v5, v22291; GFX7-NEXT:    v_mov_b32_e32 v3, v42292; GFX7-NEXT:    v_mov_b32_e32 v4, v52293; GFX7-NEXT:    buffer_atomic_cmpswap v[3:4], v[0:1], s[4:7], 0 addr64 offset:2044 glc2294; GFX7-NEXT:    s_waitcnt vmcnt(0)2295; GFX7-NEXT:    buffer_wbinvl12296; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v52297; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]2298; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]2299; GFX7-NEXT:    s_cbranch_execnz .LBB9_12300; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end2301; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]2302; GFX7-NEXT:    v_mov_b32_e32 v0, v32303; GFX7-NEXT:    s_setpc_b64 s[30:31]2304;2305; GFX6-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_pos__ftz:2306; GFX6:       ; %bb.0:2307; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2308; GFX6-NEXT:    s_mov_b32 s6, 02309; GFX6-NEXT:    s_mov_b32 s7, 0xf0002310; GFX6-NEXT:    s_mov_b32 s4, s62311; GFX6-NEXT:    s_mov_b32 s5, s62312; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:20442313; GFX6-NEXT:    s_mov_b64 s[8:9], 02314; GFX6-NEXT:  .LBB9_1: ; %atomicrmw.start2315; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=12316; GFX6-NEXT:    s_waitcnt vmcnt(0)2317; GFX6-NEXT:    v_mov_b32_e32 v5, v32318; GFX6-NEXT:    s_waitcnt expcnt(0)2319; GFX6-NEXT:    v_sub_f32_e32 v4, v5, v22320; GFX6-NEXT:    v_mov_b32_e32 v3, v42321; GFX6-NEXT:    v_mov_b32_e32 v4, v52322; GFX6-NEXT:    buffer_atomic_cmpswap v[3:4], v[0:1], s[4:7], 0 addr64 offset:2044 glc2323; GFX6-NEXT:    s_waitcnt vmcnt(0)2324; GFX6-NEXT:    buffer_wbinvl12325; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v52326; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]2327; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]2328; GFX6-NEXT:    s_cbranch_execnz .LBB9_12329; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end2330; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]2331; GFX6-NEXT:    v_mov_b32_e32 v0, v32332; GFX6-NEXT:    s_waitcnt expcnt(0)2333; GFX6-NEXT:    s_setpc_b64 s[30:31]2334  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 5112335  %result = atomicrmw fsub ptr addrspace(1) %gep, float %val syncscope("agent") seq_cst2336  ret float %result2337}2338 2339define float @global_agent_atomic_fsub_ret_f32__offset12b_neg__ftz(ptr addrspace(1) %ptr, float %val) #1 {2340; GFX12-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_neg__ftz:2341; GFX12:       ; %bb.0:2342; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02343; GFX12-NEXT:    s_wait_expcnt 0x02344; GFX12-NEXT:    s_wait_samplecnt 0x02345; GFX12-NEXT:    s_wait_bvhcnt 0x02346; GFX12-NEXT:    s_wait_kmcnt 0x02347; GFX12-NEXT:    global_load_b32 v3, v[0:1], off offset:-20482348; GFX12-NEXT:    s_mov_b32 s0, 02349; GFX12-NEXT:  .LBB10_1: ; %atomicrmw.start2350; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=12351; GFX12-NEXT:    s_wait_loadcnt 0x02352; GFX12-NEXT:    v_mov_b32_e32 v4, v32353; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)2354; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v22355; GFX12-NEXT:    s_wait_storecnt 0x02356; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV2357; GFX12-NEXT:    s_wait_loadcnt 0x02358; GFX12-NEXT:    global_inv scope:SCOPE_DEV2359; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42360; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2361; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s02362; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2363; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02364; GFX12-NEXT:    s_cbranch_execnz .LBB10_12365; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end2366; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s02367; GFX12-NEXT:    v_mov_b32_e32 v0, v32368; GFX12-NEXT:    s_wait_loadcnt 0x02369; GFX12-NEXT:    s_setpc_b64 s[30:31]2370;2371; GFX942-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_neg__ftz:2372; GFX942:       ; %bb.0:2373; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2374; GFX942-NEXT:    global_load_dword v5, v[0:1], off offset:-20482375; GFX942-NEXT:    s_mov_b64 s[0:1], 02376; GFX942-NEXT:  .LBB10_1: ; %atomicrmw.start2377; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12378; GFX942-NEXT:    s_waitcnt vmcnt(0)2379; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v22380; GFX942-NEXT:    buffer_wbl2 sc12381; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:-2048 sc02382; GFX942-NEXT:    s_waitcnt vmcnt(0)2383; GFX942-NEXT:    buffer_inv sc12384; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v52385; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2386; GFX942-NEXT:    v_mov_b32_e32 v5, v32387; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2388; GFX942-NEXT:    s_cbranch_execnz .LBB10_12389; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2390; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2391; GFX942-NEXT:    v_mov_b32_e32 v0, v32392; GFX942-NEXT:    s_setpc_b64 s[30:31]2393;2394; GFX11-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_neg__ftz:2395; GFX11:       ; %bb.0:2396; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2397; GFX11-NEXT:    global_load_b32 v3, v[0:1], off offset:-20482398; GFX11-NEXT:    s_mov_b32 s0, 02399; GFX11-NEXT:  .LBB10_1: ; %atomicrmw.start2400; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=12401; GFX11-NEXT:    s_waitcnt vmcnt(0)2402; GFX11-NEXT:    v_mov_b32_e32 v4, v32403; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2404; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v22405; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02406; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:-2048 glc2407; GFX11-NEXT:    s_waitcnt vmcnt(0)2408; GFX11-NEXT:    buffer_gl1_inv2409; GFX11-NEXT:    buffer_gl0_inv2410; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42411; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s02412; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2413; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02414; GFX11-NEXT:    s_cbranch_execnz .LBB10_12415; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end2416; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s02417; GFX11-NEXT:    v_mov_b32_e32 v0, v32418; GFX11-NEXT:    s_setpc_b64 s[30:31]2419;2420; GFX10-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_neg__ftz:2421; GFX10:       ; %bb.0:2422; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2423; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:-20482424; GFX10-NEXT:    s_mov_b32 s4, 02425; GFX10-NEXT:  .LBB10_1: ; %atomicrmw.start2426; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=12427; GFX10-NEXT:    s_waitcnt vmcnt(0)2428; GFX10-NEXT:    v_mov_b32_e32 v4, v32429; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v22430; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02431; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:-2048 glc2432; GFX10-NEXT:    s_waitcnt vmcnt(0)2433; GFX10-NEXT:    buffer_gl1_inv2434; GFX10-NEXT:    buffer_gl0_inv2435; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42436; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s42437; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s42438; GFX10-NEXT:    s_cbranch_execnz .LBB10_12439; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end2440; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s42441; GFX10-NEXT:    v_mov_b32_e32 v0, v32442; GFX10-NEXT:    s_setpc_b64 s[30:31]2443;2444; GFX90A-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_neg__ftz:2445; GFX90A:       ; %bb.0:2446; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2447; GFX90A-NEXT:    global_load_dword v5, v[0:1], off offset:-20482448; GFX90A-NEXT:    s_mov_b64 s[4:5], 02449; GFX90A-NEXT:  .LBB10_1: ; %atomicrmw.start2450; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12451; GFX90A-NEXT:    s_waitcnt vmcnt(0)2452; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v22453; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:-2048 glc2454; GFX90A-NEXT:    s_waitcnt vmcnt(0)2455; GFX90A-NEXT:    buffer_wbinvl12456; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v52457; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2458; GFX90A-NEXT:    v_mov_b32_e32 v5, v32459; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2460; GFX90A-NEXT:    s_cbranch_execnz .LBB10_12461; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2462; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2463; GFX90A-NEXT:    v_mov_b32_e32 v0, v32464; GFX90A-NEXT:    s_setpc_b64 s[30:31]2465;2466; GFX908-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_neg__ftz:2467; GFX908:       ; %bb.0:2468; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2469; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:-20482470; GFX908-NEXT:    s_mov_b64 s[4:5], 02471; GFX908-NEXT:  .LBB10_1: ; %atomicrmw.start2472; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12473; GFX908-NEXT:    s_waitcnt vmcnt(0)2474; GFX908-NEXT:    v_mov_b32_e32 v4, v32475; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v22476; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:-2048 glc2477; GFX908-NEXT:    s_waitcnt vmcnt(0)2478; GFX908-NEXT:    buffer_wbinvl12479; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42480; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2481; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2482; GFX908-NEXT:    s_cbranch_execnz .LBB10_12483; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2484; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2485; GFX908-NEXT:    v_mov_b32_e32 v0, v32486; GFX908-NEXT:    s_setpc_b64 s[30:31]2487;2488; GFX8-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_neg__ftz:2489; GFX8:       ; %bb.0:2490; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2491; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v02492; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, -1, v1, vcc2493; GFX8-NEXT:    flat_load_dword v0, v[3:4]2494; GFX8-NEXT:    s_mov_b64 s[4:5], 02495; GFX8-NEXT:  .LBB10_1: ; %atomicrmw.start2496; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12497; GFX8-NEXT:    s_waitcnt vmcnt(0)2498; GFX8-NEXT:    v_mov_b32_e32 v1, v02499; GFX8-NEXT:    v_sub_f32_e32 v0, v1, v22500; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc2501; GFX8-NEXT:    s_waitcnt vmcnt(0)2502; GFX8-NEXT:    buffer_wbinvl12503; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v12504; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2505; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2506; GFX8-NEXT:    s_cbranch_execnz .LBB10_12507; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2508; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2509; GFX8-NEXT:    s_setpc_b64 s[30:31]2510;2511; GFX7-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_neg__ftz:2512; GFX7:       ; %bb.0:2513; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2514; GFX7-NEXT:    s_movk_i32 s4, 0xf8002515; GFX7-NEXT:    v_mov_b32_e32 v4, v12516; GFX7-NEXT:    v_mov_b32_e32 v3, v02517; GFX7-NEXT:    s_mov_b32 s5, -12518; GFX7-NEXT:    s_mov_b32 s7, 0xf0002519; GFX7-NEXT:    s_mov_b32 s6, 02520; GFX7-NEXT:    buffer_load_dword v0, v[3:4], s[4:7], 0 addr642521; GFX7-NEXT:    v_add_i32_e32 v3, vcc, 0xfffff800, v32522; GFX7-NEXT:    v_addc_u32_e32 v4, vcc, -1, v4, vcc2523; GFX7-NEXT:    s_mov_b64 s[8:9], 02524; GFX7-NEXT:    s_mov_b32 s4, s62525; GFX7-NEXT:    s_mov_b32 s5, s62526; GFX7-NEXT:  .LBB10_1: ; %atomicrmw.start2527; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=12528; GFX7-NEXT:    s_waitcnt vmcnt(0)2529; GFX7-NEXT:    v_mov_b32_e32 v6, v02530; GFX7-NEXT:    v_sub_f32_e32 v5, v6, v22531; GFX7-NEXT:    v_mov_b32_e32 v0, v52532; GFX7-NEXT:    v_mov_b32_e32 v1, v62533; GFX7-NEXT:    buffer_atomic_cmpswap v[0:1], v[3:4], s[4:7], 0 addr64 glc2534; GFX7-NEXT:    s_waitcnt vmcnt(0)2535; GFX7-NEXT:    buffer_wbinvl12536; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v62537; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]2538; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]2539; GFX7-NEXT:    s_cbranch_execnz .LBB10_12540; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end2541; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]2542; GFX7-NEXT:    s_setpc_b64 s[30:31]2543;2544; GFX6-LABEL: global_agent_atomic_fsub_ret_f32__offset12b_neg__ftz:2545; GFX6:       ; %bb.0:2546; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2547; GFX6-NEXT:    s_movk_i32 s4, 0xf8002548; GFX6-NEXT:    v_mov_b32_e32 v4, v12549; GFX6-NEXT:    v_mov_b32_e32 v3, v02550; GFX6-NEXT:    s_mov_b32 s5, -12551; GFX6-NEXT:    s_mov_b32 s7, 0xf0002552; GFX6-NEXT:    s_mov_b32 s6, 02553; GFX6-NEXT:    buffer_load_dword v0, v[3:4], s[4:7], 0 addr642554; GFX6-NEXT:    v_add_i32_e32 v3, vcc, 0xfffff800, v32555; GFX6-NEXT:    v_addc_u32_e32 v4, vcc, -1, v4, vcc2556; GFX6-NEXT:    s_mov_b64 s[8:9], 02557; GFX6-NEXT:    s_mov_b32 s4, s62558; GFX6-NEXT:    s_mov_b32 s5, s62559; GFX6-NEXT:  .LBB10_1: ; %atomicrmw.start2560; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=12561; GFX6-NEXT:    s_waitcnt vmcnt(0)2562; GFX6-NEXT:    v_mov_b32_e32 v6, v02563; GFX6-NEXT:    v_sub_f32_e32 v5, v6, v22564; GFX6-NEXT:    s_waitcnt expcnt(0)2565; GFX6-NEXT:    v_mov_b32_e32 v0, v52566; GFX6-NEXT:    v_mov_b32_e32 v1, v62567; GFX6-NEXT:    buffer_atomic_cmpswap v[0:1], v[3:4], s[4:7], 0 addr64 glc2568; GFX6-NEXT:    s_waitcnt vmcnt(0)2569; GFX6-NEXT:    buffer_wbinvl12570; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v62571; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]2572; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]2573; GFX6-NEXT:    s_cbranch_execnz .LBB10_12574; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end2575; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]2576; GFX6-NEXT:    s_waitcnt expcnt(0)2577; GFX6-NEXT:    s_setpc_b64 s[30:31]2578  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 -5122579  %result = atomicrmw fsub ptr addrspace(1) %gep, float %val syncscope("agent") seq_cst2580  ret float %result2581}2582 2583define void @global_agent_atomic_fsub_noret_f32__ftz(ptr addrspace(1) %ptr, float %val) #1 {2584; GFX12-LABEL: global_agent_atomic_fsub_noret_f32__ftz:2585; GFX12:       ; %bb.0:2586; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02587; GFX12-NEXT:    s_wait_expcnt 0x02588; GFX12-NEXT:    s_wait_samplecnt 0x02589; GFX12-NEXT:    s_wait_bvhcnt 0x02590; GFX12-NEXT:    s_wait_kmcnt 0x02591; GFX12-NEXT:    global_load_b32 v4, v[0:1], off2592; GFX12-NEXT:    s_mov_b32 s0, 02593; GFX12-NEXT:  .LBB11_1: ; %atomicrmw.start2594; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=12595; GFX12-NEXT:    s_wait_loadcnt 0x02596; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v22597; GFX12-NEXT:    s_wait_storecnt 0x02598; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV2599; GFX12-NEXT:    s_wait_loadcnt 0x02600; GFX12-NEXT:    global_inv scope:SCOPE_DEV2601; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42602; GFX12-NEXT:    v_mov_b32_e32 v4, v32603; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2604; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s02605; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2606; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02607; GFX12-NEXT:    s_cbranch_execnz .LBB11_12608; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end2609; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s02610; GFX12-NEXT:    s_wait_loadcnt 0x02611; GFX12-NEXT:    s_setpc_b64 s[30:31]2612;2613; GFX942-LABEL: global_agent_atomic_fsub_noret_f32__ftz:2614; GFX942:       ; %bb.0:2615; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2616; GFX942-NEXT:    global_load_dword v5, v[0:1], off2617; GFX942-NEXT:    s_mov_b64 s[0:1], 02618; GFX942-NEXT:  .LBB11_1: ; %atomicrmw.start2619; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12620; GFX942-NEXT:    s_waitcnt vmcnt(0)2621; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v22622; GFX942-NEXT:    buffer_wbl2 sc12623; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off sc02624; GFX942-NEXT:    s_waitcnt vmcnt(0)2625; GFX942-NEXT:    buffer_inv sc12626; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v52627; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2628; GFX942-NEXT:    v_mov_b32_e32 v5, v32629; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2630; GFX942-NEXT:    s_cbranch_execnz .LBB11_12631; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2632; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2633; GFX942-NEXT:    s_setpc_b64 s[30:31]2634;2635; GFX11-LABEL: global_agent_atomic_fsub_noret_f32__ftz:2636; GFX11:       ; %bb.0:2637; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2638; GFX11-NEXT:    global_load_b32 v4, v[0:1], off2639; GFX11-NEXT:    s_mov_b32 s0, 02640; GFX11-NEXT:  .LBB11_1: ; %atomicrmw.start2641; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=12642; GFX11-NEXT:    s_waitcnt vmcnt(0)2643; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v22644; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02645; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc2646; GFX11-NEXT:    s_waitcnt vmcnt(0)2647; GFX11-NEXT:    buffer_gl1_inv2648; GFX11-NEXT:    buffer_gl0_inv2649; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42650; GFX11-NEXT:    v_mov_b32_e32 v4, v32651; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s02652; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2653; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02654; GFX11-NEXT:    s_cbranch_execnz .LBB11_12655; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end2656; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s02657; GFX11-NEXT:    s_setpc_b64 s[30:31]2658;2659; GFX10-LABEL: global_agent_atomic_fsub_noret_f32__ftz:2660; GFX10:       ; %bb.0:2661; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2662; GFX10-NEXT:    global_load_dword v4, v[0:1], off2663; GFX10-NEXT:    s_mov_b32 s4, 02664; GFX10-NEXT:  .LBB11_1: ; %atomicrmw.start2665; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=12666; GFX10-NEXT:    s_waitcnt vmcnt(0)2667; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v22668; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02669; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc2670; GFX10-NEXT:    s_waitcnt vmcnt(0)2671; GFX10-NEXT:    buffer_gl1_inv2672; GFX10-NEXT:    buffer_gl0_inv2673; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42674; GFX10-NEXT:    v_mov_b32_e32 v4, v32675; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s42676; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s42677; GFX10-NEXT:    s_cbranch_execnz .LBB11_12678; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end2679; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s42680; GFX10-NEXT:    s_setpc_b64 s[30:31]2681;2682; GFX90A-LABEL: global_agent_atomic_fsub_noret_f32__ftz:2683; GFX90A:       ; %bb.0:2684; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2685; GFX90A-NEXT:    global_load_dword v5, v[0:1], off2686; GFX90A-NEXT:    s_mov_b64 s[4:5], 02687; GFX90A-NEXT:  .LBB11_1: ; %atomicrmw.start2688; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12689; GFX90A-NEXT:    s_waitcnt vmcnt(0)2690; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v22691; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off glc2692; GFX90A-NEXT:    s_waitcnt vmcnt(0)2693; GFX90A-NEXT:    buffer_wbinvl12694; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v52695; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2696; GFX90A-NEXT:    v_mov_b32_e32 v5, v32697; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2698; GFX90A-NEXT:    s_cbranch_execnz .LBB11_12699; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2700; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2701; GFX90A-NEXT:    s_setpc_b64 s[30:31]2702;2703; GFX908-LABEL: global_agent_atomic_fsub_noret_f32__ftz:2704; GFX908:       ; %bb.0:2705; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2706; GFX908-NEXT:    global_load_dword v4, v[0:1], off2707; GFX908-NEXT:    s_mov_b64 s[4:5], 02708; GFX908-NEXT:  .LBB11_1: ; %atomicrmw.start2709; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12710; GFX908-NEXT:    s_waitcnt vmcnt(0)2711; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v22712; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc2713; GFX908-NEXT:    s_waitcnt vmcnt(0)2714; GFX908-NEXT:    buffer_wbinvl12715; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42716; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2717; GFX908-NEXT:    v_mov_b32_e32 v4, v32718; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2719; GFX908-NEXT:    s_cbranch_execnz .LBB11_12720; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2721; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2722; GFX908-NEXT:    s_setpc_b64 s[30:31]2723;2724; GFX8-LABEL: global_agent_atomic_fsub_noret_f32__ftz:2725; GFX8:       ; %bb.0:2726; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2727; GFX8-NEXT:    flat_load_dword v4, v[0:1]2728; GFX8-NEXT:    s_mov_b64 s[4:5], 02729; GFX8-NEXT:  .LBB11_1: ; %atomicrmw.start2730; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12731; GFX8-NEXT:    s_waitcnt vmcnt(0)2732; GFX8-NEXT:    v_sub_f32_e32 v3, v4, v22733; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc2734; GFX8-NEXT:    s_waitcnt vmcnt(0)2735; GFX8-NEXT:    buffer_wbinvl12736; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42737; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2738; GFX8-NEXT:    v_mov_b32_e32 v4, v32739; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2740; GFX8-NEXT:    s_cbranch_execnz .LBB11_12741; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2742; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2743; GFX8-NEXT:    s_setpc_b64 s[30:31]2744;2745; GFX7-LABEL: global_agent_atomic_fsub_noret_f32__ftz:2746; GFX7:       ; %bb.0:2747; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2748; GFX7-NEXT:    s_mov_b32 s6, 02749; GFX7-NEXT:    s_mov_b32 s7, 0xf0002750; GFX7-NEXT:    s_mov_b32 s4, s62751; GFX7-NEXT:    s_mov_b32 s5, s62752; GFX7-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr642753; GFX7-NEXT:    s_mov_b64 s[8:9], 02754; GFX7-NEXT:  .LBB11_1: ; %atomicrmw.start2755; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=12756; GFX7-NEXT:    s_waitcnt vmcnt(0)2757; GFX7-NEXT:    v_sub_f32_e32 v3, v4, v22758; GFX7-NEXT:    v_mov_b32_e32 v6, v42759; GFX7-NEXT:    v_mov_b32_e32 v5, v32760; GFX7-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 glc2761; GFX7-NEXT:    s_waitcnt vmcnt(0)2762; GFX7-NEXT:    buffer_wbinvl12763; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v42764; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]2765; GFX7-NEXT:    v_mov_b32_e32 v4, v52766; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]2767; GFX7-NEXT:    s_cbranch_execnz .LBB11_12768; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end2769; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]2770; GFX7-NEXT:    s_setpc_b64 s[30:31]2771;2772; GFX6-LABEL: global_agent_atomic_fsub_noret_f32__ftz:2773; GFX6:       ; %bb.0:2774; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2775; GFX6-NEXT:    s_mov_b32 s6, 02776; GFX6-NEXT:    s_mov_b32 s7, 0xf0002777; GFX6-NEXT:    s_mov_b32 s4, s62778; GFX6-NEXT:    s_mov_b32 s5, s62779; GFX6-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr642780; GFX6-NEXT:    s_mov_b64 s[8:9], 02781; GFX6-NEXT:  .LBB11_1: ; %atomicrmw.start2782; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=12783; GFX6-NEXT:    s_waitcnt vmcnt(0)2784; GFX6-NEXT:    v_sub_f32_e32 v3, v4, v22785; GFX6-NEXT:    s_waitcnt expcnt(0)2786; GFX6-NEXT:    v_mov_b32_e32 v6, v42787; GFX6-NEXT:    v_mov_b32_e32 v5, v32788; GFX6-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 glc2789; GFX6-NEXT:    s_waitcnt vmcnt(0)2790; GFX6-NEXT:    buffer_wbinvl12791; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v42792; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]2793; GFX6-NEXT:    v_mov_b32_e32 v4, v52794; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]2795; GFX6-NEXT:    s_cbranch_execnz .LBB11_12796; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end2797; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]2798; GFX6-NEXT:    s_waitcnt expcnt(0)2799; GFX6-NEXT:    s_setpc_b64 s[30:31]2800  %unused = atomicrmw fsub ptr addrspace(1) %ptr, float %val syncscope("agent") seq_cst2801  ret void2802}2803 2804define void @global_agent_atomic_fsub_noret_f32__offset12b_pos__ftz(ptr addrspace(1) %ptr, float %val) #1 {2805; GFX12-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_pos__ftz:2806; GFX12:       ; %bb.0:2807; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02808; GFX12-NEXT:    s_wait_expcnt 0x02809; GFX12-NEXT:    s_wait_samplecnt 0x02810; GFX12-NEXT:    s_wait_bvhcnt 0x02811; GFX12-NEXT:    s_wait_kmcnt 0x02812; GFX12-NEXT:    global_load_b32 v4, v[0:1], off offset:20442813; GFX12-NEXT:    s_mov_b32 s0, 02814; GFX12-NEXT:  .LBB12_1: ; %atomicrmw.start2815; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=12816; GFX12-NEXT:    s_wait_loadcnt 0x02817; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v22818; GFX12-NEXT:    s_wait_storecnt 0x02819; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV2820; GFX12-NEXT:    s_wait_loadcnt 0x02821; GFX12-NEXT:    global_inv scope:SCOPE_DEV2822; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42823; GFX12-NEXT:    v_mov_b32_e32 v4, v32824; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2825; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s02826; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2827; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02828; GFX12-NEXT:    s_cbranch_execnz .LBB12_12829; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end2830; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s02831; GFX12-NEXT:    s_wait_loadcnt 0x02832; GFX12-NEXT:    s_setpc_b64 s[30:31]2833;2834; GFX942-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_pos__ftz:2835; GFX942:       ; %bb.0:2836; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2837; GFX942-NEXT:    global_load_dword v5, v[0:1], off offset:20442838; GFX942-NEXT:    s_mov_b64 s[0:1], 02839; GFX942-NEXT:  .LBB12_1: ; %atomicrmw.start2840; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12841; GFX942-NEXT:    s_waitcnt vmcnt(0)2842; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v22843; GFX942-NEXT:    buffer_wbl2 sc12844; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 sc02845; GFX942-NEXT:    s_waitcnt vmcnt(0)2846; GFX942-NEXT:    buffer_inv sc12847; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v52848; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2849; GFX942-NEXT:    v_mov_b32_e32 v5, v32850; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2851; GFX942-NEXT:    s_cbranch_execnz .LBB12_12852; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2853; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2854; GFX942-NEXT:    s_setpc_b64 s[30:31]2855;2856; GFX11-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_pos__ftz:2857; GFX11:       ; %bb.0:2858; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2859; GFX11-NEXT:    global_load_b32 v4, v[0:1], off offset:20442860; GFX11-NEXT:    s_mov_b32 s0, 02861; GFX11-NEXT:  .LBB12_1: ; %atomicrmw.start2862; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=12863; GFX11-NEXT:    s_waitcnt vmcnt(0)2864; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v22865; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02866; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 glc2867; GFX11-NEXT:    s_waitcnt vmcnt(0)2868; GFX11-NEXT:    buffer_gl1_inv2869; GFX11-NEXT:    buffer_gl0_inv2870; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42871; GFX11-NEXT:    v_mov_b32_e32 v4, v32872; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s02873; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2874; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02875; GFX11-NEXT:    s_cbranch_execnz .LBB12_12876; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end2877; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s02878; GFX11-NEXT:    s_setpc_b64 s[30:31]2879;2880; GFX10-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_pos__ftz:2881; GFX10:       ; %bb.0:2882; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2883; GFX10-NEXT:    global_load_dword v4, v[0:1], off offset:20442884; GFX10-NEXT:    s_mov_b32 s4, 02885; GFX10-NEXT:  .LBB12_1: ; %atomicrmw.start2886; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=12887; GFX10-NEXT:    s_waitcnt vmcnt(0)2888; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v22889; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02890; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc2891; GFX10-NEXT:    s_waitcnt vmcnt(0)2892; GFX10-NEXT:    buffer_gl1_inv2893; GFX10-NEXT:    buffer_gl0_inv2894; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42895; GFX10-NEXT:    v_mov_b32_e32 v4, v32896; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s42897; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s42898; GFX10-NEXT:    s_cbranch_execnz .LBB12_12899; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end2900; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s42901; GFX10-NEXT:    s_setpc_b64 s[30:31]2902;2903; GFX90A-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_pos__ftz:2904; GFX90A:       ; %bb.0:2905; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2906; GFX90A-NEXT:    global_load_dword v5, v[0:1], off offset:20442907; GFX90A-NEXT:    s_mov_b64 s[4:5], 02908; GFX90A-NEXT:  .LBB12_1: ; %atomicrmw.start2909; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12910; GFX90A-NEXT:    s_waitcnt vmcnt(0)2911; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v22912; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 glc2913; GFX90A-NEXT:    s_waitcnt vmcnt(0)2914; GFX90A-NEXT:    buffer_wbinvl12915; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v52916; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2917; GFX90A-NEXT:    v_mov_b32_e32 v5, v32918; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2919; GFX90A-NEXT:    s_cbranch_execnz .LBB12_12920; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2921; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2922; GFX90A-NEXT:    s_setpc_b64 s[30:31]2923;2924; GFX908-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_pos__ftz:2925; GFX908:       ; %bb.0:2926; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2927; GFX908-NEXT:    global_load_dword v4, v[0:1], off offset:20442928; GFX908-NEXT:    s_mov_b64 s[4:5], 02929; GFX908-NEXT:  .LBB12_1: ; %atomicrmw.start2930; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12931; GFX908-NEXT:    s_waitcnt vmcnt(0)2932; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v22933; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc2934; GFX908-NEXT:    s_waitcnt vmcnt(0)2935; GFX908-NEXT:    buffer_wbinvl12936; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42937; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2938; GFX908-NEXT:    v_mov_b32_e32 v4, v32939; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2940; GFX908-NEXT:    s_cbranch_execnz .LBB12_12941; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2942; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2943; GFX908-NEXT:    s_setpc_b64 s[30:31]2944;2945; GFX8-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_pos__ftz:2946; GFX8:       ; %bb.0:2947; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2948; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v02949; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2950; GFX8-NEXT:    flat_load_dword v4, v[0:1]2951; GFX8-NEXT:    s_mov_b64 s[4:5], 02952; GFX8-NEXT:  .LBB12_1: ; %atomicrmw.start2953; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12954; GFX8-NEXT:    s_waitcnt vmcnt(0)2955; GFX8-NEXT:    v_sub_f32_e32 v3, v4, v22956; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc2957; GFX8-NEXT:    s_waitcnt vmcnt(0)2958; GFX8-NEXT:    buffer_wbinvl12959; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42960; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2961; GFX8-NEXT:    v_mov_b32_e32 v4, v32962; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2963; GFX8-NEXT:    s_cbranch_execnz .LBB12_12964; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2965; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2966; GFX8-NEXT:    s_setpc_b64 s[30:31]2967;2968; GFX7-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_pos__ftz:2969; GFX7:       ; %bb.0:2970; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2971; GFX7-NEXT:    s_mov_b32 s6, 02972; GFX7-NEXT:    s_mov_b32 s7, 0xf0002973; GFX7-NEXT:    s_mov_b32 s4, s62974; GFX7-NEXT:    s_mov_b32 s5, s62975; GFX7-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr64 offset:20442976; GFX7-NEXT:    s_mov_b64 s[8:9], 02977; GFX7-NEXT:  .LBB12_1: ; %atomicrmw.start2978; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=12979; GFX7-NEXT:    s_waitcnt vmcnt(0)2980; GFX7-NEXT:    v_sub_f32_e32 v3, v4, v22981; GFX7-NEXT:    v_mov_b32_e32 v6, v42982; GFX7-NEXT:    v_mov_b32_e32 v5, v32983; GFX7-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 offset:2044 glc2984; GFX7-NEXT:    s_waitcnt vmcnt(0)2985; GFX7-NEXT:    buffer_wbinvl12986; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v42987; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]2988; GFX7-NEXT:    v_mov_b32_e32 v4, v52989; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]2990; GFX7-NEXT:    s_cbranch_execnz .LBB12_12991; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end2992; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]2993; GFX7-NEXT:    s_setpc_b64 s[30:31]2994;2995; GFX6-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_pos__ftz:2996; GFX6:       ; %bb.0:2997; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2998; GFX6-NEXT:    s_mov_b32 s6, 02999; GFX6-NEXT:    s_mov_b32 s7, 0xf0003000; GFX6-NEXT:    s_mov_b32 s4, s63001; GFX6-NEXT:    s_mov_b32 s5, s63002; GFX6-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr64 offset:20443003; GFX6-NEXT:    s_mov_b64 s[8:9], 03004; GFX6-NEXT:  .LBB12_1: ; %atomicrmw.start3005; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=13006; GFX6-NEXT:    s_waitcnt vmcnt(0)3007; GFX6-NEXT:    v_sub_f32_e32 v3, v4, v23008; GFX6-NEXT:    s_waitcnt expcnt(0)3009; GFX6-NEXT:    v_mov_b32_e32 v6, v43010; GFX6-NEXT:    v_mov_b32_e32 v5, v33011; GFX6-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 offset:2044 glc3012; GFX6-NEXT:    s_waitcnt vmcnt(0)3013; GFX6-NEXT:    buffer_wbinvl13014; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v43015; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]3016; GFX6-NEXT:    v_mov_b32_e32 v4, v53017; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]3018; GFX6-NEXT:    s_cbranch_execnz .LBB12_13019; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end3020; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]3021; GFX6-NEXT:    s_waitcnt expcnt(0)3022; GFX6-NEXT:    s_setpc_b64 s[30:31]3023  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 5113024  %unused = atomicrmw fsub ptr addrspace(1) %gep, float %val syncscope("agent") seq_cst3025  ret void3026}3027 3028define void @global_agent_atomic_fsub_noret_f32__offset12b_neg__ftz(ptr addrspace(1) %ptr, float %val) #1 {3029; GFX12-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_neg__ftz:3030; GFX12:       ; %bb.0:3031; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03032; GFX12-NEXT:    s_wait_expcnt 0x03033; GFX12-NEXT:    s_wait_samplecnt 0x03034; GFX12-NEXT:    s_wait_bvhcnt 0x03035; GFX12-NEXT:    s_wait_kmcnt 0x03036; GFX12-NEXT:    global_load_b32 v4, v[0:1], off offset:-20483037; GFX12-NEXT:    s_mov_b32 s0, 03038; GFX12-NEXT:  .LBB13_1: ; %atomicrmw.start3039; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=13040; GFX12-NEXT:    s_wait_loadcnt 0x03041; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v23042; GFX12-NEXT:    s_wait_storecnt 0x03043; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV3044; GFX12-NEXT:    s_wait_loadcnt 0x03045; GFX12-NEXT:    global_inv scope:SCOPE_DEV3046; 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 .LBB13_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: global_agent_atomic_fsub_noret_f32__offset12b_neg__ftz:3059; GFX942:       ; %bb.0:3060; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3061; GFX942-NEXT:    global_load_dword v5, v[0:1], off offset:-20483062; GFX942-NEXT:    s_mov_b64 s[0:1], 03063; GFX942-NEXT:  .LBB13_1: ; %atomicrmw.start3064; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=13065; GFX942-NEXT:    s_waitcnt vmcnt(0)3066; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v23067; GFX942-NEXT:    buffer_wbl2 sc13068; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:-2048 sc03069; GFX942-NEXT:    s_waitcnt vmcnt(0)3070; GFX942-NEXT:    buffer_inv 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 .LBB13_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: global_agent_atomic_fsub_noret_f32__offset12b_neg__ftz:3081; GFX11:       ; %bb.0:3082; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3083; GFX11-NEXT:    global_load_b32 v4, v[0:1], off offset:-20483084; GFX11-NEXT:    s_mov_b32 s0, 03085; GFX11-NEXT:  .LBB13_1: ; %atomicrmw.start3086; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=13087; GFX11-NEXT:    s_waitcnt vmcnt(0)3088; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v23089; GFX11-NEXT:    s_waitcnt_vscnt null, 0x03090; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:-2048 glc3091; GFX11-NEXT:    s_waitcnt vmcnt(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 .LBB13_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: global_agent_atomic_fsub_noret_f32__offset12b_neg__ftz:3105; GFX10:       ; %bb.0:3106; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3107; GFX10-NEXT:    global_load_dword v4, v[0:1], off offset:-20483108; GFX10-NEXT:    s_mov_b32 s4, 03109; GFX10-NEXT:  .LBB13_1: ; %atomicrmw.start3110; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=13111; GFX10-NEXT:    s_waitcnt vmcnt(0)3112; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v23113; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03114; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:-2048 glc3115; GFX10-NEXT:    s_waitcnt vmcnt(0)3116; GFX10-NEXT:    buffer_gl1_inv3117; GFX10-NEXT:    buffer_gl0_inv3118; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43119; GFX10-NEXT:    v_mov_b32_e32 v4, v33120; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s43121; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s43122; GFX10-NEXT:    s_cbranch_execnz .LBB13_13123; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end3124; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s43125; GFX10-NEXT:    s_setpc_b64 s[30:31]3126;3127; GFX90A-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_neg__ftz:3128; GFX90A:       ; %bb.0:3129; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3130; GFX90A-NEXT:    global_load_dword v5, v[0:1], off offset:-20483131; GFX90A-NEXT:    s_mov_b64 s[4:5], 03132; GFX90A-NEXT:  .LBB13_1: ; %atomicrmw.start3133; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=13134; GFX90A-NEXT:    s_waitcnt vmcnt(0)3135; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v23136; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:-2048 glc3137; GFX90A-NEXT:    s_waitcnt vmcnt(0)3138; GFX90A-NEXT:    buffer_wbinvl13139; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v53140; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3141; GFX90A-NEXT:    v_mov_b32_e32 v5, v33142; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]3143; GFX90A-NEXT:    s_cbranch_execnz .LBB13_13144; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end3145; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]3146; GFX90A-NEXT:    s_setpc_b64 s[30:31]3147;3148; GFX908-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_neg__ftz:3149; GFX908:       ; %bb.0:3150; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3151; GFX908-NEXT:    global_load_dword v4, v[0:1], off offset:-20483152; GFX908-NEXT:    s_mov_b64 s[4:5], 03153; GFX908-NEXT:  .LBB13_1: ; %atomicrmw.start3154; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=13155; GFX908-NEXT:    s_waitcnt vmcnt(0)3156; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v23157; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:-2048 glc3158; GFX908-NEXT:    s_waitcnt vmcnt(0)3159; GFX908-NEXT:    buffer_wbinvl13160; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v43161; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3162; GFX908-NEXT:    v_mov_b32_e32 v4, v33163; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]3164; GFX908-NEXT:    s_cbranch_execnz .LBB13_13165; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end3166; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3167; GFX908-NEXT:    s_setpc_b64 s[30:31]3168;3169; GFX8-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_neg__ftz:3170; GFX8:       ; %bb.0:3171; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3172; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffff800, v03173; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc3174; GFX8-NEXT:    flat_load_dword v4, v[0:1]3175; GFX8-NEXT:    s_mov_b64 s[4:5], 03176; GFX8-NEXT:  .LBB13_1: ; %atomicrmw.start3177; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=13178; GFX8-NEXT:    s_waitcnt vmcnt(0)3179; GFX8-NEXT:    v_sub_f32_e32 v3, v4, v23180; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc3181; GFX8-NEXT:    s_waitcnt vmcnt(0)3182; GFX8-NEXT:    buffer_wbinvl13183; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v43184; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3185; GFX8-NEXT:    v_mov_b32_e32 v4, v33186; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]3187; GFX8-NEXT:    s_cbranch_execnz .LBB13_13188; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end3189; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3190; GFX8-NEXT:    s_setpc_b64 s[30:31]3191;3192; GFX7-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_neg__ftz:3193; GFX7:       ; %bb.0:3194; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3195; GFX7-NEXT:    s_movk_i32 s4, 0xf8003196; GFX7-NEXT:    s_mov_b32 s5, -13197; GFX7-NEXT:    s_mov_b32 s7, 0xf0003198; GFX7-NEXT:    s_mov_b32 s6, 03199; GFX7-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr643200; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v03201; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc3202; GFX7-NEXT:    s_mov_b64 s[8:9], 03203; GFX7-NEXT:    s_mov_b32 s4, s63204; GFX7-NEXT:    s_mov_b32 s5, s63205; GFX7-NEXT:  .LBB13_1: ; %atomicrmw.start3206; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=13207; GFX7-NEXT:    s_waitcnt vmcnt(0)3208; GFX7-NEXT:    v_sub_f32_e32 v3, v4, v23209; GFX7-NEXT:    v_mov_b32_e32 v6, v43210; GFX7-NEXT:    v_mov_b32_e32 v5, v33211; GFX7-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 glc3212; GFX7-NEXT:    s_waitcnt vmcnt(0)3213; GFX7-NEXT:    buffer_wbinvl13214; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v43215; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]3216; GFX7-NEXT:    v_mov_b32_e32 v4, v53217; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]3218; GFX7-NEXT:    s_cbranch_execnz .LBB13_13219; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end3220; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]3221; GFX7-NEXT:    s_setpc_b64 s[30:31]3222;3223; GFX6-LABEL: global_agent_atomic_fsub_noret_f32__offset12b_neg__ftz:3224; GFX6:       ; %bb.0:3225; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3226; GFX6-NEXT:    s_movk_i32 s4, 0xf8003227; GFX6-NEXT:    s_mov_b32 s5, -13228; GFX6-NEXT:    s_mov_b32 s7, 0xf0003229; GFX6-NEXT:    s_mov_b32 s6, 03230; GFX6-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr643231; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v03232; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc3233; GFX6-NEXT:    s_mov_b64 s[8:9], 03234; GFX6-NEXT:    s_mov_b32 s4, s63235; GFX6-NEXT:    s_mov_b32 s5, s63236; GFX6-NEXT:  .LBB13_1: ; %atomicrmw.start3237; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=13238; GFX6-NEXT:    s_waitcnt vmcnt(0)3239; GFX6-NEXT:    v_sub_f32_e32 v3, v4, v23240; GFX6-NEXT:    s_waitcnt expcnt(0)3241; GFX6-NEXT:    v_mov_b32_e32 v6, v43242; GFX6-NEXT:    v_mov_b32_e32 v5, v33243; GFX6-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 glc3244; GFX6-NEXT:    s_waitcnt vmcnt(0)3245; GFX6-NEXT:    buffer_wbinvl13246; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v43247; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]3248; GFX6-NEXT:    v_mov_b32_e32 v4, v53249; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]3250; GFX6-NEXT:    s_cbranch_execnz .LBB13_13251; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end3252; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]3253; GFX6-NEXT:    s_waitcnt expcnt(0)3254; GFX6-NEXT:    s_setpc_b64 s[30:31]3255  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 -5123256  %unused = atomicrmw fsub ptr addrspace(1) %gep, float %val syncscope("agent") seq_cst3257  ret void3258}3259 3260define float @global_system_atomic_fsub_ret_f32__offset12b_pos__ftz(ptr addrspace(1) %ptr, float %val) #1 {3261; GFX12-LABEL: global_system_atomic_fsub_ret_f32__offset12b_pos__ftz:3262; GFX12:       ; %bb.0:3263; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03264; GFX12-NEXT:    s_wait_expcnt 0x03265; GFX12-NEXT:    s_wait_samplecnt 0x03266; GFX12-NEXT:    s_wait_bvhcnt 0x03267; GFX12-NEXT:    s_wait_kmcnt 0x03268; GFX12-NEXT:    global_load_b32 v3, v[0:1], off offset:20443269; GFX12-NEXT:    s_mov_b32 s0, 03270; GFX12-NEXT:  .LBB14_1: ; %atomicrmw.start3271; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=13272; GFX12-NEXT:    s_wait_loadcnt 0x03273; GFX12-NEXT:    v_mov_b32_e32 v4, v33274; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)3275; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v23276; GFX12-NEXT:    global_wb scope:SCOPE_SYS3277; GFX12-NEXT:    s_wait_storecnt 0x03278; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS3279; GFX12-NEXT:    s_wait_loadcnt 0x03280; GFX12-NEXT:    global_inv scope:SCOPE_SYS3281; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43282; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3283; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s03284; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3285; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03286; GFX12-NEXT:    s_cbranch_execnz .LBB14_13287; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end3288; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s03289; GFX12-NEXT:    v_mov_b32_e32 v0, v33290; GFX12-NEXT:    s_wait_loadcnt 0x03291; GFX12-NEXT:    s_setpc_b64 s[30:31]3292;3293; GFX942-LABEL: global_system_atomic_fsub_ret_f32__offset12b_pos__ftz:3294; GFX942:       ; %bb.0:3295; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3296; GFX942-NEXT:    global_load_dword v5, v[0:1], off offset:20443297; GFX942-NEXT:    s_mov_b64 s[0:1], 03298; GFX942-NEXT:  .LBB14_1: ; %atomicrmw.start3299; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=13300; GFX942-NEXT:    s_waitcnt vmcnt(0)3301; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v23302; GFX942-NEXT:    buffer_wbl2 sc0 sc13303; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 sc0 sc13304; GFX942-NEXT:    s_waitcnt vmcnt(0)3305; GFX942-NEXT:    buffer_inv sc0 sc13306; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v53307; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]3308; GFX942-NEXT:    v_mov_b32_e32 v5, v33309; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]3310; GFX942-NEXT:    s_cbranch_execnz .LBB14_13311; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end3312; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]3313; GFX942-NEXT:    v_mov_b32_e32 v0, v33314; GFX942-NEXT:    s_setpc_b64 s[30:31]3315;3316; GFX11-LABEL: global_system_atomic_fsub_ret_f32__offset12b_pos__ftz:3317; GFX11:       ; %bb.0:3318; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3319; GFX11-NEXT:    global_load_b32 v3, v[0:1], off offset:20443320; GFX11-NEXT:    s_mov_b32 s0, 03321; GFX11-NEXT:  .LBB14_1: ; %atomicrmw.start3322; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=13323; GFX11-NEXT:    s_waitcnt vmcnt(0)3324; GFX11-NEXT:    v_mov_b32_e32 v4, v33325; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)3326; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v23327; GFX11-NEXT:    s_waitcnt_vscnt null, 0x03328; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 glc3329; GFX11-NEXT:    s_waitcnt vmcnt(0)3330; GFX11-NEXT:    buffer_gl1_inv3331; GFX11-NEXT:    buffer_gl0_inv3332; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43333; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s03334; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3335; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03336; GFX11-NEXT:    s_cbranch_execnz .LBB14_13337; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end3338; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s03339; GFX11-NEXT:    v_mov_b32_e32 v0, v33340; GFX11-NEXT:    s_setpc_b64 s[30:31]3341;3342; GFX10-LABEL: global_system_atomic_fsub_ret_f32__offset12b_pos__ftz:3343; GFX10:       ; %bb.0:3344; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3345; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:20443346; GFX10-NEXT:    s_mov_b32 s4, 03347; GFX10-NEXT:  .LBB14_1: ; %atomicrmw.start3348; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=13349; GFX10-NEXT:    s_waitcnt vmcnt(0)3350; GFX10-NEXT:    v_mov_b32_e32 v4, v33351; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v23352; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03353; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc3354; GFX10-NEXT:    s_waitcnt vmcnt(0)3355; GFX10-NEXT:    buffer_gl1_inv3356; GFX10-NEXT:    buffer_gl0_inv3357; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43358; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s43359; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s43360; GFX10-NEXT:    s_cbranch_execnz .LBB14_13361; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end3362; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s43363; GFX10-NEXT:    v_mov_b32_e32 v0, v33364; GFX10-NEXT:    s_setpc_b64 s[30:31]3365;3366; GFX90A-LABEL: global_system_atomic_fsub_ret_f32__offset12b_pos__ftz:3367; GFX90A:       ; %bb.0:3368; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3369; GFX90A-NEXT:    global_load_dword v5, v[0:1], off offset:20443370; GFX90A-NEXT:    s_mov_b64 s[4:5], 03371; GFX90A-NEXT:  .LBB14_1: ; %atomicrmw.start3372; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=13373; GFX90A-NEXT:    s_waitcnt vmcnt(0)3374; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v23375; GFX90A-NEXT:    buffer_wbl23376; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 glc3377; GFX90A-NEXT:    s_waitcnt vmcnt(0)3378; GFX90A-NEXT:    buffer_invl23379; GFX90A-NEXT:    buffer_wbinvl13380; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v53381; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3382; GFX90A-NEXT:    v_mov_b32_e32 v5, v33383; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]3384; GFX90A-NEXT:    s_cbranch_execnz .LBB14_13385; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end3386; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]3387; GFX90A-NEXT:    v_mov_b32_e32 v0, v33388; GFX90A-NEXT:    s_setpc_b64 s[30:31]3389;3390; GFX908-LABEL: global_system_atomic_fsub_ret_f32__offset12b_pos__ftz:3391; GFX908:       ; %bb.0:3392; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3393; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:20443394; GFX908-NEXT:    s_mov_b64 s[4:5], 03395; GFX908-NEXT:  .LBB14_1: ; %atomicrmw.start3396; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=13397; GFX908-NEXT:    s_waitcnt vmcnt(0)3398; GFX908-NEXT:    v_mov_b32_e32 v4, v33399; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v23400; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc3401; GFX908-NEXT:    s_waitcnt vmcnt(0)3402; GFX908-NEXT:    buffer_wbinvl13403; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v43404; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3405; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]3406; GFX908-NEXT:    s_cbranch_execnz .LBB14_13407; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end3408; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3409; GFX908-NEXT:    v_mov_b32_e32 v0, v33410; GFX908-NEXT:    s_setpc_b64 s[30:31]3411;3412; GFX8-LABEL: global_system_atomic_fsub_ret_f32__offset12b_pos__ftz:3413; GFX8:       ; %bb.0:3414; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3415; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v03416; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc3417; GFX8-NEXT:    flat_load_dword v0, v[3:4]3418; GFX8-NEXT:    s_mov_b64 s[4:5], 03419; GFX8-NEXT:  .LBB14_1: ; %atomicrmw.start3420; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=13421; GFX8-NEXT:    s_waitcnt vmcnt(0)3422; GFX8-NEXT:    v_mov_b32_e32 v1, v03423; GFX8-NEXT:    v_sub_f32_e32 v0, v1, v23424; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc3425; GFX8-NEXT:    s_waitcnt vmcnt(0)3426; GFX8-NEXT:    buffer_wbinvl13427; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v13428; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3429; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]3430; GFX8-NEXT:    s_cbranch_execnz .LBB14_13431; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end3432; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3433; GFX8-NEXT:    s_setpc_b64 s[30:31]3434;3435; GFX7-LABEL: global_system_atomic_fsub_ret_f32__offset12b_pos__ftz:3436; GFX7:       ; %bb.0:3437; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3438; GFX7-NEXT:    s_mov_b32 s6, 03439; GFX7-NEXT:    s_mov_b32 s7, 0xf0003440; GFX7-NEXT:    s_mov_b32 s4, s63441; GFX7-NEXT:    s_mov_b32 s5, s63442; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:20443443; GFX7-NEXT:    s_mov_b64 s[8:9], 03444; GFX7-NEXT:  .LBB14_1: ; %atomicrmw.start3445; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=13446; GFX7-NEXT:    s_waitcnt vmcnt(0)3447; GFX7-NEXT:    v_mov_b32_e32 v5, v33448; GFX7-NEXT:    v_sub_f32_e32 v4, v5, v23449; GFX7-NEXT:    v_mov_b32_e32 v3, v43450; GFX7-NEXT:    v_mov_b32_e32 v4, v53451; GFX7-NEXT:    buffer_atomic_cmpswap v[3:4], v[0:1], s[4:7], 0 addr64 offset:2044 glc3452; GFX7-NEXT:    s_waitcnt vmcnt(0)3453; GFX7-NEXT:    buffer_wbinvl13454; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v53455; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]3456; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]3457; GFX7-NEXT:    s_cbranch_execnz .LBB14_13458; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end3459; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]3460; GFX7-NEXT:    v_mov_b32_e32 v0, v33461; GFX7-NEXT:    s_setpc_b64 s[30:31]3462;3463; GFX6-LABEL: global_system_atomic_fsub_ret_f32__offset12b_pos__ftz:3464; GFX6:       ; %bb.0:3465; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3466; GFX6-NEXT:    s_mov_b32 s6, 03467; GFX6-NEXT:    s_mov_b32 s7, 0xf0003468; GFX6-NEXT:    s_mov_b32 s4, s63469; GFX6-NEXT:    s_mov_b32 s5, s63470; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:20443471; GFX6-NEXT:    s_mov_b64 s[8:9], 03472; GFX6-NEXT:  .LBB14_1: ; %atomicrmw.start3473; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=13474; GFX6-NEXT:    s_waitcnt vmcnt(0)3475; GFX6-NEXT:    v_mov_b32_e32 v5, v33476; GFX6-NEXT:    s_waitcnt expcnt(0)3477; GFX6-NEXT:    v_sub_f32_e32 v4, v5, v23478; GFX6-NEXT:    v_mov_b32_e32 v3, v43479; GFX6-NEXT:    v_mov_b32_e32 v4, v53480; GFX6-NEXT:    buffer_atomic_cmpswap v[3:4], v[0:1], s[4:7], 0 addr64 offset:2044 glc3481; GFX6-NEXT:    s_waitcnt vmcnt(0)3482; GFX6-NEXT:    buffer_wbinvl13483; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v53484; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]3485; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]3486; GFX6-NEXT:    s_cbranch_execnz .LBB14_13487; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end3488; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]3489; GFX6-NEXT:    v_mov_b32_e32 v0, v33490; GFX6-NEXT:    s_waitcnt expcnt(0)3491; GFX6-NEXT:    s_setpc_b64 s[30:31]3492  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 5113493  %result = atomicrmw fsub ptr addrspace(1) %gep, float %val seq_cst3494  ret float %result3495}3496 3497define void @global_system_atomic_fsub_noret_f32__offset12b_pos__ftz(ptr addrspace(1) %ptr, float %val) #1 {3498; GFX12-LABEL: global_system_atomic_fsub_noret_f32__offset12b_pos__ftz:3499; GFX12:       ; %bb.0:3500; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03501; GFX12-NEXT:    s_wait_expcnt 0x03502; GFX12-NEXT:    s_wait_samplecnt 0x03503; GFX12-NEXT:    s_wait_bvhcnt 0x03504; GFX12-NEXT:    s_wait_kmcnt 0x03505; GFX12-NEXT:    global_load_b32 v4, v[0:1], off offset:20443506; GFX12-NEXT:    s_mov_b32 s0, 03507; GFX12-NEXT:  .LBB15_1: ; %atomicrmw.start3508; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=13509; GFX12-NEXT:    s_wait_loadcnt 0x03510; GFX12-NEXT:    v_sub_f32_e32 v3, v4, v23511; GFX12-NEXT:    global_wb scope:SCOPE_SYS3512; GFX12-NEXT:    s_wait_storecnt 0x03513; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS3514; GFX12-NEXT:    s_wait_loadcnt 0x03515; GFX12-NEXT:    global_inv scope:SCOPE_SYS3516; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43517; GFX12-NEXT:    v_mov_b32_e32 v4, v33518; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3519; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s03520; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3521; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03522; GFX12-NEXT:    s_cbranch_execnz .LBB15_13523; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end3524; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s03525; GFX12-NEXT:    s_wait_loadcnt 0x03526; GFX12-NEXT:    s_setpc_b64 s[30:31]3527;3528; GFX942-LABEL: global_system_atomic_fsub_noret_f32__offset12b_pos__ftz:3529; GFX942:       ; %bb.0:3530; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3531; GFX942-NEXT:    global_load_dword v5, v[0:1], off offset:20443532; GFX942-NEXT:    s_mov_b64 s[0:1], 03533; GFX942-NEXT:  .LBB15_1: ; %atomicrmw.start3534; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=13535; GFX942-NEXT:    s_waitcnt vmcnt(0)3536; GFX942-NEXT:    v_sub_f32_e32 v4, v5, v23537; GFX942-NEXT:    buffer_wbl2 sc0 sc13538; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 sc0 sc13539; GFX942-NEXT:    s_waitcnt vmcnt(0)3540; GFX942-NEXT:    buffer_inv sc0 sc13541; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v53542; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]3543; GFX942-NEXT:    v_mov_b32_e32 v5, v33544; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]3545; GFX942-NEXT:    s_cbranch_execnz .LBB15_13546; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end3547; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]3548; GFX942-NEXT:    s_setpc_b64 s[30:31]3549;3550; GFX11-LABEL: global_system_atomic_fsub_noret_f32__offset12b_pos__ftz:3551; GFX11:       ; %bb.0:3552; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3553; GFX11-NEXT:    global_load_b32 v4, v[0:1], off offset:20443554; GFX11-NEXT:    s_mov_b32 s0, 03555; GFX11-NEXT:  .LBB15_1: ; %atomicrmw.start3556; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=13557; GFX11-NEXT:    s_waitcnt vmcnt(0)3558; GFX11-NEXT:    v_sub_f32_e32 v3, v4, v23559; GFX11-NEXT:    s_waitcnt_vscnt null, 0x03560; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 glc3561; GFX11-NEXT:    s_waitcnt vmcnt(0)3562; GFX11-NEXT:    buffer_gl1_inv3563; GFX11-NEXT:    buffer_gl0_inv3564; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43565; GFX11-NEXT:    v_mov_b32_e32 v4, v33566; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s03567; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3568; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03569; GFX11-NEXT:    s_cbranch_execnz .LBB15_13570; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end3571; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s03572; GFX11-NEXT:    s_setpc_b64 s[30:31]3573;3574; GFX10-LABEL: global_system_atomic_fsub_noret_f32__offset12b_pos__ftz:3575; GFX10:       ; %bb.0:3576; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3577; GFX10-NEXT:    global_load_dword v4, v[0:1], off offset:20443578; GFX10-NEXT:    s_mov_b32 s4, 03579; GFX10-NEXT:  .LBB15_1: ; %atomicrmw.start3580; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=13581; GFX10-NEXT:    s_waitcnt vmcnt(0)3582; GFX10-NEXT:    v_sub_f32_e32 v3, v4, v23583; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03584; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc3585; GFX10-NEXT:    s_waitcnt vmcnt(0)3586; GFX10-NEXT:    buffer_gl1_inv3587; GFX10-NEXT:    buffer_gl0_inv3588; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43589; GFX10-NEXT:    v_mov_b32_e32 v4, v33590; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s43591; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s43592; GFX10-NEXT:    s_cbranch_execnz .LBB15_13593; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end3594; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s43595; GFX10-NEXT:    s_setpc_b64 s[30:31]3596;3597; GFX90A-LABEL: global_system_atomic_fsub_noret_f32__offset12b_pos__ftz:3598; GFX90A:       ; %bb.0:3599; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3600; GFX90A-NEXT:    global_load_dword v5, v[0:1], off offset:20443601; GFX90A-NEXT:    s_mov_b64 s[4:5], 03602; GFX90A-NEXT:  .LBB15_1: ; %atomicrmw.start3603; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=13604; GFX90A-NEXT:    s_waitcnt vmcnt(0)3605; GFX90A-NEXT:    v_sub_f32_e32 v4, v5, v23606; GFX90A-NEXT:    buffer_wbl23607; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 glc3608; GFX90A-NEXT:    s_waitcnt vmcnt(0)3609; GFX90A-NEXT:    buffer_invl23610; GFX90A-NEXT:    buffer_wbinvl13611; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v53612; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3613; GFX90A-NEXT:    v_mov_b32_e32 v5, v33614; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]3615; GFX90A-NEXT:    s_cbranch_execnz .LBB15_13616; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end3617; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]3618; GFX90A-NEXT:    s_setpc_b64 s[30:31]3619;3620; GFX908-LABEL: global_system_atomic_fsub_noret_f32__offset12b_pos__ftz:3621; GFX908:       ; %bb.0:3622; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3623; GFX908-NEXT:    global_load_dword v4, v[0:1], off offset:20443624; GFX908-NEXT:    s_mov_b64 s[4:5], 03625; GFX908-NEXT:  .LBB15_1: ; %atomicrmw.start3626; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=13627; GFX908-NEXT:    s_waitcnt vmcnt(0)3628; GFX908-NEXT:    v_sub_f32_e32 v3, v4, v23629; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc3630; GFX908-NEXT:    s_waitcnt vmcnt(0)3631; GFX908-NEXT:    buffer_wbinvl13632; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v43633; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3634; GFX908-NEXT:    v_mov_b32_e32 v4, v33635; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]3636; GFX908-NEXT:    s_cbranch_execnz .LBB15_13637; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end3638; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3639; GFX908-NEXT:    s_setpc_b64 s[30:31]3640;3641; GFX8-LABEL: global_system_atomic_fsub_noret_f32__offset12b_pos__ftz:3642; GFX8:       ; %bb.0:3643; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3644; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v03645; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc3646; GFX8-NEXT:    flat_load_dword v4, v[0:1]3647; GFX8-NEXT:    s_mov_b64 s[4:5], 03648; GFX8-NEXT:  .LBB15_1: ; %atomicrmw.start3649; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=13650; GFX8-NEXT:    s_waitcnt vmcnt(0)3651; GFX8-NEXT:    v_sub_f32_e32 v3, v4, v23652; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc3653; GFX8-NEXT:    s_waitcnt vmcnt(0)3654; GFX8-NEXT:    buffer_wbinvl13655; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v43656; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3657; GFX8-NEXT:    v_mov_b32_e32 v4, v33658; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]3659; GFX8-NEXT:    s_cbranch_execnz .LBB15_13660; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end3661; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3662; GFX8-NEXT:    s_setpc_b64 s[30:31]3663;3664; GFX7-LABEL: global_system_atomic_fsub_noret_f32__offset12b_pos__ftz:3665; GFX7:       ; %bb.0:3666; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3667; GFX7-NEXT:    s_mov_b32 s6, 03668; GFX7-NEXT:    s_mov_b32 s7, 0xf0003669; GFX7-NEXT:    s_mov_b32 s4, s63670; GFX7-NEXT:    s_mov_b32 s5, s63671; GFX7-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr64 offset:20443672; GFX7-NEXT:    s_mov_b64 s[8:9], 03673; GFX7-NEXT:  .LBB15_1: ; %atomicrmw.start3674; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=13675; GFX7-NEXT:    s_waitcnt vmcnt(0)3676; GFX7-NEXT:    v_sub_f32_e32 v3, v4, v23677; GFX7-NEXT:    v_mov_b32_e32 v6, v43678; GFX7-NEXT:    v_mov_b32_e32 v5, v33679; GFX7-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 offset:2044 glc3680; GFX7-NEXT:    s_waitcnt vmcnt(0)3681; GFX7-NEXT:    buffer_wbinvl13682; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v43683; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]3684; GFX7-NEXT:    v_mov_b32_e32 v4, v53685; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]3686; GFX7-NEXT:    s_cbranch_execnz .LBB15_13687; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end3688; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]3689; GFX7-NEXT:    s_setpc_b64 s[30:31]3690;3691; GFX6-LABEL: global_system_atomic_fsub_noret_f32__offset12b_pos__ftz:3692; GFX6:       ; %bb.0:3693; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3694; GFX6-NEXT:    s_mov_b32 s6, 03695; GFX6-NEXT:    s_mov_b32 s7, 0xf0003696; GFX6-NEXT:    s_mov_b32 s4, s63697; GFX6-NEXT:    s_mov_b32 s5, s63698; GFX6-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr64 offset:20443699; GFX6-NEXT:    s_mov_b64 s[8:9], 03700; GFX6-NEXT:  .LBB15_1: ; %atomicrmw.start3701; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=13702; GFX6-NEXT:    s_waitcnt vmcnt(0)3703; GFX6-NEXT:    v_sub_f32_e32 v3, v4, v23704; GFX6-NEXT:    s_waitcnt expcnt(0)3705; GFX6-NEXT:    v_mov_b32_e32 v6, v43706; GFX6-NEXT:    v_mov_b32_e32 v5, v33707; GFX6-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 offset:2044 glc3708; GFX6-NEXT:    s_waitcnt vmcnt(0)3709; GFX6-NEXT:    buffer_wbinvl13710; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v43711; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]3712; GFX6-NEXT:    v_mov_b32_e32 v4, v53713; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]3714; GFX6-NEXT:    s_cbranch_execnz .LBB15_13715; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end3716; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]3717; GFX6-NEXT:    s_waitcnt expcnt(0)3718; GFX6-NEXT:    s_setpc_b64 s[30:31]3719  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 5113720  %unused = atomicrmw fsub ptr addrspace(1) %gep, float %val seq_cst3721  ret void3722}3723 3724; --------------------------------------------------------------------3725; double3726; --------------------------------------------------------------------3727 3728define double @global_agent_atomic_fsub_ret_f64(ptr addrspace(1) %ptr, double %val) #0 {3729; GFX12-LABEL: global_agent_atomic_fsub_ret_f64:3730; GFX12:       ; %bb.0:3731; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03732; GFX12-NEXT:    s_wait_expcnt 0x03733; GFX12-NEXT:    s_wait_samplecnt 0x03734; GFX12-NEXT:    s_wait_bvhcnt 0x03735; GFX12-NEXT:    s_wait_kmcnt 0x03736; GFX12-NEXT:    global_load_b64 v[4:5], v[0:1], off3737; GFX12-NEXT:    s_mov_b32 s0, 03738; GFX12-NEXT:  .LBB16_1: ; %atomicrmw.start3739; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=13740; GFX12-NEXT:    s_wait_loadcnt 0x03741; GFX12-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v43742; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)3743; GFX12-NEXT:    v_add_f64_e64 v[4:5], v[6:7], -v[2:3]3744; GFX12-NEXT:    s_wait_storecnt 0x03745; GFX12-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV3746; GFX12-NEXT:    s_wait_loadcnt 0x03747; GFX12-NEXT:    global_inv scope:SCOPE_DEV3748; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]3749; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3750; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s03751; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3752; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03753; GFX12-NEXT:    s_cbranch_execnz .LBB16_13754; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end3755; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s03756; GFX12-NEXT:    v_dual_mov_b32 v0, v4 :: v_dual_mov_b32 v1, v53757; GFX12-NEXT:    s_wait_loadcnt 0x03758; GFX12-NEXT:    s_setpc_b64 s[30:31]3759;3760; GFX942-LABEL: global_agent_atomic_fsub_ret_f64:3761; GFX942:       ; %bb.0:3762; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3763; GFX942-NEXT:    global_load_dwordx2 v[6:7], v[0:1], off3764; GFX942-NEXT:    s_mov_b64 s[0:1], 03765; GFX942-NEXT:  .LBB16_1: ; %atomicrmw.start3766; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=13767; GFX942-NEXT:    s_waitcnt vmcnt(0)3768; GFX942-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]3769; GFX942-NEXT:    buffer_wbl2 sc13770; GFX942-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off sc03771; GFX942-NEXT:    s_waitcnt vmcnt(0)3772; GFX942-NEXT:    buffer_inv sc13773; GFX942-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]3774; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]3775; GFX942-NEXT:    v_mov_b64_e32 v[6:7], v[4:5]3776; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]3777; GFX942-NEXT:    s_cbranch_execnz .LBB16_13778; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end3779; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]3780; GFX942-NEXT:    v_mov_b32_e32 v0, v43781; GFX942-NEXT:    v_mov_b32_e32 v1, v53782; GFX942-NEXT:    s_setpc_b64 s[30:31]3783;3784; GFX11-LABEL: global_agent_atomic_fsub_ret_f64:3785; GFX11:       ; %bb.0:3786; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3787; GFX11-NEXT:    global_load_b64 v[4:5], v[0:1], off3788; GFX11-NEXT:    s_mov_b32 s0, 03789; GFX11-NEXT:  .LBB16_1: ; %atomicrmw.start3790; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=13791; GFX11-NEXT:    s_waitcnt vmcnt(0)3792; GFX11-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v43793; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)3794; GFX11-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]3795; GFX11-NEXT:    s_waitcnt_vscnt null, 0x03796; GFX11-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off glc3797; GFX11-NEXT:    s_waitcnt vmcnt(0)3798; GFX11-NEXT:    buffer_gl1_inv3799; GFX11-NEXT:    buffer_gl0_inv3800; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]3801; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s03802; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3803; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03804; GFX11-NEXT:    s_cbranch_execnz .LBB16_13805; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end3806; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s03807; GFX11-NEXT:    v_dual_mov_b32 v0, v4 :: v_dual_mov_b32 v1, v53808; GFX11-NEXT:    s_setpc_b64 s[30:31]3809;3810; GFX10-LABEL: global_agent_atomic_fsub_ret_f64:3811; GFX10:       ; %bb.0:3812; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3813; GFX10-NEXT:    global_load_dwordx2 v[4:5], v[0:1], off3814; GFX10-NEXT:    s_mov_b32 s4, 03815; GFX10-NEXT:  .LBB16_1: ; %atomicrmw.start3816; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=13817; GFX10-NEXT:    s_waitcnt vmcnt(0)3818; GFX10-NEXT:    v_mov_b32_e32 v7, v53819; GFX10-NEXT:    v_mov_b32_e32 v6, v43820; GFX10-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]3821; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03822; GFX10-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off glc3823; GFX10-NEXT:    s_waitcnt vmcnt(0)3824; GFX10-NEXT:    buffer_gl1_inv3825; GFX10-NEXT:    buffer_gl0_inv3826; GFX10-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]3827; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s43828; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s43829; GFX10-NEXT:    s_cbranch_execnz .LBB16_13830; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end3831; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s43832; GFX10-NEXT:    v_mov_b32_e32 v0, v43833; GFX10-NEXT:    v_mov_b32_e32 v1, v53834; GFX10-NEXT:    s_setpc_b64 s[30:31]3835;3836; GFX90A-LABEL: global_agent_atomic_fsub_ret_f64:3837; GFX90A:       ; %bb.0:3838; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3839; GFX90A-NEXT:    global_load_dwordx2 v[6:7], v[0:1], off3840; GFX90A-NEXT:    s_mov_b64 s[4:5], 03841; GFX90A-NEXT:  .LBB16_1: ; %atomicrmw.start3842; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=13843; GFX90A-NEXT:    s_waitcnt vmcnt(0)3844; GFX90A-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]3845; GFX90A-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off glc3846; GFX90A-NEXT:    s_waitcnt vmcnt(0)3847; GFX90A-NEXT:    buffer_wbinvl13848; GFX90A-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]3849; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3850; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], v[4:5], v[4:5] op_sel:[0,1]3851; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]3852; GFX90A-NEXT:    s_cbranch_execnz .LBB16_13853; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end3854; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]3855; GFX90A-NEXT:    v_mov_b32_e32 v0, v43856; GFX90A-NEXT:    v_mov_b32_e32 v1, v53857; GFX90A-NEXT:    s_setpc_b64 s[30:31]3858;3859; GFX908-LABEL: global_agent_atomic_fsub_ret_f64:3860; GFX908:       ; %bb.0:3861; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3862; GFX908-NEXT:    global_load_dwordx2 v[4:5], v[0:1], off3863; GFX908-NEXT:    s_mov_b64 s[4:5], 03864; GFX908-NEXT:  .LBB16_1: ; %atomicrmw.start3865; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=13866; GFX908-NEXT:    s_waitcnt vmcnt(0)3867; GFX908-NEXT:    v_mov_b32_e32 v7, v53868; GFX908-NEXT:    v_mov_b32_e32 v6, v43869; GFX908-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]3870; GFX908-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off glc3871; GFX908-NEXT:    s_waitcnt vmcnt(0)3872; GFX908-NEXT:    buffer_wbinvl13873; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]3874; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3875; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]3876; GFX908-NEXT:    s_cbranch_execnz .LBB16_13877; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end3878; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3879; GFX908-NEXT:    v_mov_b32_e32 v0, v43880; GFX908-NEXT:    v_mov_b32_e32 v1, v53881; GFX908-NEXT:    s_setpc_b64 s[30:31]3882;3883; GFX8-LABEL: global_agent_atomic_fsub_ret_f64:3884; GFX8:       ; %bb.0:3885; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3886; GFX8-NEXT:    flat_load_dwordx2 v[4:5], v[0:1]3887; GFX8-NEXT:    s_mov_b64 s[4:5], 03888; GFX8-NEXT:  .LBB16_1: ; %atomicrmw.start3889; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=13890; GFX8-NEXT:    s_waitcnt vmcnt(0)3891; GFX8-NEXT:    v_mov_b32_e32 v7, v53892; GFX8-NEXT:    v_mov_b32_e32 v6, v43893; GFX8-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]3894; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc3895; GFX8-NEXT:    s_waitcnt vmcnt(0)3896; GFX8-NEXT:    buffer_wbinvl13897; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]3898; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3899; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]3900; GFX8-NEXT:    s_cbranch_execnz .LBB16_13901; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end3902; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3903; GFX8-NEXT:    v_mov_b32_e32 v0, v43904; GFX8-NEXT:    v_mov_b32_e32 v1, v53905; GFX8-NEXT:    s_setpc_b64 s[30:31]3906;3907; GFX7-LABEL: global_agent_atomic_fsub_ret_f64:3908; GFX7:       ; %bb.0:3909; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3910; GFX7-NEXT:    s_mov_b32 s6, 03911; GFX7-NEXT:    v_mov_b32_e32 v7, v13912; GFX7-NEXT:    v_mov_b32_e32 v6, v03913; GFX7-NEXT:    s_mov_b32 s7, 0xf0003914; GFX7-NEXT:    s_mov_b32 s4, s63915; GFX7-NEXT:    s_mov_b32 s5, s63916; GFX7-NEXT:    buffer_load_dwordx2 v[10:11], v[6:7], s[4:7], 0 addr643917; GFX7-NEXT:    v_mov_b32_e32 v5, v33918; GFX7-NEXT:    v_mov_b32_e32 v4, v23919; GFX7-NEXT:    s_mov_b64 s[8:9], 03920; GFX7-NEXT:  .LBB16_1: ; %atomicrmw.start3921; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=13922; GFX7-NEXT:    s_waitcnt vmcnt(0)3923; GFX7-NEXT:    v_add_f64 v[8:9], v[10:11], -v[4:5]3924; GFX7-NEXT:    v_mov_b32_e32 v0, v83925; GFX7-NEXT:    v_mov_b32_e32 v1, v93926; GFX7-NEXT:    v_mov_b32_e32 v2, v103927; GFX7-NEXT:    v_mov_b32_e32 v3, v113928; GFX7-NEXT:    buffer_atomic_cmpswap_x2 v[0:3], v[6:7], s[4:7], 0 addr64 glc3929; GFX7-NEXT:    s_waitcnt vmcnt(0)3930; GFX7-NEXT:    buffer_wbinvl13931; GFX7-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[10:11]3932; GFX7-NEXT:    v_mov_b32_e32 v11, v13933; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]3934; GFX7-NEXT:    v_mov_b32_e32 v10, v03935; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]3936; GFX7-NEXT:    s_cbranch_execnz .LBB16_13937; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end3938; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]3939; GFX7-NEXT:    s_setpc_b64 s[30:31]3940;3941; GFX6-LABEL: global_agent_atomic_fsub_ret_f64:3942; GFX6:       ; %bb.0:3943; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3944; GFX6-NEXT:    s_mov_b32 s6, 03945; GFX6-NEXT:    v_mov_b32_e32 v7, v13946; GFX6-NEXT:    v_mov_b32_e32 v6, v03947; GFX6-NEXT:    s_mov_b32 s7, 0xf0003948; GFX6-NEXT:    s_mov_b32 s4, s63949; GFX6-NEXT:    s_mov_b32 s5, s63950; GFX6-NEXT:    buffer_load_dwordx2 v[10:11], v[6:7], s[4:7], 0 addr643951; GFX6-NEXT:    v_mov_b32_e32 v5, v33952; GFX6-NEXT:    v_mov_b32_e32 v4, v23953; GFX6-NEXT:    s_mov_b64 s[8:9], 03954; GFX6-NEXT:  .LBB16_1: ; %atomicrmw.start3955; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=13956; GFX6-NEXT:    s_waitcnt vmcnt(0)3957; GFX6-NEXT:    v_add_f64 v[8:9], v[10:11], -v[4:5]3958; GFX6-NEXT:    s_waitcnt expcnt(0)3959; GFX6-NEXT:    v_mov_b32_e32 v0, v83960; GFX6-NEXT:    v_mov_b32_e32 v1, v93961; GFX6-NEXT:    v_mov_b32_e32 v2, v103962; GFX6-NEXT:    v_mov_b32_e32 v3, v113963; GFX6-NEXT:    buffer_atomic_cmpswap_x2 v[0:3], v[6:7], s[4:7], 0 addr64 glc3964; GFX6-NEXT:    s_waitcnt vmcnt(0)3965; GFX6-NEXT:    buffer_wbinvl13966; GFX6-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[10:11]3967; GFX6-NEXT:    v_mov_b32_e32 v11, v13968; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]3969; GFX6-NEXT:    v_mov_b32_e32 v10, v03970; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]3971; GFX6-NEXT:    s_cbranch_execnz .LBB16_13972; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end3973; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]3974; GFX6-NEXT:    s_waitcnt expcnt(0)3975; GFX6-NEXT:    s_setpc_b64 s[30:31]3976  %result = atomicrmw fsub ptr addrspace(1) %ptr, double %val syncscope("agent") seq_cst3977  ret double %result3978}3979 3980define double @global_agent_atomic_fsub_ret_f64__offset12b_pos(ptr addrspace(1) %ptr, double %val) #0 {3981; GFX12-LABEL: global_agent_atomic_fsub_ret_f64__offset12b_pos:3982; GFX12:       ; %bb.0:3983; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03984; GFX12-NEXT:    s_wait_expcnt 0x03985; GFX12-NEXT:    s_wait_samplecnt 0x03986; GFX12-NEXT:    s_wait_bvhcnt 0x03987; GFX12-NEXT:    s_wait_kmcnt 0x03988; GFX12-NEXT:    global_load_b64 v[4:5], v[0:1], off offset:20403989; GFX12-NEXT:    s_mov_b32 s0, 03990; GFX12-NEXT:  .LBB17_1: ; %atomicrmw.start3991; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=13992; GFX12-NEXT:    s_wait_loadcnt 0x03993; GFX12-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v43994; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)3995; GFX12-NEXT:    v_add_f64_e64 v[4:5], v[6:7], -v[2:3]3996; GFX12-NEXT:    s_wait_storecnt 0x03997; GFX12-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off offset:2040 th:TH_ATOMIC_RETURN scope:SCOPE_DEV3998; GFX12-NEXT:    s_wait_loadcnt 0x03999; GFX12-NEXT:    global_inv scope:SCOPE_DEV4000; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4001; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4002; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s04003; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4004; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04005; GFX12-NEXT:    s_cbranch_execnz .LBB17_14006; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end4007; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s04008; GFX12-NEXT:    v_dual_mov_b32 v0, v4 :: v_dual_mov_b32 v1, v54009; GFX12-NEXT:    s_wait_loadcnt 0x04010; GFX12-NEXT:    s_setpc_b64 s[30:31]4011;4012; GFX942-LABEL: global_agent_atomic_fsub_ret_f64__offset12b_pos:4013; GFX942:       ; %bb.0:4014; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4015; GFX942-NEXT:    global_load_dwordx2 v[6:7], v[0:1], off offset:20404016; GFX942-NEXT:    s_mov_b64 s[0:1], 04017; GFX942-NEXT:  .LBB17_1: ; %atomicrmw.start4018; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=14019; GFX942-NEXT:    s_waitcnt vmcnt(0)4020; GFX942-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4021; GFX942-NEXT:    buffer_wbl2 sc14022; GFX942-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off offset:2040 sc04023; GFX942-NEXT:    s_waitcnt vmcnt(0)4024; GFX942-NEXT:    buffer_inv sc14025; GFX942-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4026; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]4027; GFX942-NEXT:    v_mov_b64_e32 v[6:7], v[4:5]4028; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]4029; GFX942-NEXT:    s_cbranch_execnz .LBB17_14030; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end4031; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]4032; GFX942-NEXT:    v_mov_b32_e32 v0, v44033; GFX942-NEXT:    v_mov_b32_e32 v1, v54034; GFX942-NEXT:    s_setpc_b64 s[30:31]4035;4036; GFX11-LABEL: global_agent_atomic_fsub_ret_f64__offset12b_pos:4037; GFX11:       ; %bb.0:4038; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4039; GFX11-NEXT:    global_load_b64 v[4:5], v[0:1], off offset:20404040; GFX11-NEXT:    s_mov_b32 s0, 04041; GFX11-NEXT:  .LBB17_1: ; %atomicrmw.start4042; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=14043; GFX11-NEXT:    s_waitcnt vmcnt(0)4044; GFX11-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v44045; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)4046; GFX11-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4047; GFX11-NEXT:    s_waitcnt_vscnt null, 0x04048; GFX11-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off offset:2040 glc4049; GFX11-NEXT:    s_waitcnt vmcnt(0)4050; GFX11-NEXT:    buffer_gl1_inv4051; GFX11-NEXT:    buffer_gl0_inv4052; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4053; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s04054; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4055; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04056; GFX11-NEXT:    s_cbranch_execnz .LBB17_14057; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end4058; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s04059; GFX11-NEXT:    v_dual_mov_b32 v0, v4 :: v_dual_mov_b32 v1, v54060; GFX11-NEXT:    s_setpc_b64 s[30:31]4061;4062; GFX10-LABEL: global_agent_atomic_fsub_ret_f64__offset12b_pos:4063; GFX10:       ; %bb.0:4064; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4065; GFX10-NEXT:    global_load_dwordx2 v[4:5], v[0:1], off offset:20404066; GFX10-NEXT:    s_mov_b32 s4, 04067; GFX10-NEXT:  .LBB17_1: ; %atomicrmw.start4068; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=14069; GFX10-NEXT:    s_waitcnt vmcnt(0)4070; GFX10-NEXT:    v_mov_b32_e32 v7, v54071; GFX10-NEXT:    v_mov_b32_e32 v6, v44072; GFX10-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4073; GFX10-NEXT:    s_waitcnt_vscnt null, 0x04074; GFX10-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off offset:2040 glc4075; GFX10-NEXT:    s_waitcnt vmcnt(0)4076; GFX10-NEXT:    buffer_gl1_inv4077; GFX10-NEXT:    buffer_gl0_inv4078; GFX10-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4079; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s44080; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s44081; GFX10-NEXT:    s_cbranch_execnz .LBB17_14082; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end4083; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s44084; GFX10-NEXT:    v_mov_b32_e32 v0, v44085; GFX10-NEXT:    v_mov_b32_e32 v1, v54086; GFX10-NEXT:    s_setpc_b64 s[30:31]4087;4088; GFX90A-LABEL: global_agent_atomic_fsub_ret_f64__offset12b_pos:4089; GFX90A:       ; %bb.0:4090; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4091; GFX90A-NEXT:    global_load_dwordx2 v[6:7], v[0:1], off offset:20404092; GFX90A-NEXT:    s_mov_b64 s[4:5], 04093; GFX90A-NEXT:  .LBB17_1: ; %atomicrmw.start4094; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=14095; GFX90A-NEXT:    s_waitcnt vmcnt(0)4096; GFX90A-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4097; GFX90A-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off offset:2040 glc4098; GFX90A-NEXT:    s_waitcnt vmcnt(0)4099; GFX90A-NEXT:    buffer_wbinvl14100; GFX90A-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4101; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4102; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], v[4:5], v[4:5] op_sel:[0,1]4103; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]4104; GFX90A-NEXT:    s_cbranch_execnz .LBB17_14105; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end4106; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]4107; GFX90A-NEXT:    v_mov_b32_e32 v0, v44108; GFX90A-NEXT:    v_mov_b32_e32 v1, v54109; GFX90A-NEXT:    s_setpc_b64 s[30:31]4110;4111; GFX908-LABEL: global_agent_atomic_fsub_ret_f64__offset12b_pos:4112; GFX908:       ; %bb.0:4113; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4114; GFX908-NEXT:    global_load_dwordx2 v[4:5], v[0:1], off offset:20404115; GFX908-NEXT:    s_mov_b64 s[4:5], 04116; GFX908-NEXT:  .LBB17_1: ; %atomicrmw.start4117; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=14118; GFX908-NEXT:    s_waitcnt vmcnt(0)4119; GFX908-NEXT:    v_mov_b32_e32 v7, v54120; GFX908-NEXT:    v_mov_b32_e32 v6, v44121; GFX908-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4122; GFX908-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off offset:2040 glc4123; GFX908-NEXT:    s_waitcnt vmcnt(0)4124; GFX908-NEXT:    buffer_wbinvl14125; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4126; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4127; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]4128; GFX908-NEXT:    s_cbranch_execnz .LBB17_14129; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end4130; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]4131; GFX908-NEXT:    v_mov_b32_e32 v0, v44132; GFX908-NEXT:    v_mov_b32_e32 v1, v54133; GFX908-NEXT:    s_setpc_b64 s[30:31]4134;4135; GFX8-LABEL: global_agent_atomic_fsub_ret_f64__offset12b_pos:4136; GFX8:       ; %bb.0:4137; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4138; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0x7f8, v04139; GFX8-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc4140; GFX8-NEXT:    flat_load_dwordx2 v[0:1], v[4:5]4141; GFX8-NEXT:    s_mov_b64 s[4:5], 04142; GFX8-NEXT:  .LBB17_1: ; %atomicrmw.start4143; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=14144; GFX8-NEXT:    s_waitcnt vmcnt(0)4145; GFX8-NEXT:    v_mov_b32_e32 v9, v14146; GFX8-NEXT:    v_mov_b32_e32 v8, v04147; GFX8-NEXT:    v_add_f64 v[6:7], v[8:9], -v[2:3]4148; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[6:9] glc4149; GFX8-NEXT:    s_waitcnt vmcnt(0)4150; GFX8-NEXT:    buffer_wbinvl14151; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[8:9]4152; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4153; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]4154; GFX8-NEXT:    s_cbranch_execnz .LBB17_14155; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end4156; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]4157; GFX8-NEXT:    s_setpc_b64 s[30:31]4158;4159; GFX7-LABEL: global_agent_atomic_fsub_ret_f64__offset12b_pos:4160; GFX7:       ; %bb.0:4161; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4162; GFX7-NEXT:    s_mov_b32 s6, 04163; GFX7-NEXT:    v_mov_b32_e32 v7, v14164; GFX7-NEXT:    v_mov_b32_e32 v6, v04165; GFX7-NEXT:    s_mov_b32 s7, 0xf0004166; GFX7-NEXT:    s_mov_b32 s4, s64167; GFX7-NEXT:    s_mov_b32 s5, s64168; GFX7-NEXT:    buffer_load_dwordx2 v[10:11], v[6:7], s[4:7], 0 addr64 offset:20404169; GFX7-NEXT:    v_mov_b32_e32 v5, v34170; GFX7-NEXT:    v_mov_b32_e32 v4, v24171; GFX7-NEXT:    s_mov_b64 s[8:9], 04172; GFX7-NEXT:  .LBB17_1: ; %atomicrmw.start4173; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=14174; GFX7-NEXT:    s_waitcnt vmcnt(0)4175; GFX7-NEXT:    v_add_f64 v[8:9], v[10:11], -v[4:5]4176; GFX7-NEXT:    v_mov_b32_e32 v0, v84177; GFX7-NEXT:    v_mov_b32_e32 v1, v94178; GFX7-NEXT:    v_mov_b32_e32 v2, v104179; GFX7-NEXT:    v_mov_b32_e32 v3, v114180; GFX7-NEXT:    buffer_atomic_cmpswap_x2 v[0:3], v[6:7], s[4:7], 0 addr64 offset:2040 glc4181; GFX7-NEXT:    s_waitcnt vmcnt(0)4182; GFX7-NEXT:    buffer_wbinvl14183; GFX7-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[10:11]4184; GFX7-NEXT:    v_mov_b32_e32 v11, v14185; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]4186; GFX7-NEXT:    v_mov_b32_e32 v10, v04187; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]4188; GFX7-NEXT:    s_cbranch_execnz .LBB17_14189; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end4190; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]4191; GFX7-NEXT:    s_setpc_b64 s[30:31]4192;4193; GFX6-LABEL: global_agent_atomic_fsub_ret_f64__offset12b_pos:4194; GFX6:       ; %bb.0:4195; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4196; GFX6-NEXT:    s_mov_b32 s6, 04197; GFX6-NEXT:    v_mov_b32_e32 v7, v14198; GFX6-NEXT:    v_mov_b32_e32 v6, v04199; GFX6-NEXT:    s_mov_b32 s7, 0xf0004200; GFX6-NEXT:    s_mov_b32 s4, s64201; GFX6-NEXT:    s_mov_b32 s5, s64202; GFX6-NEXT:    buffer_load_dwordx2 v[10:11], v[6:7], s[4:7], 0 addr64 offset:20404203; GFX6-NEXT:    v_mov_b32_e32 v5, v34204; GFX6-NEXT:    v_mov_b32_e32 v4, v24205; GFX6-NEXT:    s_mov_b64 s[8:9], 04206; GFX6-NEXT:  .LBB17_1: ; %atomicrmw.start4207; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=14208; GFX6-NEXT:    s_waitcnt vmcnt(0)4209; GFX6-NEXT:    v_add_f64 v[8:9], v[10:11], -v[4:5]4210; GFX6-NEXT:    s_waitcnt expcnt(0)4211; GFX6-NEXT:    v_mov_b32_e32 v0, v84212; GFX6-NEXT:    v_mov_b32_e32 v1, v94213; GFX6-NEXT:    v_mov_b32_e32 v2, v104214; GFX6-NEXT:    v_mov_b32_e32 v3, v114215; GFX6-NEXT:    buffer_atomic_cmpswap_x2 v[0:3], v[6:7], s[4:7], 0 addr64 offset:2040 glc4216; GFX6-NEXT:    s_waitcnt vmcnt(0)4217; GFX6-NEXT:    buffer_wbinvl14218; GFX6-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[10:11]4219; GFX6-NEXT:    v_mov_b32_e32 v11, v14220; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]4221; GFX6-NEXT:    v_mov_b32_e32 v10, v04222; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]4223; GFX6-NEXT:    s_cbranch_execnz .LBB17_14224; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end4225; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]4226; GFX6-NEXT:    s_waitcnt expcnt(0)4227; GFX6-NEXT:    s_setpc_b64 s[30:31]4228  %gep = getelementptr double, ptr addrspace(1) %ptr, i64 2554229  %result = atomicrmw fsub ptr addrspace(1) %gep, double %val syncscope("agent") seq_cst4230  ret double %result4231}4232 4233define double @global_agent_atomic_fsub_ret_f64__offset12b_neg(ptr addrspace(1) %ptr, double %val) #0 {4234; GFX12-LABEL: global_agent_atomic_fsub_ret_f64__offset12b_neg:4235; GFX12:       ; %bb.0:4236; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04237; GFX12-NEXT:    s_wait_expcnt 0x04238; GFX12-NEXT:    s_wait_samplecnt 0x04239; GFX12-NEXT:    s_wait_bvhcnt 0x04240; GFX12-NEXT:    s_wait_kmcnt 0x04241; GFX12-NEXT:    global_load_b64 v[4:5], v[0:1], off offset:-20484242; GFX12-NEXT:    s_mov_b32 s0, 04243; GFX12-NEXT:  .LBB18_1: ; %atomicrmw.start4244; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=14245; GFX12-NEXT:    s_wait_loadcnt 0x04246; GFX12-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v44247; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)4248; GFX12-NEXT:    v_add_f64_e64 v[4:5], v[6:7], -v[2:3]4249; GFX12-NEXT:    s_wait_storecnt 0x04250; GFX12-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV4251; GFX12-NEXT:    s_wait_loadcnt 0x04252; GFX12-NEXT:    global_inv scope:SCOPE_DEV4253; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4254; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4255; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s04256; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4257; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04258; GFX12-NEXT:    s_cbranch_execnz .LBB18_14259; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end4260; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s04261; GFX12-NEXT:    v_dual_mov_b32 v0, v4 :: v_dual_mov_b32 v1, v54262; GFX12-NEXT:    s_wait_loadcnt 0x04263; GFX12-NEXT:    s_setpc_b64 s[30:31]4264;4265; GFX942-LABEL: global_agent_atomic_fsub_ret_f64__offset12b_neg:4266; GFX942:       ; %bb.0:4267; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4268; GFX942-NEXT:    global_load_dwordx2 v[6:7], v[0:1], off offset:-20484269; GFX942-NEXT:    s_mov_b64 s[0:1], 04270; GFX942-NEXT:  .LBB18_1: ; %atomicrmw.start4271; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=14272; GFX942-NEXT:    s_waitcnt vmcnt(0)4273; GFX942-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4274; GFX942-NEXT:    buffer_wbl2 sc14275; GFX942-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off offset:-2048 sc04276; GFX942-NEXT:    s_waitcnt vmcnt(0)4277; GFX942-NEXT:    buffer_inv sc14278; GFX942-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4279; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]4280; GFX942-NEXT:    v_mov_b64_e32 v[6:7], v[4:5]4281; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]4282; GFX942-NEXT:    s_cbranch_execnz .LBB18_14283; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end4284; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]4285; GFX942-NEXT:    v_mov_b32_e32 v0, v44286; GFX942-NEXT:    v_mov_b32_e32 v1, v54287; GFX942-NEXT:    s_setpc_b64 s[30:31]4288;4289; GFX11-LABEL: global_agent_atomic_fsub_ret_f64__offset12b_neg:4290; GFX11:       ; %bb.0:4291; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4292; GFX11-NEXT:    global_load_b64 v[4:5], v[0:1], off offset:-20484293; GFX11-NEXT:    s_mov_b32 s0, 04294; GFX11-NEXT:  .LBB18_1: ; %atomicrmw.start4295; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=14296; GFX11-NEXT:    s_waitcnt vmcnt(0)4297; GFX11-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v44298; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)4299; GFX11-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4300; GFX11-NEXT:    s_waitcnt_vscnt null, 0x04301; GFX11-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off offset:-2048 glc4302; GFX11-NEXT:    s_waitcnt vmcnt(0)4303; GFX11-NEXT:    buffer_gl1_inv4304; GFX11-NEXT:    buffer_gl0_inv4305; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4306; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s04307; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4308; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04309; GFX11-NEXT:    s_cbranch_execnz .LBB18_14310; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end4311; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s04312; GFX11-NEXT:    v_dual_mov_b32 v0, v4 :: v_dual_mov_b32 v1, v54313; GFX11-NEXT:    s_setpc_b64 s[30:31]4314;4315; GFX10-LABEL: global_agent_atomic_fsub_ret_f64__offset12b_neg:4316; GFX10:       ; %bb.0:4317; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4318; GFX10-NEXT:    global_load_dwordx2 v[4:5], v[0:1], off offset:-20484319; GFX10-NEXT:    s_mov_b32 s4, 04320; GFX10-NEXT:  .LBB18_1: ; %atomicrmw.start4321; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=14322; GFX10-NEXT:    s_waitcnt vmcnt(0)4323; GFX10-NEXT:    v_mov_b32_e32 v7, v54324; GFX10-NEXT:    v_mov_b32_e32 v6, v44325; GFX10-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4326; GFX10-NEXT:    s_waitcnt_vscnt null, 0x04327; GFX10-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off offset:-2048 glc4328; GFX10-NEXT:    s_waitcnt vmcnt(0)4329; GFX10-NEXT:    buffer_gl1_inv4330; GFX10-NEXT:    buffer_gl0_inv4331; GFX10-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4332; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s44333; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s44334; GFX10-NEXT:    s_cbranch_execnz .LBB18_14335; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end4336; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s44337; GFX10-NEXT:    v_mov_b32_e32 v0, v44338; GFX10-NEXT:    v_mov_b32_e32 v1, v54339; GFX10-NEXT:    s_setpc_b64 s[30:31]4340;4341; GFX90A-LABEL: global_agent_atomic_fsub_ret_f64__offset12b_neg:4342; GFX90A:       ; %bb.0:4343; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4344; GFX90A-NEXT:    global_load_dwordx2 v[6:7], v[0:1], off offset:-20484345; GFX90A-NEXT:    s_mov_b64 s[4:5], 04346; GFX90A-NEXT:  .LBB18_1: ; %atomicrmw.start4347; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=14348; GFX90A-NEXT:    s_waitcnt vmcnt(0)4349; GFX90A-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4350; GFX90A-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off offset:-2048 glc4351; GFX90A-NEXT:    s_waitcnt vmcnt(0)4352; GFX90A-NEXT:    buffer_wbinvl14353; GFX90A-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4354; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4355; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], v[4:5], v[4:5] op_sel:[0,1]4356; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]4357; GFX90A-NEXT:    s_cbranch_execnz .LBB18_14358; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end4359; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]4360; GFX90A-NEXT:    v_mov_b32_e32 v0, v44361; GFX90A-NEXT:    v_mov_b32_e32 v1, v54362; GFX90A-NEXT:    s_setpc_b64 s[30:31]4363;4364; GFX908-LABEL: global_agent_atomic_fsub_ret_f64__offset12b_neg:4365; GFX908:       ; %bb.0:4366; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4367; GFX908-NEXT:    global_load_dwordx2 v[4:5], v[0:1], off offset:-20484368; GFX908-NEXT:    s_mov_b64 s[4:5], 04369; GFX908-NEXT:  .LBB18_1: ; %atomicrmw.start4370; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=14371; GFX908-NEXT:    s_waitcnt vmcnt(0)4372; GFX908-NEXT:    v_mov_b32_e32 v7, v54373; GFX908-NEXT:    v_mov_b32_e32 v6, v44374; GFX908-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4375; GFX908-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off offset:-2048 glc4376; GFX908-NEXT:    s_waitcnt vmcnt(0)4377; GFX908-NEXT:    buffer_wbinvl14378; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4379; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4380; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]4381; GFX908-NEXT:    s_cbranch_execnz .LBB18_14382; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end4383; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]4384; GFX908-NEXT:    v_mov_b32_e32 v0, v44385; GFX908-NEXT:    v_mov_b32_e32 v1, v54386; GFX908-NEXT:    s_setpc_b64 s[30:31]4387;4388; GFX8-LABEL: global_agent_atomic_fsub_ret_f64__offset12b_neg:4389; GFX8:       ; %bb.0:4390; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4391; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0xfffff800, v04392; GFX8-NEXT:    v_addc_u32_e32 v5, vcc, -1, v1, vcc4393; GFX8-NEXT:    flat_load_dwordx2 v[0:1], v[4:5]4394; GFX8-NEXT:    s_mov_b64 s[4:5], 04395; GFX8-NEXT:  .LBB18_1: ; %atomicrmw.start4396; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=14397; GFX8-NEXT:    s_waitcnt vmcnt(0)4398; GFX8-NEXT:    v_mov_b32_e32 v9, v14399; GFX8-NEXT:    v_mov_b32_e32 v8, v04400; GFX8-NEXT:    v_add_f64 v[6:7], v[8:9], -v[2:3]4401; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[6:9] glc4402; GFX8-NEXT:    s_waitcnt vmcnt(0)4403; GFX8-NEXT:    buffer_wbinvl14404; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[8:9]4405; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4406; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]4407; GFX8-NEXT:    s_cbranch_execnz .LBB18_14408; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end4409; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]4410; GFX8-NEXT:    s_setpc_b64 s[30:31]4411;4412; GFX7-LABEL: global_agent_atomic_fsub_ret_f64__offset12b_neg:4413; GFX7:       ; %bb.0:4414; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4415; GFX7-NEXT:    s_movk_i32 s4, 0xf8004416; GFX7-NEXT:    s_mov_b32 s5, -14417; GFX7-NEXT:    s_mov_b32 s7, 0xf0004418; GFX7-NEXT:    s_mov_b32 s6, 04419; GFX7-NEXT:    buffer_load_dwordx2 v[8:9], v[0:1], s[4:7], 0 addr644420; GFX7-NEXT:    v_add_i32_e32 v10, vcc, 0xfffff800, v04421; GFX7-NEXT:    v_mov_b32_e32 v5, v34422; GFX7-NEXT:    v_mov_b32_e32 v4, v24423; GFX7-NEXT:    v_addc_u32_e32 v11, vcc, -1, v1, vcc4424; GFX7-NEXT:    s_mov_b64 s[8:9], 04425; GFX7-NEXT:    s_mov_b32 s4, s64426; GFX7-NEXT:    s_mov_b32 s5, s64427; GFX7-NEXT:  .LBB18_1: ; %atomicrmw.start4428; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=14429; GFX7-NEXT:    s_waitcnt vmcnt(0)4430; GFX7-NEXT:    v_add_f64 v[6:7], v[8:9], -v[4:5]4431; GFX7-NEXT:    v_mov_b32_e32 v0, v64432; GFX7-NEXT:    v_mov_b32_e32 v1, v74433; GFX7-NEXT:    v_mov_b32_e32 v2, v84434; GFX7-NEXT:    v_mov_b32_e32 v3, v94435; GFX7-NEXT:    buffer_atomic_cmpswap_x2 v[0:3], v[10:11], s[4:7], 0 addr64 glc4436; GFX7-NEXT:    s_waitcnt vmcnt(0)4437; GFX7-NEXT:    buffer_wbinvl14438; GFX7-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[8:9]4439; GFX7-NEXT:    v_mov_b32_e32 v9, v14440; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]4441; GFX7-NEXT:    v_mov_b32_e32 v8, v04442; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]4443; GFX7-NEXT:    s_cbranch_execnz .LBB18_14444; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end4445; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]4446; GFX7-NEXT:    s_setpc_b64 s[30:31]4447;4448; GFX6-LABEL: global_agent_atomic_fsub_ret_f64__offset12b_neg:4449; GFX6:       ; %bb.0:4450; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4451; GFX6-NEXT:    s_movk_i32 s4, 0xf8004452; GFX6-NEXT:    s_mov_b32 s5, -14453; GFX6-NEXT:    s_mov_b32 s7, 0xf0004454; GFX6-NEXT:    s_mov_b32 s6, 04455; GFX6-NEXT:    buffer_load_dwordx2 v[8:9], v[0:1], s[4:7], 0 addr644456; GFX6-NEXT:    v_add_i32_e32 v10, vcc, 0xfffff800, v04457; GFX6-NEXT:    v_mov_b32_e32 v5, v34458; GFX6-NEXT:    v_mov_b32_e32 v4, v24459; GFX6-NEXT:    v_addc_u32_e32 v11, vcc, -1, v1, vcc4460; GFX6-NEXT:    s_mov_b64 s[8:9], 04461; GFX6-NEXT:    s_mov_b32 s4, s64462; GFX6-NEXT:    s_mov_b32 s5, s64463; GFX6-NEXT:  .LBB18_1: ; %atomicrmw.start4464; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=14465; GFX6-NEXT:    s_waitcnt vmcnt(0)4466; GFX6-NEXT:    v_add_f64 v[6:7], v[8:9], -v[4:5]4467; GFX6-NEXT:    s_waitcnt expcnt(0)4468; GFX6-NEXT:    v_mov_b32_e32 v0, v64469; GFX6-NEXT:    v_mov_b32_e32 v1, v74470; GFX6-NEXT:    v_mov_b32_e32 v2, v84471; GFX6-NEXT:    v_mov_b32_e32 v3, v94472; GFX6-NEXT:    buffer_atomic_cmpswap_x2 v[0:3], v[10:11], s[4:7], 0 addr64 glc4473; GFX6-NEXT:    s_waitcnt vmcnt(0)4474; GFX6-NEXT:    buffer_wbinvl14475; GFX6-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[8:9]4476; GFX6-NEXT:    v_mov_b32_e32 v9, v14477; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]4478; GFX6-NEXT:    v_mov_b32_e32 v8, v04479; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]4480; GFX6-NEXT:    s_cbranch_execnz .LBB18_14481; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end4482; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]4483; GFX6-NEXT:    s_waitcnt expcnt(0)4484; GFX6-NEXT:    s_setpc_b64 s[30:31]4485  %gep = getelementptr double, ptr addrspace(1) %ptr, i64 -2564486  %result = atomicrmw fsub ptr addrspace(1) %gep, double %val syncscope("agent") seq_cst4487  ret double %result4488}4489 4490define void @global_agent_atomic_fsub_noret_f64(ptr addrspace(1) %ptr, double %val) #0 {4491; GFX12-LABEL: global_agent_atomic_fsub_noret_f64:4492; GFX12:       ; %bb.0:4493; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04494; GFX12-NEXT:    s_wait_expcnt 0x04495; GFX12-NEXT:    s_wait_samplecnt 0x04496; GFX12-NEXT:    s_wait_bvhcnt 0x04497; GFX12-NEXT:    s_wait_kmcnt 0x04498; GFX12-NEXT:    global_load_b64 v[6:7], v[0:1], off4499; GFX12-NEXT:    s_mov_b32 s0, 04500; GFX12-NEXT:  .LBB19_1: ; %atomicrmw.start4501; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=14502; GFX12-NEXT:    s_wait_loadcnt 0x04503; GFX12-NEXT:    v_add_f64_e64 v[4:5], v[6:7], -v[2:3]4504; GFX12-NEXT:    s_wait_storecnt 0x04505; GFX12-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV4506; GFX12-NEXT:    s_wait_loadcnt 0x04507; GFX12-NEXT:    global_inv scope:SCOPE_DEV4508; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4509; GFX12-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v44510; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4511; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s04512; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4513; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04514; GFX12-NEXT:    s_cbranch_execnz .LBB19_14515; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end4516; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s04517; GFX12-NEXT:    s_wait_loadcnt 0x04518; GFX12-NEXT:    s_setpc_b64 s[30:31]4519;4520; GFX942-LABEL: global_agent_atomic_fsub_noret_f64:4521; GFX942:       ; %bb.0:4522; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4523; GFX942-NEXT:    global_load_dwordx2 v[6:7], v[0:1], off4524; GFX942-NEXT:    s_mov_b64 s[0:1], 04525; GFX942-NEXT:  .LBB19_1: ; %atomicrmw.start4526; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=14527; GFX942-NEXT:    s_waitcnt vmcnt(0)4528; GFX942-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4529; GFX942-NEXT:    buffer_wbl2 sc14530; GFX942-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off sc04531; GFX942-NEXT:    s_waitcnt vmcnt(0)4532; GFX942-NEXT:    buffer_inv sc14533; GFX942-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4534; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]4535; GFX942-NEXT:    v_mov_b64_e32 v[6:7], v[4:5]4536; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]4537; GFX942-NEXT:    s_cbranch_execnz .LBB19_14538; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end4539; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]4540; GFX942-NEXT:    s_setpc_b64 s[30:31]4541;4542; GFX11-LABEL: global_agent_atomic_fsub_noret_f64:4543; GFX11:       ; %bb.0:4544; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4545; GFX11-NEXT:    global_load_b64 v[6:7], v[0:1], off4546; GFX11-NEXT:    s_mov_b32 s0, 04547; GFX11-NEXT:  .LBB19_1: ; %atomicrmw.start4548; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=14549; GFX11-NEXT:    s_waitcnt vmcnt(0)4550; GFX11-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4551; GFX11-NEXT:    s_waitcnt_vscnt null, 0x04552; GFX11-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off glc4553; GFX11-NEXT:    s_waitcnt vmcnt(0)4554; GFX11-NEXT:    buffer_gl1_inv4555; GFX11-NEXT:    buffer_gl0_inv4556; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4557; GFX11-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v44558; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s04559; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4560; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04561; GFX11-NEXT:    s_cbranch_execnz .LBB19_14562; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end4563; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s04564; GFX11-NEXT:    s_setpc_b64 s[30:31]4565;4566; GFX10-LABEL: global_agent_atomic_fsub_noret_f64:4567; GFX10:       ; %bb.0:4568; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4569; GFX10-NEXT:    global_load_dwordx2 v[6:7], v[0:1], off4570; GFX10-NEXT:    s_mov_b32 s4, 04571; GFX10-NEXT:  .LBB19_1: ; %atomicrmw.start4572; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=14573; GFX10-NEXT:    s_waitcnt vmcnt(0)4574; GFX10-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4575; GFX10-NEXT:    s_waitcnt_vscnt null, 0x04576; GFX10-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off glc4577; GFX10-NEXT:    s_waitcnt vmcnt(0)4578; GFX10-NEXT:    buffer_gl1_inv4579; GFX10-NEXT:    buffer_gl0_inv4580; GFX10-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4581; GFX10-NEXT:    v_mov_b32_e32 v7, v54582; GFX10-NEXT:    v_mov_b32_e32 v6, v44583; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s44584; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s44585; GFX10-NEXT:    s_cbranch_execnz .LBB19_14586; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end4587; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s44588; GFX10-NEXT:    s_setpc_b64 s[30:31]4589;4590; GFX90A-LABEL: global_agent_atomic_fsub_noret_f64:4591; GFX90A:       ; %bb.0:4592; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4593; GFX90A-NEXT:    global_load_dwordx2 v[6:7], v[0:1], off4594; GFX90A-NEXT:    s_mov_b64 s[4:5], 04595; GFX90A-NEXT:  .LBB19_1: ; %atomicrmw.start4596; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=14597; GFX90A-NEXT:    s_waitcnt vmcnt(0)4598; GFX90A-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4599; GFX90A-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off glc4600; GFX90A-NEXT:    s_waitcnt vmcnt(0)4601; GFX90A-NEXT:    buffer_wbinvl14602; GFX90A-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4603; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4604; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], v[4:5], v[4:5] op_sel:[0,1]4605; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]4606; GFX90A-NEXT:    s_cbranch_execnz .LBB19_14607; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end4608; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]4609; GFX90A-NEXT:    s_setpc_b64 s[30:31]4610;4611; GFX908-LABEL: global_agent_atomic_fsub_noret_f64:4612; GFX908:       ; %bb.0:4613; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4614; GFX908-NEXT:    global_load_dwordx2 v[6:7], v[0:1], off4615; GFX908-NEXT:    s_mov_b64 s[4:5], 04616; GFX908-NEXT:  .LBB19_1: ; %atomicrmw.start4617; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=14618; GFX908-NEXT:    s_waitcnt vmcnt(0)4619; GFX908-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4620; GFX908-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off glc4621; GFX908-NEXT:    s_waitcnt vmcnt(0)4622; GFX908-NEXT:    buffer_wbinvl14623; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4624; GFX908-NEXT:    v_mov_b32_e32 v7, v54625; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4626; GFX908-NEXT:    v_mov_b32_e32 v6, v44627; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]4628; GFX908-NEXT:    s_cbranch_execnz .LBB19_14629; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end4630; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]4631; GFX908-NEXT:    s_setpc_b64 s[30:31]4632;4633; GFX8-LABEL: global_agent_atomic_fsub_noret_f64:4634; GFX8:       ; %bb.0:4635; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4636; GFX8-NEXT:    flat_load_dwordx2 v[6:7], v[0:1]4637; GFX8-NEXT:    s_mov_b64 s[4:5], 04638; GFX8-NEXT:  .LBB19_1: ; %atomicrmw.start4639; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=14640; GFX8-NEXT:    s_waitcnt vmcnt(0)4641; GFX8-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4642; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc4643; GFX8-NEXT:    s_waitcnt vmcnt(0)4644; GFX8-NEXT:    buffer_wbinvl14645; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4646; GFX8-NEXT:    v_mov_b32_e32 v7, v54647; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4648; GFX8-NEXT:    v_mov_b32_e32 v6, v44649; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]4650; GFX8-NEXT:    s_cbranch_execnz .LBB19_14651; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end4652; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]4653; GFX8-NEXT:    s_setpc_b64 s[30:31]4654;4655; GFX7-LABEL: global_agent_atomic_fsub_noret_f64:4656; GFX7:       ; %bb.0:4657; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4658; GFX7-NEXT:    s_mov_b32 s6, 04659; GFX7-NEXT:    s_mov_b32 s7, 0xf0004660; GFX7-NEXT:    s_mov_b32 s4, s64661; GFX7-NEXT:    s_mov_b32 s5, s64662; GFX7-NEXT:    buffer_load_dwordx2 v[6:7], v[0:1], s[4:7], 0 addr644663; GFX7-NEXT:    s_mov_b64 s[8:9], 04664; GFX7-NEXT:  .LBB19_1: ; %atomicrmw.start4665; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=14666; GFX7-NEXT:    s_waitcnt vmcnt(0)4667; GFX7-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4668; GFX7-NEXT:    v_mov_b32_e32 v11, v74669; GFX7-NEXT:    v_mov_b32_e32 v10, v64670; GFX7-NEXT:    v_mov_b32_e32 v9, v54671; GFX7-NEXT:    v_mov_b32_e32 v8, v44672; GFX7-NEXT:    buffer_atomic_cmpswap_x2 v[8:11], v[0:1], s[4:7], 0 addr64 glc4673; GFX7-NEXT:    s_waitcnt vmcnt(0)4674; GFX7-NEXT:    buffer_wbinvl14675; GFX7-NEXT:    v_cmp_eq_u64_e32 vcc, v[8:9], v[6:7]4676; GFX7-NEXT:    v_mov_b32_e32 v6, v84677; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]4678; GFX7-NEXT:    v_mov_b32_e32 v7, v94679; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]4680; GFX7-NEXT:    s_cbranch_execnz .LBB19_14681; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end4682; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]4683; GFX7-NEXT:    s_setpc_b64 s[30:31]4684;4685; GFX6-LABEL: global_agent_atomic_fsub_noret_f64:4686; GFX6:       ; %bb.0:4687; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4688; GFX6-NEXT:    s_mov_b32 s6, 04689; GFX6-NEXT:    s_mov_b32 s7, 0xf0004690; GFX6-NEXT:    s_mov_b32 s4, s64691; GFX6-NEXT:    s_mov_b32 s5, s64692; GFX6-NEXT:    buffer_load_dwordx2 v[6:7], v[0:1], s[4:7], 0 addr644693; GFX6-NEXT:    s_mov_b64 s[8:9], 04694; GFX6-NEXT:  .LBB19_1: ; %atomicrmw.start4695; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=14696; GFX6-NEXT:    s_waitcnt vmcnt(0)4697; GFX6-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4698; GFX6-NEXT:    s_waitcnt expcnt(0)4699; GFX6-NEXT:    v_mov_b32_e32 v11, v74700; GFX6-NEXT:    v_mov_b32_e32 v10, v64701; GFX6-NEXT:    v_mov_b32_e32 v9, v54702; GFX6-NEXT:    v_mov_b32_e32 v8, v44703; GFX6-NEXT:    buffer_atomic_cmpswap_x2 v[8:11], v[0:1], s[4:7], 0 addr64 glc4704; GFX6-NEXT:    s_waitcnt vmcnt(0)4705; GFX6-NEXT:    buffer_wbinvl14706; GFX6-NEXT:    v_cmp_eq_u64_e32 vcc, v[8:9], v[6:7]4707; GFX6-NEXT:    v_mov_b32_e32 v6, v84708; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]4709; GFX6-NEXT:    v_mov_b32_e32 v7, v94710; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]4711; GFX6-NEXT:    s_cbranch_execnz .LBB19_14712; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end4713; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]4714; GFX6-NEXT:    s_waitcnt expcnt(0)4715; GFX6-NEXT:    s_setpc_b64 s[30:31]4716  %unused = atomicrmw fsub ptr addrspace(1) %ptr, double %val syncscope("agent") seq_cst4717  ret void4718}4719 4720define void @global_agent_atomic_fsub_noret_f64__offset12b_pos(ptr addrspace(1) %ptr, double %val) #0 {4721; GFX12-LABEL: global_agent_atomic_fsub_noret_f64__offset12b_pos:4722; GFX12:       ; %bb.0:4723; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04724; GFX12-NEXT:    s_wait_expcnt 0x04725; GFX12-NEXT:    s_wait_samplecnt 0x04726; GFX12-NEXT:    s_wait_bvhcnt 0x04727; GFX12-NEXT:    s_wait_kmcnt 0x04728; GFX12-NEXT:    global_load_b64 v[6:7], v[0:1], off offset:20404729; GFX12-NEXT:    s_mov_b32 s0, 04730; GFX12-NEXT:  .LBB20_1: ; %atomicrmw.start4731; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=14732; GFX12-NEXT:    s_wait_loadcnt 0x04733; GFX12-NEXT:    v_add_f64_e64 v[4:5], v[6:7], -v[2:3]4734; GFX12-NEXT:    s_wait_storecnt 0x04735; GFX12-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off offset:2040 th:TH_ATOMIC_RETURN scope:SCOPE_DEV4736; GFX12-NEXT:    s_wait_loadcnt 0x04737; GFX12-NEXT:    global_inv scope:SCOPE_DEV4738; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4739; GFX12-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v44740; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4741; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s04742; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4743; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04744; GFX12-NEXT:    s_cbranch_execnz .LBB20_14745; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end4746; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s04747; GFX12-NEXT:    s_wait_loadcnt 0x04748; GFX12-NEXT:    s_setpc_b64 s[30:31]4749;4750; GFX942-LABEL: global_agent_atomic_fsub_noret_f64__offset12b_pos:4751; GFX942:       ; %bb.0:4752; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4753; GFX942-NEXT:    global_load_dwordx2 v[6:7], v[0:1], off offset:20404754; GFX942-NEXT:    s_mov_b64 s[0:1], 04755; GFX942-NEXT:  .LBB20_1: ; %atomicrmw.start4756; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=14757; GFX942-NEXT:    s_waitcnt vmcnt(0)4758; GFX942-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4759; GFX942-NEXT:    buffer_wbl2 sc14760; GFX942-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off offset:2040 sc04761; GFX942-NEXT:    s_waitcnt vmcnt(0)4762; GFX942-NEXT:    buffer_inv sc14763; GFX942-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4764; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]4765; GFX942-NEXT:    v_mov_b64_e32 v[6:7], v[4:5]4766; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]4767; GFX942-NEXT:    s_cbranch_execnz .LBB20_14768; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end4769; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]4770; GFX942-NEXT:    s_setpc_b64 s[30:31]4771;4772; GFX11-LABEL: global_agent_atomic_fsub_noret_f64__offset12b_pos:4773; GFX11:       ; %bb.0:4774; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4775; GFX11-NEXT:    global_load_b64 v[6:7], v[0:1], off offset:20404776; GFX11-NEXT:    s_mov_b32 s0, 04777; GFX11-NEXT:  .LBB20_1: ; %atomicrmw.start4778; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=14779; GFX11-NEXT:    s_waitcnt vmcnt(0)4780; GFX11-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4781; GFX11-NEXT:    s_waitcnt_vscnt null, 0x04782; GFX11-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off offset:2040 glc4783; GFX11-NEXT:    s_waitcnt vmcnt(0)4784; GFX11-NEXT:    buffer_gl1_inv4785; GFX11-NEXT:    buffer_gl0_inv4786; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4787; GFX11-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v44788; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s04789; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4790; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04791; GFX11-NEXT:    s_cbranch_execnz .LBB20_14792; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end4793; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s04794; GFX11-NEXT:    s_setpc_b64 s[30:31]4795;4796; GFX10-LABEL: global_agent_atomic_fsub_noret_f64__offset12b_pos:4797; GFX10:       ; %bb.0:4798; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4799; GFX10-NEXT:    global_load_dwordx2 v[6:7], v[0:1], off offset:20404800; GFX10-NEXT:    s_mov_b32 s4, 04801; GFX10-NEXT:  .LBB20_1: ; %atomicrmw.start4802; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=14803; GFX10-NEXT:    s_waitcnt vmcnt(0)4804; GFX10-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4805; GFX10-NEXT:    s_waitcnt_vscnt null, 0x04806; GFX10-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off offset:2040 glc4807; GFX10-NEXT:    s_waitcnt vmcnt(0)4808; GFX10-NEXT:    buffer_gl1_inv4809; GFX10-NEXT:    buffer_gl0_inv4810; GFX10-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4811; GFX10-NEXT:    v_mov_b32_e32 v7, v54812; GFX10-NEXT:    v_mov_b32_e32 v6, v44813; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s44814; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s44815; GFX10-NEXT:    s_cbranch_execnz .LBB20_14816; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end4817; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s44818; GFX10-NEXT:    s_setpc_b64 s[30:31]4819;4820; GFX90A-LABEL: global_agent_atomic_fsub_noret_f64__offset12b_pos:4821; GFX90A:       ; %bb.0:4822; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4823; GFX90A-NEXT:    global_load_dwordx2 v[6:7], v[0:1], off offset:20404824; GFX90A-NEXT:    s_mov_b64 s[4:5], 04825; GFX90A-NEXT:  .LBB20_1: ; %atomicrmw.start4826; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=14827; GFX90A-NEXT:    s_waitcnt vmcnt(0)4828; GFX90A-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4829; GFX90A-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off offset:2040 glc4830; GFX90A-NEXT:    s_waitcnt vmcnt(0)4831; GFX90A-NEXT:    buffer_wbinvl14832; GFX90A-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4833; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4834; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], v[4:5], v[4:5] op_sel:[0,1]4835; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]4836; GFX90A-NEXT:    s_cbranch_execnz .LBB20_14837; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end4838; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]4839; GFX90A-NEXT:    s_setpc_b64 s[30:31]4840;4841; GFX908-LABEL: global_agent_atomic_fsub_noret_f64__offset12b_pos:4842; GFX908:       ; %bb.0:4843; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4844; GFX908-NEXT:    global_load_dwordx2 v[6:7], v[0:1], off offset:20404845; GFX908-NEXT:    s_mov_b64 s[4:5], 04846; GFX908-NEXT:  .LBB20_1: ; %atomicrmw.start4847; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=14848; GFX908-NEXT:    s_waitcnt vmcnt(0)4849; GFX908-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4850; GFX908-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off offset:2040 glc4851; GFX908-NEXT:    s_waitcnt vmcnt(0)4852; GFX908-NEXT:    buffer_wbinvl14853; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4854; GFX908-NEXT:    v_mov_b32_e32 v7, v54855; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4856; GFX908-NEXT:    v_mov_b32_e32 v6, v44857; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]4858; GFX908-NEXT:    s_cbranch_execnz .LBB20_14859; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end4860; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]4861; GFX908-NEXT:    s_setpc_b64 s[30:31]4862;4863; GFX8-LABEL: global_agent_atomic_fsub_noret_f64__offset12b_pos:4864; GFX8:       ; %bb.0:4865; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4866; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7f8, v04867; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc4868; GFX8-NEXT:    flat_load_dwordx2 v[6:7], v[0:1]4869; GFX8-NEXT:    s_mov_b64 s[4:5], 04870; GFX8-NEXT:  .LBB20_1: ; %atomicrmw.start4871; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=14872; GFX8-NEXT:    s_waitcnt vmcnt(0)4873; GFX8-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4874; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc4875; GFX8-NEXT:    s_waitcnt vmcnt(0)4876; GFX8-NEXT:    buffer_wbinvl14877; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4878; GFX8-NEXT:    v_mov_b32_e32 v7, v54879; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4880; GFX8-NEXT:    v_mov_b32_e32 v6, v44881; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]4882; GFX8-NEXT:    s_cbranch_execnz .LBB20_14883; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end4884; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]4885; GFX8-NEXT:    s_setpc_b64 s[30:31]4886;4887; GFX7-LABEL: global_agent_atomic_fsub_noret_f64__offset12b_pos:4888; GFX7:       ; %bb.0:4889; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4890; GFX7-NEXT:    s_mov_b32 s6, 04891; GFX7-NEXT:    s_mov_b32 s7, 0xf0004892; GFX7-NEXT:    s_mov_b32 s4, s64893; GFX7-NEXT:    s_mov_b32 s5, s64894; GFX7-NEXT:    buffer_load_dwordx2 v[6:7], v[0:1], s[4:7], 0 addr64 offset:20404895; GFX7-NEXT:    s_mov_b64 s[8:9], 04896; GFX7-NEXT:  .LBB20_1: ; %atomicrmw.start4897; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=14898; GFX7-NEXT:    s_waitcnt vmcnt(0)4899; GFX7-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4900; GFX7-NEXT:    v_mov_b32_e32 v11, v74901; GFX7-NEXT:    v_mov_b32_e32 v10, v64902; GFX7-NEXT:    v_mov_b32_e32 v9, v54903; GFX7-NEXT:    v_mov_b32_e32 v8, v44904; GFX7-NEXT:    buffer_atomic_cmpswap_x2 v[8:11], v[0:1], s[4:7], 0 addr64 offset:2040 glc4905; GFX7-NEXT:    s_waitcnt vmcnt(0)4906; GFX7-NEXT:    buffer_wbinvl14907; GFX7-NEXT:    v_cmp_eq_u64_e32 vcc, v[8:9], v[6:7]4908; GFX7-NEXT:    v_mov_b32_e32 v6, v84909; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]4910; GFX7-NEXT:    v_mov_b32_e32 v7, v94911; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]4912; GFX7-NEXT:    s_cbranch_execnz .LBB20_14913; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end4914; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]4915; GFX7-NEXT:    s_setpc_b64 s[30:31]4916;4917; GFX6-LABEL: global_agent_atomic_fsub_noret_f64__offset12b_pos:4918; GFX6:       ; %bb.0:4919; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4920; GFX6-NEXT:    s_mov_b32 s6, 04921; GFX6-NEXT:    s_mov_b32 s7, 0xf0004922; GFX6-NEXT:    s_mov_b32 s4, s64923; GFX6-NEXT:    s_mov_b32 s5, s64924; GFX6-NEXT:    buffer_load_dwordx2 v[6:7], v[0:1], s[4:7], 0 addr64 offset:20404925; GFX6-NEXT:    s_mov_b64 s[8:9], 04926; GFX6-NEXT:  .LBB20_1: ; %atomicrmw.start4927; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=14928; GFX6-NEXT:    s_waitcnt vmcnt(0)4929; GFX6-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4930; GFX6-NEXT:    s_waitcnt expcnt(0)4931; GFX6-NEXT:    v_mov_b32_e32 v11, v74932; GFX6-NEXT:    v_mov_b32_e32 v10, v64933; GFX6-NEXT:    v_mov_b32_e32 v9, v54934; GFX6-NEXT:    v_mov_b32_e32 v8, v44935; GFX6-NEXT:    buffer_atomic_cmpswap_x2 v[8:11], v[0:1], s[4:7], 0 addr64 offset:2040 glc4936; GFX6-NEXT:    s_waitcnt vmcnt(0)4937; GFX6-NEXT:    buffer_wbinvl14938; GFX6-NEXT:    v_cmp_eq_u64_e32 vcc, v[8:9], v[6:7]4939; GFX6-NEXT:    v_mov_b32_e32 v6, v84940; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]4941; GFX6-NEXT:    v_mov_b32_e32 v7, v94942; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]4943; GFX6-NEXT:    s_cbranch_execnz .LBB20_14944; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end4945; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]4946; GFX6-NEXT:    s_waitcnt expcnt(0)4947; GFX6-NEXT:    s_setpc_b64 s[30:31]4948  %gep = getelementptr double, ptr addrspace(1) %ptr, i64 2554949  %unused = atomicrmw fsub ptr addrspace(1) %gep, double %val syncscope("agent") seq_cst4950  ret void4951}4952 4953define void @global_agent_atomic_fsub_noret_f64__offset12b_neg(ptr addrspace(1) %ptr, double %val) #0 {4954; GFX12-LABEL: global_agent_atomic_fsub_noret_f64__offset12b_neg:4955; GFX12:       ; %bb.0:4956; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04957; GFX12-NEXT:    s_wait_expcnt 0x04958; GFX12-NEXT:    s_wait_samplecnt 0x04959; GFX12-NEXT:    s_wait_bvhcnt 0x04960; GFX12-NEXT:    s_wait_kmcnt 0x04961; GFX12-NEXT:    global_load_b64 v[6:7], v[0:1], off offset:-20484962; GFX12-NEXT:    s_mov_b32 s0, 04963; GFX12-NEXT:  .LBB21_1: ; %atomicrmw.start4964; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=14965; GFX12-NEXT:    s_wait_loadcnt 0x04966; GFX12-NEXT:    v_add_f64_e64 v[4:5], v[6:7], -v[2:3]4967; GFX12-NEXT:    s_wait_storecnt 0x04968; GFX12-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV4969; GFX12-NEXT:    s_wait_loadcnt 0x04970; GFX12-NEXT:    global_inv scope:SCOPE_DEV4971; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4972; GFX12-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v44973; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4974; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s04975; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4976; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04977; GFX12-NEXT:    s_cbranch_execnz .LBB21_14978; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end4979; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s04980; GFX12-NEXT:    s_wait_loadcnt 0x04981; GFX12-NEXT:    s_setpc_b64 s[30:31]4982;4983; GFX942-LABEL: global_agent_atomic_fsub_noret_f64__offset12b_neg:4984; GFX942:       ; %bb.0:4985; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4986; GFX942-NEXT:    global_load_dwordx2 v[6:7], v[0:1], off offset:-20484987; GFX942-NEXT:    s_mov_b64 s[0:1], 04988; GFX942-NEXT:  .LBB21_1: ; %atomicrmw.start4989; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=14990; GFX942-NEXT:    s_waitcnt vmcnt(0)4991; GFX942-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]4992; GFX942-NEXT:    buffer_wbl2 sc14993; GFX942-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off offset:-2048 sc04994; GFX942-NEXT:    s_waitcnt vmcnt(0)4995; GFX942-NEXT:    buffer_inv sc14996; GFX942-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4997; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]4998; GFX942-NEXT:    v_mov_b64_e32 v[6:7], v[4:5]4999; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]5000; GFX942-NEXT:    s_cbranch_execnz .LBB21_15001; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end5002; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]5003; GFX942-NEXT:    s_setpc_b64 s[30:31]5004;5005; GFX11-LABEL: global_agent_atomic_fsub_noret_f64__offset12b_neg:5006; GFX11:       ; %bb.0:5007; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5008; GFX11-NEXT:    global_load_b64 v[6:7], v[0:1], off offset:-20485009; GFX11-NEXT:    s_mov_b32 s0, 05010; GFX11-NEXT:  .LBB21_1: ; %atomicrmw.start5011; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=15012; GFX11-NEXT:    s_waitcnt vmcnt(0)5013; GFX11-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]5014; GFX11-NEXT:    s_waitcnt_vscnt null, 0x05015; GFX11-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off offset:-2048 glc5016; GFX11-NEXT:    s_waitcnt vmcnt(0)5017; GFX11-NEXT:    buffer_gl1_inv5018; GFX11-NEXT:    buffer_gl0_inv5019; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]5020; GFX11-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v45021; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s05022; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5023; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05024; GFX11-NEXT:    s_cbranch_execnz .LBB21_15025; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end5026; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s05027; GFX11-NEXT:    s_setpc_b64 s[30:31]5028;5029; GFX10-LABEL: global_agent_atomic_fsub_noret_f64__offset12b_neg:5030; GFX10:       ; %bb.0:5031; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5032; GFX10-NEXT:    global_load_dwordx2 v[6:7], v[0:1], off offset:-20485033; GFX10-NEXT:    s_mov_b32 s4, 05034; GFX10-NEXT:  .LBB21_1: ; %atomicrmw.start5035; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=15036; GFX10-NEXT:    s_waitcnt vmcnt(0)5037; GFX10-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]5038; GFX10-NEXT:    s_waitcnt_vscnt null, 0x05039; GFX10-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off offset:-2048 glc5040; GFX10-NEXT:    s_waitcnt vmcnt(0)5041; GFX10-NEXT:    buffer_gl1_inv5042; GFX10-NEXT:    buffer_gl0_inv5043; GFX10-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]5044; GFX10-NEXT:    v_mov_b32_e32 v7, v55045; GFX10-NEXT:    v_mov_b32_e32 v6, v45046; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s45047; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s45048; GFX10-NEXT:    s_cbranch_execnz .LBB21_15049; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end5050; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s45051; GFX10-NEXT:    s_setpc_b64 s[30:31]5052;5053; GFX90A-LABEL: global_agent_atomic_fsub_noret_f64__offset12b_neg:5054; GFX90A:       ; %bb.0:5055; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5056; GFX90A-NEXT:    global_load_dwordx2 v[6:7], v[0:1], off offset:-20485057; GFX90A-NEXT:    s_mov_b64 s[4:5], 05058; GFX90A-NEXT:  .LBB21_1: ; %atomicrmw.start5059; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=15060; GFX90A-NEXT:    s_waitcnt vmcnt(0)5061; GFX90A-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]5062; GFX90A-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off offset:-2048 glc5063; GFX90A-NEXT:    s_waitcnt vmcnt(0)5064; GFX90A-NEXT:    buffer_wbinvl15065; GFX90A-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]5066; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5067; GFX90A-NEXT:    v_pk_mov_b32 v[6:7], v[4:5], v[4:5] op_sel:[0,1]5068; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]5069; GFX90A-NEXT:    s_cbranch_execnz .LBB21_15070; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end5071; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]5072; GFX90A-NEXT:    s_setpc_b64 s[30:31]5073;5074; GFX908-LABEL: global_agent_atomic_fsub_noret_f64__offset12b_neg:5075; GFX908:       ; %bb.0:5076; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5077; GFX908-NEXT:    global_load_dwordx2 v[6:7], v[0:1], off offset:-20485078; GFX908-NEXT:    s_mov_b64 s[4:5], 05079; GFX908-NEXT:  .LBB21_1: ; %atomicrmw.start5080; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=15081; GFX908-NEXT:    s_waitcnt vmcnt(0)5082; GFX908-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]5083; GFX908-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off offset:-2048 glc5084; GFX908-NEXT:    s_waitcnt vmcnt(0)5085; GFX908-NEXT:    buffer_wbinvl15086; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]5087; GFX908-NEXT:    v_mov_b32_e32 v7, v55088; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5089; GFX908-NEXT:    v_mov_b32_e32 v6, v45090; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]5091; GFX908-NEXT:    s_cbranch_execnz .LBB21_15092; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end5093; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]5094; GFX908-NEXT:    s_setpc_b64 s[30:31]5095;5096; GFX8-LABEL: global_agent_atomic_fsub_noret_f64__offset12b_neg:5097; GFX8:       ; %bb.0:5098; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5099; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffff800, v05100; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc5101; GFX8-NEXT:    flat_load_dwordx2 v[6:7], v[0:1]5102; GFX8-NEXT:    s_mov_b64 s[4:5], 05103; GFX8-NEXT:  .LBB21_1: ; %atomicrmw.start5104; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=15105; GFX8-NEXT:    s_waitcnt vmcnt(0)5106; GFX8-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]5107; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc5108; GFX8-NEXT:    s_waitcnt vmcnt(0)5109; GFX8-NEXT:    buffer_wbinvl15110; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]5111; GFX8-NEXT:    v_mov_b32_e32 v7, v55112; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5113; GFX8-NEXT:    v_mov_b32_e32 v6, v45114; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]5115; GFX8-NEXT:    s_cbranch_execnz .LBB21_15116; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end5117; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]5118; GFX8-NEXT:    s_setpc_b64 s[30:31]5119;5120; GFX7-LABEL: global_agent_atomic_fsub_noret_f64__offset12b_neg:5121; GFX7:       ; %bb.0:5122; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5123; GFX7-NEXT:    s_movk_i32 s4, 0xf8005124; GFX7-NEXT:    s_mov_b32 s5, -15125; GFX7-NEXT:    s_mov_b32 s7, 0xf0005126; GFX7-NEXT:    s_mov_b32 s6, 05127; GFX7-NEXT:    buffer_load_dwordx2 v[6:7], v[0:1], s[4:7], 0 addr645128; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v05129; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc5130; GFX7-NEXT:    s_mov_b64 s[8:9], 05131; GFX7-NEXT:    s_mov_b32 s4, s65132; GFX7-NEXT:    s_mov_b32 s5, s65133; GFX7-NEXT:  .LBB21_1: ; %atomicrmw.start5134; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=15135; GFX7-NEXT:    s_waitcnt vmcnt(0)5136; GFX7-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]5137; GFX7-NEXT:    v_mov_b32_e32 v11, v75138; GFX7-NEXT:    v_mov_b32_e32 v10, v65139; GFX7-NEXT:    v_mov_b32_e32 v9, v55140; GFX7-NEXT:    v_mov_b32_e32 v8, v45141; GFX7-NEXT:    buffer_atomic_cmpswap_x2 v[8:11], v[0:1], s[4:7], 0 addr64 glc5142; GFX7-NEXT:    s_waitcnt vmcnt(0)5143; GFX7-NEXT:    buffer_wbinvl15144; GFX7-NEXT:    v_cmp_eq_u64_e32 vcc, v[8:9], v[6:7]5145; GFX7-NEXT:    v_mov_b32_e32 v6, v85146; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]5147; GFX7-NEXT:    v_mov_b32_e32 v7, v95148; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]5149; GFX7-NEXT:    s_cbranch_execnz .LBB21_15150; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end5151; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]5152; GFX7-NEXT:    s_setpc_b64 s[30:31]5153;5154; GFX6-LABEL: global_agent_atomic_fsub_noret_f64__offset12b_neg:5155; GFX6:       ; %bb.0:5156; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5157; GFX6-NEXT:    s_movk_i32 s4, 0xf8005158; GFX6-NEXT:    s_mov_b32 s5, -15159; GFX6-NEXT:    s_mov_b32 s7, 0xf0005160; GFX6-NEXT:    s_mov_b32 s6, 05161; GFX6-NEXT:    buffer_load_dwordx2 v[6:7], v[0:1], s[4:7], 0 addr645162; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v05163; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc5164; GFX6-NEXT:    s_mov_b64 s[8:9], 05165; GFX6-NEXT:    s_mov_b32 s4, s65166; GFX6-NEXT:    s_mov_b32 s5, s65167; GFX6-NEXT:  .LBB21_1: ; %atomicrmw.start5168; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=15169; GFX6-NEXT:    s_waitcnt vmcnt(0)5170; GFX6-NEXT:    v_add_f64 v[4:5], v[6:7], -v[2:3]5171; GFX6-NEXT:    s_waitcnt expcnt(0)5172; GFX6-NEXT:    v_mov_b32_e32 v11, v75173; GFX6-NEXT:    v_mov_b32_e32 v10, v65174; GFX6-NEXT:    v_mov_b32_e32 v9, v55175; GFX6-NEXT:    v_mov_b32_e32 v8, v45176; GFX6-NEXT:    buffer_atomic_cmpswap_x2 v[8:11], v[0:1], s[4:7], 0 addr64 glc5177; GFX6-NEXT:    s_waitcnt vmcnt(0)5178; GFX6-NEXT:    buffer_wbinvl15179; GFX6-NEXT:    v_cmp_eq_u64_e32 vcc, v[8:9], v[6:7]5180; GFX6-NEXT:    v_mov_b32_e32 v6, v85181; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]5182; GFX6-NEXT:    v_mov_b32_e32 v7, v95183; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]5184; GFX6-NEXT:    s_cbranch_execnz .LBB21_15185; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end5186; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]5187; GFX6-NEXT:    s_waitcnt expcnt(0)5188; GFX6-NEXT:    s_setpc_b64 s[30:31]5189  %gep = getelementptr double, ptr addrspace(1) %ptr, i64 -2565190  %unused = atomicrmw fsub ptr addrspace(1) %gep, double %val syncscope("agent") seq_cst5191  ret void5192}5193 5194; --------------------------------------------------------------------5195; half5196; --------------------------------------------------------------------5197 5198define half @global_agent_atomic_fsub_ret_f16(ptr addrspace(1) %ptr, half %val) #0 {5199; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_ret_f16:5200; GFX12-TRUE16:       ; %bb.0:5201; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x05202; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x05203; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x05204; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x05205; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x05206; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v05207; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 05208; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)5209; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v35210; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v35211; GFX12-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off5212; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v35213; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff5214; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5215; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v45216; GFX12-TRUE16-NEXT:  .LBB22_1: ; %atomicrmw.start5217; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=15218; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x05219; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v55220; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)5221; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v65222; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 05223; GFX12-TRUE16-NEXT:    v_sub_f16_e32 v5.l, v5.l, v2.l5224; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5225; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v55226; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v55227; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x05228; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV5229; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x05230; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV5231; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v65232; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5233; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s05234; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5235; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05236; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB22_15237; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end5238; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05239; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v55240; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x05241; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]5242;5243; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_ret_f16:5244; GFX12-FAKE16:       ; %bb.0:5245; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x05246; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x05247; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x05248; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x05249; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x05250; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v05251; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 05252; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)5253; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v35254; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v35255; GFX12-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off5256; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v35257; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff5258; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5259; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v45260; GFX12-FAKE16-NEXT:  .LBB22_1: ; %atomicrmw.start5261; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=15262; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x05263; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v55264; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5265; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v65266; GFX12-FAKE16-NEXT:    v_sub_f16_e32 v5, v5, v25267; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5268; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v55269; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v55270; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5271; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v55272; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x05273; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV5274; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x05275; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV5276; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v65277; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5278; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s05279; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5280; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05281; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB22_15282; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end5283; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05284; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v55285; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x05286; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]5287;5288; GFX942-LABEL: global_agent_atomic_fsub_ret_f16:5289; GFX942:       ; %bb.0:5290; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5291; GFX942-NEXT:    v_mov_b32_e32 v3, v05292; GFX942-NEXT:    v_and_b32_e32 v0, -4, v35293; GFX942-NEXT:    global_load_dword v5, v[0:1], off5294; GFX942-NEXT:    v_and_b32_e32 v3, 3, v35295; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v35296; GFX942-NEXT:    s_mov_b32 s0, 0xffff5297; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s05298; GFX942-NEXT:    v_not_b32_e32 v6, v45299; GFX942-NEXT:    s_mov_b64 s[0:1], 05300; GFX942-NEXT:  .LBB22_1: ; %atomicrmw.start5301; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=15302; GFX942-NEXT:    s_waitcnt vmcnt(0)5303; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v3, v55304; GFX942-NEXT:    v_sub_f16_e32 v4, v4, v25305; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v3, v45306; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v45307; GFX942-NEXT:    buffer_wbl2 sc15308; GFX942-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off sc05309; GFX942-NEXT:    s_waitcnt vmcnt(0)5310; GFX942-NEXT:    buffer_inv sc15311; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v55312; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]5313; GFX942-NEXT:    v_mov_b32_e32 v5, v45314; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]5315; GFX942-NEXT:    s_cbranch_execnz .LBB22_15316; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end5317; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]5318; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v3, v45319; GFX942-NEXT:    s_setpc_b64 s[30:31]5320;5321; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_ret_f16:5322; GFX11-TRUE16:       ; %bb.0:5323; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5324; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v05325; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 05326; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)5327; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v35328; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v35329; GFX11-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off5330; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v35331; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff5332; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5333; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v45334; GFX11-TRUE16-NEXT:  .LBB22_1: ; %atomicrmw.start5335; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=15336; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)5337; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v55338; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)5339; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v65340; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 05341; GFX11-TRUE16-NEXT:    v_sub_f16_e32 v5.l, v5.l, v2.l5342; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5343; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v55344; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v55345; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x05346; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc5347; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)5348; GFX11-TRUE16-NEXT:    buffer_gl1_inv5349; GFX11-TRUE16-NEXT:    buffer_gl0_inv5350; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v65351; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s05352; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5353; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05354; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB22_15355; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end5356; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05357; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v55358; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]5359;5360; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_ret_f16:5361; GFX11-FAKE16:       ; %bb.0:5362; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5363; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v05364; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 05365; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)5366; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v35367; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v35368; GFX11-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off5369; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v35370; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff5371; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5372; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v45373; GFX11-FAKE16-NEXT:  .LBB22_1: ; %atomicrmw.start5374; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=15375; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)5376; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v55377; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5378; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v65379; GFX11-FAKE16-NEXT:    v_sub_f16_e32 v5, v5, v25380; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5381; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v55382; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v55383; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5384; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v55385; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x05386; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc5387; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)5388; GFX11-FAKE16-NEXT:    buffer_gl1_inv5389; GFX11-FAKE16-NEXT:    buffer_gl0_inv5390; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v65391; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s05392; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5393; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05394; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB22_15395; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end5396; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05397; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v55398; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]5399;5400; GFX10-LABEL: global_agent_atomic_fsub_ret_f16:5401; GFX10:       ; %bb.0:5402; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5403; GFX10-NEXT:    v_mov_b32_e32 v3, v05404; GFX10-NEXT:    s_mov_b32 s4, 05405; GFX10-NEXT:    v_and_b32_e32 v0, -4, v35406; GFX10-NEXT:    v_and_b32_e32 v3, 3, v35407; GFX10-NEXT:    global_load_dword v5, v[0:1], off5408; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v35409; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff5410; GFX10-NEXT:    v_not_b32_e32 v4, v45411; GFX10-NEXT:  .LBB22_1: ; %atomicrmw.start5412; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=15413; GFX10-NEXT:    s_waitcnt vmcnt(0)5414; GFX10-NEXT:    v_mov_b32_e32 v6, v55415; GFX10-NEXT:    v_lshrrev_b32_e32 v5, v3, v65416; GFX10-NEXT:    v_sub_f16_e32 v5, v5, v25417; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_05418; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v55419; GFX10-NEXT:    s_waitcnt_vscnt null, 0x05420; GFX10-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc5421; GFX10-NEXT:    s_waitcnt vmcnt(0)5422; GFX10-NEXT:    buffer_gl1_inv5423; GFX10-NEXT:    buffer_gl0_inv5424; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v65425; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s45426; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s45427; GFX10-NEXT:    s_cbranch_execnz .LBB22_15428; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end5429; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s45430; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v55431; GFX10-NEXT:    s_setpc_b64 s[30:31]5432;5433; GFX90A-LABEL: global_agent_atomic_fsub_ret_f16:5434; GFX90A:       ; %bb.0:5435; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5436; GFX90A-NEXT:    v_mov_b32_e32 v3, v05437; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v35438; GFX90A-NEXT:    global_load_dword v5, v[0:1], off5439; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v35440; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v35441; GFX90A-NEXT:    s_mov_b32 s4, 0xffff5442; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s45443; GFX90A-NEXT:    v_not_b32_e32 v6, v45444; GFX90A-NEXT:    s_mov_b64 s[4:5], 05445; GFX90A-NEXT:  .LBB22_1: ; %atomicrmw.start5446; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=15447; GFX90A-NEXT:    s_waitcnt vmcnt(0)5448; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v3, v55449; GFX90A-NEXT:    v_sub_f16_e32 v4, v4, v25450; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v3, v45451; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v45452; GFX90A-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off glc5453; GFX90A-NEXT:    s_waitcnt vmcnt(0)5454; GFX90A-NEXT:    buffer_wbinvl15455; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v55456; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5457; GFX90A-NEXT:    v_mov_b32_e32 v5, v45458; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]5459; GFX90A-NEXT:    s_cbranch_execnz .LBB22_15460; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end5461; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]5462; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v3, v45463; GFX90A-NEXT:    s_setpc_b64 s[30:31]5464;5465; GFX908-LABEL: global_agent_atomic_fsub_ret_f16:5466; GFX908:       ; %bb.0:5467; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5468; GFX908-NEXT:    v_mov_b32_e32 v3, v05469; GFX908-NEXT:    v_and_b32_e32 v0, -4, v35470; GFX908-NEXT:    global_load_dword v4, v[0:1], off5471; GFX908-NEXT:    v_and_b32_e32 v3, 3, v35472; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v35473; GFX908-NEXT:    s_mov_b32 s4, 0xffff5474; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v3, s45475; GFX908-NEXT:    v_not_b32_e32 v5, v55476; GFX908-NEXT:    s_mov_b64 s[4:5], 05477; GFX908-NEXT:  .LBB22_1: ; %atomicrmw.start5478; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=15479; GFX908-NEXT:    s_waitcnt vmcnt(0)5480; GFX908-NEXT:    v_mov_b32_e32 v7, v45481; GFX908-NEXT:    v_lshrrev_b32_e32 v4, v3, v75482; GFX908-NEXT:    v_sub_f16_e32 v4, v4, v25483; GFX908-NEXT:    v_lshlrev_b32_e32 v4, v3, v45484; GFX908-NEXT:    v_and_or_b32 v6, v7, v5, v45485; GFX908-NEXT:    global_atomic_cmpswap v4, v[0:1], v[6:7], off glc5486; GFX908-NEXT:    s_waitcnt vmcnt(0)5487; GFX908-NEXT:    buffer_wbinvl15488; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v75489; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5490; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]5491; GFX908-NEXT:    s_cbranch_execnz .LBB22_15492; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end5493; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]5494; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v45495; GFX908-NEXT:    s_setpc_b64 s[30:31]5496;5497; GFX8-LABEL: global_agent_atomic_fsub_ret_f16:5498; GFX8:       ; %bb.0:5499; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5500; GFX8-NEXT:    v_mov_b32_e32 v3, v05501; GFX8-NEXT:    v_and_b32_e32 v0, -4, v35502; GFX8-NEXT:    flat_load_dword v5, v[0:1]5503; GFX8-NEXT:    v_and_b32_e32 v3, 3, v35504; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v35505; GFX8-NEXT:    s_mov_b32 s4, 0xffff5506; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s45507; GFX8-NEXT:    v_not_b32_e32 v4, v45508; GFX8-NEXT:    s_mov_b64 s[4:5], 05509; GFX8-NEXT:  .LBB22_1: ; %atomicrmw.start5510; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=15511; GFX8-NEXT:    s_waitcnt vmcnt(0)5512; GFX8-NEXT:    v_mov_b32_e32 v6, v55513; GFX8-NEXT:    v_lshrrev_b32_e32 v5, v3, v65514; GFX8-NEXT:    v_sub_f16_e32 v5, v5, v25515; GFX8-NEXT:    v_and_b32_e32 v7, v6, v45516; GFX8-NEXT:    v_lshlrev_b32_e32 v5, v3, v55517; GFX8-NEXT:    v_or_b32_e32 v5, v7, v55518; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc5519; GFX8-NEXT:    s_waitcnt vmcnt(0)5520; GFX8-NEXT:    buffer_wbinvl15521; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v65522; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5523; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]5524; GFX8-NEXT:    s_cbranch_execnz .LBB22_15525; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end5526; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]5527; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v55528; GFX8-NEXT:    s_setpc_b64 s[30:31]5529;5530; GFX7-LABEL: global_agent_atomic_fsub_ret_f16:5531; GFX7:       ; %bb.0:5532; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5533; GFX7-NEXT:    v_mov_b32_e32 v3, v05534; GFX7-NEXT:    s_mov_b32 s6, 05535; GFX7-NEXT:    v_and_b32_e32 v0, -4, v35536; GFX7-NEXT:    s_mov_b32 s7, 0xf0005537; GFX7-NEXT:    s_mov_b32 s4, s65538; GFX7-NEXT:    s_mov_b32 s5, s65539; GFX7-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr645540; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v25541; GFX7-NEXT:    v_and_b32_e32 v3, 3, v35542; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 3, v35543; GFX7-NEXT:    s_mov_b64 s[8:9], 05544; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v25545; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v55546; GFX7-NEXT:    v_not_b32_e32 v7, v25547; GFX7-NEXT:  .LBB22_1: ; %atomicrmw.start5548; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=15549; GFX7-NEXT:    s_waitcnt vmcnt(0)5550; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v5, v45551; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v25552; GFX7-NEXT:    v_and_b32_e32 v3, v4, v75553; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v65554; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v25555; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v5, v25556; GFX7-NEXT:    v_or_b32_e32 v3, v3, v25557; GFX7-NEXT:    v_mov_b32_e32 v2, v35558; GFX7-NEXT:    v_mov_b32_e32 v3, v45559; GFX7-NEXT:    buffer_atomic_cmpswap v[2:3], v[0:1], s[4:7], 0 addr64 glc5560; GFX7-NEXT:    s_waitcnt vmcnt(0)5561; GFX7-NEXT:    buffer_wbinvl15562; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v45563; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]5564; GFX7-NEXT:    v_mov_b32_e32 v4, v25565; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]5566; GFX7-NEXT:    s_cbranch_execnz .LBB22_15567; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end5568; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]5569; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v5, v25570; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v05571; GFX7-NEXT:    s_setpc_b64 s[30:31]5572;5573; GFX6-LABEL: global_agent_atomic_fsub_ret_f16:5574; GFX6:       ; %bb.0:5575; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5576; GFX6-NEXT:    v_mov_b32_e32 v3, v05577; GFX6-NEXT:    s_mov_b32 s6, 05578; GFX6-NEXT:    v_and_b32_e32 v0, -4, v35579; GFX6-NEXT:    s_mov_b32 s7, 0xf0005580; GFX6-NEXT:    s_mov_b32 s4, s65581; GFX6-NEXT:    s_mov_b32 s5, s65582; GFX6-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr645583; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v25584; GFX6-NEXT:    v_and_b32_e32 v3, 3, v35585; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 3, v35586; GFX6-NEXT:    s_mov_b64 s[8:9], 05587; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v25588; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v55589; GFX6-NEXT:    v_not_b32_e32 v7, v25590; GFX6-NEXT:  .LBB22_1: ; %atomicrmw.start5591; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=15592; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0)5593; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v5, v45594; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v25595; GFX6-NEXT:    v_and_b32_e32 v3, v4, v75596; GFX6-NEXT:    v_sub_f32_e32 v2, v2, v65597; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v25598; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v5, v25599; GFX6-NEXT:    v_or_b32_e32 v3, v3, v25600; GFX6-NEXT:    v_mov_b32_e32 v2, v35601; GFX6-NEXT:    v_mov_b32_e32 v3, v45602; GFX6-NEXT:    buffer_atomic_cmpswap v[2:3], v[0:1], s[4:7], 0 addr64 glc5603; GFX6-NEXT:    s_waitcnt vmcnt(0)5604; GFX6-NEXT:    buffer_wbinvl15605; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v45606; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]5607; GFX6-NEXT:    v_mov_b32_e32 v4, v25608; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]5609; GFX6-NEXT:    s_cbranch_execnz .LBB22_15610; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end5611; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]5612; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v5, v25613; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v05614; GFX6-NEXT:    s_waitcnt expcnt(0)5615; GFX6-NEXT:    s_setpc_b64 s[30:31]5616  %result = atomicrmw fsub ptr addrspace(1) %ptr, half %val syncscope("agent") seq_cst5617  ret half %result5618}5619 5620define half @global_agent_atomic_fsub_ret_f16__offset12b_pos(ptr addrspace(1) %ptr, half %val) #0 {5621; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos:5622; GFX12-TRUE16:       ; %bb.0:5623; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x05624; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x05625; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x05626; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x05627; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x05628; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v05629; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)5630; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo5631; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 05632; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v35633; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v35634; GFX12-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off5635; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v35636; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5637; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff5638; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v45639; GFX12-TRUE16-NEXT:  .LBB23_1: ; %atomicrmw.start5640; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=15641; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x05642; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v55643; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)5644; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v65645; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 05646; GFX12-TRUE16-NEXT:    v_sub_f16_e32 v5.l, v5.l, v2.l5647; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5648; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v55649; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v55650; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x05651; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV5652; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x05653; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV5654; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v65655; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5656; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s05657; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5658; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05659; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB23_15660; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end5661; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05662; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v55663; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x05664; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]5665;5666; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos:5667; GFX12-FAKE16:       ; %bb.0:5668; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x05669; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x05670; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x05671; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x05672; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x05673; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v05674; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)5675; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo5676; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 05677; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v35678; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v35679; GFX12-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off5680; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v35681; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5682; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff5683; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v45684; GFX12-FAKE16-NEXT:  .LBB23_1: ; %atomicrmw.start5685; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=15686; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x05687; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v55688; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5689; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v65690; GFX12-FAKE16-NEXT:    v_sub_f16_e32 v5, v5, v25691; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5692; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v55693; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v55694; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5695; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v55696; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x05697; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV5698; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x05699; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV5700; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v65701; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5702; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s05703; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5704; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05705; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB23_15706; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end5707; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05708; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v55709; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x05710; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]5711;5712; GFX942-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos:5713; GFX942:       ; %bb.0:5714; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5715; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe5716; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]5717; GFX942-NEXT:    v_and_b32_e32 v0, -4, v45718; GFX942-NEXT:    v_mov_b32_e32 v1, v55719; GFX942-NEXT:    global_load_dword v5, v[0:1], off5720; GFX942-NEXT:    v_and_b32_e32 v3, 3, v45721; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v35722; GFX942-NEXT:    s_mov_b32 s0, 0xffff5723; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s05724; GFX942-NEXT:    v_not_b32_e32 v6, v45725; GFX942-NEXT:    s_mov_b64 s[0:1], 05726; GFX942-NEXT:  .LBB23_1: ; %atomicrmw.start5727; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=15728; GFX942-NEXT:    s_waitcnt vmcnt(0)5729; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v3, v55730; GFX942-NEXT:    v_sub_f16_e32 v4, v4, v25731; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v3, v45732; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v45733; GFX942-NEXT:    buffer_wbl2 sc15734; GFX942-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off sc05735; GFX942-NEXT:    s_waitcnt vmcnt(0)5736; GFX942-NEXT:    buffer_inv sc15737; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v55738; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]5739; GFX942-NEXT:    v_mov_b32_e32 v5, v45740; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]5741; GFX942-NEXT:    s_cbranch_execnz .LBB23_15742; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end5743; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]5744; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v3, v45745; GFX942-NEXT:    s_setpc_b64 s[30:31]5746;5747; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos:5748; GFX11-TRUE16:       ; %bb.0:5749; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5750; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v05751; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5752; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo5753; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 05754; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v35755; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v35756; GFX11-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off5757; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v35758; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5759; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff5760; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v45761; GFX11-TRUE16-NEXT:  .LBB23_1: ; %atomicrmw.start5762; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=15763; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)5764; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v55765; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)5766; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v65767; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 05768; GFX11-TRUE16-NEXT:    v_sub_f16_e32 v5.l, v5.l, v2.l5769; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5770; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v55771; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v55772; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x05773; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc5774; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)5775; GFX11-TRUE16-NEXT:    buffer_gl1_inv5776; GFX11-TRUE16-NEXT:    buffer_gl0_inv5777; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v65778; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s05779; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5780; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05781; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB23_15782; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end5783; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05784; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v55785; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]5786;5787; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos:5788; GFX11-FAKE16:       ; %bb.0:5789; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5790; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v05791; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5792; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo5793; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 05794; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v35795; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v35796; GFX11-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off5797; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v35798; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5799; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff5800; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v45801; GFX11-FAKE16-NEXT:  .LBB23_1: ; %atomicrmw.start5802; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=15803; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)5804; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v55805; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5806; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v65807; GFX11-FAKE16-NEXT:    v_sub_f16_e32 v5, v5, v25808; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5809; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v55810; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v55811; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5812; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v55813; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x05814; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc5815; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)5816; GFX11-FAKE16-NEXT:    buffer_gl1_inv5817; GFX11-FAKE16-NEXT:    buffer_gl0_inv5818; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v65819; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s05820; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5821; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05822; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB23_15823; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end5824; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05825; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v55826; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]5827;5828; GFX10-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos:5829; GFX10:       ; %bb.0:5830; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5831; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v05832; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo5833; GFX10-NEXT:    s_mov_b32 s4, 05834; GFX10-NEXT:    v_and_b32_e32 v0, -4, v35835; GFX10-NEXT:    v_and_b32_e32 v3, 3, v35836; GFX10-NEXT:    global_load_dword v5, v[0:1], off5837; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v35838; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff5839; GFX10-NEXT:    v_not_b32_e32 v4, v45840; GFX10-NEXT:  .LBB23_1: ; %atomicrmw.start5841; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=15842; GFX10-NEXT:    s_waitcnt vmcnt(0)5843; GFX10-NEXT:    v_mov_b32_e32 v6, v55844; GFX10-NEXT:    v_lshrrev_b32_e32 v5, v3, v65845; GFX10-NEXT:    v_sub_f16_e32 v5, v5, v25846; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_05847; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v55848; GFX10-NEXT:    s_waitcnt_vscnt null, 0x05849; GFX10-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc5850; GFX10-NEXT:    s_waitcnt vmcnt(0)5851; GFX10-NEXT:    buffer_gl1_inv5852; GFX10-NEXT:    buffer_gl0_inv5853; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v65854; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s45855; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s45856; GFX10-NEXT:    s_cbranch_execnz .LBB23_15857; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end5858; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s45859; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v55860; GFX10-NEXT:    s_setpc_b64 s[30:31]5861;5862; GFX90A-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos:5863; GFX90A:       ; %bb.0:5864; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5865; GFX90A-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v05866; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc5867; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v35868; GFX90A-NEXT:    global_load_dword v5, v[0:1], off5869; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v35870; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v35871; GFX90A-NEXT:    s_mov_b32 s4, 0xffff5872; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s45873; GFX90A-NEXT:    v_not_b32_e32 v6, v45874; GFX90A-NEXT:    s_mov_b64 s[4:5], 05875; GFX90A-NEXT:  .LBB23_1: ; %atomicrmw.start5876; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=15877; GFX90A-NEXT:    s_waitcnt vmcnt(0)5878; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v3, v55879; GFX90A-NEXT:    v_sub_f16_e32 v4, v4, v25880; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v3, v45881; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v45882; GFX90A-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off glc5883; GFX90A-NEXT:    s_waitcnt vmcnt(0)5884; GFX90A-NEXT:    buffer_wbinvl15885; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v55886; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5887; GFX90A-NEXT:    v_mov_b32_e32 v5, v45888; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]5889; GFX90A-NEXT:    s_cbranch_execnz .LBB23_15890; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end5891; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]5892; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v3, v45893; GFX90A-NEXT:    s_setpc_b64 s[30:31]5894;5895; GFX908-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos:5896; GFX908:       ; %bb.0:5897; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5898; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v05899; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc5900; GFX908-NEXT:    v_and_b32_e32 v0, -4, v35901; GFX908-NEXT:    global_load_dword v4, v[0:1], off5902; GFX908-NEXT:    v_and_b32_e32 v3, 3, v35903; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v35904; GFX908-NEXT:    s_mov_b32 s4, 0xffff5905; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v3, s45906; GFX908-NEXT:    v_not_b32_e32 v5, v55907; GFX908-NEXT:    s_mov_b64 s[4:5], 05908; GFX908-NEXT:  .LBB23_1: ; %atomicrmw.start5909; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=15910; GFX908-NEXT:    s_waitcnt vmcnt(0)5911; GFX908-NEXT:    v_mov_b32_e32 v7, v45912; GFX908-NEXT:    v_lshrrev_b32_e32 v4, v3, v75913; GFX908-NEXT:    v_sub_f16_e32 v4, v4, v25914; GFX908-NEXT:    v_lshlrev_b32_e32 v4, v3, v45915; GFX908-NEXT:    v_and_or_b32 v6, v7, v5, v45916; GFX908-NEXT:    global_atomic_cmpswap v4, v[0:1], v[6:7], off glc5917; GFX908-NEXT:    s_waitcnt vmcnt(0)5918; GFX908-NEXT:    buffer_wbinvl15919; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v75920; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5921; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]5922; GFX908-NEXT:    s_cbranch_execnz .LBB23_15923; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end5924; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]5925; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v45926; GFX908-NEXT:    s_setpc_b64 s[30:31]5927;5928; GFX8-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos:5929; GFX8:       ; %bb.0:5930; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5931; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v05932; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc5933; GFX8-NEXT:    v_and_b32_e32 v0, -4, v35934; GFX8-NEXT:    flat_load_dword v5, v[0:1]5935; GFX8-NEXT:    v_and_b32_e32 v3, 3, v35936; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v35937; GFX8-NEXT:    s_mov_b32 s4, 0xffff5938; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s45939; GFX8-NEXT:    v_not_b32_e32 v4, v45940; GFX8-NEXT:    s_mov_b64 s[4:5], 05941; GFX8-NEXT:  .LBB23_1: ; %atomicrmw.start5942; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=15943; GFX8-NEXT:    s_waitcnt vmcnt(0)5944; GFX8-NEXT:    v_mov_b32_e32 v6, v55945; GFX8-NEXT:    v_lshrrev_b32_e32 v5, v3, v65946; GFX8-NEXT:    v_sub_f16_e32 v5, v5, v25947; GFX8-NEXT:    v_and_b32_e32 v7, v6, v45948; GFX8-NEXT:    v_lshlrev_b32_e32 v5, v3, v55949; GFX8-NEXT:    v_or_b32_e32 v5, v7, v55950; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc5951; GFX8-NEXT:    s_waitcnt vmcnt(0)5952; GFX8-NEXT:    buffer_wbinvl15953; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v65954; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5955; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]5956; GFX8-NEXT:    s_cbranch_execnz .LBB23_15957; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end5958; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]5959; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v55960; GFX8-NEXT:    s_setpc_b64 s[30:31]5961;5962; GFX7-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos:5963; GFX7:       ; %bb.0:5964; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5965; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v05966; GFX7-NEXT:    s_mov_b32 s6, 05967; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc5968; GFX7-NEXT:    v_and_b32_e32 v0, -4, v45969; GFX7-NEXT:    s_mov_b32 s7, 0xf0005970; GFX7-NEXT:    s_mov_b32 s4, s65971; GFX7-NEXT:    s_mov_b32 s5, s65972; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr645973; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v25974; GFX7-NEXT:    v_and_b32_e32 v4, 3, v45975; GFX7-NEXT:    v_lshlrev_b32_e32 v6, 3, v45976; GFX7-NEXT:    s_mov_b64 s[8:9], 05977; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v25978; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v65979; GFX7-NEXT:    v_not_b32_e32 v8, v25980; GFX7-NEXT:  .LBB23_1: ; %atomicrmw.start5981; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=15982; GFX7-NEXT:    s_waitcnt vmcnt(0)5983; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v6, v35984; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v25985; GFX7-NEXT:    v_and_b32_e32 v4, v3, v85986; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v75987; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v25988; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v6, v25989; GFX7-NEXT:    v_or_b32_e32 v2, v4, v25990; GFX7-NEXT:    v_mov_b32_e32 v5, v35991; GFX7-NEXT:    v_mov_b32_e32 v4, v25992; GFX7-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc5993; GFX7-NEXT:    s_waitcnt vmcnt(0)5994; GFX7-NEXT:    buffer_wbinvl15995; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v35996; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]5997; GFX7-NEXT:    v_mov_b32_e32 v3, v45998; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]5999; GFX7-NEXT:    s_cbranch_execnz .LBB23_16000; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end6001; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]6002; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v6, v46003; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v06004; GFX7-NEXT:    s_setpc_b64 s[30:31]6005;6006; GFX6-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos:6007; GFX6:       ; %bb.0:6008; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6009; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v06010; GFX6-NEXT:    s_mov_b32 s6, 06011; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc6012; GFX6-NEXT:    v_and_b32_e32 v0, -4, v46013; GFX6-NEXT:    s_mov_b32 s7, 0xf0006014; GFX6-NEXT:    s_mov_b32 s4, s66015; GFX6-NEXT:    s_mov_b32 s5, s66016; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr646017; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v26018; GFX6-NEXT:    v_and_b32_e32 v4, 3, v46019; GFX6-NEXT:    v_lshlrev_b32_e32 v6, 3, v46020; GFX6-NEXT:    s_mov_b64 s[8:9], 06021; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v26022; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v66023; GFX6-NEXT:    v_not_b32_e32 v8, v26024; GFX6-NEXT:  .LBB23_1: ; %atomicrmw.start6025; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=16026; GFX6-NEXT:    s_waitcnt vmcnt(0)6027; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v6, v36028; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v26029; GFX6-NEXT:    s_waitcnt expcnt(0)6030; GFX6-NEXT:    v_and_b32_e32 v4, v3, v86031; GFX6-NEXT:    v_sub_f32_e32 v2, v2, v76032; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v26033; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v6, v26034; GFX6-NEXT:    v_or_b32_e32 v2, v4, v26035; GFX6-NEXT:    v_mov_b32_e32 v5, v36036; GFX6-NEXT:    v_mov_b32_e32 v4, v26037; GFX6-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc6038; GFX6-NEXT:    s_waitcnt vmcnt(0)6039; GFX6-NEXT:    buffer_wbinvl16040; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v36041; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]6042; GFX6-NEXT:    v_mov_b32_e32 v3, v46043; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]6044; GFX6-NEXT:    s_cbranch_execnz .LBB23_16045; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end6046; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]6047; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v6, v46048; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v06049; GFX6-NEXT:    s_waitcnt expcnt(0)6050; GFX6-NEXT:    s_setpc_b64 s[30:31]6051  %gep = getelementptr half, ptr addrspace(1) %ptr, i64 10236052  %result = atomicrmw fsub ptr addrspace(1) %gep, half %val syncscope("agent") seq_cst6053  ret half %result6054}6055 6056define half @global_agent_atomic_fsub_ret_f16__offset12b_neg(ptr addrspace(1) %ptr, half %val) #0 {6057; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_neg:6058; GFX12-TRUE16:       ; %bb.0:6059; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06060; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x06061; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x06062; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x06063; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x06064; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v06065; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)6066; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo6067; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 06068; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v36069; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v36070; GFX12-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off6071; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v36072; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6073; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6074; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v46075; GFX12-TRUE16-NEXT:  .LBB24_1: ; %atomicrmw.start6076; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16077; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06078; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v56079; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6080; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v66081; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 06082; GFX12-TRUE16-NEXT:    v_sub_f16_e32 v5.l, v5.l, v2.l6083; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6084; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v56085; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v56086; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x06087; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV6088; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06089; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV6090; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66091; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6092; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06093; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6094; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06095; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB24_16096; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6097; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06098; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v56099; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06100; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]6101;6102; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_neg:6103; GFX12-FAKE16:       ; %bb.0:6104; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06105; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x06106; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x06107; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x06108; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x06109; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v06110; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)6111; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo6112; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 06113; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v36114; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v36115; GFX12-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off6116; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v36117; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6118; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6119; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v46120; GFX12-FAKE16-NEXT:  .LBB24_1: ; %atomicrmw.start6121; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16122; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06123; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v56124; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6125; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v66126; GFX12-FAKE16-NEXT:    v_sub_f16_e32 v5, v5, v26127; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6128; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v56129; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v56130; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6131; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v56132; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x06133; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV6134; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06135; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV6136; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66137; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6138; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06139; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6140; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06141; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB24_16142; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6143; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06144; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v56145; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06146; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]6147;6148; GFX942-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_neg:6149; GFX942:       ; %bb.0:6150; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6151; GFX942-NEXT:    s_movk_i32 s0, 0xf8006152; GFX942-NEXT:    s_mov_b32 s1, -16153; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]6154; GFX942-NEXT:    v_and_b32_e32 v0, -4, v46155; GFX942-NEXT:    v_mov_b32_e32 v1, v56156; GFX942-NEXT:    global_load_dword v5, v[0:1], off6157; GFX942-NEXT:    v_and_b32_e32 v3, 3, v46158; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v36159; GFX942-NEXT:    s_mov_b32 s0, 0xffff6160; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s06161; GFX942-NEXT:    v_not_b32_e32 v6, v46162; GFX942-NEXT:    s_mov_b64 s[0:1], 06163; GFX942-NEXT:  .LBB24_1: ; %atomicrmw.start6164; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=16165; GFX942-NEXT:    s_waitcnt vmcnt(0)6166; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v3, v56167; GFX942-NEXT:    v_sub_f16_e32 v4, v4, v26168; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v3, v46169; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v46170; GFX942-NEXT:    buffer_wbl2 sc16171; GFX942-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off sc06172; GFX942-NEXT:    s_waitcnt vmcnt(0)6173; GFX942-NEXT:    buffer_inv sc16174; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v56175; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]6176; GFX942-NEXT:    v_mov_b32_e32 v5, v46177; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]6178; GFX942-NEXT:    s_cbranch_execnz .LBB24_16179; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end6180; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]6181; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v3, v46182; GFX942-NEXT:    s_setpc_b64 s[30:31]6183;6184; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_neg:6185; GFX11-TRUE16:       ; %bb.0:6186; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6187; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v06188; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6189; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo6190; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 06191; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v36192; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v36193; GFX11-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off6194; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v36195; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6196; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6197; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v46198; GFX11-TRUE16-NEXT:  .LBB24_1: ; %atomicrmw.start6199; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16200; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)6201; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v56202; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6203; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v66204; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 06205; GFX11-TRUE16-NEXT:    v_sub_f16_e32 v5.l, v5.l, v2.l6206; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6207; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v56208; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v56209; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x06210; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc6211; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)6212; GFX11-TRUE16-NEXT:    buffer_gl1_inv6213; GFX11-TRUE16-NEXT:    buffer_gl0_inv6214; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66215; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06216; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6217; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06218; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB24_16219; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6220; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06221; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v56222; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]6223;6224; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_neg:6225; GFX11-FAKE16:       ; %bb.0:6226; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6227; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v06228; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6229; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo6230; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 06231; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v36232; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v36233; GFX11-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off6234; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v36235; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6236; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6237; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v46238; GFX11-FAKE16-NEXT:  .LBB24_1: ; %atomicrmw.start6239; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16240; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)6241; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v56242; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6243; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v66244; GFX11-FAKE16-NEXT:    v_sub_f16_e32 v5, v5, v26245; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6246; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v56247; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v56248; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6249; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v56250; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x06251; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc6252; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)6253; GFX11-FAKE16-NEXT:    buffer_gl1_inv6254; GFX11-FAKE16-NEXT:    buffer_gl0_inv6255; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66256; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06257; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6258; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06259; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB24_16260; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6261; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06262; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v56263; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]6264;6265; GFX10-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_neg:6266; GFX10:       ; %bb.0:6267; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6268; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v06269; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo6270; GFX10-NEXT:    s_mov_b32 s4, 06271; GFX10-NEXT:    v_and_b32_e32 v0, -4, v36272; GFX10-NEXT:    v_and_b32_e32 v3, 3, v36273; GFX10-NEXT:    global_load_dword v5, v[0:1], off6274; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v36275; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6276; GFX10-NEXT:    v_not_b32_e32 v4, v46277; GFX10-NEXT:  .LBB24_1: ; %atomicrmw.start6278; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=16279; GFX10-NEXT:    s_waitcnt vmcnt(0)6280; GFX10-NEXT:    v_mov_b32_e32 v6, v56281; GFX10-NEXT:    v_lshrrev_b32_e32 v5, v3, v66282; GFX10-NEXT:    v_sub_f16_e32 v5, v5, v26283; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_06284; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v56285; GFX10-NEXT:    s_waitcnt_vscnt null, 0x06286; GFX10-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc6287; GFX10-NEXT:    s_waitcnt vmcnt(0)6288; GFX10-NEXT:    buffer_gl1_inv6289; GFX10-NEXT:    buffer_gl0_inv6290; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66291; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s46292; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s46293; GFX10-NEXT:    s_cbranch_execnz .LBB24_16294; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end6295; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s46296; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v56297; GFX10-NEXT:    s_setpc_b64 s[30:31]6298;6299; GFX90A-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_neg:6300; GFX90A:       ; %bb.0:6301; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6302; GFX90A-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v06303; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc6304; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v36305; GFX90A-NEXT:    global_load_dword v5, v[0:1], off6306; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v36307; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v36308; GFX90A-NEXT:    s_mov_b32 s4, 0xffff6309; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s46310; GFX90A-NEXT:    v_not_b32_e32 v6, v46311; GFX90A-NEXT:    s_mov_b64 s[4:5], 06312; GFX90A-NEXT:  .LBB24_1: ; %atomicrmw.start6313; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=16314; GFX90A-NEXT:    s_waitcnt vmcnt(0)6315; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v3, v56316; GFX90A-NEXT:    v_sub_f16_e32 v4, v4, v26317; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v3, v46318; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v46319; GFX90A-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off glc6320; GFX90A-NEXT:    s_waitcnt vmcnt(0)6321; GFX90A-NEXT:    buffer_wbinvl16322; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v56323; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6324; GFX90A-NEXT:    v_mov_b32_e32 v5, v46325; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]6326; GFX90A-NEXT:    s_cbranch_execnz .LBB24_16327; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end6328; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]6329; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v3, v46330; GFX90A-NEXT:    s_setpc_b64 s[30:31]6331;6332; GFX908-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_neg:6333; GFX908:       ; %bb.0:6334; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6335; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v06336; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc6337; GFX908-NEXT:    v_and_b32_e32 v0, -4, v36338; GFX908-NEXT:    global_load_dword v4, v[0:1], off6339; GFX908-NEXT:    v_and_b32_e32 v3, 3, v36340; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v36341; GFX908-NEXT:    s_mov_b32 s4, 0xffff6342; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v3, s46343; GFX908-NEXT:    v_not_b32_e32 v5, v56344; GFX908-NEXT:    s_mov_b64 s[4:5], 06345; GFX908-NEXT:  .LBB24_1: ; %atomicrmw.start6346; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=16347; GFX908-NEXT:    s_waitcnt vmcnt(0)6348; GFX908-NEXT:    v_mov_b32_e32 v7, v46349; GFX908-NEXT:    v_lshrrev_b32_e32 v4, v3, v76350; GFX908-NEXT:    v_sub_f16_e32 v4, v4, v26351; GFX908-NEXT:    v_lshlrev_b32_e32 v4, v3, v46352; GFX908-NEXT:    v_and_or_b32 v6, v7, v5, v46353; GFX908-NEXT:    global_atomic_cmpswap v4, v[0:1], v[6:7], off glc6354; GFX908-NEXT:    s_waitcnt vmcnt(0)6355; GFX908-NEXT:    buffer_wbinvl16356; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v76357; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6358; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]6359; GFX908-NEXT:    s_cbranch_execnz .LBB24_16360; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end6361; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]6362; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v46363; GFX908-NEXT:    s_setpc_b64 s[30:31]6364;6365; GFX8-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_neg:6366; GFX8:       ; %bb.0:6367; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6368; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v06369; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc6370; GFX8-NEXT:    v_and_b32_e32 v0, -4, v36371; GFX8-NEXT:    flat_load_dword v5, v[0:1]6372; GFX8-NEXT:    v_and_b32_e32 v3, 3, v36373; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v36374; GFX8-NEXT:    s_mov_b32 s4, 0xffff6375; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s46376; GFX8-NEXT:    v_not_b32_e32 v4, v46377; GFX8-NEXT:    s_mov_b64 s[4:5], 06378; GFX8-NEXT:  .LBB24_1: ; %atomicrmw.start6379; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=16380; GFX8-NEXT:    s_waitcnt vmcnt(0)6381; GFX8-NEXT:    v_mov_b32_e32 v6, v56382; GFX8-NEXT:    v_lshrrev_b32_e32 v5, v3, v66383; GFX8-NEXT:    v_sub_f16_e32 v5, v5, v26384; GFX8-NEXT:    v_and_b32_e32 v7, v6, v46385; GFX8-NEXT:    v_lshlrev_b32_e32 v5, v3, v56386; GFX8-NEXT:    v_or_b32_e32 v5, v7, v56387; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc6388; GFX8-NEXT:    s_waitcnt vmcnt(0)6389; GFX8-NEXT:    buffer_wbinvl16390; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v66391; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6392; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]6393; GFX8-NEXT:    s_cbranch_execnz .LBB24_16394; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end6395; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]6396; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v56397; GFX8-NEXT:    s_setpc_b64 s[30:31]6398;6399; GFX7-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_neg:6400; GFX7:       ; %bb.0:6401; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6402; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v06403; GFX7-NEXT:    s_mov_b32 s6, 06404; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc6405; GFX7-NEXT:    v_and_b32_e32 v0, -4, v46406; GFX7-NEXT:    s_mov_b32 s7, 0xf0006407; GFX7-NEXT:    s_mov_b32 s4, s66408; GFX7-NEXT:    s_mov_b32 s5, s66409; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr646410; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v26411; GFX7-NEXT:    v_and_b32_e32 v4, 3, v46412; GFX7-NEXT:    v_lshlrev_b32_e32 v6, 3, v46413; GFX7-NEXT:    s_mov_b64 s[8:9], 06414; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v26415; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v66416; GFX7-NEXT:    v_not_b32_e32 v8, v26417; GFX7-NEXT:  .LBB24_1: ; %atomicrmw.start6418; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=16419; GFX7-NEXT:    s_waitcnt vmcnt(0)6420; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v6, v36421; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v26422; GFX7-NEXT:    v_and_b32_e32 v4, v3, v86423; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v76424; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v26425; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v6, v26426; GFX7-NEXT:    v_or_b32_e32 v2, v4, v26427; GFX7-NEXT:    v_mov_b32_e32 v5, v36428; GFX7-NEXT:    v_mov_b32_e32 v4, v26429; GFX7-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc6430; GFX7-NEXT:    s_waitcnt vmcnt(0)6431; GFX7-NEXT:    buffer_wbinvl16432; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v36433; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]6434; GFX7-NEXT:    v_mov_b32_e32 v3, v46435; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]6436; GFX7-NEXT:    s_cbranch_execnz .LBB24_16437; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end6438; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]6439; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v6, v46440; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v06441; GFX7-NEXT:    s_setpc_b64 s[30:31]6442;6443; GFX6-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_neg:6444; GFX6:       ; %bb.0:6445; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6446; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v06447; GFX6-NEXT:    s_mov_b32 s6, 06448; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc6449; GFX6-NEXT:    v_and_b32_e32 v0, -4, v46450; GFX6-NEXT:    s_mov_b32 s7, 0xf0006451; GFX6-NEXT:    s_mov_b32 s4, s66452; GFX6-NEXT:    s_mov_b32 s5, s66453; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr646454; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v26455; GFX6-NEXT:    v_and_b32_e32 v4, 3, v46456; GFX6-NEXT:    v_lshlrev_b32_e32 v6, 3, v46457; GFX6-NEXT:    s_mov_b64 s[8:9], 06458; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v26459; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v66460; GFX6-NEXT:    v_not_b32_e32 v8, v26461; GFX6-NEXT:  .LBB24_1: ; %atomicrmw.start6462; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=16463; GFX6-NEXT:    s_waitcnt vmcnt(0)6464; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v6, v36465; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v26466; GFX6-NEXT:    s_waitcnt expcnt(0)6467; GFX6-NEXT:    v_and_b32_e32 v4, v3, v86468; GFX6-NEXT:    v_sub_f32_e32 v2, v2, v76469; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v26470; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v6, v26471; GFX6-NEXT:    v_or_b32_e32 v2, v4, v26472; GFX6-NEXT:    v_mov_b32_e32 v5, v36473; GFX6-NEXT:    v_mov_b32_e32 v4, v26474; GFX6-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc6475; GFX6-NEXT:    s_waitcnt vmcnt(0)6476; GFX6-NEXT:    buffer_wbinvl16477; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v36478; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]6479; GFX6-NEXT:    v_mov_b32_e32 v3, v46480; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]6481; GFX6-NEXT:    s_cbranch_execnz .LBB24_16482; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end6483; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]6484; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v6, v46485; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v06486; GFX6-NEXT:    s_waitcnt expcnt(0)6487; GFX6-NEXT:    s_setpc_b64 s[30:31]6488  %gep = getelementptr half, ptr addrspace(1) %ptr, i64 -10246489  %result = atomicrmw fsub ptr addrspace(1) %gep, half %val syncscope("agent") seq_cst6490  ret half %result6491 }6492 6493define void @global_agent_atomic_fsub_noret_f16(ptr addrspace(1) %ptr, half %val) #0 {6494; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_noret_f16:6495; GFX12-TRUE16:       ; %bb.0:6496; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06497; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x06498; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x06499; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x06500; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x06501; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v06502; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 06503; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)6504; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v36505; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v36506; GFX12-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off6507; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v36508; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff6509; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6510; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v36511; GFX12-TRUE16-NEXT:  .LBB25_1: ; %atomicrmw.start6512; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16513; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06514; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v46515; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 06516; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6517; GFX12-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v3.l, v2.l6518; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v36519; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6520; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v36521; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x06522; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV6523; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06524; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV6525; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v46526; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v36527; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6528; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06529; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6530; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06531; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB25_16532; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6533; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06534; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06535; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]6536;6537; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_noret_f16:6538; GFX12-FAKE16:       ; %bb.0:6539; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06540; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x06541; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x06542; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x06543; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x06544; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v06545; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 06546; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)6547; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v36548; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v36549; GFX12-FAKE16-NEXT:    global_load_b32 v4, v[0:1], off6550; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v36551; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff6552; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6553; GFX12-FAKE16-NEXT:    v_not_b32_e32 v6, v36554; GFX12-FAKE16-NEXT:  .LBB25_1: ; %atomicrmw.start6555; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16556; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06557; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v46558; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6559; GFX12-FAKE16-NEXT:    v_sub_f16_e32 v3, v3, v26560; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v36561; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6562; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v36563; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v36564; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x06565; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV6566; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06567; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV6568; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v46569; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v36570; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6571; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06572; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6573; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06574; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB25_16575; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6576; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06577; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06578; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]6579;6580; GFX942-LABEL: global_agent_atomic_fsub_noret_f16:6581; GFX942:       ; %bb.0:6582; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6583; GFX942-NEXT:    v_mov_b32_e32 v3, v06584; GFX942-NEXT:    v_and_b32_e32 v0, -4, v36585; GFX942-NEXT:    global_load_dword v5, v[0:1], off6586; GFX942-NEXT:    v_and_b32_e32 v3, 3, v36587; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v36588; GFX942-NEXT:    s_mov_b32 s0, 0xffff6589; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s06590; GFX942-NEXT:    v_not_b32_e32 v6, v46591; GFX942-NEXT:    s_mov_b64 s[0:1], 06592; GFX942-NEXT:  .LBB25_1: ; %atomicrmw.start6593; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=16594; GFX942-NEXT:    s_waitcnt vmcnt(0)6595; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v3, v56596; GFX942-NEXT:    v_sub_f16_e32 v4, v4, v26597; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v3, v46598; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v46599; GFX942-NEXT:    buffer_wbl2 sc16600; GFX942-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off sc06601; GFX942-NEXT:    s_waitcnt vmcnt(0)6602; GFX942-NEXT:    buffer_inv sc16603; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v56604; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]6605; GFX942-NEXT:    v_mov_b32_e32 v5, v46606; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]6607; GFX942-NEXT:    s_cbranch_execnz .LBB25_16608; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end6609; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]6610; GFX942-NEXT:    s_setpc_b64 s[30:31]6611;6612; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_noret_f16:6613; GFX11-TRUE16:       ; %bb.0:6614; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6615; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v06616; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 06617; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)6618; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v36619; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v36620; GFX11-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off6621; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v36622; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff6623; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6624; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v36625; GFX11-TRUE16-NEXT:  .LBB25_1: ; %atomicrmw.start6626; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16627; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)6628; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v46629; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 06630; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6631; GFX11-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v3.l, v2.l6632; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v36633; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6634; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v36635; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x06636; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc6637; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)6638; GFX11-TRUE16-NEXT:    buffer_gl1_inv6639; GFX11-TRUE16-NEXT:    buffer_gl0_inv6640; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v46641; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v36642; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06643; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6644; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06645; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB25_16646; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6647; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06648; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]6649;6650; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_noret_f16:6651; GFX11-FAKE16:       ; %bb.0:6652; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6653; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v06654; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 06655; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)6656; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v36657; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v36658; GFX11-FAKE16-NEXT:    global_load_b32 v4, v[0:1], off6659; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v36660; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff6661; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6662; GFX11-FAKE16-NEXT:    v_not_b32_e32 v6, v36663; GFX11-FAKE16-NEXT:  .LBB25_1: ; %atomicrmw.start6664; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16665; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)6666; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v46667; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6668; GFX11-FAKE16-NEXT:    v_sub_f16_e32 v3, v3, v26669; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v36670; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6671; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v36672; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v36673; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x06674; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc6675; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)6676; GFX11-FAKE16-NEXT:    buffer_gl1_inv6677; GFX11-FAKE16-NEXT:    buffer_gl0_inv6678; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v46679; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v36680; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06681; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6682; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06683; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB25_16684; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6685; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06686; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]6687;6688; GFX10-LABEL: global_agent_atomic_fsub_noret_f16:6689; GFX10:       ; %bb.0:6690; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6691; GFX10-NEXT:    v_mov_b32_e32 v3, v06692; GFX10-NEXT:    s_mov_b32 s4, 06693; GFX10-NEXT:    v_and_b32_e32 v0, -4, v36694; GFX10-NEXT:    v_and_b32_e32 v3, 3, v36695; GFX10-NEXT:    global_load_dword v4, v[0:1], off6696; GFX10-NEXT:    v_lshlrev_b32_e32 v5, 3, v36697; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff6698; GFX10-NEXT:    v_not_b32_e32 v6, v36699; GFX10-NEXT:  .LBB25_1: ; %atomicrmw.start6700; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=16701; GFX10-NEXT:    s_waitcnt vmcnt(0)6702; GFX10-NEXT:    v_lshrrev_b32_e32 v3, v5, v46703; GFX10-NEXT:    v_sub_f16_e32 v3, v3, v26704; GFX10-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_06705; GFX10-NEXT:    v_and_or_b32 v3, v4, v6, v36706; GFX10-NEXT:    s_waitcnt_vscnt null, 0x06707; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc6708; GFX10-NEXT:    s_waitcnt vmcnt(0)6709; GFX10-NEXT:    buffer_gl1_inv6710; GFX10-NEXT:    buffer_gl0_inv6711; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v46712; GFX10-NEXT:    v_mov_b32_e32 v4, v36713; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s46714; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s46715; GFX10-NEXT:    s_cbranch_execnz .LBB25_16716; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end6717; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s46718; GFX10-NEXT:    s_setpc_b64 s[30:31]6719;6720; GFX90A-LABEL: global_agent_atomic_fsub_noret_f16:6721; GFX90A:       ; %bb.0:6722; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6723; GFX90A-NEXT:    v_mov_b32_e32 v3, v06724; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v36725; GFX90A-NEXT:    global_load_dword v5, v[0:1], off6726; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v36727; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v36728; GFX90A-NEXT:    s_mov_b32 s4, 0xffff6729; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s46730; GFX90A-NEXT:    v_not_b32_e32 v6, v46731; GFX90A-NEXT:    s_mov_b64 s[4:5], 06732; GFX90A-NEXT:  .LBB25_1: ; %atomicrmw.start6733; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=16734; GFX90A-NEXT:    s_waitcnt vmcnt(0)6735; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v3, v56736; GFX90A-NEXT:    v_sub_f16_e32 v4, v4, v26737; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v3, v46738; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v46739; GFX90A-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off glc6740; GFX90A-NEXT:    s_waitcnt vmcnt(0)6741; GFX90A-NEXT:    buffer_wbinvl16742; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v56743; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6744; GFX90A-NEXT:    v_mov_b32_e32 v5, v46745; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]6746; GFX90A-NEXT:    s_cbranch_execnz .LBB25_16747; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end6748; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]6749; GFX90A-NEXT:    s_setpc_b64 s[30:31]6750;6751; GFX908-LABEL: global_agent_atomic_fsub_noret_f16:6752; GFX908:       ; %bb.0:6753; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6754; GFX908-NEXT:    v_mov_b32_e32 v3, v06755; GFX908-NEXT:    v_and_b32_e32 v0, -4, v36756; GFX908-NEXT:    global_load_dword v4, v[0:1], off6757; GFX908-NEXT:    v_and_b32_e32 v3, 3, v36758; GFX908-NEXT:    v_lshlrev_b32_e32 v5, 3, v36759; GFX908-NEXT:    s_mov_b32 s4, 0xffff6760; GFX908-NEXT:    v_lshlrev_b32_e64 v3, v5, s46761; GFX908-NEXT:    v_not_b32_e32 v6, v36762; GFX908-NEXT:    s_mov_b64 s[4:5], 06763; GFX908-NEXT:  .LBB25_1: ; %atomicrmw.start6764; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=16765; GFX908-NEXT:    s_waitcnt vmcnt(0)6766; GFX908-NEXT:    v_lshrrev_b32_e32 v3, v5, v46767; GFX908-NEXT:    v_sub_f16_e32 v3, v3, v26768; GFX908-NEXT:    v_lshlrev_b32_e32 v3, v5, v36769; GFX908-NEXT:    v_and_or_b32 v3, v4, v6, v36770; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc6771; GFX908-NEXT:    s_waitcnt vmcnt(0)6772; GFX908-NEXT:    buffer_wbinvl16773; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v46774; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6775; GFX908-NEXT:    v_mov_b32_e32 v4, v36776; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]6777; GFX908-NEXT:    s_cbranch_execnz .LBB25_16778; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end6779; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]6780; GFX908-NEXT:    s_setpc_b64 s[30:31]6781;6782; GFX8-LABEL: global_agent_atomic_fsub_noret_f16:6783; GFX8:       ; %bb.0:6784; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6785; GFX8-NEXT:    v_mov_b32_e32 v3, v06786; GFX8-NEXT:    v_and_b32_e32 v0, -4, v36787; GFX8-NEXT:    flat_load_dword v4, v[0:1]6788; GFX8-NEXT:    v_and_b32_e32 v3, 3, v36789; GFX8-NEXT:    v_lshlrev_b32_e32 v5, 3, v36790; GFX8-NEXT:    s_mov_b32 s4, 0xffff6791; GFX8-NEXT:    v_lshlrev_b32_e64 v3, v5, s46792; GFX8-NEXT:    v_not_b32_e32 v6, v36793; GFX8-NEXT:    s_mov_b64 s[4:5], 06794; GFX8-NEXT:  .LBB25_1: ; %atomicrmw.start6795; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=16796; GFX8-NEXT:    s_waitcnt vmcnt(0)6797; GFX8-NEXT:    v_lshrrev_b32_e32 v3, v5, v46798; GFX8-NEXT:    v_sub_f16_e32 v3, v3, v26799; GFX8-NEXT:    v_and_b32_e32 v7, v4, v66800; GFX8-NEXT:    v_lshlrev_b32_e32 v3, v5, v36801; GFX8-NEXT:    v_or_b32_e32 v3, v7, v36802; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc6803; GFX8-NEXT:    s_waitcnt vmcnt(0)6804; GFX8-NEXT:    buffer_wbinvl16805; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v46806; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6807; GFX8-NEXT:    v_mov_b32_e32 v4, v36808; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]6809; GFX8-NEXT:    s_cbranch_execnz .LBB25_16810; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end6811; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]6812; GFX8-NEXT:    s_setpc_b64 s[30:31]6813;6814; GFX7-LABEL: global_agent_atomic_fsub_noret_f16:6815; GFX7:       ; %bb.0:6816; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6817; GFX7-NEXT:    v_mov_b32_e32 v3, v06818; GFX7-NEXT:    s_mov_b32 s6, 06819; GFX7-NEXT:    v_and_b32_e32 v0, -4, v36820; GFX7-NEXT:    s_mov_b32 s7, 0xf0006821; GFX7-NEXT:    s_mov_b32 s4, s66822; GFX7-NEXT:    s_mov_b32 s5, s66823; GFX7-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr646824; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v26825; GFX7-NEXT:    v_and_b32_e32 v2, 3, v36826; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 3, v26827; GFX7-NEXT:    v_lshl_b32_e32 v3, 0xffff, v26828; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v56829; GFX7-NEXT:    v_not_b32_e32 v6, v36830; GFX7-NEXT:    s_mov_b64 s[8:9], 06831; GFX7-NEXT:  .LBB25_1: ; %atomicrmw.start6832; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=16833; GFX7-NEXT:    s_waitcnt vmcnt(0)6834; GFX7-NEXT:    v_lshrrev_b32_e32 v3, v2, v46835; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v36836; GFX7-NEXT:    v_and_b32_e32 v7, v4, v66837; GFX7-NEXT:    v_sub_f32_e32 v3, v3, v56838; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v36839; GFX7-NEXT:    v_lshlrev_b32_e32 v3, v2, v36840; GFX7-NEXT:    v_or_b32_e32 v3, v7, v36841; GFX7-NEXT:    v_mov_b32_e32 v8, v46842; GFX7-NEXT:    v_mov_b32_e32 v7, v36843; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc6844; GFX7-NEXT:    s_waitcnt vmcnt(0)6845; GFX7-NEXT:    buffer_wbinvl16846; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v46847; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]6848; GFX7-NEXT:    v_mov_b32_e32 v4, v76849; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]6850; GFX7-NEXT:    s_cbranch_execnz .LBB25_16851; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end6852; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]6853; GFX7-NEXT:    s_setpc_b64 s[30:31]6854;6855; GFX6-LABEL: global_agent_atomic_fsub_noret_f16:6856; GFX6:       ; %bb.0:6857; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6858; GFX6-NEXT:    v_mov_b32_e32 v3, v06859; GFX6-NEXT:    s_mov_b32 s6, 06860; GFX6-NEXT:    v_and_b32_e32 v0, -4, v36861; GFX6-NEXT:    s_mov_b32 s7, 0xf0006862; GFX6-NEXT:    s_mov_b32 s4, s66863; GFX6-NEXT:    s_mov_b32 s5, s66864; GFX6-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr646865; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v26866; GFX6-NEXT:    v_and_b32_e32 v2, 3, v36867; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 3, v26868; GFX6-NEXT:    v_lshl_b32_e32 v3, 0xffff, v26869; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v56870; GFX6-NEXT:    v_not_b32_e32 v6, v36871; GFX6-NEXT:    s_mov_b64 s[8:9], 06872; GFX6-NEXT:  .LBB25_1: ; %atomicrmw.start6873; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=16874; GFX6-NEXT:    s_waitcnt vmcnt(0)6875; GFX6-NEXT:    v_lshrrev_b32_e32 v3, v2, v46876; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v36877; GFX6-NEXT:    s_waitcnt expcnt(0)6878; GFX6-NEXT:    v_and_b32_e32 v7, v4, v66879; GFX6-NEXT:    v_sub_f32_e32 v3, v3, v56880; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v36881; GFX6-NEXT:    v_lshlrev_b32_e32 v3, v2, v36882; GFX6-NEXT:    v_or_b32_e32 v3, v7, v36883; GFX6-NEXT:    v_mov_b32_e32 v8, v46884; GFX6-NEXT:    v_mov_b32_e32 v7, v36885; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc6886; GFX6-NEXT:    s_waitcnt vmcnt(0)6887; GFX6-NEXT:    buffer_wbinvl16888; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v46889; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]6890; GFX6-NEXT:    v_mov_b32_e32 v4, v76891; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]6892; GFX6-NEXT:    s_cbranch_execnz .LBB25_16893; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end6894; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]6895; GFX6-NEXT:    s_waitcnt expcnt(0)6896; GFX6-NEXT:    s_setpc_b64 s[30:31]6897  %unused = atomicrmw fsub ptr addrspace(1) %ptr, half %val syncscope("agent") seq_cst6898  ret void6899}6900 6901define void @global_agent_atomic_fsub_noret_f16__offset12b_pos(ptr addrspace(1) %ptr, half %val) #0 {6902; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_pos:6903; GFX12-TRUE16:       ; %bb.0:6904; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06905; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x06906; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x06907; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x06908; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x06909; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v06910; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)6911; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo6912; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 06913; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v36914; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v36915; GFX12-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off6916; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v36917; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6918; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff6919; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v36920; GFX12-TRUE16-NEXT:  .LBB26_1: ; %atomicrmw.start6921; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16922; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06923; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v46924; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 06925; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6926; GFX12-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v3.l, v2.l6927; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v36928; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6929; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v36930; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x06931; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV6932; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06933; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV6934; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v46935; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v36936; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6937; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06938; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6939; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06940; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB26_16941; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6942; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06943; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06944; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]6945;6946; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_pos:6947; GFX12-FAKE16:       ; %bb.0:6948; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06949; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x06950; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x06951; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x06952; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x06953; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v06954; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)6955; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo6956; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 06957; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v36958; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v36959; GFX12-FAKE16-NEXT:    global_load_b32 v4, v[0:1], off6960; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v36961; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6962; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff6963; GFX12-FAKE16-NEXT:    v_not_b32_e32 v6, v36964; GFX12-FAKE16-NEXT:  .LBB26_1: ; %atomicrmw.start6965; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16966; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06967; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v46968; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6969; GFX12-FAKE16-NEXT:    v_sub_f16_e32 v3, v3, v26970; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v36971; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6972; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v36973; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v36974; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x06975; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV6976; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06977; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV6978; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v46979; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v36980; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6981; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06982; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6983; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06984; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB26_16985; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6986; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06987; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06988; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]6989;6990; GFX942-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_pos:6991; GFX942:       ; %bb.0:6992; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6993; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe6994; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]6995; GFX942-NEXT:    v_and_b32_e32 v0, -4, v46996; GFX942-NEXT:    v_mov_b32_e32 v1, v56997; GFX942-NEXT:    global_load_dword v5, v[0:1], off6998; GFX942-NEXT:    v_and_b32_e32 v3, 3, v46999; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v37000; GFX942-NEXT:    s_mov_b32 s0, 0xffff7001; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s07002; GFX942-NEXT:    v_not_b32_e32 v6, v47003; GFX942-NEXT:    s_mov_b64 s[0:1], 07004; GFX942-NEXT:  .LBB26_1: ; %atomicrmw.start7005; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=17006; GFX942-NEXT:    s_waitcnt vmcnt(0)7007; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v3, v57008; GFX942-NEXT:    v_sub_f16_e32 v4, v4, v27009; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v3, v47010; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v47011; GFX942-NEXT:    buffer_wbl2 sc17012; GFX942-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off sc07013; GFX942-NEXT:    s_waitcnt vmcnt(0)7014; GFX942-NEXT:    buffer_inv sc17015; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v57016; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]7017; GFX942-NEXT:    v_mov_b32_e32 v5, v47018; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]7019; GFX942-NEXT:    s_cbranch_execnz .LBB26_17020; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end7021; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]7022; GFX942-NEXT:    s_setpc_b64 s[30:31]7023;7024; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_pos:7025; GFX11-TRUE16:       ; %bb.0:7026; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7027; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v07028; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7029; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo7030; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 07031; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v37032; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v37033; GFX11-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off7034; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v37035; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7036; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7037; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v37038; GFX11-TRUE16-NEXT:  .LBB26_1: ; %atomicrmw.start7039; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17040; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)7041; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v47042; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 07043; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7044; GFX11-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v3.l, v2.l7045; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v37046; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7047; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v37048; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x07049; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc7050; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)7051; GFX11-TRUE16-NEXT:    buffer_gl1_inv7052; GFX11-TRUE16-NEXT:    buffer_gl0_inv7053; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47054; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v37055; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07056; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7057; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07058; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB26_17059; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7060; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07061; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]7062;7063; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_pos:7064; GFX11-FAKE16:       ; %bb.0:7065; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7066; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v07067; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7068; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo7069; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 07070; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v37071; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v37072; GFX11-FAKE16-NEXT:    global_load_b32 v4, v[0:1], off7073; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v37074; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7075; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7076; GFX11-FAKE16-NEXT:    v_not_b32_e32 v6, v37077; GFX11-FAKE16-NEXT:  .LBB26_1: ; %atomicrmw.start7078; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17079; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)7080; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v47081; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7082; GFX11-FAKE16-NEXT:    v_sub_f16_e32 v3, v3, v27083; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v37084; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7085; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v37086; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v37087; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x07088; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc7089; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)7090; GFX11-FAKE16-NEXT:    buffer_gl1_inv7091; GFX11-FAKE16-NEXT:    buffer_gl0_inv7092; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47093; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v37094; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s07095; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7096; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07097; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB26_17098; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7099; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07100; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]7101;7102; GFX10-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_pos:7103; GFX10:       ; %bb.0:7104; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7105; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v07106; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo7107; GFX10-NEXT:    s_mov_b32 s4, 07108; GFX10-NEXT:    v_and_b32_e32 v0, -4, v37109; GFX10-NEXT:    v_and_b32_e32 v3, 3, v37110; GFX10-NEXT:    global_load_dword v4, v[0:1], off7111; GFX10-NEXT:    v_lshlrev_b32_e32 v5, 3, v37112; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7113; GFX10-NEXT:    v_not_b32_e32 v6, v37114; GFX10-NEXT:  .LBB26_1: ; %atomicrmw.start7115; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=17116; GFX10-NEXT:    s_waitcnt vmcnt(0)7117; GFX10-NEXT:    v_lshrrev_b32_e32 v3, v5, v47118; GFX10-NEXT:    v_sub_f16_e32 v3, v3, v27119; GFX10-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_07120; GFX10-NEXT:    v_and_or_b32 v3, v4, v6, v37121; GFX10-NEXT:    s_waitcnt_vscnt null, 0x07122; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc7123; GFX10-NEXT:    s_waitcnt vmcnt(0)7124; GFX10-NEXT:    buffer_gl1_inv7125; GFX10-NEXT:    buffer_gl0_inv7126; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47127; GFX10-NEXT:    v_mov_b32_e32 v4, v37128; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s47129; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s47130; GFX10-NEXT:    s_cbranch_execnz .LBB26_17131; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end7132; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s47133; GFX10-NEXT:    s_setpc_b64 s[30:31]7134;7135; GFX90A-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_pos:7136; GFX90A:       ; %bb.0:7137; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7138; GFX90A-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v07139; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc7140; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v37141; GFX90A-NEXT:    global_load_dword v5, v[0:1], off7142; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v37143; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v37144; GFX90A-NEXT:    s_mov_b32 s4, 0xffff7145; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s47146; GFX90A-NEXT:    v_not_b32_e32 v6, v47147; GFX90A-NEXT:    s_mov_b64 s[4:5], 07148; GFX90A-NEXT:  .LBB26_1: ; %atomicrmw.start7149; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=17150; GFX90A-NEXT:    s_waitcnt vmcnt(0)7151; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v3, v57152; GFX90A-NEXT:    v_sub_f16_e32 v4, v4, v27153; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v3, v47154; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v47155; GFX90A-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off glc7156; GFX90A-NEXT:    s_waitcnt vmcnt(0)7157; GFX90A-NEXT:    buffer_wbinvl17158; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v57159; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7160; GFX90A-NEXT:    v_mov_b32_e32 v5, v47161; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]7162; GFX90A-NEXT:    s_cbranch_execnz .LBB26_17163; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end7164; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]7165; GFX90A-NEXT:    s_setpc_b64 s[30:31]7166;7167; GFX908-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_pos:7168; GFX908:       ; %bb.0:7169; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7170; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v07171; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc7172; GFX908-NEXT:    v_and_b32_e32 v0, -4, v37173; GFX908-NEXT:    global_load_dword v4, v[0:1], off7174; GFX908-NEXT:    v_and_b32_e32 v3, 3, v37175; GFX908-NEXT:    v_lshlrev_b32_e32 v5, 3, v37176; GFX908-NEXT:    s_mov_b32 s4, 0xffff7177; GFX908-NEXT:    v_lshlrev_b32_e64 v3, v5, s47178; GFX908-NEXT:    v_not_b32_e32 v6, v37179; GFX908-NEXT:    s_mov_b64 s[4:5], 07180; GFX908-NEXT:  .LBB26_1: ; %atomicrmw.start7181; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=17182; GFX908-NEXT:    s_waitcnt vmcnt(0)7183; GFX908-NEXT:    v_lshrrev_b32_e32 v3, v5, v47184; GFX908-NEXT:    v_sub_f16_e32 v3, v3, v27185; GFX908-NEXT:    v_lshlrev_b32_e32 v3, v5, v37186; GFX908-NEXT:    v_and_or_b32 v3, v4, v6, v37187; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc7188; GFX908-NEXT:    s_waitcnt vmcnt(0)7189; GFX908-NEXT:    buffer_wbinvl17190; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v47191; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7192; GFX908-NEXT:    v_mov_b32_e32 v4, v37193; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]7194; GFX908-NEXT:    s_cbranch_execnz .LBB26_17195; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end7196; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]7197; GFX908-NEXT:    s_setpc_b64 s[30:31]7198;7199; GFX8-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_pos:7200; GFX8:       ; %bb.0:7201; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7202; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v07203; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc7204; GFX8-NEXT:    v_and_b32_e32 v0, -4, v37205; GFX8-NEXT:    flat_load_dword v4, v[0:1]7206; GFX8-NEXT:    v_and_b32_e32 v3, 3, v37207; GFX8-NEXT:    v_lshlrev_b32_e32 v5, 3, v37208; GFX8-NEXT:    s_mov_b32 s4, 0xffff7209; GFX8-NEXT:    v_lshlrev_b32_e64 v3, v5, s47210; GFX8-NEXT:    v_not_b32_e32 v6, v37211; GFX8-NEXT:    s_mov_b64 s[4:5], 07212; GFX8-NEXT:  .LBB26_1: ; %atomicrmw.start7213; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=17214; GFX8-NEXT:    s_waitcnt vmcnt(0)7215; GFX8-NEXT:    v_lshrrev_b32_e32 v3, v5, v47216; GFX8-NEXT:    v_sub_f16_e32 v3, v3, v27217; GFX8-NEXT:    v_and_b32_e32 v7, v4, v67218; GFX8-NEXT:    v_lshlrev_b32_e32 v3, v5, v37219; GFX8-NEXT:    v_or_b32_e32 v3, v7, v37220; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc7221; GFX8-NEXT:    s_waitcnt vmcnt(0)7222; GFX8-NEXT:    buffer_wbinvl17223; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v47224; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7225; GFX8-NEXT:    v_mov_b32_e32 v4, v37226; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]7227; GFX8-NEXT:    s_cbranch_execnz .LBB26_17228; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end7229; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]7230; GFX8-NEXT:    s_setpc_b64 s[30:31]7231;7232; GFX7-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_pos:7233; GFX7:       ; %bb.0:7234; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7235; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v07236; GFX7-NEXT:    s_mov_b32 s6, 07237; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc7238; GFX7-NEXT:    v_and_b32_e32 v0, -4, v47239; GFX7-NEXT:    s_mov_b32 s7, 0xf0007240; GFX7-NEXT:    s_mov_b32 s4, s67241; GFX7-NEXT:    s_mov_b32 s5, s67242; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr647243; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v27244; GFX7-NEXT:    v_and_b32_e32 v4, 3, v47245; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v47246; GFX7-NEXT:    s_mov_b64 s[8:9], 07247; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v27248; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v47249; GFX7-NEXT:    v_not_b32_e32 v6, v27250; GFX7-NEXT:  .LBB26_1: ; %atomicrmw.start7251; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=17252; GFX7-NEXT:    s_waitcnt vmcnt(0)7253; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v37254; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v27255; GFX7-NEXT:    v_and_b32_e32 v7, v3, v67256; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v57257; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v27258; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v27259; GFX7-NEXT:    v_or_b32_e32 v2, v7, v27260; GFX7-NEXT:    v_mov_b32_e32 v8, v37261; GFX7-NEXT:    v_mov_b32_e32 v7, v27262; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc7263; GFX7-NEXT:    s_waitcnt vmcnt(0)7264; GFX7-NEXT:    buffer_wbinvl17265; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v37266; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]7267; GFX7-NEXT:    v_mov_b32_e32 v3, v77268; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]7269; GFX7-NEXT:    s_cbranch_execnz .LBB26_17270; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end7271; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]7272; GFX7-NEXT:    s_setpc_b64 s[30:31]7273;7274; GFX6-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_pos:7275; GFX6:       ; %bb.0:7276; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7277; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v07278; GFX6-NEXT:    s_mov_b32 s6, 07279; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc7280; GFX6-NEXT:    v_and_b32_e32 v0, -4, v47281; GFX6-NEXT:    s_mov_b32 s7, 0xf0007282; GFX6-NEXT:    s_mov_b32 s4, s67283; GFX6-NEXT:    s_mov_b32 s5, s67284; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr647285; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v27286; GFX6-NEXT:    v_and_b32_e32 v4, 3, v47287; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 3, v47288; GFX6-NEXT:    s_mov_b64 s[8:9], 07289; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v27290; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v47291; GFX6-NEXT:    v_not_b32_e32 v6, v27292; GFX6-NEXT:  .LBB26_1: ; %atomicrmw.start7293; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=17294; GFX6-NEXT:    s_waitcnt vmcnt(0)7295; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v4, v37296; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v27297; GFX6-NEXT:    s_waitcnt expcnt(0)7298; GFX6-NEXT:    v_and_b32_e32 v7, v3, v67299; GFX6-NEXT:    v_sub_f32_e32 v2, v2, v57300; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v27301; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v4, v27302; GFX6-NEXT:    v_or_b32_e32 v2, v7, v27303; GFX6-NEXT:    v_mov_b32_e32 v8, v37304; GFX6-NEXT:    v_mov_b32_e32 v7, v27305; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc7306; GFX6-NEXT:    s_waitcnt vmcnt(0)7307; GFX6-NEXT:    buffer_wbinvl17308; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v37309; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]7310; GFX6-NEXT:    v_mov_b32_e32 v3, v77311; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]7312; GFX6-NEXT:    s_cbranch_execnz .LBB26_17313; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end7314; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]7315; GFX6-NEXT:    s_waitcnt expcnt(0)7316; GFX6-NEXT:    s_setpc_b64 s[30:31]7317  %gep = getelementptr half, ptr addrspace(1) %ptr, i64 10237318  %unused = atomicrmw fsub ptr addrspace(1) %gep, half %val syncscope("agent") seq_cst7319  ret void7320}7321 7322define void @global_agent_atomic_fsub_noret_f16__offset12b_neg(ptr addrspace(1) %ptr, half %val) #0 {7323; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_neg:7324; GFX12-TRUE16:       ; %bb.0:7325; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x07326; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x07327; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x07328; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x07329; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x07330; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v07331; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)7332; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo7333; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 07334; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v37335; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v37336; GFX12-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off7337; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v37338; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7339; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7340; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v37341; GFX12-TRUE16-NEXT:  .LBB27_1: ; %atomicrmw.start7342; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17343; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07344; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v47345; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 07346; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7347; GFX12-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v3.l, v2.l7348; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v37349; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7350; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v37351; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x07352; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV7353; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07354; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV7355; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47356; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v37357; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7358; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07359; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7360; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07361; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB27_17362; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7363; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07364; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07365; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]7366;7367; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_neg:7368; GFX12-FAKE16:       ; %bb.0:7369; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07370; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x07371; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x07372; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x07373; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x07374; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v07375; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)7376; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo7377; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 07378; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v37379; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v37380; GFX12-FAKE16-NEXT:    global_load_b32 v4, v[0:1], off7381; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v37382; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7383; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7384; GFX12-FAKE16-NEXT:    v_not_b32_e32 v6, v37385; GFX12-FAKE16-NEXT:  .LBB27_1: ; %atomicrmw.start7386; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17387; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07388; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v47389; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7390; GFX12-FAKE16-NEXT:    v_sub_f16_e32 v3, v3, v27391; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v37392; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7393; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v37394; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v37395; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x07396; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV7397; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07398; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV7399; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47400; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v37401; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7402; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s07403; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7404; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07405; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB27_17406; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7407; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07408; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07409; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]7410;7411; GFX942-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_neg:7412; GFX942:       ; %bb.0:7413; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7414; GFX942-NEXT:    s_movk_i32 s0, 0xf8007415; GFX942-NEXT:    s_mov_b32 s1, -17416; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]7417; GFX942-NEXT:    v_and_b32_e32 v0, -4, v47418; GFX942-NEXT:    v_mov_b32_e32 v1, v57419; GFX942-NEXT:    global_load_dword v5, v[0:1], off7420; GFX942-NEXT:    v_and_b32_e32 v3, 3, v47421; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v37422; GFX942-NEXT:    s_mov_b32 s0, 0xffff7423; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s07424; GFX942-NEXT:    v_not_b32_e32 v6, v47425; GFX942-NEXT:    s_mov_b64 s[0:1], 07426; GFX942-NEXT:  .LBB27_1: ; %atomicrmw.start7427; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=17428; GFX942-NEXT:    s_waitcnt vmcnt(0)7429; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v3, v57430; GFX942-NEXT:    v_sub_f16_e32 v4, v4, v27431; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v3, v47432; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v47433; GFX942-NEXT:    buffer_wbl2 sc17434; GFX942-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off sc07435; GFX942-NEXT:    s_waitcnt vmcnt(0)7436; GFX942-NEXT:    buffer_inv sc17437; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v57438; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]7439; GFX942-NEXT:    v_mov_b32_e32 v5, v47440; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]7441; GFX942-NEXT:    s_cbranch_execnz .LBB27_17442; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end7443; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]7444; GFX942-NEXT:    s_setpc_b64 s[30:31]7445;7446; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_neg:7447; GFX11-TRUE16:       ; %bb.0:7448; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7449; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v07450; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7451; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo7452; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 07453; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v37454; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v37455; GFX11-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off7456; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v37457; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7458; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7459; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v37460; GFX11-TRUE16-NEXT:  .LBB27_1: ; %atomicrmw.start7461; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17462; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)7463; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v47464; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 07465; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7466; GFX11-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v3.l, v2.l7467; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v37468; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7469; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v37470; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x07471; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc7472; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)7473; GFX11-TRUE16-NEXT:    buffer_gl1_inv7474; GFX11-TRUE16-NEXT:    buffer_gl0_inv7475; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47476; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v37477; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07478; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7479; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07480; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB27_17481; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7482; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07483; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]7484;7485; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_neg:7486; GFX11-FAKE16:       ; %bb.0:7487; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7488; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v07489; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7490; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo7491; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 07492; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v37493; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v37494; GFX11-FAKE16-NEXT:    global_load_b32 v4, v[0:1], off7495; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v37496; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7497; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7498; GFX11-FAKE16-NEXT:    v_not_b32_e32 v6, v37499; GFX11-FAKE16-NEXT:  .LBB27_1: ; %atomicrmw.start7500; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17501; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)7502; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v47503; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7504; GFX11-FAKE16-NEXT:    v_sub_f16_e32 v3, v3, v27505; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v37506; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7507; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v37508; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v37509; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x07510; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc7511; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)7512; GFX11-FAKE16-NEXT:    buffer_gl1_inv7513; GFX11-FAKE16-NEXT:    buffer_gl0_inv7514; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47515; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v37516; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s07517; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7518; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07519; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB27_17520; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7521; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07522; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]7523;7524; GFX10-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_neg:7525; GFX10:       ; %bb.0:7526; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7527; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v07528; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo7529; GFX10-NEXT:    s_mov_b32 s4, 07530; GFX10-NEXT:    v_and_b32_e32 v0, -4, v37531; GFX10-NEXT:    v_and_b32_e32 v3, 3, v37532; GFX10-NEXT:    global_load_dword v4, v[0:1], off7533; GFX10-NEXT:    v_lshlrev_b32_e32 v5, 3, v37534; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7535; GFX10-NEXT:    v_not_b32_e32 v6, v37536; GFX10-NEXT:  .LBB27_1: ; %atomicrmw.start7537; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=17538; GFX10-NEXT:    s_waitcnt vmcnt(0)7539; GFX10-NEXT:    v_lshrrev_b32_e32 v3, v5, v47540; GFX10-NEXT:    v_sub_f16_e32 v3, v3, v27541; GFX10-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_07542; GFX10-NEXT:    v_and_or_b32 v3, v4, v6, v37543; GFX10-NEXT:    s_waitcnt_vscnt null, 0x07544; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc7545; GFX10-NEXT:    s_waitcnt vmcnt(0)7546; GFX10-NEXT:    buffer_gl1_inv7547; GFX10-NEXT:    buffer_gl0_inv7548; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47549; GFX10-NEXT:    v_mov_b32_e32 v4, v37550; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s47551; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s47552; GFX10-NEXT:    s_cbranch_execnz .LBB27_17553; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end7554; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s47555; GFX10-NEXT:    s_setpc_b64 s[30:31]7556;7557; GFX90A-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_neg:7558; GFX90A:       ; %bb.0:7559; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7560; GFX90A-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v07561; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc7562; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v37563; GFX90A-NEXT:    global_load_dword v5, v[0:1], off7564; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v37565; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v37566; GFX90A-NEXT:    s_mov_b32 s4, 0xffff7567; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s47568; GFX90A-NEXT:    v_not_b32_e32 v6, v47569; GFX90A-NEXT:    s_mov_b64 s[4:5], 07570; GFX90A-NEXT:  .LBB27_1: ; %atomicrmw.start7571; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=17572; GFX90A-NEXT:    s_waitcnt vmcnt(0)7573; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v3, v57574; GFX90A-NEXT:    v_sub_f16_e32 v4, v4, v27575; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v3, v47576; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v47577; GFX90A-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off glc7578; GFX90A-NEXT:    s_waitcnt vmcnt(0)7579; GFX90A-NEXT:    buffer_wbinvl17580; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v57581; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7582; GFX90A-NEXT:    v_mov_b32_e32 v5, v47583; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]7584; GFX90A-NEXT:    s_cbranch_execnz .LBB27_17585; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end7586; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]7587; GFX90A-NEXT:    s_setpc_b64 s[30:31]7588;7589; GFX908-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_neg:7590; GFX908:       ; %bb.0:7591; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7592; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v07593; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc7594; GFX908-NEXT:    v_and_b32_e32 v0, -4, v37595; GFX908-NEXT:    global_load_dword v4, v[0:1], off7596; GFX908-NEXT:    v_and_b32_e32 v3, 3, v37597; GFX908-NEXT:    v_lshlrev_b32_e32 v5, 3, v37598; GFX908-NEXT:    s_mov_b32 s4, 0xffff7599; GFX908-NEXT:    v_lshlrev_b32_e64 v3, v5, s47600; GFX908-NEXT:    v_not_b32_e32 v6, v37601; GFX908-NEXT:    s_mov_b64 s[4:5], 07602; GFX908-NEXT:  .LBB27_1: ; %atomicrmw.start7603; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=17604; GFX908-NEXT:    s_waitcnt vmcnt(0)7605; GFX908-NEXT:    v_lshrrev_b32_e32 v3, v5, v47606; GFX908-NEXT:    v_sub_f16_e32 v3, v3, v27607; GFX908-NEXT:    v_lshlrev_b32_e32 v3, v5, v37608; GFX908-NEXT:    v_and_or_b32 v3, v4, v6, v37609; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc7610; GFX908-NEXT:    s_waitcnt vmcnt(0)7611; GFX908-NEXT:    buffer_wbinvl17612; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v47613; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7614; GFX908-NEXT:    v_mov_b32_e32 v4, v37615; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]7616; GFX908-NEXT:    s_cbranch_execnz .LBB27_17617; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end7618; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]7619; GFX908-NEXT:    s_setpc_b64 s[30:31]7620;7621; GFX8-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_neg:7622; GFX8:       ; %bb.0:7623; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7624; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v07625; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc7626; GFX8-NEXT:    v_and_b32_e32 v0, -4, v37627; GFX8-NEXT:    flat_load_dword v4, v[0:1]7628; GFX8-NEXT:    v_and_b32_e32 v3, 3, v37629; GFX8-NEXT:    v_lshlrev_b32_e32 v5, 3, v37630; GFX8-NEXT:    s_mov_b32 s4, 0xffff7631; GFX8-NEXT:    v_lshlrev_b32_e64 v3, v5, s47632; GFX8-NEXT:    v_not_b32_e32 v6, v37633; GFX8-NEXT:    s_mov_b64 s[4:5], 07634; GFX8-NEXT:  .LBB27_1: ; %atomicrmw.start7635; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=17636; GFX8-NEXT:    s_waitcnt vmcnt(0)7637; GFX8-NEXT:    v_lshrrev_b32_e32 v3, v5, v47638; GFX8-NEXT:    v_sub_f16_e32 v3, v3, v27639; GFX8-NEXT:    v_and_b32_e32 v7, v4, v67640; GFX8-NEXT:    v_lshlrev_b32_e32 v3, v5, v37641; GFX8-NEXT:    v_or_b32_e32 v3, v7, v37642; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc7643; GFX8-NEXT:    s_waitcnt vmcnt(0)7644; GFX8-NEXT:    buffer_wbinvl17645; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v47646; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7647; GFX8-NEXT:    v_mov_b32_e32 v4, v37648; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]7649; GFX8-NEXT:    s_cbranch_execnz .LBB27_17650; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end7651; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]7652; GFX8-NEXT:    s_setpc_b64 s[30:31]7653;7654; GFX7-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_neg:7655; GFX7:       ; %bb.0:7656; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7657; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v07658; GFX7-NEXT:    s_mov_b32 s6, 07659; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc7660; GFX7-NEXT:    v_and_b32_e32 v0, -4, v47661; GFX7-NEXT:    s_mov_b32 s7, 0xf0007662; GFX7-NEXT:    s_mov_b32 s4, s67663; GFX7-NEXT:    s_mov_b32 s5, s67664; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr647665; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v27666; GFX7-NEXT:    v_and_b32_e32 v4, 3, v47667; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v47668; GFX7-NEXT:    s_mov_b64 s[8:9], 07669; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v27670; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v47671; GFX7-NEXT:    v_not_b32_e32 v6, v27672; GFX7-NEXT:  .LBB27_1: ; %atomicrmw.start7673; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=17674; GFX7-NEXT:    s_waitcnt vmcnt(0)7675; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v37676; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v27677; GFX7-NEXT:    v_and_b32_e32 v7, v3, v67678; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v57679; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v27680; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v27681; GFX7-NEXT:    v_or_b32_e32 v2, v7, v27682; GFX7-NEXT:    v_mov_b32_e32 v8, v37683; GFX7-NEXT:    v_mov_b32_e32 v7, v27684; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc7685; GFX7-NEXT:    s_waitcnt vmcnt(0)7686; GFX7-NEXT:    buffer_wbinvl17687; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v37688; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]7689; GFX7-NEXT:    v_mov_b32_e32 v3, v77690; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]7691; GFX7-NEXT:    s_cbranch_execnz .LBB27_17692; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end7693; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]7694; GFX7-NEXT:    s_setpc_b64 s[30:31]7695;7696; GFX6-LABEL: global_agent_atomic_fsub_noret_f16__offset12b_neg:7697; GFX6:       ; %bb.0:7698; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7699; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v07700; GFX6-NEXT:    s_mov_b32 s6, 07701; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc7702; GFX6-NEXT:    v_and_b32_e32 v0, -4, v47703; GFX6-NEXT:    s_mov_b32 s7, 0xf0007704; GFX6-NEXT:    s_mov_b32 s4, s67705; GFX6-NEXT:    s_mov_b32 s5, s67706; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr647707; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v27708; GFX6-NEXT:    v_and_b32_e32 v4, 3, v47709; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 3, v47710; GFX6-NEXT:    s_mov_b64 s[8:9], 07711; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v27712; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v47713; GFX6-NEXT:    v_not_b32_e32 v6, v27714; GFX6-NEXT:  .LBB27_1: ; %atomicrmw.start7715; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=17716; GFX6-NEXT:    s_waitcnt vmcnt(0)7717; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v4, v37718; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v27719; GFX6-NEXT:    s_waitcnt expcnt(0)7720; GFX6-NEXT:    v_and_b32_e32 v7, v3, v67721; GFX6-NEXT:    v_sub_f32_e32 v2, v2, v57722; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v27723; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v4, v27724; GFX6-NEXT:    v_or_b32_e32 v2, v7, v27725; GFX6-NEXT:    v_mov_b32_e32 v8, v37726; GFX6-NEXT:    v_mov_b32_e32 v7, v27727; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc7728; GFX6-NEXT:    s_waitcnt vmcnt(0)7729; GFX6-NEXT:    buffer_wbinvl17730; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v37731; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]7732; GFX6-NEXT:    v_mov_b32_e32 v3, v77733; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]7734; GFX6-NEXT:    s_cbranch_execnz .LBB27_17735; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end7736; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]7737; GFX6-NEXT:    s_waitcnt expcnt(0)7738; GFX6-NEXT:    s_setpc_b64 s[30:31]7739  %gep = getelementptr half, ptr addrspace(1) %ptr, i64 -10247740  %unused = atomicrmw fsub ptr addrspace(1) %gep, half %val syncscope("agent") seq_cst7741  ret void7742}7743 7744define half @global_agent_atomic_fsub_ret_f16__offset12b_pos__align4(ptr addrspace(1) %ptr, half %val) #0 {7745; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos__align4:7746; GFX12-TRUE16:       ; %bb.0:7747; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x07748; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x07749; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x07750; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x07751; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x07752; GFX12-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:20467753; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 07754; GFX12-TRUE16-NEXT:  .LBB28_1: ; %atomicrmw.start7755; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17756; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07757; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v37758; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 07759; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7760; GFX12-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v4.l, v2.l7761; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v37762; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x07763; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV7764; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07765; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV7766; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47767; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7768; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07769; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7770; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07771; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB28_17772; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7773; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07774; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v3.l7775; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07776; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]7777;7778; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos__align4:7779; GFX12-FAKE16:       ; %bb.0:7780; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07781; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x07782; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x07783; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x07784; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x07785; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:20467786; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 07787; GFX12-FAKE16-NEXT:  .LBB28_1: ; %atomicrmw.start7788; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17789; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07790; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v37791; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7792; GFX12-FAKE16-NEXT:    v_sub_f16_e32 v3, v4, v27793; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v37794; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7795; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v37796; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x07797; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV7798; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07799; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV7800; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47801; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7802; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s07803; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7804; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07805; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB28_17806; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7807; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07808; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v37809; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07810; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]7811;7812; GFX942-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos__align4:7813; GFX942:       ; %bb.0:7814; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7815; GFX942-NEXT:    global_load_dword v5, v[0:1], off offset:20467816; GFX942-NEXT:    s_mov_b64 s[0:1], 07817; GFX942-NEXT:    s_mov_b32 s2, 0xffff00007818; GFX942-NEXT:  .LBB28_1: ; %atomicrmw.start7819; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=17820; GFX942-NEXT:    s_waitcnt vmcnt(0)7821; GFX942-NEXT:    v_sub_f16_e32 v3, v5, v27822; GFX942-NEXT:    v_and_or_b32 v4, v5, s2, v37823; GFX942-NEXT:    buffer_wbl2 sc17824; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2046 sc07825; GFX942-NEXT:    s_waitcnt vmcnt(0)7826; GFX942-NEXT:    buffer_inv sc17827; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v57828; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]7829; GFX942-NEXT:    v_mov_b32_e32 v5, v37830; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]7831; GFX942-NEXT:    s_cbranch_execnz .LBB28_17832; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end7833; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]7834; GFX942-NEXT:    v_mov_b32_e32 v0, v37835; GFX942-NEXT:    s_setpc_b64 s[30:31]7836;7837; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos__align4:7838; GFX11-TRUE16:       ; %bb.0:7839; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7840; GFX11-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:20467841; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 07842; GFX11-TRUE16-NEXT:  .LBB28_1: ; %atomicrmw.start7843; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17844; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)7845; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v37846; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 07847; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7848; GFX11-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v4.l, v2.l7849; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v37850; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x07851; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 glc7852; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)7853; GFX11-TRUE16-NEXT:    buffer_gl1_inv7854; GFX11-TRUE16-NEXT:    buffer_gl0_inv7855; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47856; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07857; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7858; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07859; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB28_17860; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7861; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07862; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v3.l7863; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]7864;7865; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos__align4:7866; GFX11-FAKE16:       ; %bb.0:7867; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7868; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:20467869; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 07870; GFX11-FAKE16-NEXT:  .LBB28_1: ; %atomicrmw.start7871; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17872; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)7873; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v37874; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7875; GFX11-FAKE16-NEXT:    v_sub_f16_e32 v3, v4, v27876; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v37877; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7878; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v37879; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x07880; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 glc7881; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)7882; GFX11-FAKE16-NEXT:    buffer_gl1_inv7883; GFX11-FAKE16-NEXT:    buffer_gl0_inv7884; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47885; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s07886; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7887; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07888; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB28_17889; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7890; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07891; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v37892; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]7893;7894; GFX10-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos__align4:7895; GFX10:       ; %bb.0:7896; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7897; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:20467898; GFX10-NEXT:    s_mov_b32 s4, 07899; GFX10-NEXT:  .LBB28_1: ; %atomicrmw.start7900; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=17901; GFX10-NEXT:    s_waitcnt vmcnt(0)7902; GFX10-NEXT:    v_mov_b32_e32 v4, v37903; GFX10-NEXT:    v_sub_f16_e32 v3, v4, v27904; GFX10-NEXT:    v_and_b32_e32 v3, 0xffff, v37905; GFX10-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v37906; GFX10-NEXT:    s_waitcnt_vscnt null, 0x07907; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2046 glc7908; GFX10-NEXT:    s_waitcnt vmcnt(0)7909; GFX10-NEXT:    buffer_gl1_inv7910; GFX10-NEXT:    buffer_gl0_inv7911; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47912; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s47913; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s47914; GFX10-NEXT:    s_cbranch_execnz .LBB28_17915; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end7916; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s47917; GFX10-NEXT:    v_mov_b32_e32 v0, v37918; GFX10-NEXT:    s_setpc_b64 s[30:31]7919;7920; GFX90A-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos__align4:7921; GFX90A:       ; %bb.0:7922; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7923; GFX90A-NEXT:    global_load_dword v5, v[0:1], off offset:20467924; GFX90A-NEXT:    s_mov_b64 s[4:5], 07925; GFX90A-NEXT:    s_mov_b32 s6, 0xffff00007926; GFX90A-NEXT:  .LBB28_1: ; %atomicrmw.start7927; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=17928; GFX90A-NEXT:    s_waitcnt vmcnt(0)7929; GFX90A-NEXT:    v_sub_f16_e32 v3, v5, v27930; GFX90A-NEXT:    v_and_or_b32 v4, v5, s6, v37931; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2046 glc7932; GFX90A-NEXT:    s_waitcnt vmcnt(0)7933; GFX90A-NEXT:    buffer_wbinvl17934; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v57935; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7936; GFX90A-NEXT:    v_mov_b32_e32 v5, v37937; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]7938; GFX90A-NEXT:    s_cbranch_execnz .LBB28_17939; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end7940; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]7941; GFX90A-NEXT:    v_mov_b32_e32 v0, v37942; GFX90A-NEXT:    s_setpc_b64 s[30:31]7943;7944; GFX908-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos__align4:7945; GFX908:       ; %bb.0:7946; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7947; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:20467948; GFX908-NEXT:    s_mov_b64 s[4:5], 07949; GFX908-NEXT:    s_mov_b32 s6, 0xffff00007950; GFX908-NEXT:  .LBB28_1: ; %atomicrmw.start7951; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=17952; GFX908-NEXT:    s_waitcnt vmcnt(0)7953; GFX908-NEXT:    v_mov_b32_e32 v4, v37954; GFX908-NEXT:    v_sub_f16_e32 v3, v4, v27955; GFX908-NEXT:    v_and_or_b32 v3, v4, s6, v37956; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2046 glc7957; GFX908-NEXT:    s_waitcnt vmcnt(0)7958; GFX908-NEXT:    buffer_wbinvl17959; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v47960; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7961; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]7962; GFX908-NEXT:    s_cbranch_execnz .LBB28_17963; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end7964; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]7965; GFX908-NEXT:    v_mov_b32_e32 v0, v37966; GFX908-NEXT:    s_setpc_b64 s[30:31]7967;7968; GFX8-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos__align4:7969; GFX8:       ; %bb.0:7970; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7971; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v07972; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc7973; GFX8-NEXT:    flat_load_dword v0, v[3:4]7974; GFX8-NEXT:    s_mov_b64 s[4:5], 07975; GFX8-NEXT:  .LBB28_1: ; %atomicrmw.start7976; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=17977; GFX8-NEXT:    s_waitcnt vmcnt(0)7978; GFX8-NEXT:    v_mov_b32_e32 v1, v07979; GFX8-NEXT:    v_sub_f16_e32 v0, v1, v27980; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v17981; GFX8-NEXT:    v_or_b32_e32 v0, v5, v07982; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc7983; GFX8-NEXT:    s_waitcnt vmcnt(0)7984; GFX8-NEXT:    buffer_wbinvl17985; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v17986; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7987; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]7988; GFX8-NEXT:    s_cbranch_execnz .LBB28_17989; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end7990; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]7991; GFX8-NEXT:    s_setpc_b64 s[30:31]7992;7993; GFX7-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos__align4:7994; GFX7:       ; %bb.0:7995; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7996; GFX7-NEXT:    s_mov_b32 s6, 07997; GFX7-NEXT:    s_mov_b32 s7, 0xf0007998; GFX7-NEXT:    s_mov_b32 s4, s67999; GFX7-NEXT:    s_mov_b32 s5, s68000; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:20468001; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v28002; GFX7-NEXT:    s_mov_b64 s[8:9], 08003; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v28004; GFX7-NEXT:  .LBB28_1: ; %atomicrmw.start8005; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=18006; GFX7-NEXT:    s_waitcnt vmcnt(0)8007; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v38008; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v38009; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v68010; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v28011; GFX7-NEXT:    v_or_b32_e32 v2, v4, v28012; GFX7-NEXT:    v_mov_b32_e32 v5, v38013; GFX7-NEXT:    v_mov_b32_e32 v4, v28014; GFX7-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 offset:2046 glc8015; GFX7-NEXT:    s_waitcnt vmcnt(0)8016; GFX7-NEXT:    buffer_wbinvl18017; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v38018; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]8019; GFX7-NEXT:    v_mov_b32_e32 v3, v48020; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]8021; GFX7-NEXT:    s_cbranch_execnz .LBB28_18022; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end8023; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]8024; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v48025; GFX7-NEXT:    s_setpc_b64 s[30:31]8026;8027; GFX6-LABEL: global_agent_atomic_fsub_ret_f16__offset12b_pos__align4:8028; GFX6:       ; %bb.0:8029; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8030; GFX6-NEXT:    s_mov_b32 s6, 08031; GFX6-NEXT:    s_mov_b32 s7, 0xf0008032; GFX6-NEXT:    s_mov_b32 s4, s68033; GFX6-NEXT:    s_mov_b32 s5, s68034; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:20468035; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v28036; GFX6-NEXT:    s_mov_b64 s[8:9], 08037; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v28038; GFX6-NEXT:  .LBB28_1: ; %atomicrmw.start8039; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=18040; GFX6-NEXT:    s_waitcnt vmcnt(0)8041; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v38042; GFX6-NEXT:    s_waitcnt expcnt(0)8043; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v38044; GFX6-NEXT:    v_sub_f32_e32 v2, v2, v68045; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v28046; GFX6-NEXT:    v_or_b32_e32 v2, v4, v28047; GFX6-NEXT:    v_mov_b32_e32 v5, v38048; GFX6-NEXT:    v_mov_b32_e32 v4, v28049; GFX6-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 offset:2046 glc8050; GFX6-NEXT:    s_waitcnt vmcnt(0)8051; GFX6-NEXT:    buffer_wbinvl18052; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v38053; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]8054; GFX6-NEXT:    v_mov_b32_e32 v3, v48055; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]8056; GFX6-NEXT:    s_cbranch_execnz .LBB28_18057; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end8058; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]8059; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v48060; GFX6-NEXT:    s_waitcnt expcnt(0)8061; GFX6-NEXT:    s_setpc_b64 s[30:31]8062  %gep = getelementptr half, ptr addrspace(1) %ptr, i64 10238063  %result = atomicrmw fsub ptr addrspace(1) %gep, half %val syncscope("agent") seq_cst, align 48064  ret half %result8065}8066 8067define void @global_agent_atomic_fsub_noret_f16__offset12b__align4_pos(ptr addrspace(1) %ptr, half %val) #0 {8068; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_noret_f16__offset12b__align4_pos:8069; GFX12-TRUE16:       ; %bb.0:8070; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08071; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x08072; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x08073; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x08074; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x08075; GFX12-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off offset:20468076; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 08077; GFX12-TRUE16-NEXT:  .LBB29_1: ; %atomicrmw.start8078; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18079; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08080; GFX12-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v4.l, v2.l8081; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 08082; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8083; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v38084; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x08085; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV8086; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08087; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV8088; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48089; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v38090; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8091; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08092; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8093; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08094; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB29_18095; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8096; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08097; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08098; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]8099;8100; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_noret_f16__offset12b__align4_pos:8101; GFX12-FAKE16:       ; %bb.0:8102; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08103; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x08104; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x08105; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x08106; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x08107; GFX12-FAKE16-NEXT:    global_load_b32 v4, v[0:1], off offset:20468108; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 08109; GFX12-FAKE16-NEXT:  .LBB29_1: ; %atomicrmw.start8110; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18111; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08112; GFX12-FAKE16-NEXT:    v_sub_f16_e32 v3, v4, v28113; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8114; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v38115; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v38116; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x08117; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV8118; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08119; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV8120; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48121; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v38122; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8123; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08124; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8125; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08126; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB29_18127; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8128; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08129; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08130; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]8131;8132; GFX942-LABEL: global_agent_atomic_fsub_noret_f16__offset12b__align4_pos:8133; GFX942:       ; %bb.0:8134; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8135; GFX942-NEXT:    global_load_dword v5, v[0:1], off offset:20468136; GFX942-NEXT:    s_mov_b64 s[0:1], 08137; GFX942-NEXT:    s_mov_b32 s2, 0xffff00008138; GFX942-NEXT:  .LBB29_1: ; %atomicrmw.start8139; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=18140; GFX942-NEXT:    s_waitcnt vmcnt(0)8141; GFX942-NEXT:    v_sub_f16_e32 v3, v5, v28142; GFX942-NEXT:    v_and_or_b32 v4, v5, s2, v38143; GFX942-NEXT:    buffer_wbl2 sc18144; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2046 sc08145; GFX942-NEXT:    s_waitcnt vmcnt(0)8146; GFX942-NEXT:    buffer_inv sc18147; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v58148; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]8149; GFX942-NEXT:    v_mov_b32_e32 v5, v38150; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]8151; GFX942-NEXT:    s_cbranch_execnz .LBB29_18152; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end8153; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]8154; GFX942-NEXT:    s_setpc_b64 s[30:31]8155;8156; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_noret_f16__offset12b__align4_pos:8157; GFX11-TRUE16:       ; %bb.0:8158; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8159; GFX11-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off offset:20468160; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 08161; GFX11-TRUE16-NEXT:  .LBB29_1: ; %atomicrmw.start8162; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18163; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)8164; GFX11-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v4.l, v2.l8165; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 08166; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8167; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v38168; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x08169; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 glc8170; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)8171; GFX11-TRUE16-NEXT:    buffer_gl1_inv8172; GFX11-TRUE16-NEXT:    buffer_gl0_inv8173; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48174; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v38175; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08176; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8177; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08178; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB29_18179; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8180; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08181; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]8182;8183; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_noret_f16__offset12b__align4_pos:8184; GFX11-FAKE16:       ; %bb.0:8185; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8186; GFX11-FAKE16-NEXT:    global_load_b32 v4, v[0:1], off offset:20468187; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 08188; GFX11-FAKE16-NEXT:  .LBB29_1: ; %atomicrmw.start8189; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18190; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)8191; GFX11-FAKE16-NEXT:    v_sub_f16_e32 v3, v4, v28192; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8193; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v38194; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v38195; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x08196; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 glc8197; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)8198; GFX11-FAKE16-NEXT:    buffer_gl1_inv8199; GFX11-FAKE16-NEXT:    buffer_gl0_inv8200; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48201; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v38202; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08203; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8204; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08205; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB29_18206; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8207; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08208; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]8209;8210; GFX10-LABEL: global_agent_atomic_fsub_noret_f16__offset12b__align4_pos:8211; GFX10:       ; %bb.0:8212; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8213; GFX10-NEXT:    global_load_dword v4, v[0:1], off offset:20468214; GFX10-NEXT:    s_mov_b32 s4, 08215; GFX10-NEXT:  .LBB29_1: ; %atomicrmw.start8216; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=18217; GFX10-NEXT:    s_waitcnt vmcnt(0)8218; GFX10-NEXT:    v_sub_f16_e32 v3, v4, v28219; GFX10-NEXT:    v_and_b32_e32 v3, 0xffff, v38220; GFX10-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v38221; GFX10-NEXT:    s_waitcnt_vscnt null, 0x08222; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2046 glc8223; GFX10-NEXT:    s_waitcnt vmcnt(0)8224; GFX10-NEXT:    buffer_gl1_inv8225; GFX10-NEXT:    buffer_gl0_inv8226; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48227; GFX10-NEXT:    v_mov_b32_e32 v4, v38228; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s48229; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s48230; GFX10-NEXT:    s_cbranch_execnz .LBB29_18231; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end8232; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s48233; GFX10-NEXT:    s_setpc_b64 s[30:31]8234;8235; GFX90A-LABEL: global_agent_atomic_fsub_noret_f16__offset12b__align4_pos:8236; GFX90A:       ; %bb.0:8237; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8238; GFX90A-NEXT:    global_load_dword v5, v[0:1], off offset:20468239; GFX90A-NEXT:    s_mov_b64 s[4:5], 08240; GFX90A-NEXT:    s_mov_b32 s6, 0xffff00008241; GFX90A-NEXT:  .LBB29_1: ; %atomicrmw.start8242; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=18243; GFX90A-NEXT:    s_waitcnt vmcnt(0)8244; GFX90A-NEXT:    v_sub_f16_e32 v3, v5, v28245; GFX90A-NEXT:    v_and_or_b32 v4, v5, s6, v38246; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2046 glc8247; GFX90A-NEXT:    s_waitcnt vmcnt(0)8248; GFX90A-NEXT:    buffer_wbinvl18249; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v58250; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8251; GFX90A-NEXT:    v_mov_b32_e32 v5, v38252; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]8253; GFX90A-NEXT:    s_cbranch_execnz .LBB29_18254; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end8255; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]8256; GFX90A-NEXT:    s_setpc_b64 s[30:31]8257;8258; GFX908-LABEL: global_agent_atomic_fsub_noret_f16__offset12b__align4_pos:8259; GFX908:       ; %bb.0:8260; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8261; GFX908-NEXT:    global_load_dword v4, v[0:1], off offset:20468262; GFX908-NEXT:    s_mov_b64 s[4:5], 08263; GFX908-NEXT:    s_mov_b32 s6, 0xffff00008264; GFX908-NEXT:  .LBB29_1: ; %atomicrmw.start8265; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=18266; GFX908-NEXT:    s_waitcnt vmcnt(0)8267; GFX908-NEXT:    v_sub_f16_e32 v3, v4, v28268; GFX908-NEXT:    v_and_or_b32 v3, v4, s6, v38269; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2046 glc8270; GFX908-NEXT:    s_waitcnt vmcnt(0)8271; GFX908-NEXT:    buffer_wbinvl18272; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v48273; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8274; GFX908-NEXT:    v_mov_b32_e32 v4, v38275; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]8276; GFX908-NEXT:    s_cbranch_execnz .LBB29_18277; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end8278; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]8279; GFX908-NEXT:    s_setpc_b64 s[30:31]8280;8281; GFX8-LABEL: global_agent_atomic_fsub_noret_f16__offset12b__align4_pos:8282; GFX8:       ; %bb.0:8283; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8284; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fe, v08285; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc8286; GFX8-NEXT:    flat_load_dword v4, v[0:1]8287; GFX8-NEXT:    s_mov_b64 s[4:5], 08288; GFX8-NEXT:  .LBB29_1: ; %atomicrmw.start8289; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=18290; GFX8-NEXT:    s_waitcnt vmcnt(0)8291; GFX8-NEXT:    v_sub_f16_e32 v3, v4, v28292; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v48293; GFX8-NEXT:    v_or_b32_e32 v3, v5, v38294; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc8295; GFX8-NEXT:    s_waitcnt vmcnt(0)8296; GFX8-NEXT:    buffer_wbinvl18297; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v48298; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8299; GFX8-NEXT:    v_mov_b32_e32 v4, v38300; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]8301; GFX8-NEXT:    s_cbranch_execnz .LBB29_18302; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end8303; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]8304; GFX8-NEXT:    s_setpc_b64 s[30:31]8305;8306; GFX7-LABEL: global_agent_atomic_fsub_noret_f16__offset12b__align4_pos:8307; GFX7:       ; %bb.0:8308; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8309; GFX7-NEXT:    s_mov_b32 s6, 08310; GFX7-NEXT:    s_mov_b32 s7, 0xf0008311; GFX7-NEXT:    s_mov_b32 s4, s68312; GFX7-NEXT:    s_mov_b32 s5, s68313; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:20468314; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v28315; GFX7-NEXT:    s_mov_b64 s[8:9], 08316; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v28317; GFX7-NEXT:  .LBB29_1: ; %atomicrmw.start8318; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=18319; GFX7-NEXT:    s_waitcnt vmcnt(0)8320; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v38321; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38322; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v48323; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v28324; GFX7-NEXT:    v_or_b32_e32 v2, v5, v28325; GFX7-NEXT:    v_mov_b32_e32 v6, v38326; GFX7-NEXT:    v_mov_b32_e32 v5, v28327; GFX7-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 offset:2046 glc8328; GFX7-NEXT:    s_waitcnt vmcnt(0)8329; GFX7-NEXT:    buffer_wbinvl18330; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v38331; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]8332; GFX7-NEXT:    v_mov_b32_e32 v3, v58333; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]8334; GFX7-NEXT:    s_cbranch_execnz .LBB29_18335; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end8336; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]8337; GFX7-NEXT:    s_setpc_b64 s[30:31]8338;8339; GFX6-LABEL: global_agent_atomic_fsub_noret_f16__offset12b__align4_pos:8340; GFX6:       ; %bb.0:8341; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8342; GFX6-NEXT:    s_mov_b32 s6, 08343; GFX6-NEXT:    s_mov_b32 s7, 0xf0008344; GFX6-NEXT:    s_mov_b32 s4, s68345; GFX6-NEXT:    s_mov_b32 s5, s68346; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:20468347; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v28348; GFX6-NEXT:    s_mov_b64 s[8:9], 08349; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v28350; GFX6-NEXT:  .LBB29_1: ; %atomicrmw.start8351; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=18352; GFX6-NEXT:    s_waitcnt vmcnt(0)8353; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v38354; GFX6-NEXT:    s_waitcnt expcnt(0)8355; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38356; GFX6-NEXT:    v_sub_f32_e32 v2, v2, v48357; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v28358; GFX6-NEXT:    v_or_b32_e32 v2, v5, v28359; GFX6-NEXT:    v_mov_b32_e32 v6, v38360; GFX6-NEXT:    v_mov_b32_e32 v5, v28361; GFX6-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 offset:2046 glc8362; GFX6-NEXT:    s_waitcnt vmcnt(0)8363; GFX6-NEXT:    buffer_wbinvl18364; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v38365; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]8366; GFX6-NEXT:    v_mov_b32_e32 v3, v58367; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]8368; GFX6-NEXT:    s_cbranch_execnz .LBB29_18369; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end8370; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]8371; GFX6-NEXT:    s_waitcnt expcnt(0)8372; GFX6-NEXT:    s_setpc_b64 s[30:31]8373  %gep = getelementptr half, ptr addrspace(1) %ptr, i64 10238374  %unused = atomicrmw fsub ptr addrspace(1) %gep, half %val syncscope("agent") seq_cst, align 48375  ret void8376}8377 8378define half @global_system_atomic_fsub_ret_f16__offset12b_pos(ptr addrspace(1) %ptr, half %val) #0 {8379; GFX12-TRUE16-LABEL: global_system_atomic_fsub_ret_f16__offset12b_pos:8380; GFX12-TRUE16:       ; %bb.0:8381; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08382; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x08383; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x08384; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x08385; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x08386; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v08387; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)8388; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo8389; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 08390; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v38391; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v38392; GFX12-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off8393; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v38394; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8395; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff8396; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v48397; GFX12-TRUE16-NEXT:  .LBB30_1: ; %atomicrmw.start8398; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18399; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08400; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v58401; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)8402; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v68403; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 08404; GFX12-TRUE16-NEXT:    v_sub_f16_e32 v5.l, v5.l, v2.l8405; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8406; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v58407; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v58408; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS8409; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x08410; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_SYS8411; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08412; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS8413; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v68414; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8415; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08416; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8417; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08418; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB30_18419; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8420; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08421; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v58422; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08423; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]8424;8425; GFX12-FAKE16-LABEL: global_system_atomic_fsub_ret_f16__offset12b_pos:8426; GFX12-FAKE16:       ; %bb.0:8427; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08428; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x08429; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x08430; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x08431; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x08432; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v08433; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)8434; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo8435; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 08436; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v38437; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v38438; GFX12-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off8439; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v38440; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8441; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff8442; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v48443; GFX12-FAKE16-NEXT:  .LBB30_1: ; %atomicrmw.start8444; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18445; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08446; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v58447; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8448; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v68449; GFX12-FAKE16-NEXT:    v_sub_f16_e32 v5, v5, v28450; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8451; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v58452; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v58453; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8454; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v58455; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS8456; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x08457; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_SYS8458; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08459; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS8460; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v68461; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8462; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08463; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8464; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08465; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB30_18466; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8467; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08468; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v58469; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08470; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]8471;8472; GFX942-LABEL: global_system_atomic_fsub_ret_f16__offset12b_pos:8473; GFX942:       ; %bb.0:8474; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8475; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe8476; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]8477; GFX942-NEXT:    v_and_b32_e32 v0, -4, v48478; GFX942-NEXT:    v_mov_b32_e32 v1, v58479; GFX942-NEXT:    global_load_dword v5, v[0:1], off8480; GFX942-NEXT:    v_and_b32_e32 v3, 3, v48481; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v38482; GFX942-NEXT:    s_mov_b32 s0, 0xffff8483; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s08484; GFX942-NEXT:    v_not_b32_e32 v6, v48485; GFX942-NEXT:    s_mov_b64 s[0:1], 08486; GFX942-NEXT:  .LBB30_1: ; %atomicrmw.start8487; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=18488; GFX942-NEXT:    s_waitcnt vmcnt(0)8489; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v3, v58490; GFX942-NEXT:    v_sub_f16_e32 v4, v4, v28491; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v3, v48492; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v48493; GFX942-NEXT:    buffer_wbl2 sc0 sc18494; GFX942-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off sc0 sc18495; GFX942-NEXT:    s_waitcnt vmcnt(0)8496; GFX942-NEXT:    buffer_inv sc0 sc18497; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v58498; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]8499; GFX942-NEXT:    v_mov_b32_e32 v5, v48500; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]8501; GFX942-NEXT:    s_cbranch_execnz .LBB30_18502; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end8503; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]8504; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v3, v48505; GFX942-NEXT:    s_setpc_b64 s[30:31]8506;8507; GFX11-TRUE16-LABEL: global_system_atomic_fsub_ret_f16__offset12b_pos:8508; GFX11-TRUE16:       ; %bb.0:8509; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8510; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v08511; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8512; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo8513; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 08514; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v38515; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v38516; GFX11-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off8517; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v38518; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8519; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff8520; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v48521; GFX11-TRUE16-NEXT:  .LBB30_1: ; %atomicrmw.start8522; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18523; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)8524; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v58525; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)8526; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v68527; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 08528; GFX11-TRUE16-NEXT:    v_sub_f16_e32 v5.l, v5.l, v2.l8529; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8530; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v58531; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v58532; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x08533; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc8534; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)8535; GFX11-TRUE16-NEXT:    buffer_gl1_inv8536; GFX11-TRUE16-NEXT:    buffer_gl0_inv8537; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v68538; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08539; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8540; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08541; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB30_18542; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8543; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08544; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v58545; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]8546;8547; GFX11-FAKE16-LABEL: global_system_atomic_fsub_ret_f16__offset12b_pos:8548; GFX11-FAKE16:       ; %bb.0:8549; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8550; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v08551; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8552; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo8553; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 08554; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v38555; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v38556; GFX11-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off8557; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v38558; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8559; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff8560; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v48561; GFX11-FAKE16-NEXT:  .LBB30_1: ; %atomicrmw.start8562; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18563; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)8564; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v58565; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8566; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v68567; GFX11-FAKE16-NEXT:    v_sub_f16_e32 v5, v5, v28568; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8569; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v58570; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v58571; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8572; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v58573; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x08574; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc8575; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)8576; GFX11-FAKE16-NEXT:    buffer_gl1_inv8577; GFX11-FAKE16-NEXT:    buffer_gl0_inv8578; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v68579; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08580; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8581; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08582; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB30_18583; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8584; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08585; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v58586; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]8587;8588; GFX10-LABEL: global_system_atomic_fsub_ret_f16__offset12b_pos:8589; GFX10:       ; %bb.0:8590; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8591; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v08592; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo8593; GFX10-NEXT:    s_mov_b32 s4, 08594; GFX10-NEXT:    v_and_b32_e32 v0, -4, v38595; GFX10-NEXT:    v_and_b32_e32 v3, 3, v38596; GFX10-NEXT:    global_load_dword v5, v[0:1], off8597; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v38598; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff8599; GFX10-NEXT:    v_not_b32_e32 v4, v48600; GFX10-NEXT:  .LBB30_1: ; %atomicrmw.start8601; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=18602; GFX10-NEXT:    s_waitcnt vmcnt(0)8603; GFX10-NEXT:    v_mov_b32_e32 v6, v58604; GFX10-NEXT:    v_lshrrev_b32_e32 v5, v3, v68605; GFX10-NEXT:    v_sub_f16_e32 v5, v5, v28606; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_08607; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v58608; GFX10-NEXT:    s_waitcnt_vscnt null, 0x08609; GFX10-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc8610; GFX10-NEXT:    s_waitcnt vmcnt(0)8611; GFX10-NEXT:    buffer_gl1_inv8612; GFX10-NEXT:    buffer_gl0_inv8613; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v68614; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s48615; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s48616; GFX10-NEXT:    s_cbranch_execnz .LBB30_18617; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end8618; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s48619; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v58620; GFX10-NEXT:    s_setpc_b64 s[30:31]8621;8622; GFX90A-LABEL: global_system_atomic_fsub_ret_f16__offset12b_pos:8623; GFX90A:       ; %bb.0:8624; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8625; GFX90A-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v08626; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc8627; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v38628; GFX90A-NEXT:    global_load_dword v5, v[0:1], off8629; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v38630; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v38631; GFX90A-NEXT:    s_mov_b32 s4, 0xffff8632; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s48633; GFX90A-NEXT:    v_not_b32_e32 v6, v48634; GFX90A-NEXT:    s_mov_b64 s[4:5], 08635; GFX90A-NEXT:  .LBB30_1: ; %atomicrmw.start8636; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=18637; GFX90A-NEXT:    s_waitcnt vmcnt(0)8638; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v3, v58639; GFX90A-NEXT:    v_sub_f16_e32 v4, v4, v28640; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v3, v48641; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v48642; GFX90A-NEXT:    buffer_wbl28643; GFX90A-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off glc8644; GFX90A-NEXT:    s_waitcnt vmcnt(0)8645; GFX90A-NEXT:    buffer_invl28646; GFX90A-NEXT:    buffer_wbinvl18647; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v58648; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8649; GFX90A-NEXT:    v_mov_b32_e32 v5, v48650; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]8651; GFX90A-NEXT:    s_cbranch_execnz .LBB30_18652; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end8653; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]8654; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v3, v48655; GFX90A-NEXT:    s_setpc_b64 s[30:31]8656;8657; GFX908-LABEL: global_system_atomic_fsub_ret_f16__offset12b_pos:8658; GFX908:       ; %bb.0:8659; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8660; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v08661; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc8662; GFX908-NEXT:    v_and_b32_e32 v0, -4, v38663; GFX908-NEXT:    global_load_dword v4, v[0:1], off8664; GFX908-NEXT:    v_and_b32_e32 v3, 3, v38665; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v38666; GFX908-NEXT:    s_mov_b32 s4, 0xffff8667; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v3, s48668; GFX908-NEXT:    v_not_b32_e32 v5, v58669; GFX908-NEXT:    s_mov_b64 s[4:5], 08670; GFX908-NEXT:  .LBB30_1: ; %atomicrmw.start8671; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=18672; GFX908-NEXT:    s_waitcnt vmcnt(0)8673; GFX908-NEXT:    v_mov_b32_e32 v7, v48674; GFX908-NEXT:    v_lshrrev_b32_e32 v4, v3, v78675; GFX908-NEXT:    v_sub_f16_e32 v4, v4, v28676; GFX908-NEXT:    v_lshlrev_b32_e32 v4, v3, v48677; GFX908-NEXT:    v_and_or_b32 v6, v7, v5, v48678; GFX908-NEXT:    global_atomic_cmpswap v4, v[0:1], v[6:7], off glc8679; GFX908-NEXT:    s_waitcnt vmcnt(0)8680; GFX908-NEXT:    buffer_wbinvl18681; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v78682; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8683; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]8684; GFX908-NEXT:    s_cbranch_execnz .LBB30_18685; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end8686; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]8687; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v48688; GFX908-NEXT:    s_setpc_b64 s[30:31]8689;8690; GFX8-LABEL: global_system_atomic_fsub_ret_f16__offset12b_pos:8691; GFX8:       ; %bb.0:8692; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8693; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v08694; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc8695; GFX8-NEXT:    v_and_b32_e32 v0, -4, v38696; GFX8-NEXT:    flat_load_dword v5, v[0:1]8697; GFX8-NEXT:    v_and_b32_e32 v3, 3, v38698; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v38699; GFX8-NEXT:    s_mov_b32 s4, 0xffff8700; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s48701; GFX8-NEXT:    v_not_b32_e32 v4, v48702; GFX8-NEXT:    s_mov_b64 s[4:5], 08703; GFX8-NEXT:  .LBB30_1: ; %atomicrmw.start8704; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=18705; GFX8-NEXT:    s_waitcnt vmcnt(0)8706; GFX8-NEXT:    v_mov_b32_e32 v6, v58707; GFX8-NEXT:    v_lshrrev_b32_e32 v5, v3, v68708; GFX8-NEXT:    v_sub_f16_e32 v5, v5, v28709; GFX8-NEXT:    v_and_b32_e32 v7, v6, v48710; GFX8-NEXT:    v_lshlrev_b32_e32 v5, v3, v58711; GFX8-NEXT:    v_or_b32_e32 v5, v7, v58712; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc8713; GFX8-NEXT:    s_waitcnt vmcnt(0)8714; GFX8-NEXT:    buffer_wbinvl18715; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v68716; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8717; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]8718; GFX8-NEXT:    s_cbranch_execnz .LBB30_18719; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end8720; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]8721; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v58722; GFX8-NEXT:    s_setpc_b64 s[30:31]8723;8724; GFX7-LABEL: global_system_atomic_fsub_ret_f16__offset12b_pos:8725; GFX7:       ; %bb.0:8726; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8727; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v08728; GFX7-NEXT:    s_mov_b32 s6, 08729; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc8730; GFX7-NEXT:    v_and_b32_e32 v0, -4, v48731; GFX7-NEXT:    s_mov_b32 s7, 0xf0008732; GFX7-NEXT:    s_mov_b32 s4, s68733; GFX7-NEXT:    s_mov_b32 s5, s68734; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr648735; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v28736; GFX7-NEXT:    v_and_b32_e32 v4, 3, v48737; GFX7-NEXT:    v_lshlrev_b32_e32 v6, 3, v48738; GFX7-NEXT:    s_mov_b64 s[8:9], 08739; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v28740; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v68741; GFX7-NEXT:    v_not_b32_e32 v8, v28742; GFX7-NEXT:  .LBB30_1: ; %atomicrmw.start8743; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=18744; GFX7-NEXT:    s_waitcnt vmcnt(0)8745; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v6, v38746; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v28747; GFX7-NEXT:    v_and_b32_e32 v4, v3, v88748; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v78749; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v28750; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v6, v28751; GFX7-NEXT:    v_or_b32_e32 v2, v4, v28752; GFX7-NEXT:    v_mov_b32_e32 v5, v38753; GFX7-NEXT:    v_mov_b32_e32 v4, v28754; GFX7-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc8755; GFX7-NEXT:    s_waitcnt vmcnt(0)8756; GFX7-NEXT:    buffer_wbinvl18757; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v38758; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]8759; GFX7-NEXT:    v_mov_b32_e32 v3, v48760; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]8761; GFX7-NEXT:    s_cbranch_execnz .LBB30_18762; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end8763; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]8764; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v6, v48765; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v08766; GFX7-NEXT:    s_setpc_b64 s[30:31]8767;8768; GFX6-LABEL: global_system_atomic_fsub_ret_f16__offset12b_pos:8769; GFX6:       ; %bb.0:8770; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8771; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v08772; GFX6-NEXT:    s_mov_b32 s6, 08773; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc8774; GFX6-NEXT:    v_and_b32_e32 v0, -4, v48775; GFX6-NEXT:    s_mov_b32 s7, 0xf0008776; GFX6-NEXT:    s_mov_b32 s4, s68777; GFX6-NEXT:    s_mov_b32 s5, s68778; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr648779; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v28780; GFX6-NEXT:    v_and_b32_e32 v4, 3, v48781; GFX6-NEXT:    v_lshlrev_b32_e32 v6, 3, v48782; GFX6-NEXT:    s_mov_b64 s[8:9], 08783; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v28784; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v68785; GFX6-NEXT:    v_not_b32_e32 v8, v28786; GFX6-NEXT:  .LBB30_1: ; %atomicrmw.start8787; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=18788; GFX6-NEXT:    s_waitcnt vmcnt(0)8789; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v6, v38790; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v28791; GFX6-NEXT:    s_waitcnt expcnt(0)8792; GFX6-NEXT:    v_and_b32_e32 v4, v3, v88793; GFX6-NEXT:    v_sub_f32_e32 v2, v2, v78794; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v28795; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v6, v28796; GFX6-NEXT:    v_or_b32_e32 v2, v4, v28797; GFX6-NEXT:    v_mov_b32_e32 v5, v38798; GFX6-NEXT:    v_mov_b32_e32 v4, v28799; GFX6-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc8800; GFX6-NEXT:    s_waitcnt vmcnt(0)8801; GFX6-NEXT:    buffer_wbinvl18802; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v38803; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]8804; GFX6-NEXT:    v_mov_b32_e32 v3, v48805; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]8806; GFX6-NEXT:    s_cbranch_execnz .LBB30_18807; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end8808; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]8809; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v6, v48810; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v08811; GFX6-NEXT:    s_waitcnt expcnt(0)8812; GFX6-NEXT:    s_setpc_b64 s[30:31]8813  %gep = getelementptr half, ptr addrspace(1) %ptr, i64 10238814  %result = atomicrmw fsub ptr addrspace(1) %gep, half %val seq_cst8815  ret half %result8816}8817 8818define void @global_system_atomic_fsub_noret_f16__offset12b_pos(ptr addrspace(1) %ptr, half %val) #0 {8819; GFX12-TRUE16-LABEL: global_system_atomic_fsub_noret_f16__offset12b_pos:8820; GFX12-TRUE16:       ; %bb.0:8821; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08822; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x08823; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x08824; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x08825; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x08826; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v08827; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)8828; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo8829; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 08830; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v38831; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v38832; GFX12-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off8833; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v38834; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8835; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff8836; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v38837; GFX12-TRUE16-NEXT:  .LBB31_1: ; %atomicrmw.start8838; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18839; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08840; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v48841; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 08842; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8843; GFX12-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v3.l, v2.l8844; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v38845; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8846; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v38847; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS8848; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x08849; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_SYS8850; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08851; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS8852; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48853; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v38854; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8855; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08856; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8857; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08858; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB31_18859; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8860; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08861; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08862; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]8863;8864; GFX12-FAKE16-LABEL: global_system_atomic_fsub_noret_f16__offset12b_pos:8865; GFX12-FAKE16:       ; %bb.0:8866; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08867; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x08868; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x08869; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x08870; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x08871; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v08872; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)8873; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo8874; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 08875; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v38876; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v38877; GFX12-FAKE16-NEXT:    global_load_b32 v4, v[0:1], off8878; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v38879; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8880; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff8881; GFX12-FAKE16-NEXT:    v_not_b32_e32 v6, v38882; GFX12-FAKE16-NEXT:  .LBB31_1: ; %atomicrmw.start8883; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18884; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08885; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v48886; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8887; GFX12-FAKE16-NEXT:    v_sub_f16_e32 v3, v3, v28888; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v38889; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8890; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v38891; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v38892; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS8893; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x08894; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_SYS8895; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08896; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS8897; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48898; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v38899; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8900; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08901; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8902; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08903; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB31_18904; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8905; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08906; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08907; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]8908;8909; GFX942-LABEL: global_system_atomic_fsub_noret_f16__offset12b_pos:8910; GFX942:       ; %bb.0:8911; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8912; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe8913; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]8914; GFX942-NEXT:    v_and_b32_e32 v0, -4, v48915; GFX942-NEXT:    v_mov_b32_e32 v1, v58916; GFX942-NEXT:    global_load_dword v5, v[0:1], off8917; GFX942-NEXT:    v_and_b32_e32 v3, 3, v48918; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v38919; GFX942-NEXT:    s_mov_b32 s0, 0xffff8920; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s08921; GFX942-NEXT:    v_not_b32_e32 v6, v48922; GFX942-NEXT:    s_mov_b64 s[0:1], 08923; GFX942-NEXT:  .LBB31_1: ; %atomicrmw.start8924; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=18925; GFX942-NEXT:    s_waitcnt vmcnt(0)8926; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v3, v58927; GFX942-NEXT:    v_sub_f16_e32 v4, v4, v28928; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v3, v48929; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v48930; GFX942-NEXT:    buffer_wbl2 sc0 sc18931; GFX942-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off sc0 sc18932; GFX942-NEXT:    s_waitcnt vmcnt(0)8933; GFX942-NEXT:    buffer_inv sc0 sc18934; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v58935; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]8936; GFX942-NEXT:    v_mov_b32_e32 v5, v48937; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]8938; GFX942-NEXT:    s_cbranch_execnz .LBB31_18939; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end8940; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]8941; GFX942-NEXT:    s_setpc_b64 s[30:31]8942;8943; GFX11-TRUE16-LABEL: global_system_atomic_fsub_noret_f16__offset12b_pos:8944; GFX11-TRUE16:       ; %bb.0:8945; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8946; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v08947; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8948; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo8949; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 08950; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v38951; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v38952; GFX11-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off8953; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v38954; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8955; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff8956; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v38957; GFX11-TRUE16-NEXT:  .LBB31_1: ; %atomicrmw.start8958; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18959; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)8960; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v48961; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 08962; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8963; GFX11-TRUE16-NEXT:    v_sub_f16_e32 v3.l, v3.l, v2.l8964; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v38965; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8966; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v38967; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x08968; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc8969; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)8970; GFX11-TRUE16-NEXT:    buffer_gl1_inv8971; GFX11-TRUE16-NEXT:    buffer_gl0_inv8972; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48973; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v38974; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08975; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8976; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08977; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB31_18978; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8979; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08980; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]8981;8982; GFX11-FAKE16-LABEL: global_system_atomic_fsub_noret_f16__offset12b_pos:8983; GFX11-FAKE16:       ; %bb.0:8984; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8985; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v08986; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8987; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo8988; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 08989; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v38990; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v38991; GFX11-FAKE16-NEXT:    global_load_b32 v4, v[0:1], off8992; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v38993; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8994; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff8995; GFX11-FAKE16-NEXT:    v_not_b32_e32 v6, v38996; GFX11-FAKE16-NEXT:  .LBB31_1: ; %atomicrmw.start8997; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18998; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)8999; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v49000; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9001; GFX11-FAKE16-NEXT:    v_sub_f16_e32 v3, v3, v29002; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v39003; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9004; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v39005; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v39006; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x09007; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc9008; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)9009; GFX11-FAKE16-NEXT:    buffer_gl1_inv9010; GFX11-FAKE16-NEXT:    buffer_gl0_inv9011; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v49012; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v39013; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s09014; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9015; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09016; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB31_19017; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end9018; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09019; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]9020;9021; GFX10-LABEL: global_system_atomic_fsub_noret_f16__offset12b_pos:9022; GFX10:       ; %bb.0:9023; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9024; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v09025; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo9026; GFX10-NEXT:    s_mov_b32 s4, 09027; GFX10-NEXT:    v_and_b32_e32 v0, -4, v39028; GFX10-NEXT:    v_and_b32_e32 v3, 3, v39029; GFX10-NEXT:    global_load_dword v4, v[0:1], off9030; GFX10-NEXT:    v_lshlrev_b32_e32 v5, 3, v39031; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff9032; GFX10-NEXT:    v_not_b32_e32 v6, v39033; GFX10-NEXT:  .LBB31_1: ; %atomicrmw.start9034; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=19035; GFX10-NEXT:    s_waitcnt vmcnt(0)9036; GFX10-NEXT:    v_lshrrev_b32_e32 v3, v5, v49037; GFX10-NEXT:    v_sub_f16_e32 v3, v3, v29038; GFX10-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_09039; GFX10-NEXT:    v_and_or_b32 v3, v4, v6, v39040; GFX10-NEXT:    s_waitcnt_vscnt null, 0x09041; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc9042; GFX10-NEXT:    s_waitcnt vmcnt(0)9043; GFX10-NEXT:    buffer_gl1_inv9044; GFX10-NEXT:    buffer_gl0_inv9045; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v49046; GFX10-NEXT:    v_mov_b32_e32 v4, v39047; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s49048; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s49049; GFX10-NEXT:    s_cbranch_execnz .LBB31_19050; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end9051; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s49052; GFX10-NEXT:    s_setpc_b64 s[30:31]9053;9054; GFX90A-LABEL: global_system_atomic_fsub_noret_f16__offset12b_pos:9055; GFX90A:       ; %bb.0:9056; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9057; GFX90A-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v09058; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc9059; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v39060; GFX90A-NEXT:    global_load_dword v5, v[0:1], off9061; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v39062; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v39063; GFX90A-NEXT:    s_mov_b32 s4, 0xffff9064; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s49065; GFX90A-NEXT:    v_not_b32_e32 v6, v49066; GFX90A-NEXT:    s_mov_b64 s[4:5], 09067; GFX90A-NEXT:  .LBB31_1: ; %atomicrmw.start9068; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=19069; GFX90A-NEXT:    s_waitcnt vmcnt(0)9070; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v3, v59071; GFX90A-NEXT:    v_sub_f16_e32 v4, v4, v29072; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v3, v49073; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v49074; GFX90A-NEXT:    buffer_wbl29075; GFX90A-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off glc9076; GFX90A-NEXT:    s_waitcnt vmcnt(0)9077; GFX90A-NEXT:    buffer_invl29078; GFX90A-NEXT:    buffer_wbinvl19079; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v59080; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9081; GFX90A-NEXT:    v_mov_b32_e32 v5, v49082; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]9083; GFX90A-NEXT:    s_cbranch_execnz .LBB31_19084; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end9085; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]9086; GFX90A-NEXT:    s_setpc_b64 s[30:31]9087;9088; GFX908-LABEL: global_system_atomic_fsub_noret_f16__offset12b_pos:9089; GFX908:       ; %bb.0:9090; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9091; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v09092; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc9093; GFX908-NEXT:    v_and_b32_e32 v0, -4, v39094; GFX908-NEXT:    global_load_dword v4, v[0:1], off9095; GFX908-NEXT:    v_and_b32_e32 v3, 3, v39096; GFX908-NEXT:    v_lshlrev_b32_e32 v5, 3, v39097; GFX908-NEXT:    s_mov_b32 s4, 0xffff9098; GFX908-NEXT:    v_lshlrev_b32_e64 v3, v5, s49099; GFX908-NEXT:    v_not_b32_e32 v6, v39100; GFX908-NEXT:    s_mov_b64 s[4:5], 09101; GFX908-NEXT:  .LBB31_1: ; %atomicrmw.start9102; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=19103; GFX908-NEXT:    s_waitcnt vmcnt(0)9104; GFX908-NEXT:    v_lshrrev_b32_e32 v3, v5, v49105; GFX908-NEXT:    v_sub_f16_e32 v3, v3, v29106; GFX908-NEXT:    v_lshlrev_b32_e32 v3, v5, v39107; GFX908-NEXT:    v_and_or_b32 v3, v4, v6, v39108; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc9109; GFX908-NEXT:    s_waitcnt vmcnt(0)9110; GFX908-NEXT:    buffer_wbinvl19111; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v49112; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9113; GFX908-NEXT:    v_mov_b32_e32 v4, v39114; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]9115; GFX908-NEXT:    s_cbranch_execnz .LBB31_19116; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end9117; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]9118; GFX908-NEXT:    s_setpc_b64 s[30:31]9119;9120; GFX8-LABEL: global_system_atomic_fsub_noret_f16__offset12b_pos:9121; GFX8:       ; %bb.0:9122; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9123; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v09124; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc9125; GFX8-NEXT:    v_and_b32_e32 v0, -4, v39126; GFX8-NEXT:    flat_load_dword v4, v[0:1]9127; GFX8-NEXT:    v_and_b32_e32 v3, 3, v39128; GFX8-NEXT:    v_lshlrev_b32_e32 v5, 3, v39129; GFX8-NEXT:    s_mov_b32 s4, 0xffff9130; GFX8-NEXT:    v_lshlrev_b32_e64 v3, v5, s49131; GFX8-NEXT:    v_not_b32_e32 v6, v39132; GFX8-NEXT:    s_mov_b64 s[4:5], 09133; GFX8-NEXT:  .LBB31_1: ; %atomicrmw.start9134; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=19135; GFX8-NEXT:    s_waitcnt vmcnt(0)9136; GFX8-NEXT:    v_lshrrev_b32_e32 v3, v5, v49137; GFX8-NEXT:    v_sub_f16_e32 v3, v3, v29138; GFX8-NEXT:    v_and_b32_e32 v7, v4, v69139; GFX8-NEXT:    v_lshlrev_b32_e32 v3, v5, v39140; GFX8-NEXT:    v_or_b32_e32 v3, v7, v39141; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc9142; GFX8-NEXT:    s_waitcnt vmcnt(0)9143; GFX8-NEXT:    buffer_wbinvl19144; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v49145; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9146; GFX8-NEXT:    v_mov_b32_e32 v4, v39147; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]9148; GFX8-NEXT:    s_cbranch_execnz .LBB31_19149; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end9150; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]9151; GFX8-NEXT:    s_setpc_b64 s[30:31]9152;9153; GFX7-LABEL: global_system_atomic_fsub_noret_f16__offset12b_pos:9154; GFX7:       ; %bb.0:9155; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9156; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v09157; GFX7-NEXT:    s_mov_b32 s6, 09158; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc9159; GFX7-NEXT:    v_and_b32_e32 v0, -4, v49160; GFX7-NEXT:    s_mov_b32 s7, 0xf0009161; GFX7-NEXT:    s_mov_b32 s4, s69162; GFX7-NEXT:    s_mov_b32 s5, s69163; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr649164; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v29165; GFX7-NEXT:    v_and_b32_e32 v4, 3, v49166; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v49167; GFX7-NEXT:    s_mov_b64 s[8:9], 09168; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v29169; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v49170; GFX7-NEXT:    v_not_b32_e32 v6, v29171; GFX7-NEXT:  .LBB31_1: ; %atomicrmw.start9172; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=19173; GFX7-NEXT:    s_waitcnt vmcnt(0)9174; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v39175; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v29176; GFX7-NEXT:    v_and_b32_e32 v7, v3, v69177; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v59178; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v29179; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v29180; GFX7-NEXT:    v_or_b32_e32 v2, v7, v29181; GFX7-NEXT:    v_mov_b32_e32 v8, v39182; GFX7-NEXT:    v_mov_b32_e32 v7, v29183; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc9184; GFX7-NEXT:    s_waitcnt vmcnt(0)9185; GFX7-NEXT:    buffer_wbinvl19186; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v39187; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]9188; GFX7-NEXT:    v_mov_b32_e32 v3, v79189; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]9190; GFX7-NEXT:    s_cbranch_execnz .LBB31_19191; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end9192; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]9193; GFX7-NEXT:    s_setpc_b64 s[30:31]9194;9195; GFX6-LABEL: global_system_atomic_fsub_noret_f16__offset12b_pos:9196; GFX6:       ; %bb.0:9197; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9198; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v09199; GFX6-NEXT:    s_mov_b32 s6, 09200; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc9201; GFX6-NEXT:    v_and_b32_e32 v0, -4, v49202; GFX6-NEXT:    s_mov_b32 s7, 0xf0009203; GFX6-NEXT:    s_mov_b32 s4, s69204; GFX6-NEXT:    s_mov_b32 s5, s69205; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr649206; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v29207; GFX6-NEXT:    v_and_b32_e32 v4, 3, v49208; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 3, v49209; GFX6-NEXT:    s_mov_b64 s[8:9], 09210; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v29211; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v49212; GFX6-NEXT:    v_not_b32_e32 v6, v29213; GFX6-NEXT:  .LBB31_1: ; %atomicrmw.start9214; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=19215; GFX6-NEXT:    s_waitcnt vmcnt(0)9216; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v4, v39217; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v29218; GFX6-NEXT:    s_waitcnt expcnt(0)9219; GFX6-NEXT:    v_and_b32_e32 v7, v3, v69220; GFX6-NEXT:    v_sub_f32_e32 v2, v2, v59221; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v29222; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v4, v29223; GFX6-NEXT:    v_or_b32_e32 v2, v7, v29224; GFX6-NEXT:    v_mov_b32_e32 v8, v39225; GFX6-NEXT:    v_mov_b32_e32 v7, v29226; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc9227; GFX6-NEXT:    s_waitcnt vmcnt(0)9228; GFX6-NEXT:    buffer_wbinvl19229; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v39230; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]9231; GFX6-NEXT:    v_mov_b32_e32 v3, v79232; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]9233; GFX6-NEXT:    s_cbranch_execnz .LBB31_19234; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end9235; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]9236; GFX6-NEXT:    s_waitcnt expcnt(0)9237; GFX6-NEXT:    s_setpc_b64 s[30:31]9238  %gep = getelementptr half, ptr addrspace(1) %ptr, i64 10239239  %unused = atomicrmw fsub ptr addrspace(1) %gep, half %val seq_cst9240  ret void9241}9242 9243; --------------------------------------------------------------------9244; bfloat9245; --------------------------------------------------------------------9246 9247define bfloat @global_agent_atomic_fsub_ret_bf16(ptr addrspace(1) %ptr, bfloat %val) #0 {9248; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_ret_bf16:9249; GFX12-TRUE16:       ; %bb.0:9250; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09251; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x09252; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x09253; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x09254; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x09255; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v09256; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 09257; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)9258; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v39259; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v39260; GFX12-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off9261; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39262; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9263; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9264; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v49265; GFX12-TRUE16-NEXT:  .LBB32_1: ; %atomicrmw.start9266; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19267; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x09268; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v59269; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 09270; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l9271; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9272; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69273; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59274; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)9275; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v79276; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l9277; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 19278; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v59279; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59280; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)9281; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff9282; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)9283; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo9284; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9285; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h9286; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v79287; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9288; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v59289; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x09290; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV9291; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x09292; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV9293; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69294; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9295; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s09296; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9297; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09298; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB32_19299; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end9300; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09301; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59302; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x09303; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]9304;9305; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_ret_bf16:9306; GFX12-FAKE16:       ; %bb.0:9307; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09308; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x09309; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x09310; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x09311; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x09312; GFX12-FAKE16-NEXT:    v_dual_mov_b32 v3, v0 :: v_dual_lshlrev_b32 v2, 16, v29313; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 09314; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)9315; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v39316; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v39317; GFX12-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off9318; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39319; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9320; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9321; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v49322; GFX12-FAKE16-NEXT:  .LBB32_1: ; %atomicrmw.start9323; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19324; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x09325; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v59326; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9327; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69328; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59329; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9330; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v29331; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 19332; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v59333; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59334; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)9335; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff9336; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)9337; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo9338; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9339; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v59340; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v59341; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9342; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v59343; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x09344; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV9345; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x09346; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV9347; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69348; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9349; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s09350; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9351; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09352; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB32_19353; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end9354; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09355; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59356; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x09357; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]9358;9359; GFX942-LABEL: global_agent_atomic_fsub_ret_bf16:9360; GFX942:       ; %bb.0:9361; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9362; GFX942-NEXT:    v_mov_b32_e32 v3, v09363; GFX942-NEXT:    v_and_b32_e32 v0, -4, v39364; GFX942-NEXT:    global_load_dword v5, v[0:1], off9365; GFX942-NEXT:    v_and_b32_e32 v3, 3, v39366; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v39367; GFX942-NEXT:    s_mov_b32 s0, 0xffff9368; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s09369; GFX942-NEXT:    v_not_b32_e32 v6, v49370; GFX942-NEXT:    s_mov_b64 s[0:1], 09371; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v29372; GFX942-NEXT:    s_movk_i32 s2, 0x7fff9373; GFX942-NEXT:  .LBB32_1: ; %atomicrmw.start9374; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=19375; GFX942-NEXT:    s_waitcnt vmcnt(0)9376; GFX942-NEXT:    v_lshrrev_b32_sdwa v4, v3, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9377; GFX942-NEXT:    s_nop 09378; GFX942-NEXT:    v_sub_f32_e32 v4, v4, v29379; GFX942-NEXT:    v_bfe_u32 v7, v4, 16, 19380; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v49381; GFX942-NEXT:    v_add3_u32 v7, v7, v4, s29382; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v4, v49383; GFX942-NEXT:    s_nop 19384; GFX942-NEXT:    v_cndmask_b32_e32 v4, v7, v8, vcc9385; GFX942-NEXT:    v_lshlrev_b32_sdwa v4, v3, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19386; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v49387; GFX942-NEXT:    buffer_wbl2 sc19388; GFX942-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off sc09389; GFX942-NEXT:    s_waitcnt vmcnt(0)9390; GFX942-NEXT:    buffer_inv sc19391; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v59392; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]9393; GFX942-NEXT:    v_mov_b32_e32 v5, v49394; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]9395; GFX942-NEXT:    s_cbranch_execnz .LBB32_19396; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end9397; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]9398; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v3, v49399; GFX942-NEXT:    s_setpc_b64 s[30:31]9400;9401; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_ret_bf16:9402; GFX11-TRUE16:       ; %bb.0:9403; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9404; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v09405; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 09406; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)9407; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v39408; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v39409; GFX11-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off9410; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39411; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9412; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9413; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v49414; GFX11-TRUE16-NEXT:    .p2align 69415; GFX11-TRUE16-NEXT:  .LBB32_1: ; %atomicrmw.start9416; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19417; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)9418; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v59419; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 09420; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l9421; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9422; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69423; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59424; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)9425; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v79426; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l9427; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 19428; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v59429; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59430; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9431; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff9432; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo9433; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9434; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h9435; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v79436; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9437; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v59438; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x09439; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc9440; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)9441; GFX11-TRUE16-NEXT:    buffer_gl1_inv9442; GFX11-TRUE16-NEXT:    buffer_gl0_inv9443; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69444; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s09445; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9446; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09447; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB32_19448; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end9449; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09450; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59451; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]9452;9453; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_ret_bf16:9454; GFX11-FAKE16:       ; %bb.0:9455; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9456; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v3, v0 :: v_dual_lshlrev_b32 v2, 16, v29457; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 09458; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)9459; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v39460; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v39461; GFX11-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off9462; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39463; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9464; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9465; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v49466; GFX11-FAKE16-NEXT:    .p2align 69467; GFX11-FAKE16-NEXT:  .LBB32_1: ; %atomicrmw.start9468; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19469; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)9470; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v59471; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9472; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69473; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59474; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9475; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v29476; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 19477; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v59478; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59479; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9480; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff9481; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo9482; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9483; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v59484; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v59485; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9486; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v59487; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x09488; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc9489; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)9490; GFX11-FAKE16-NEXT:    buffer_gl1_inv9491; GFX11-FAKE16-NEXT:    buffer_gl0_inv9492; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69493; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s09494; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9495; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09496; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB32_19497; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end9498; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09499; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59500; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]9501;9502; GFX10-LABEL: global_agent_atomic_fsub_ret_bf16:9503; GFX10:       ; %bb.0:9504; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9505; GFX10-NEXT:    v_mov_b32_e32 v3, v09506; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v29507; GFX10-NEXT:    s_mov_b32 s4, 09508; GFX10-NEXT:    v_and_b32_e32 v0, -4, v39509; GFX10-NEXT:    v_and_b32_e32 v3, 3, v39510; GFX10-NEXT:    global_load_dword v5, v[0:1], off9511; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v39512; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9513; GFX10-NEXT:    v_not_b32_e32 v4, v49514; GFX10-NEXT:  .LBB32_1: ; %atomicrmw.start9515; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=19516; GFX10-NEXT:    s_waitcnt vmcnt(0)9517; GFX10-NEXT:    v_mov_b32_e32 v6, v59518; GFX10-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9519; GFX10-NEXT:    v_sub_f32_e32 v5, v5, v29520; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 19521; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v59522; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59523; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff9524; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo9525; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19526; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v59527; GFX10-NEXT:    s_waitcnt_vscnt null, 0x09528; GFX10-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc9529; GFX10-NEXT:    s_waitcnt vmcnt(0)9530; GFX10-NEXT:    buffer_gl1_inv9531; GFX10-NEXT:    buffer_gl0_inv9532; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69533; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s49534; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s49535; GFX10-NEXT:    s_cbranch_execnz .LBB32_19536; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end9537; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s49538; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v59539; GFX10-NEXT:    s_setpc_b64 s[30:31]9540;9541; GFX90A-LABEL: global_agent_atomic_fsub_ret_bf16:9542; GFX90A:       ; %bb.0:9543; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9544; GFX90A-NEXT:    v_mov_b32_e32 v3, v09545; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v39546; GFX90A-NEXT:    global_load_dword v5, v[0:1], off9547; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v39548; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v39549; GFX90A-NEXT:    s_mov_b32 s4, 0xffff9550; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s49551; GFX90A-NEXT:    v_not_b32_e32 v6, v49552; GFX90A-NEXT:    s_mov_b64 s[4:5], 09553; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v29554; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff9555; GFX90A-NEXT:  .LBB32_1: ; %atomicrmw.start9556; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=19557; GFX90A-NEXT:    s_waitcnt vmcnt(0)9558; GFX90A-NEXT:    v_lshrrev_b32_sdwa v4, v3, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9559; GFX90A-NEXT:    v_sub_f32_e32 v4, v4, v29560; GFX90A-NEXT:    v_bfe_u32 v7, v4, 16, 19561; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v49562; GFX90A-NEXT:    v_add3_u32 v7, v7, v4, s69563; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v4, v49564; GFX90A-NEXT:    v_cndmask_b32_e32 v4, v7, v8, vcc9565; GFX90A-NEXT:    v_lshlrev_b32_sdwa v4, v3, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19566; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v49567; GFX90A-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off glc9568; GFX90A-NEXT:    s_waitcnt vmcnt(0)9569; GFX90A-NEXT:    buffer_wbinvl19570; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v59571; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9572; GFX90A-NEXT:    v_mov_b32_e32 v5, v49573; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]9574; GFX90A-NEXT:    s_cbranch_execnz .LBB32_19575; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end9576; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]9577; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v3, v49578; GFX90A-NEXT:    s_setpc_b64 s[30:31]9579;9580; GFX908-LABEL: global_agent_atomic_fsub_ret_bf16:9581; GFX908:       ; %bb.0:9582; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9583; GFX908-NEXT:    v_mov_b32_e32 v3, v09584; GFX908-NEXT:    v_and_b32_e32 v0, -4, v39585; GFX908-NEXT:    global_load_dword v5, v[0:1], off9586; GFX908-NEXT:    v_and_b32_e32 v3, 3, v39587; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v39588; GFX908-NEXT:    s_mov_b32 s4, 0xffff9589; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s49590; GFX908-NEXT:    v_not_b32_e32 v4, v49591; GFX908-NEXT:    s_mov_b64 s[4:5], 09592; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v29593; GFX908-NEXT:    s_movk_i32 s6, 0x7fff9594; GFX908-NEXT:  .LBB32_1: ; %atomicrmw.start9595; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=19596; GFX908-NEXT:    s_waitcnt vmcnt(0)9597; GFX908-NEXT:    v_mov_b32_e32 v6, v59598; GFX908-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9599; GFX908-NEXT:    v_sub_f32_e32 v5, v5, v29600; GFX908-NEXT:    v_bfe_u32 v7, v5, 16, 19601; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v59602; GFX908-NEXT:    v_add3_u32 v7, v7, v5, s69603; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v59604; GFX908-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc9605; GFX908-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19606; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v59607; GFX908-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc9608; GFX908-NEXT:    s_waitcnt vmcnt(0)9609; GFX908-NEXT:    buffer_wbinvl19610; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v69611; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9612; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]9613; GFX908-NEXT:    s_cbranch_execnz .LBB32_19614; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end9615; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]9616; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v59617; GFX908-NEXT:    s_setpc_b64 s[30:31]9618;9619; GFX8-LABEL: global_agent_atomic_fsub_ret_bf16:9620; GFX8:       ; %bb.0:9621; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9622; GFX8-NEXT:    v_mov_b32_e32 v3, v09623; GFX8-NEXT:    v_and_b32_e32 v0, -4, v39624; GFX8-NEXT:    flat_load_dword v5, v[0:1]9625; GFX8-NEXT:    v_and_b32_e32 v3, 3, v39626; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v39627; GFX8-NEXT:    s_mov_b32 s4, 0xffff9628; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s49629; GFX8-NEXT:    v_not_b32_e32 v4, v49630; GFX8-NEXT:    s_mov_b64 s[4:5], 09631; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v29632; GFX8-NEXT:  .LBB32_1: ; %atomicrmw.start9633; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=19634; GFX8-NEXT:    s_waitcnt vmcnt(0)9635; GFX8-NEXT:    v_mov_b32_e32 v6, v59636; GFX8-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9637; GFX8-NEXT:    v_sub_f32_e32 v5, v5, v29638; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 19639; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v59640; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v89641; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v59642; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v59643; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc9644; GFX8-NEXT:    v_and_b32_e32 v7, v6, v49645; GFX8-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19646; GFX8-NEXT:    v_or_b32_e32 v5, v7, v59647; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc9648; GFX8-NEXT:    s_waitcnt vmcnt(0)9649; GFX8-NEXT:    buffer_wbinvl19650; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v69651; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9652; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]9653; GFX8-NEXT:    s_cbranch_execnz .LBB32_19654; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end9655; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]9656; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v59657; GFX8-NEXT:    s_setpc_b64 s[30:31]9658;9659; GFX7-LABEL: global_agent_atomic_fsub_ret_bf16:9660; GFX7:       ; %bb.0:9661; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9662; GFX7-NEXT:    v_mov_b32_e32 v3, v09663; GFX7-NEXT:    s_mov_b32 s6, 09664; GFX7-NEXT:    v_and_b32_e32 v0, -4, v39665; GFX7-NEXT:    s_mov_b32 s7, 0xf0009666; GFX7-NEXT:    s_mov_b32 s4, s69667; GFX7-NEXT:    s_mov_b32 s5, s69668; GFX7-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr649669; GFX7-NEXT:    v_and_b32_e32 v3, 3, v39670; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 3, v39671; GFX7-NEXT:    v_lshl_b32_e32 v3, 0xffff, v59672; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v29673; GFX7-NEXT:    v_not_b32_e32 v6, v39674; GFX7-NEXT:    s_mov_b64 s[8:9], 09675; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v29676; GFX7-NEXT:  .LBB32_1: ; %atomicrmw.start9677; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=19678; GFX7-NEXT:    s_waitcnt vmcnt(0)9679; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v5, v49680; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v29681; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v79682; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v29683; GFX7-NEXT:    v_and_b32_e32 v3, v4, v69684; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v5, v29685; GFX7-NEXT:    v_or_b32_e32 v3, v3, v29686; GFX7-NEXT:    v_mov_b32_e32 v2, v39687; GFX7-NEXT:    v_mov_b32_e32 v3, v49688; GFX7-NEXT:    buffer_atomic_cmpswap v[2:3], v[0:1], s[4:7], 0 addr64 glc9689; GFX7-NEXT:    s_waitcnt vmcnt(0)9690; GFX7-NEXT:    buffer_wbinvl19691; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v49692; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]9693; GFX7-NEXT:    v_mov_b32_e32 v4, v29694; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]9695; GFX7-NEXT:    s_cbranch_execnz .LBB32_19696; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end9697; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]9698; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v5, v29699; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v09700; GFX7-NEXT:    s_setpc_b64 s[30:31]9701;9702; GFX6-LABEL: global_agent_atomic_fsub_ret_bf16:9703; GFX6:       ; %bb.0:9704; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9705; GFX6-NEXT:    v_mov_b32_e32 v3, v09706; GFX6-NEXT:    s_mov_b32 s6, 09707; GFX6-NEXT:    v_and_b32_e32 v0, -4, v39708; GFX6-NEXT:    s_mov_b32 s7, 0xf0009709; GFX6-NEXT:    s_mov_b32 s4, s69710; GFX6-NEXT:    s_mov_b32 s5, s69711; GFX6-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr649712; GFX6-NEXT:    v_and_b32_e32 v3, 3, v39713; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 3, v39714; GFX6-NEXT:    v_lshl_b32_e32 v3, 0xffff, v59715; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v29716; GFX6-NEXT:    v_not_b32_e32 v6, v39717; GFX6-NEXT:    s_mov_b64 s[8:9], 09718; GFX6-NEXT:    v_and_b32_e32 v7, 0xffff0000, v29719; GFX6-NEXT:  .LBB32_1: ; %atomicrmw.start9720; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=19721; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0)9722; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v5, v49723; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v29724; GFX6-NEXT:    v_sub_f32_e32 v2, v2, v79725; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v29726; GFX6-NEXT:    v_and_b32_e32 v3, v4, v69727; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v5, v29728; GFX6-NEXT:    v_or_b32_e32 v3, v3, v29729; GFX6-NEXT:    v_mov_b32_e32 v2, v39730; GFX6-NEXT:    v_mov_b32_e32 v3, v49731; GFX6-NEXT:    buffer_atomic_cmpswap v[2:3], v[0:1], s[4:7], 0 addr64 glc9732; GFX6-NEXT:    s_waitcnt vmcnt(0)9733; GFX6-NEXT:    buffer_wbinvl19734; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v49735; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]9736; GFX6-NEXT:    v_mov_b32_e32 v4, v29737; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]9738; GFX6-NEXT:    s_cbranch_execnz .LBB32_19739; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end9740; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]9741; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v5, v29742; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v09743; GFX6-NEXT:    s_waitcnt expcnt(0)9744; GFX6-NEXT:    s_setpc_b64 s[30:31]9745  %result = atomicrmw fsub ptr addrspace(1) %ptr, bfloat %val syncscope("agent") seq_cst9746  ret bfloat %result9747}9748 9749define bfloat @global_agent_atomic_fsub_ret_bf16__offset12b_pos(ptr addrspace(1) %ptr, bfloat %val) #0 {9750; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos:9751; GFX12-TRUE16:       ; %bb.0:9752; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09753; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x09754; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x09755; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x09756; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x09757; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v09758; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)9759; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo9760; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 09761; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v39762; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v39763; GFX12-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off9764; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39765; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9766; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9767; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v49768; GFX12-TRUE16-NEXT:  .LBB33_1: ; %atomicrmw.start9769; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19770; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x09771; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v59772; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 09773; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l9774; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9775; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69776; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59777; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)9778; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v79779; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l9780; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 19781; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v59782; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59783; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)9784; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff9785; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)9786; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo9787; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9788; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h9789; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v79790; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9791; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v59792; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x09793; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV9794; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x09795; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV9796; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69797; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9798; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s09799; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9800; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09801; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB33_19802; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end9803; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09804; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59805; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x09806; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]9807;9808; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos:9809; GFX12-FAKE16:       ; %bb.0:9810; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09811; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x09812; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x09813; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x09814; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x09815; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v09816; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)9817; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo9818; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v29819; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)9820; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v39821; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v39822; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 09823; GFX12-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off9824; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39825; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9826; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9827; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v49828; GFX12-FAKE16-NEXT:  .LBB33_1: ; %atomicrmw.start9829; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19830; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x09831; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v59832; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9833; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69834; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59835; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9836; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v29837; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 19838; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v59839; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59840; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)9841; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff9842; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)9843; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo9844; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9845; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v59846; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v59847; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9848; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v59849; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x09850; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV9851; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x09852; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV9853; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69854; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9855; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s09856; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9857; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09858; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB33_19859; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end9860; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09861; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59862; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x09863; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]9864;9865; GFX942-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos:9866; GFX942:       ; %bb.0:9867; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9868; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe9869; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]9870; GFX942-NEXT:    v_and_b32_e32 v0, -4, v49871; GFX942-NEXT:    v_mov_b32_e32 v1, v59872; GFX942-NEXT:    global_load_dword v3, v[0:1], off9873; GFX942-NEXT:    v_and_b32_e32 v4, 3, v49874; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v49875; GFX942-NEXT:    s_mov_b32 s0, 0xffff9876; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s09877; GFX942-NEXT:    v_not_b32_e32 v5, v59878; GFX942-NEXT:    s_mov_b64 s[0:1], 09879; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v29880; GFX942-NEXT:    s_movk_i32 s2, 0x7fff9881; GFX942-NEXT:  .LBB33_1: ; %atomicrmw.start9882; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=19883; GFX942-NEXT:    s_waitcnt vmcnt(0)9884; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9885; GFX942-NEXT:    s_nop 09886; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v69887; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 19888; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v29889; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s29890; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v29891; GFX942-NEXT:    s_nop 19892; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc9893; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19894; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v29895; GFX942-NEXT:    buffer_wbl2 sc19896; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc09897; GFX942-NEXT:    s_waitcnt vmcnt(0)9898; GFX942-NEXT:    buffer_inv sc19899; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v39900; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]9901; GFX942-NEXT:    v_mov_b32_e32 v3, v29902; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]9903; GFX942-NEXT:    s_cbranch_execnz .LBB33_19904; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end9905; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]9906; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v4, v29907; GFX942-NEXT:    s_setpc_b64 s[30:31]9908;9909; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos:9910; GFX11-TRUE16:       ; %bb.0:9911; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9912; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v09913; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9914; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo9915; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 09916; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v39917; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v39918; GFX11-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off9919; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39920; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9921; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9922; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v49923; GFX11-TRUE16-NEXT:    .p2align 69924; GFX11-TRUE16-NEXT:  .LBB33_1: ; %atomicrmw.start9925; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19926; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)9927; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v59928; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 09929; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l9930; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9931; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69932; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59933; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)9934; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v79935; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l9936; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 19937; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v59938; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59939; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9940; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff9941; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo9942; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9943; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h9944; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v79945; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9946; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v59947; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x09948; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc9949; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)9950; GFX11-TRUE16-NEXT:    buffer_gl1_inv9951; GFX11-TRUE16-NEXT:    buffer_gl0_inv9952; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69953; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s09954; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9955; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09956; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB33_19957; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end9958; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09959; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59960; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]9961;9962; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos:9963; GFX11-FAKE16:       ; %bb.0:9964; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9965; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v09966; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)9967; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo9968; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v29969; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v39970; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v39971; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 09972; GFX11-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off9973; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39974; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9975; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9976; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v49977; GFX11-FAKE16-NEXT:    .p2align 69978; GFX11-FAKE16-NEXT:  .LBB33_1: ; %atomicrmw.start9979; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19980; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)9981; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v59982; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9983; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69984; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59985; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9986; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v29987; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 19988; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v59989; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59990; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9991; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff9992; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo9993; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9994; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v59995; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v59996; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9997; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v59998; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x09999; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc10000; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)10001; GFX11-FAKE16-NEXT:    buffer_gl1_inv10002; GFX11-FAKE16-NEXT:    buffer_gl0_inv10003; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610004; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s010005; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10006; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010007; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB33_110008; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end10009; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010010; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v510011; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]10012;10013; GFX10-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos:10014; GFX10:       ; %bb.0:10015; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10016; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v010017; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo10018; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v210019; GFX10-NEXT:    v_and_b32_e32 v0, -4, v310020; GFX10-NEXT:    v_and_b32_e32 v3, 3, v310021; GFX10-NEXT:    s_mov_b32 s4, 010022; GFX10-NEXT:    global_load_dword v5, v[0:1], off10023; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v310024; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10025; GFX10-NEXT:    v_not_b32_e32 v4, v410026; GFX10-NEXT:  .LBB33_1: ; %atomicrmw.start10027; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=110028; GFX10-NEXT:    s_waitcnt vmcnt(0)10029; GFX10-NEXT:    v_mov_b32_e32 v6, v510030; GFX10-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10031; GFX10-NEXT:    v_sub_f32_e32 v5, v5, v210032; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 110033; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v510034; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510035; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff10036; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo10037; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110038; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v510039; GFX10-NEXT:    s_waitcnt_vscnt null, 0x010040; GFX10-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc10041; GFX10-NEXT:    s_waitcnt vmcnt(0)10042; GFX10-NEXT:    buffer_gl1_inv10043; GFX10-NEXT:    buffer_gl0_inv10044; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610045; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s410046; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s410047; GFX10-NEXT:    s_cbranch_execnz .LBB33_110048; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end10049; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s410050; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v510051; GFX10-NEXT:    s_setpc_b64 s[30:31]10052;10053; GFX90A-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos:10054; GFX90A:       ; %bb.0:10055; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10056; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v010057; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc10058; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v410059; GFX90A-NEXT:    global_load_dword v3, v[0:1], off10060; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v410061; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v410062; GFX90A-NEXT:    s_mov_b32 s4, 0xffff10063; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s410064; GFX90A-NEXT:    v_not_b32_e32 v5, v510065; GFX90A-NEXT:    s_mov_b64 s[4:5], 010066; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v210067; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff10068; GFX90A-NEXT:  .LBB33_1: ; %atomicrmw.start10069; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=110070; GFX90A-NEXT:    s_waitcnt vmcnt(0)10071; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10072; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v610073; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 110074; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v210075; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s610076; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v210077; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc10078; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110079; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v210080; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc10081; GFX90A-NEXT:    s_waitcnt vmcnt(0)10082; GFX90A-NEXT:    buffer_wbinvl110083; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v310084; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10085; GFX90A-NEXT:    v_mov_b32_e32 v3, v210086; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]10087; GFX90A-NEXT:    s_cbranch_execnz .LBB33_110088; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end10089; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]10090; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v4, v210091; GFX90A-NEXT:    s_setpc_b64 s[30:31]10092;10093; GFX908-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos:10094; GFX908:       ; %bb.0:10095; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10096; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v010097; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc10098; GFX908-NEXT:    v_and_b32_e32 v0, -4, v310099; GFX908-NEXT:    global_load_dword v5, v[0:1], off10100; GFX908-NEXT:    v_and_b32_e32 v3, 3, v310101; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v310102; GFX908-NEXT:    s_mov_b32 s4, 0xffff10103; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s410104; GFX908-NEXT:    v_not_b32_e32 v4, v410105; GFX908-NEXT:    s_mov_b64 s[4:5], 010106; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v210107; GFX908-NEXT:    s_movk_i32 s6, 0x7fff10108; GFX908-NEXT:  .LBB33_1: ; %atomicrmw.start10109; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=110110; GFX908-NEXT:    s_waitcnt vmcnt(0)10111; GFX908-NEXT:    v_mov_b32_e32 v6, v510112; GFX908-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10113; GFX908-NEXT:    v_sub_f32_e32 v5, v5, v210114; GFX908-NEXT:    v_bfe_u32 v7, v5, 16, 110115; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v510116; GFX908-NEXT:    v_add3_u32 v7, v7, v5, s610117; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v510118; GFX908-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc10119; GFX908-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110120; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v510121; GFX908-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc10122; GFX908-NEXT:    s_waitcnt vmcnt(0)10123; GFX908-NEXT:    buffer_wbinvl110124; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v610125; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10126; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]10127; GFX908-NEXT:    s_cbranch_execnz .LBB33_110128; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end10129; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]10130; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v510131; GFX908-NEXT:    s_setpc_b64 s[30:31]10132;10133; GFX8-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos:10134; GFX8:       ; %bb.0:10135; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10136; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v010137; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc10138; GFX8-NEXT:    v_and_b32_e32 v0, -4, v310139; GFX8-NEXT:    flat_load_dword v5, v[0:1]10140; GFX8-NEXT:    v_and_b32_e32 v3, 3, v310141; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v310142; GFX8-NEXT:    s_mov_b32 s4, 0xffff10143; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s410144; GFX8-NEXT:    v_not_b32_e32 v4, v410145; GFX8-NEXT:    s_mov_b64 s[4:5], 010146; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v210147; GFX8-NEXT:  .LBB33_1: ; %atomicrmw.start10148; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=110149; GFX8-NEXT:    s_waitcnt vmcnt(0)10150; GFX8-NEXT:    v_mov_b32_e32 v6, v510151; GFX8-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10152; GFX8-NEXT:    v_sub_f32_e32 v5, v5, v210153; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 110154; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v510155; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v810156; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v510157; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v510158; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc10159; GFX8-NEXT:    v_and_b32_e32 v7, v6, v410160; GFX8-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110161; GFX8-NEXT:    v_or_b32_e32 v5, v7, v510162; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc10163; GFX8-NEXT:    s_waitcnt vmcnt(0)10164; GFX8-NEXT:    buffer_wbinvl110165; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v610166; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10167; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]10168; GFX8-NEXT:    s_cbranch_execnz .LBB33_110169; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end10170; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]10171; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v510172; GFX8-NEXT:    s_setpc_b64 s[30:31]10173;10174; GFX7-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos:10175; GFX7:       ; %bb.0:10176; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10177; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v010178; GFX7-NEXT:    s_mov_b32 s6, 010179; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc10180; GFX7-NEXT:    v_and_b32_e32 v0, -4, v410181; GFX7-NEXT:    s_mov_b32 s7, 0xf00010182; GFX7-NEXT:    s_mov_b32 s4, s610183; GFX7-NEXT:    s_mov_b32 s5, s610184; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6410185; GFX7-NEXT:    v_and_b32_e32 v4, 3, v410186; GFX7-NEXT:    v_lshlrev_b32_e32 v6, 3, v410187; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v610188; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v210189; GFX7-NEXT:    v_not_b32_e32 v7, v410190; GFX7-NEXT:    s_mov_b64 s[8:9], 010191; GFX7-NEXT:    v_and_b32_e32 v8, 0xffff0000, v210192; GFX7-NEXT:  .LBB33_1: ; %atomicrmw.start10193; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=110194; GFX7-NEXT:    s_waitcnt vmcnt(0)10195; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v6, v310196; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v210197; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v810198; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v210199; GFX7-NEXT:    v_and_b32_e32 v4, v3, v710200; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v6, v210201; GFX7-NEXT:    v_or_b32_e32 v2, v4, v210202; GFX7-NEXT:    v_mov_b32_e32 v5, v310203; GFX7-NEXT:    v_mov_b32_e32 v4, v210204; GFX7-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc10205; GFX7-NEXT:    s_waitcnt vmcnt(0)10206; GFX7-NEXT:    buffer_wbinvl110207; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v310208; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]10209; GFX7-NEXT:    v_mov_b32_e32 v3, v410210; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]10211; GFX7-NEXT:    s_cbranch_execnz .LBB33_110212; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end10213; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]10214; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v6, v410215; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v010216; GFX7-NEXT:    s_setpc_b64 s[30:31]10217;10218; GFX6-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos:10219; GFX6:       ; %bb.0:10220; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10221; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v010222; GFX6-NEXT:    s_mov_b32 s6, 010223; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc10224; GFX6-NEXT:    v_and_b32_e32 v0, -4, v410225; GFX6-NEXT:    s_mov_b32 s7, 0xf00010226; GFX6-NEXT:    s_mov_b32 s4, s610227; GFX6-NEXT:    s_mov_b32 s5, s610228; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6410229; GFX6-NEXT:    v_and_b32_e32 v4, 3, v410230; GFX6-NEXT:    v_lshlrev_b32_e32 v6, 3, v410231; GFX6-NEXT:    v_lshl_b32_e32 v4, 0xffff, v610232; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v210233; GFX6-NEXT:    v_not_b32_e32 v7, v410234; GFX6-NEXT:    s_mov_b64 s[8:9], 010235; GFX6-NEXT:    v_and_b32_e32 v8, 0xffff0000, v210236; GFX6-NEXT:  .LBB33_1: ; %atomicrmw.start10237; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=110238; GFX6-NEXT:    s_waitcnt vmcnt(0)10239; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v6, v310240; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v210241; GFX6-NEXT:    v_sub_f32_e32 v2, v2, v810242; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v210243; GFX6-NEXT:    s_waitcnt expcnt(0)10244; GFX6-NEXT:    v_and_b32_e32 v4, v3, v710245; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v6, v210246; GFX6-NEXT:    v_or_b32_e32 v2, v4, v210247; GFX6-NEXT:    v_mov_b32_e32 v5, v310248; GFX6-NEXT:    v_mov_b32_e32 v4, v210249; GFX6-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc10250; GFX6-NEXT:    s_waitcnt vmcnt(0)10251; GFX6-NEXT:    buffer_wbinvl110252; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v310253; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]10254; GFX6-NEXT:    v_mov_b32_e32 v3, v410255; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]10256; GFX6-NEXT:    s_cbranch_execnz .LBB33_110257; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end10258; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]10259; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v6, v410260; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v010261; GFX6-NEXT:    s_waitcnt expcnt(0)10262; GFX6-NEXT:    s_setpc_b64 s[30:31]10263  %gep = getelementptr bfloat, ptr addrspace(1) %ptr, i64 102310264  %result = atomicrmw fsub ptr addrspace(1) %gep, bfloat %val syncscope("agent") seq_cst10265  ret bfloat %result10266}10267 10268define bfloat @global_agent_atomic_fsub_ret_bf16__offset12b_neg(ptr addrspace(1) %ptr, bfloat %val) #0 {10269; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_neg:10270; GFX12-TRUE16:       ; %bb.0:10271; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x010272; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x010273; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x010274; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x010275; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x010276; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v010277; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)10278; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo10279; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 010280; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v310281; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v310282; GFX12-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off10283; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v310284; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10285; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10286; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v410287; GFX12-TRUE16-NEXT:  .LBB34_1: ; %atomicrmw.start10288; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110289; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x010290; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v510291; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 010292; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l10293; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10294; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v610295; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v510296; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10297; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v710298; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l10299; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 110300; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v510301; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510302; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)10303; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff10304; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)10305; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo10306; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10307; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h10308; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v710309; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10310; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v510311; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x010312; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV10313; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x010314; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV10315; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610316; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10317; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s010318; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10319; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010320; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB34_110321; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end10322; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010323; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v510324; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x010325; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]10326;10327; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_neg:10328; GFX12-FAKE16:       ; %bb.0:10329; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x010330; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x010331; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x010332; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x010333; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x010334; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v010335; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)10336; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo10337; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v210338; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)10339; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v310340; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v310341; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 010342; GFX12-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off10343; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v310344; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10345; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10346; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v410347; GFX12-FAKE16-NEXT:  .LBB34_1: ; %atomicrmw.start10348; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=110349; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x010350; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v510351; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10352; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v610353; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v510354; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10355; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v210356; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 110357; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v510358; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510359; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)10360; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff10361; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)10362; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo10363; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10364; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v510365; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v510366; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10367; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v510368; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x010369; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV10370; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x010371; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV10372; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610373; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10374; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s010375; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10376; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010377; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB34_110378; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end10379; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010380; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v510381; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x010382; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]10383;10384; GFX942-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_neg:10385; GFX942:       ; %bb.0:10386; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10387; GFX942-NEXT:    s_movk_i32 s0, 0xf80010388; GFX942-NEXT:    s_mov_b32 s1, -110389; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]10390; GFX942-NEXT:    v_and_b32_e32 v0, -4, v410391; GFX942-NEXT:    v_mov_b32_e32 v1, v510392; GFX942-NEXT:    global_load_dword v3, v[0:1], off10393; GFX942-NEXT:    v_and_b32_e32 v4, 3, v410394; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v410395; GFX942-NEXT:    s_mov_b32 s0, 0xffff10396; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s010397; GFX942-NEXT:    v_not_b32_e32 v5, v510398; GFX942-NEXT:    s_mov_b64 s[0:1], 010399; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v210400; GFX942-NEXT:    s_movk_i32 s2, 0x7fff10401; GFX942-NEXT:  .LBB34_1: ; %atomicrmw.start10402; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=110403; GFX942-NEXT:    s_waitcnt vmcnt(0)10404; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10405; GFX942-NEXT:    s_nop 010406; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v610407; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 110408; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v210409; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s210410; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v210411; GFX942-NEXT:    s_nop 110412; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc10413; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110414; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v210415; GFX942-NEXT:    buffer_wbl2 sc110416; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc010417; GFX942-NEXT:    s_waitcnt vmcnt(0)10418; GFX942-NEXT:    buffer_inv sc110419; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v310420; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]10421; GFX942-NEXT:    v_mov_b32_e32 v3, v210422; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]10423; GFX942-NEXT:    s_cbranch_execnz .LBB34_110424; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end10425; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]10426; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v4, v210427; GFX942-NEXT:    s_setpc_b64 s[30:31]10428;10429; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_neg:10430; GFX11-TRUE16:       ; %bb.0:10431; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10432; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v010433; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10434; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo10435; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 010436; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v310437; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v310438; GFX11-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off10439; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v310440; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10441; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10442; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v410443; GFX11-TRUE16-NEXT:    .p2align 610444; GFX11-TRUE16-NEXT:  .LBB34_1: ; %atomicrmw.start10445; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110446; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)10447; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v510448; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 010449; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l10450; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10451; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v610452; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v510453; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10454; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v710455; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l10456; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 110457; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v510458; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510459; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10460; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff10461; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo10462; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10463; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h10464; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v710465; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10466; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v510467; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x010468; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc10469; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)10470; GFX11-TRUE16-NEXT:    buffer_gl1_inv10471; GFX11-TRUE16-NEXT:    buffer_gl0_inv10472; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610473; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s010474; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10475; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010476; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB34_110477; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end10478; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010479; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v510480; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]10481;10482; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_neg:10483; GFX11-FAKE16:       ; %bb.0:10484; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10485; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v010486; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)10487; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo10488; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v210489; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v310490; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v310491; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 010492; GFX11-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off10493; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v310494; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10495; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10496; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v410497; GFX11-FAKE16-NEXT:    .p2align 610498; GFX11-FAKE16-NEXT:  .LBB34_1: ; %atomicrmw.start10499; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=110500; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)10501; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v510502; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10503; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v610504; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v510505; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10506; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v210507; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 110508; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v510509; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510510; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10511; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff10512; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo10513; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10514; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v510515; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v510516; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10517; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v510518; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x010519; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc10520; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)10521; GFX11-FAKE16-NEXT:    buffer_gl1_inv10522; GFX11-FAKE16-NEXT:    buffer_gl0_inv10523; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610524; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s010525; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10526; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010527; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB34_110528; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end10529; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010530; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v510531; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]10532;10533; GFX10-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_neg:10534; GFX10:       ; %bb.0:10535; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10536; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v010537; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo10538; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v210539; GFX10-NEXT:    v_and_b32_e32 v0, -4, v310540; GFX10-NEXT:    v_and_b32_e32 v3, 3, v310541; GFX10-NEXT:    s_mov_b32 s4, 010542; GFX10-NEXT:    global_load_dword v5, v[0:1], off10543; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v310544; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10545; GFX10-NEXT:    v_not_b32_e32 v4, v410546; GFX10-NEXT:  .LBB34_1: ; %atomicrmw.start10547; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=110548; GFX10-NEXT:    s_waitcnt vmcnt(0)10549; GFX10-NEXT:    v_mov_b32_e32 v6, v510550; GFX10-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10551; GFX10-NEXT:    v_sub_f32_e32 v5, v5, v210552; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 110553; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v510554; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510555; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff10556; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo10557; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110558; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v510559; GFX10-NEXT:    s_waitcnt_vscnt null, 0x010560; GFX10-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc10561; GFX10-NEXT:    s_waitcnt vmcnt(0)10562; GFX10-NEXT:    buffer_gl1_inv10563; GFX10-NEXT:    buffer_gl0_inv10564; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610565; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s410566; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s410567; GFX10-NEXT:    s_cbranch_execnz .LBB34_110568; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end10569; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s410570; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v510571; GFX10-NEXT:    s_setpc_b64 s[30:31]10572;10573; GFX90A-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_neg:10574; GFX90A:       ; %bb.0:10575; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10576; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v010577; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc10578; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v410579; GFX90A-NEXT:    global_load_dword v3, v[0:1], off10580; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v410581; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v410582; GFX90A-NEXT:    s_mov_b32 s4, 0xffff10583; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s410584; GFX90A-NEXT:    v_not_b32_e32 v5, v510585; GFX90A-NEXT:    s_mov_b64 s[4:5], 010586; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v210587; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff10588; GFX90A-NEXT:  .LBB34_1: ; %atomicrmw.start10589; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=110590; GFX90A-NEXT:    s_waitcnt vmcnt(0)10591; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10592; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v610593; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 110594; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v210595; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s610596; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v210597; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc10598; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110599; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v210600; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc10601; GFX90A-NEXT:    s_waitcnt vmcnt(0)10602; GFX90A-NEXT:    buffer_wbinvl110603; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v310604; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10605; GFX90A-NEXT:    v_mov_b32_e32 v3, v210606; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]10607; GFX90A-NEXT:    s_cbranch_execnz .LBB34_110608; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end10609; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]10610; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v4, v210611; GFX90A-NEXT:    s_setpc_b64 s[30:31]10612;10613; GFX908-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_neg:10614; GFX908:       ; %bb.0:10615; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10616; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v010617; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc10618; GFX908-NEXT:    v_and_b32_e32 v0, -4, v310619; GFX908-NEXT:    global_load_dword v5, v[0:1], off10620; GFX908-NEXT:    v_and_b32_e32 v3, 3, v310621; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v310622; GFX908-NEXT:    s_mov_b32 s4, 0xffff10623; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s410624; GFX908-NEXT:    v_not_b32_e32 v4, v410625; GFX908-NEXT:    s_mov_b64 s[4:5], 010626; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v210627; GFX908-NEXT:    s_movk_i32 s6, 0x7fff10628; GFX908-NEXT:  .LBB34_1: ; %atomicrmw.start10629; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=110630; GFX908-NEXT:    s_waitcnt vmcnt(0)10631; GFX908-NEXT:    v_mov_b32_e32 v6, v510632; GFX908-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10633; GFX908-NEXT:    v_sub_f32_e32 v5, v5, v210634; GFX908-NEXT:    v_bfe_u32 v7, v5, 16, 110635; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v510636; GFX908-NEXT:    v_add3_u32 v7, v7, v5, s610637; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v510638; GFX908-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc10639; GFX908-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110640; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v510641; GFX908-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc10642; GFX908-NEXT:    s_waitcnt vmcnt(0)10643; GFX908-NEXT:    buffer_wbinvl110644; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v610645; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10646; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]10647; GFX908-NEXT:    s_cbranch_execnz .LBB34_110648; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end10649; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]10650; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v510651; GFX908-NEXT:    s_setpc_b64 s[30:31]10652;10653; GFX8-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_neg:10654; GFX8:       ; %bb.0:10655; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10656; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v010657; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc10658; GFX8-NEXT:    v_and_b32_e32 v0, -4, v310659; GFX8-NEXT:    flat_load_dword v5, v[0:1]10660; GFX8-NEXT:    v_and_b32_e32 v3, 3, v310661; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v310662; GFX8-NEXT:    s_mov_b32 s4, 0xffff10663; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s410664; GFX8-NEXT:    v_not_b32_e32 v4, v410665; GFX8-NEXT:    s_mov_b64 s[4:5], 010666; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v210667; GFX8-NEXT:  .LBB34_1: ; %atomicrmw.start10668; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=110669; GFX8-NEXT:    s_waitcnt vmcnt(0)10670; GFX8-NEXT:    v_mov_b32_e32 v6, v510671; GFX8-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10672; GFX8-NEXT:    v_sub_f32_e32 v5, v5, v210673; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 110674; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v510675; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v810676; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v510677; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v510678; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc10679; GFX8-NEXT:    v_and_b32_e32 v7, v6, v410680; GFX8-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110681; GFX8-NEXT:    v_or_b32_e32 v5, v7, v510682; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc10683; GFX8-NEXT:    s_waitcnt vmcnt(0)10684; GFX8-NEXT:    buffer_wbinvl110685; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v610686; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10687; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]10688; GFX8-NEXT:    s_cbranch_execnz .LBB34_110689; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end10690; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]10691; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v510692; GFX8-NEXT:    s_setpc_b64 s[30:31]10693;10694; GFX7-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_neg:10695; GFX7:       ; %bb.0:10696; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10697; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v010698; GFX7-NEXT:    s_mov_b32 s6, 010699; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc10700; GFX7-NEXT:    v_and_b32_e32 v0, -4, v410701; GFX7-NEXT:    s_mov_b32 s7, 0xf00010702; GFX7-NEXT:    s_mov_b32 s4, s610703; GFX7-NEXT:    s_mov_b32 s5, s610704; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6410705; GFX7-NEXT:    v_and_b32_e32 v4, 3, v410706; GFX7-NEXT:    v_lshlrev_b32_e32 v6, 3, v410707; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v610708; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v210709; GFX7-NEXT:    v_not_b32_e32 v7, v410710; GFX7-NEXT:    s_mov_b64 s[8:9], 010711; GFX7-NEXT:    v_and_b32_e32 v8, 0xffff0000, v210712; GFX7-NEXT:  .LBB34_1: ; %atomicrmw.start10713; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=110714; GFX7-NEXT:    s_waitcnt vmcnt(0)10715; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v6, v310716; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v210717; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v810718; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v210719; GFX7-NEXT:    v_and_b32_e32 v4, v3, v710720; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v6, v210721; GFX7-NEXT:    v_or_b32_e32 v2, v4, v210722; GFX7-NEXT:    v_mov_b32_e32 v5, v310723; GFX7-NEXT:    v_mov_b32_e32 v4, v210724; GFX7-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc10725; GFX7-NEXT:    s_waitcnt vmcnt(0)10726; GFX7-NEXT:    buffer_wbinvl110727; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v310728; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]10729; GFX7-NEXT:    v_mov_b32_e32 v3, v410730; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]10731; GFX7-NEXT:    s_cbranch_execnz .LBB34_110732; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end10733; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]10734; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v6, v410735; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v010736; GFX7-NEXT:    s_setpc_b64 s[30:31]10737;10738; GFX6-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_neg:10739; GFX6:       ; %bb.0:10740; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10741; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v010742; GFX6-NEXT:    s_mov_b32 s6, 010743; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc10744; GFX6-NEXT:    v_and_b32_e32 v0, -4, v410745; GFX6-NEXT:    s_mov_b32 s7, 0xf00010746; GFX6-NEXT:    s_mov_b32 s4, s610747; GFX6-NEXT:    s_mov_b32 s5, s610748; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6410749; GFX6-NEXT:    v_and_b32_e32 v4, 3, v410750; GFX6-NEXT:    v_lshlrev_b32_e32 v6, 3, v410751; GFX6-NEXT:    v_lshl_b32_e32 v4, 0xffff, v610752; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v210753; GFX6-NEXT:    v_not_b32_e32 v7, v410754; GFX6-NEXT:    s_mov_b64 s[8:9], 010755; GFX6-NEXT:    v_and_b32_e32 v8, 0xffff0000, v210756; GFX6-NEXT:  .LBB34_1: ; %atomicrmw.start10757; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=110758; GFX6-NEXT:    s_waitcnt vmcnt(0)10759; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v6, v310760; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v210761; GFX6-NEXT:    v_sub_f32_e32 v2, v2, v810762; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v210763; GFX6-NEXT:    s_waitcnt expcnt(0)10764; GFX6-NEXT:    v_and_b32_e32 v4, v3, v710765; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v6, v210766; GFX6-NEXT:    v_or_b32_e32 v2, v4, v210767; GFX6-NEXT:    v_mov_b32_e32 v5, v310768; GFX6-NEXT:    v_mov_b32_e32 v4, v210769; GFX6-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc10770; GFX6-NEXT:    s_waitcnt vmcnt(0)10771; GFX6-NEXT:    buffer_wbinvl110772; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v310773; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]10774; GFX6-NEXT:    v_mov_b32_e32 v3, v410775; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]10776; GFX6-NEXT:    s_cbranch_execnz .LBB34_110777; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end10778; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]10779; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v6, v410780; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v010781; GFX6-NEXT:    s_waitcnt expcnt(0)10782; GFX6-NEXT:    s_setpc_b64 s[30:31]10783  %gep = getelementptr bfloat, ptr addrspace(1) %ptr, i64 -102410784  %result = atomicrmw fsub ptr addrspace(1) %gep, bfloat %val syncscope("agent") seq_cst10785  ret bfloat %result10786 }10787 10788define void @global_agent_atomic_fsub_noret_bf16(ptr addrspace(1) %ptr, bfloat %val) #0 {10789; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_noret_bf16:10790; GFX12-TRUE16:       ; %bb.0:10791; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x010792; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x010793; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x010794; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x010795; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x010796; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v010797; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 010798; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)10799; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v310800; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v310801; GFX12-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off10802; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v310803; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff10804; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10805; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v310806; GFX12-TRUE16-NEXT:  .LBB35_1: ; %atomicrmw.start10807; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110808; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x010809; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v410810; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 010811; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l10812; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10813; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v310814; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v710815; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l10816; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)10817; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 110818; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v310819; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v310820; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff10821; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)10822; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10823; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo10824; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h10825; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10826; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v710827; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v310828; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x010829; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV10830; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x010831; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV10832; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v410833; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v310834; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10835; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s010836; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10837; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010838; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB35_110839; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end10840; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010841; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x010842; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]10843;10844; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_noret_bf16:10845; GFX12-FAKE16:       ; %bb.0:10846; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x010847; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x010848; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x010849; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x010850; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x010851; GFX12-FAKE16-NEXT:    v_dual_mov_b32 v3, v0 :: v_dual_lshlrev_b32 v2, 16, v210852; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 010853; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)10854; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v310855; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v310856; GFX12-FAKE16-NEXT:    global_load_b32 v4, v[0:1], off10857; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v310858; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff10859; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10860; GFX12-FAKE16-NEXT:    v_not_b32_e32 v6, v310861; GFX12-FAKE16-NEXT:  .LBB35_1: ; %atomicrmw.start10862; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=110863; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x010864; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v410865; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10866; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v310867; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v210868; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)10869; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 110870; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v310871; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v310872; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff10873; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)10874; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10875; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v7, v8, vcc_lo10876; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v310877; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10878; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v310879; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v310880; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x010881; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV10882; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x010883; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV10884; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v410885; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v310886; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10887; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s010888; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10889; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010890; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB35_110891; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end10892; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010893; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x010894; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]10895;10896; GFX942-LABEL: global_agent_atomic_fsub_noret_bf16:10897; GFX942:       ; %bb.0:10898; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10899; GFX942-NEXT:    v_mov_b32_e32 v3, v010900; GFX942-NEXT:    v_and_b32_e32 v0, -4, v310901; GFX942-NEXT:    global_load_dword v5, v[0:1], off10902; GFX942-NEXT:    v_and_b32_e32 v3, 3, v310903; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v310904; GFX942-NEXT:    s_mov_b32 s0, 0xffff10905; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s010906; GFX942-NEXT:    v_not_b32_e32 v6, v410907; GFX942-NEXT:    s_mov_b64 s[0:1], 010908; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v210909; GFX942-NEXT:    s_movk_i32 s2, 0x7fff10910; GFX942-NEXT:  .LBB35_1: ; %atomicrmw.start10911; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=110912; GFX942-NEXT:    s_waitcnt vmcnt(0)10913; GFX942-NEXT:    v_lshrrev_b32_sdwa v4, v3, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10914; GFX942-NEXT:    s_nop 010915; GFX942-NEXT:    v_sub_f32_e32 v4, v4, v210916; GFX942-NEXT:    v_bfe_u32 v7, v4, 16, 110917; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v410918; GFX942-NEXT:    v_add3_u32 v7, v7, v4, s210919; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v4, v410920; GFX942-NEXT:    s_nop 110921; GFX942-NEXT:    v_cndmask_b32_e32 v4, v7, v8, vcc10922; GFX942-NEXT:    v_lshlrev_b32_sdwa v4, v3, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110923; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v410924; GFX942-NEXT:    buffer_wbl2 sc110925; GFX942-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off sc010926; GFX942-NEXT:    s_waitcnt vmcnt(0)10927; GFX942-NEXT:    buffer_inv sc110928; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v510929; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]10930; GFX942-NEXT:    v_mov_b32_e32 v5, v410931; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]10932; GFX942-NEXT:    s_cbranch_execnz .LBB35_110933; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end10934; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]10935; GFX942-NEXT:    s_setpc_b64 s[30:31]10936;10937; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_noret_bf16:10938; GFX11-TRUE16:       ; %bb.0:10939; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10940; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v010941; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 010942; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)10943; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v310944; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v310945; GFX11-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off10946; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v310947; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff10948; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10949; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v310950; GFX11-TRUE16-NEXT:    .p2align 610951; GFX11-TRUE16-NEXT:  .LBB35_1: ; %atomicrmw.start10952; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110953; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)10954; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v410955; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 010956; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l10957; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10958; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v310959; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v710960; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l10961; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)10962; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 110963; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v310964; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v310965; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff10966; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10967; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo10968; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h10969; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10970; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v710971; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v310972; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x010973; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc10974; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)10975; GFX11-TRUE16-NEXT:    buffer_gl1_inv10976; GFX11-TRUE16-NEXT:    buffer_gl0_inv10977; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v410978; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v310979; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s010980; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10981; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010982; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB35_110983; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end10984; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010985; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]10986;10987; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_noret_bf16:10988; GFX11-FAKE16:       ; %bb.0:10989; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10990; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v3, v0 :: v_dual_lshlrev_b32 v2, 16, v210991; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 010992; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)10993; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v310994; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v310995; GFX11-FAKE16-NEXT:    global_load_b32 v4, v[0:1], off10996; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v310997; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff10998; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10999; GFX11-FAKE16-NEXT:    v_not_b32_e32 v6, v311000; GFX11-FAKE16-NEXT:    .p2align 611001; GFX11-FAKE16-NEXT:  .LBB35_1: ; %atomicrmw.start11002; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=111003; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)11004; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v411005; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11006; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v311007; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v211008; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)11009; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 111010; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v311011; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311012; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff11013; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11014; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v7, v8, vcc_lo11015; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v311016; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11017; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v311018; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v311019; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x011020; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc11021; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)11022; GFX11-FAKE16-NEXT:    buffer_gl1_inv11023; GFX11-FAKE16-NEXT:    buffer_gl0_inv11024; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411025; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v311026; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s011027; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)11028; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011029; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB35_111030; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end11031; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011032; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]11033;11034; GFX10-LABEL: global_agent_atomic_fsub_noret_bf16:11035; GFX10:       ; %bb.0:11036; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11037; GFX10-NEXT:    v_mov_b32_e32 v3, v011038; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v211039; GFX10-NEXT:    s_mov_b32 s4, 011040; GFX10-NEXT:    v_and_b32_e32 v0, -4, v311041; GFX10-NEXT:    v_and_b32_e32 v3, 3, v311042; GFX10-NEXT:    global_load_dword v4, v[0:1], off11043; GFX10-NEXT:    v_lshlrev_b32_e32 v5, 3, v311044; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff11045; GFX10-NEXT:    v_not_b32_e32 v6, v311046; GFX10-NEXT:  .LBB35_1: ; %atomicrmw.start11047; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=111048; GFX10-NEXT:    s_waitcnt vmcnt(0)11049; GFX10-NEXT:    v_lshrrev_b32_sdwa v3, v5, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11050; GFX10-NEXT:    v_sub_f32_e32 v3, v3, v211051; GFX10-NEXT:    v_bfe_u32 v7, v3, 16, 111052; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v311053; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311054; GFX10-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff11055; GFX10-NEXT:    v_cndmask_b32_e32 v3, v7, v8, vcc_lo11056; GFX10-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111057; GFX10-NEXT:    v_and_or_b32 v3, v4, v6, v311058; GFX10-NEXT:    s_waitcnt_vscnt null, 0x011059; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc11060; GFX10-NEXT:    s_waitcnt vmcnt(0)11061; GFX10-NEXT:    buffer_gl1_inv11062; GFX10-NEXT:    buffer_gl0_inv11063; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411064; GFX10-NEXT:    v_mov_b32_e32 v4, v311065; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s411066; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s411067; GFX10-NEXT:    s_cbranch_execnz .LBB35_111068; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end11069; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s411070; GFX10-NEXT:    s_setpc_b64 s[30:31]11071;11072; GFX90A-LABEL: global_agent_atomic_fsub_noret_bf16:11073; GFX90A:       ; %bb.0:11074; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11075; GFX90A-NEXT:    v_mov_b32_e32 v3, v011076; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v311077; GFX90A-NEXT:    global_load_dword v5, v[0:1], off11078; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v311079; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v311080; GFX90A-NEXT:    s_mov_b32 s4, 0xffff11081; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s411082; GFX90A-NEXT:    v_not_b32_e32 v6, v411083; GFX90A-NEXT:    s_mov_b64 s[4:5], 011084; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v211085; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff11086; GFX90A-NEXT:  .LBB35_1: ; %atomicrmw.start11087; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=111088; GFX90A-NEXT:    s_waitcnt vmcnt(0)11089; GFX90A-NEXT:    v_lshrrev_b32_sdwa v4, v3, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11090; GFX90A-NEXT:    v_sub_f32_e32 v4, v4, v211091; GFX90A-NEXT:    v_bfe_u32 v7, v4, 16, 111092; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v411093; GFX90A-NEXT:    v_add3_u32 v7, v7, v4, s611094; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v4, v411095; GFX90A-NEXT:    v_cndmask_b32_e32 v4, v7, v8, vcc11096; GFX90A-NEXT:    v_lshlrev_b32_sdwa v4, v3, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111097; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v411098; GFX90A-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off glc11099; GFX90A-NEXT:    s_waitcnt vmcnt(0)11100; GFX90A-NEXT:    buffer_wbinvl111101; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v511102; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11103; GFX90A-NEXT:    v_mov_b32_e32 v5, v411104; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]11105; GFX90A-NEXT:    s_cbranch_execnz .LBB35_111106; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end11107; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]11108; GFX90A-NEXT:    s_setpc_b64 s[30:31]11109;11110; GFX908-LABEL: global_agent_atomic_fsub_noret_bf16:11111; GFX908:       ; %bb.0:11112; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11113; GFX908-NEXT:    v_mov_b32_e32 v3, v011114; GFX908-NEXT:    v_and_b32_e32 v0, -4, v311115; GFX908-NEXT:    global_load_dword v4, v[0:1], off11116; GFX908-NEXT:    v_and_b32_e32 v3, 3, v311117; GFX908-NEXT:    v_lshlrev_b32_e32 v5, 3, v311118; GFX908-NEXT:    s_mov_b32 s4, 0xffff11119; GFX908-NEXT:    v_lshlrev_b32_e64 v3, v5, s411120; GFX908-NEXT:    v_not_b32_e32 v6, v311121; GFX908-NEXT:    s_mov_b64 s[4:5], 011122; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v211123; GFX908-NEXT:    s_movk_i32 s6, 0x7fff11124; GFX908-NEXT:  .LBB35_1: ; %atomicrmw.start11125; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=111126; GFX908-NEXT:    s_waitcnt vmcnt(0)11127; GFX908-NEXT:    v_lshrrev_b32_sdwa v3, v5, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11128; GFX908-NEXT:    v_sub_f32_e32 v3, v3, v211129; GFX908-NEXT:    v_bfe_u32 v7, v3, 16, 111130; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v311131; GFX908-NEXT:    v_add3_u32 v7, v7, v3, s611132; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v3, v311133; GFX908-NEXT:    v_cndmask_b32_e32 v3, v7, v8, vcc11134; GFX908-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111135; GFX908-NEXT:    v_and_or_b32 v3, v4, v6, v311136; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc11137; GFX908-NEXT:    s_waitcnt vmcnt(0)11138; GFX908-NEXT:    buffer_wbinvl111139; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v411140; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11141; GFX908-NEXT:    v_mov_b32_e32 v4, v311142; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]11143; GFX908-NEXT:    s_cbranch_execnz .LBB35_111144; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end11145; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]11146; GFX908-NEXT:    s_setpc_b64 s[30:31]11147;11148; GFX8-LABEL: global_agent_atomic_fsub_noret_bf16:11149; GFX8:       ; %bb.0:11150; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11151; GFX8-NEXT:    v_mov_b32_e32 v3, v011152; GFX8-NEXT:    v_and_b32_e32 v0, -4, v311153; GFX8-NEXT:    flat_load_dword v4, v[0:1]11154; GFX8-NEXT:    v_and_b32_e32 v3, 3, v311155; GFX8-NEXT:    v_lshlrev_b32_e32 v5, 3, v311156; GFX8-NEXT:    s_mov_b32 s4, 0xffff11157; GFX8-NEXT:    v_lshlrev_b32_e64 v3, v5, s411158; GFX8-NEXT:    v_not_b32_e32 v6, v311159; GFX8-NEXT:    s_mov_b64 s[4:5], 011160; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v211161; GFX8-NEXT:  .LBB35_1: ; %atomicrmw.start11162; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=111163; GFX8-NEXT:    s_waitcnt vmcnt(0)11164; GFX8-NEXT:    v_lshrrev_b32_sdwa v3, v5, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11165; GFX8-NEXT:    v_sub_f32_e32 v3, v3, v211166; GFX8-NEXT:    v_bfe_u32 v8, v3, 16, 111167; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v311168; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v811169; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v311170; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v3, v311171; GFX8-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc11172; GFX8-NEXT:    v_and_b32_e32 v7, v4, v611173; GFX8-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111174; GFX8-NEXT:    v_or_b32_e32 v3, v7, v311175; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc11176; GFX8-NEXT:    s_waitcnt vmcnt(0)11177; GFX8-NEXT:    buffer_wbinvl111178; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v411179; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11180; GFX8-NEXT:    v_mov_b32_e32 v4, v311181; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]11182; GFX8-NEXT:    s_cbranch_execnz .LBB35_111183; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end11184; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]11185; GFX8-NEXT:    s_setpc_b64 s[30:31]11186;11187; GFX7-LABEL: global_agent_atomic_fsub_noret_bf16:11188; GFX7:       ; %bb.0:11189; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11190; GFX7-NEXT:    v_mov_b32_e32 v3, v011191; GFX7-NEXT:    s_mov_b32 s6, 011192; GFX7-NEXT:    v_and_b32_e32 v0, -4, v311193; GFX7-NEXT:    s_mov_b32 s7, 0xf00011194; GFX7-NEXT:    s_mov_b32 s4, s611195; GFX7-NEXT:    s_mov_b32 s5, s611196; GFX7-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr6411197; GFX7-NEXT:    v_and_b32_e32 v3, 3, v311198; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 3, v311199; GFX7-NEXT:    v_lshl_b32_e32 v3, 0xffff, v511200; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v211201; GFX7-NEXT:    v_not_b32_e32 v6, v311202; GFX7-NEXT:    s_mov_b64 s[8:9], 011203; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v211204; GFX7-NEXT:  .LBB35_1: ; %atomicrmw.start11205; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=111206; GFX7-NEXT:    s_waitcnt vmcnt(0)11207; GFX7-NEXT:    v_lshrrev_b32_e32 v3, v5, v411208; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v311209; GFX7-NEXT:    v_sub_f32_e32 v3, v3, v211210; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v311211; GFX7-NEXT:    v_and_b32_e32 v7, v4, v611212; GFX7-NEXT:    v_lshlrev_b32_e32 v3, v5, v311213; GFX7-NEXT:    v_or_b32_e32 v3, v7, v311214; GFX7-NEXT:    v_mov_b32_e32 v8, v411215; GFX7-NEXT:    v_mov_b32_e32 v7, v311216; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc11217; GFX7-NEXT:    s_waitcnt vmcnt(0)11218; GFX7-NEXT:    buffer_wbinvl111219; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v411220; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]11221; GFX7-NEXT:    v_mov_b32_e32 v4, v711222; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]11223; GFX7-NEXT:    s_cbranch_execnz .LBB35_111224; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end11225; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]11226; GFX7-NEXT:    s_setpc_b64 s[30:31]11227;11228; GFX6-LABEL: global_agent_atomic_fsub_noret_bf16:11229; GFX6:       ; %bb.0:11230; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11231; GFX6-NEXT:    v_mov_b32_e32 v3, v011232; GFX6-NEXT:    s_mov_b32 s6, 011233; GFX6-NEXT:    v_and_b32_e32 v0, -4, v311234; GFX6-NEXT:    s_mov_b32 s7, 0xf00011235; GFX6-NEXT:    s_mov_b32 s4, s611236; GFX6-NEXT:    s_mov_b32 s5, s611237; GFX6-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr6411238; GFX6-NEXT:    v_and_b32_e32 v3, 3, v311239; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 3, v311240; GFX6-NEXT:    v_lshl_b32_e32 v3, 0xffff, v511241; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v211242; GFX6-NEXT:    v_not_b32_e32 v6, v311243; GFX6-NEXT:    s_mov_b64 s[8:9], 011244; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v211245; GFX6-NEXT:  .LBB35_1: ; %atomicrmw.start11246; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=111247; GFX6-NEXT:    s_waitcnt vmcnt(0)11248; GFX6-NEXT:    v_lshrrev_b32_e32 v3, v5, v411249; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v311250; GFX6-NEXT:    v_sub_f32_e32 v3, v3, v211251; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v311252; GFX6-NEXT:    s_waitcnt expcnt(0)11253; GFX6-NEXT:    v_and_b32_e32 v7, v4, v611254; GFX6-NEXT:    v_lshlrev_b32_e32 v3, v5, v311255; GFX6-NEXT:    v_or_b32_e32 v3, v7, v311256; GFX6-NEXT:    v_mov_b32_e32 v8, v411257; GFX6-NEXT:    v_mov_b32_e32 v7, v311258; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc11259; GFX6-NEXT:    s_waitcnt vmcnt(0)11260; GFX6-NEXT:    buffer_wbinvl111261; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v411262; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]11263; GFX6-NEXT:    v_mov_b32_e32 v4, v711264; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]11265; GFX6-NEXT:    s_cbranch_execnz .LBB35_111266; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end11267; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]11268; GFX6-NEXT:    s_waitcnt expcnt(0)11269; GFX6-NEXT:    s_setpc_b64 s[30:31]11270  %unused = atomicrmw fsub ptr addrspace(1) %ptr, bfloat %val syncscope("agent") seq_cst11271  ret void11272}11273 11274define void @global_agent_atomic_fsub_noret_bf16__offset12b_pos(ptr addrspace(1) %ptr, bfloat %val) #0 {11275; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_pos:11276; GFX12-TRUE16:       ; %bb.0:11277; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x011278; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x011279; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x011280; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x011281; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x011282; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v011283; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)11284; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo11285; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 011286; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v311287; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v311288; GFX12-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off11289; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v311290; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11291; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff11292; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v311293; GFX12-TRUE16-NEXT:  .LBB36_1: ; %atomicrmw.start11294; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=111295; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x011296; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v411297; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 011298; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l11299; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)11300; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v311301; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v711302; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l11303; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)11304; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 111305; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v311306; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311307; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff11308; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)11309; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11310; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo11311; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h11312; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11313; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v711314; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v311315; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x011316; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV11317; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x011318; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV11319; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411320; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v311321; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11322; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s011323; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11324; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011325; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB36_111326; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end11327; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011328; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x011329; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]11330;11331; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_pos:11332; GFX12-FAKE16:       ; %bb.0:11333; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x011334; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x011335; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x011336; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x011337; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x011338; GFX12-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v011339; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11340; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo11341; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v211342; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)11343; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v411344; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v411345; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 011346; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off11347; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v411348; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff11349; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11350; GFX12-FAKE16-NEXT:    v_not_b32_e32 v5, v511351; GFX12-FAKE16-NEXT:  .LBB36_1: ; %atomicrmw.start11352; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=111353; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x011354; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v311355; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11356; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v211357; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v611358; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)11359; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 111360; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v211361; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v211362; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff11363; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11364; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11365; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo11366; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v211367; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11368; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v211369; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v211370; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x011371; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV11372; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x011373; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV11374; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v311375; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v211376; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11377; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s011378; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11379; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011380; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB36_111381; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end11382; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011383; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x011384; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]11385;11386; GFX942-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_pos:11387; GFX942:       ; %bb.0:11388; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11389; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe11390; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]11391; GFX942-NEXT:    v_and_b32_e32 v0, -4, v411392; GFX942-NEXT:    v_mov_b32_e32 v1, v511393; GFX942-NEXT:    global_load_dword v3, v[0:1], off11394; GFX942-NEXT:    v_and_b32_e32 v4, 3, v411395; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v411396; GFX942-NEXT:    s_mov_b32 s0, 0xffff11397; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s011398; GFX942-NEXT:    v_not_b32_e32 v5, v511399; GFX942-NEXT:    s_mov_b64 s[0:1], 011400; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v211401; GFX942-NEXT:    s_movk_i32 s2, 0x7fff11402; GFX942-NEXT:  .LBB36_1: ; %atomicrmw.start11403; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=111404; GFX942-NEXT:    s_waitcnt vmcnt(0)11405; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11406; GFX942-NEXT:    s_nop 011407; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v611408; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 111409; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v211410; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s211411; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211412; GFX942-NEXT:    s_nop 111413; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc11414; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111415; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v211416; GFX942-NEXT:    buffer_wbl2 sc111417; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc011418; GFX942-NEXT:    s_waitcnt vmcnt(0)11419; GFX942-NEXT:    buffer_inv sc111420; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311421; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]11422; GFX942-NEXT:    v_mov_b32_e32 v3, v211423; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]11424; GFX942-NEXT:    s_cbranch_execnz .LBB36_111425; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end11426; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]11427; GFX942-NEXT:    s_setpc_b64 s[30:31]11428;11429; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_pos:11430; GFX11-TRUE16:       ; %bb.0:11431; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11432; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v011433; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11434; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo11435; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 011436; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v311437; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v311438; GFX11-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off11439; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v311440; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11441; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff11442; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v311443; GFX11-TRUE16-NEXT:    .p2align 611444; GFX11-TRUE16-NEXT:  .LBB36_1: ; %atomicrmw.start11445; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=111446; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)11447; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v411448; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 011449; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l11450; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)11451; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v311452; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v711453; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l11454; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)11455; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 111456; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v311457; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311458; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff11459; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11460; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo11461; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h11462; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11463; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v711464; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v311465; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x011466; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc11467; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)11468; GFX11-TRUE16-NEXT:    buffer_gl1_inv11469; GFX11-TRUE16-NEXT:    buffer_gl0_inv11470; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411471; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v311472; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s011473; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)11474; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011475; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB36_111476; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end11477; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011478; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]11479;11480; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_pos:11481; GFX11-FAKE16:       ; %bb.0:11482; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11483; GFX11-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v011484; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)11485; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo11486; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v211487; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v411488; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v411489; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 011490; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off11491; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v411492; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11493; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff11494; GFX11-FAKE16-NEXT:    v_not_b32_e32 v5, v511495; GFX11-FAKE16-NEXT:    .p2align 611496; GFX11-FAKE16-NEXT:  .LBB36_1: ; %atomicrmw.start11497; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=111498; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)11499; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v311500; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11501; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v211502; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v611503; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)11504; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 111505; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v211506; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v211507; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff11508; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11509; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo11510; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v211511; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11512; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v211513; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v211514; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x011515; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off glc11516; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)11517; GFX11-FAKE16-NEXT:    buffer_gl1_inv11518; GFX11-FAKE16-NEXT:    buffer_gl0_inv11519; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v311520; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v211521; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s011522; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)11523; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011524; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB36_111525; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end11526; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011527; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]11528;11529; GFX10-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_pos:11530; GFX10:       ; %bb.0:11531; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11532; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v011533; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo11534; GFX10-NEXT:    v_lshlrev_b32_e32 v6, 16, v211535; GFX10-NEXT:    v_and_b32_e32 v0, -4, v411536; GFX10-NEXT:    v_and_b32_e32 v4, 3, v411537; GFX10-NEXT:    s_mov_b32 s4, 011538; GFX10-NEXT:    global_load_dword v3, v[0:1], off11539; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 3, v411540; GFX10-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff11541; GFX10-NEXT:    v_not_b32_e32 v5, v511542; GFX10-NEXT:  .LBB36_1: ; %atomicrmw.start11543; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=111544; GFX10-NEXT:    s_waitcnt vmcnt(0)11545; GFX10-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11546; GFX10-NEXT:    v_sub_f32_e32 v2, v2, v611547; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 111548; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v211549; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v211550; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff11551; GFX10-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo11552; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111553; GFX10-NEXT:    v_and_or_b32 v2, v3, v5, v211554; GFX10-NEXT:    s_waitcnt_vscnt null, 0x011555; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc11556; GFX10-NEXT:    s_waitcnt vmcnt(0)11557; GFX10-NEXT:    buffer_gl1_inv11558; GFX10-NEXT:    buffer_gl0_inv11559; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v311560; GFX10-NEXT:    v_mov_b32_e32 v3, v211561; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s411562; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s411563; GFX10-NEXT:    s_cbranch_execnz .LBB36_111564; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end11565; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s411566; GFX10-NEXT:    s_setpc_b64 s[30:31]11567;11568; GFX90A-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_pos:11569; GFX90A:       ; %bb.0:11570; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11571; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v011572; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc11573; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v411574; GFX90A-NEXT:    global_load_dword v3, v[0:1], off11575; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v411576; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v411577; GFX90A-NEXT:    s_mov_b32 s4, 0xffff11578; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s411579; GFX90A-NEXT:    v_not_b32_e32 v5, v511580; GFX90A-NEXT:    s_mov_b64 s[4:5], 011581; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v211582; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff11583; GFX90A-NEXT:  .LBB36_1: ; %atomicrmw.start11584; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=111585; GFX90A-NEXT:    s_waitcnt vmcnt(0)11586; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11587; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v611588; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 111589; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v211590; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s611591; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211592; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc11593; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111594; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v211595; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc11596; GFX90A-NEXT:    s_waitcnt vmcnt(0)11597; GFX90A-NEXT:    buffer_wbinvl111598; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311599; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11600; GFX90A-NEXT:    v_mov_b32_e32 v3, v211601; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]11602; GFX90A-NEXT:    s_cbranch_execnz .LBB36_111603; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end11604; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]11605; GFX90A-NEXT:    s_setpc_b64 s[30:31]11606;11607; GFX908-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_pos:11608; GFX908:       ; %bb.0:11609; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11610; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v011611; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc11612; GFX908-NEXT:    v_and_b32_e32 v0, -4, v411613; GFX908-NEXT:    global_load_dword v3, v[0:1], off11614; GFX908-NEXT:    v_and_b32_e32 v4, 3, v411615; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 3, v411616; GFX908-NEXT:    s_mov_b32 s4, 0xffff11617; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v4, s411618; GFX908-NEXT:    v_not_b32_e32 v5, v511619; GFX908-NEXT:    s_mov_b64 s[4:5], 011620; GFX908-NEXT:    v_lshlrev_b32_e32 v6, 16, v211621; GFX908-NEXT:    s_movk_i32 s6, 0x7fff11622; GFX908-NEXT:  .LBB36_1: ; %atomicrmw.start11623; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=111624; GFX908-NEXT:    s_waitcnt vmcnt(0)11625; GFX908-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11626; GFX908-NEXT:    v_sub_f32_e32 v2, v2, v611627; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 111628; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v211629; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s611630; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211631; GFX908-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc11632; GFX908-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111633; GFX908-NEXT:    v_and_or_b32 v2, v3, v5, v211634; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc11635; GFX908-NEXT:    s_waitcnt vmcnt(0)11636; GFX908-NEXT:    buffer_wbinvl111637; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311638; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11639; GFX908-NEXT:    v_mov_b32_e32 v3, v211640; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]11641; GFX908-NEXT:    s_cbranch_execnz .LBB36_111642; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end11643; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]11644; GFX908-NEXT:    s_setpc_b64 s[30:31]11645;11646; GFX8-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_pos:11647; GFX8:       ; %bb.0:11648; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11649; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0x7fe, v011650; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc11651; GFX8-NEXT:    v_and_b32_e32 v0, -4, v411652; GFX8-NEXT:    flat_load_dword v3, v[0:1]11653; GFX8-NEXT:    v_and_b32_e32 v4, 3, v411654; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 3, v411655; GFX8-NEXT:    s_mov_b32 s4, 0xffff11656; GFX8-NEXT:    v_lshlrev_b32_e64 v5, v4, s411657; GFX8-NEXT:    v_not_b32_e32 v5, v511658; GFX8-NEXT:    s_mov_b64 s[4:5], 011659; GFX8-NEXT:    v_lshlrev_b32_e32 v6, 16, v211660; GFX8-NEXT:  .LBB36_1: ; %atomicrmw.start11661; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=111662; GFX8-NEXT:    s_waitcnt vmcnt(0)11663; GFX8-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11664; GFX8-NEXT:    v_sub_f32_e32 v2, v2, v611665; GFX8-NEXT:    v_bfe_u32 v8, v2, 16, 111666; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v211667; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v811668; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v211669; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211670; GFX8-NEXT:    v_cndmask_b32_e32 v2, v8, v9, vcc11671; GFX8-NEXT:    v_and_b32_e32 v7, v3, v511672; GFX8-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111673; GFX8-NEXT:    v_or_b32_e32 v2, v7, v211674; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc11675; GFX8-NEXT:    s_waitcnt vmcnt(0)11676; GFX8-NEXT:    buffer_wbinvl111677; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311678; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11679; GFX8-NEXT:    v_mov_b32_e32 v3, v211680; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]11681; GFX8-NEXT:    s_cbranch_execnz .LBB36_111682; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end11683; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]11684; GFX8-NEXT:    s_setpc_b64 s[30:31]11685;11686; GFX7-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_pos:11687; GFX7:       ; %bb.0:11688; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11689; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v011690; GFX7-NEXT:    s_mov_b32 s6, 011691; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc11692; GFX7-NEXT:    v_and_b32_e32 v0, -4, v411693; GFX7-NEXT:    s_mov_b32 s7, 0xf00011694; GFX7-NEXT:    s_mov_b32 s4, s611695; GFX7-NEXT:    s_mov_b32 s5, s611696; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6411697; GFX7-NEXT:    v_and_b32_e32 v4, 3, v411698; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v411699; GFX7-NEXT:    v_lshl_b32_e32 v5, 0xffff, v411700; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v211701; GFX7-NEXT:    v_not_b32_e32 v5, v511702; GFX7-NEXT:    s_mov_b64 s[8:9], 011703; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v211704; GFX7-NEXT:  .LBB36_1: ; %atomicrmw.start11705; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=111706; GFX7-NEXT:    s_waitcnt vmcnt(0)11707; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v311708; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v211709; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v611710; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v211711; GFX7-NEXT:    v_and_b32_e32 v7, v3, v511712; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v211713; GFX7-NEXT:    v_or_b32_e32 v2, v7, v211714; GFX7-NEXT:    v_mov_b32_e32 v8, v311715; GFX7-NEXT:    v_mov_b32_e32 v7, v211716; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc11717; GFX7-NEXT:    s_waitcnt vmcnt(0)11718; GFX7-NEXT:    buffer_wbinvl111719; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v311720; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]11721; GFX7-NEXT:    v_mov_b32_e32 v3, v711722; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]11723; GFX7-NEXT:    s_cbranch_execnz .LBB36_111724; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end11725; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]11726; GFX7-NEXT:    s_setpc_b64 s[30:31]11727;11728; GFX6-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_pos:11729; GFX6:       ; %bb.0:11730; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11731; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v011732; GFX6-NEXT:    s_mov_b32 s6, 011733; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc11734; GFX6-NEXT:    v_and_b32_e32 v0, -4, v411735; GFX6-NEXT:    s_mov_b32 s7, 0xf00011736; GFX6-NEXT:    s_mov_b32 s4, s611737; GFX6-NEXT:    s_mov_b32 s5, s611738; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6411739; GFX6-NEXT:    v_and_b32_e32 v4, 3, v411740; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 3, v411741; GFX6-NEXT:    v_lshl_b32_e32 v5, 0xffff, v411742; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v211743; GFX6-NEXT:    v_not_b32_e32 v5, v511744; GFX6-NEXT:    s_mov_b64 s[8:9], 011745; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v211746; GFX6-NEXT:  .LBB36_1: ; %atomicrmw.start11747; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=111748; GFX6-NEXT:    s_waitcnt vmcnt(0)11749; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v4, v311750; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v211751; GFX6-NEXT:    v_sub_f32_e32 v2, v2, v611752; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v211753; GFX6-NEXT:    s_waitcnt expcnt(0)11754; GFX6-NEXT:    v_and_b32_e32 v7, v3, v511755; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v4, v211756; GFX6-NEXT:    v_or_b32_e32 v2, v7, v211757; GFX6-NEXT:    v_mov_b32_e32 v8, v311758; GFX6-NEXT:    v_mov_b32_e32 v7, v211759; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc11760; GFX6-NEXT:    s_waitcnt vmcnt(0)11761; GFX6-NEXT:    buffer_wbinvl111762; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v311763; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]11764; GFX6-NEXT:    v_mov_b32_e32 v3, v711765; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]11766; GFX6-NEXT:    s_cbranch_execnz .LBB36_111767; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end11768; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]11769; GFX6-NEXT:    s_waitcnt expcnt(0)11770; GFX6-NEXT:    s_setpc_b64 s[30:31]11771  %gep = getelementptr bfloat, ptr addrspace(1) %ptr, i64 102311772  %unused = atomicrmw fsub ptr addrspace(1) %gep, bfloat %val syncscope("agent") seq_cst11773  ret void11774}11775 11776define void @global_agent_atomic_fsub_noret_bf16__offset12b_neg(ptr addrspace(1) %ptr, bfloat %val) #0 {11777; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_neg:11778; GFX12-TRUE16:       ; %bb.0:11779; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x011780; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x011781; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x011782; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x011783; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x011784; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v011785; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)11786; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo11787; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 011788; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v311789; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v311790; GFX12-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off11791; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v311792; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11793; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff11794; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v311795; GFX12-TRUE16-NEXT:  .LBB37_1: ; %atomicrmw.start11796; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=111797; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x011798; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v411799; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 011800; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l11801; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)11802; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v311803; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v711804; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l11805; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)11806; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 111807; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v311808; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311809; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff11810; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)11811; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11812; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo11813; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h11814; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11815; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v711816; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v311817; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x011818; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV11819; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x011820; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV11821; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411822; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v311823; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11824; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s011825; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11826; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011827; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB37_111828; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end11829; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011830; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x011831; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]11832;11833; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_neg:11834; GFX12-FAKE16:       ; %bb.0:11835; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x011836; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x011837; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x011838; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x011839; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x011840; GFX12-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v011841; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11842; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo11843; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v211844; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)11845; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v411846; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v411847; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 011848; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off11849; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v411850; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff11851; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11852; GFX12-FAKE16-NEXT:    v_not_b32_e32 v5, v511853; GFX12-FAKE16-NEXT:  .LBB37_1: ; %atomicrmw.start11854; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=111855; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x011856; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v311857; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11858; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v211859; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v611860; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)11861; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 111862; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v211863; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v211864; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff11865; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11866; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11867; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo11868; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v211869; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11870; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v211871; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v211872; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x011873; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV11874; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x011875; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV11876; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v311877; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v211878; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11879; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s011880; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11881; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011882; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB37_111883; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end11884; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011885; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x011886; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]11887;11888; GFX942-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_neg:11889; GFX942:       ; %bb.0:11890; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11891; GFX942-NEXT:    s_movk_i32 s0, 0xf80011892; GFX942-NEXT:    s_mov_b32 s1, -111893; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]11894; GFX942-NEXT:    v_and_b32_e32 v0, -4, v411895; GFX942-NEXT:    v_mov_b32_e32 v1, v511896; GFX942-NEXT:    global_load_dword v3, v[0:1], off11897; GFX942-NEXT:    v_and_b32_e32 v4, 3, v411898; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v411899; GFX942-NEXT:    s_mov_b32 s0, 0xffff11900; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s011901; GFX942-NEXT:    v_not_b32_e32 v5, v511902; GFX942-NEXT:    s_mov_b64 s[0:1], 011903; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v211904; GFX942-NEXT:    s_movk_i32 s2, 0x7fff11905; GFX942-NEXT:  .LBB37_1: ; %atomicrmw.start11906; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=111907; GFX942-NEXT:    s_waitcnt vmcnt(0)11908; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11909; GFX942-NEXT:    s_nop 011910; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v611911; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 111912; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v211913; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s211914; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211915; GFX942-NEXT:    s_nop 111916; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc11917; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111918; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v211919; GFX942-NEXT:    buffer_wbl2 sc111920; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc011921; GFX942-NEXT:    s_waitcnt vmcnt(0)11922; GFX942-NEXT:    buffer_inv sc111923; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311924; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]11925; GFX942-NEXT:    v_mov_b32_e32 v3, v211926; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]11927; GFX942-NEXT:    s_cbranch_execnz .LBB37_111928; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end11929; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]11930; GFX942-NEXT:    s_setpc_b64 s[30:31]11931;11932; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_neg:11933; GFX11-TRUE16:       ; %bb.0:11934; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11935; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v011936; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11937; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo11938; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 011939; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v311940; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v311941; GFX11-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off11942; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v311943; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11944; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff11945; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v311946; GFX11-TRUE16-NEXT:    .p2align 611947; GFX11-TRUE16-NEXT:  .LBB37_1: ; %atomicrmw.start11948; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=111949; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)11950; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v411951; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 011952; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l11953; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)11954; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v311955; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v711956; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l11957; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)11958; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 111959; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v311960; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311961; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff11962; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11963; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo11964; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h11965; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11966; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v711967; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v311968; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x011969; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc11970; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)11971; GFX11-TRUE16-NEXT:    buffer_gl1_inv11972; GFX11-TRUE16-NEXT:    buffer_gl0_inv11973; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411974; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v311975; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s011976; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)11977; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011978; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB37_111979; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end11980; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011981; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]11982;11983; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_neg:11984; GFX11-FAKE16:       ; %bb.0:11985; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11986; GFX11-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v011987; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)11988; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo11989; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v211990; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v411991; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v411992; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 011993; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off11994; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v411995; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11996; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff11997; GFX11-FAKE16-NEXT:    v_not_b32_e32 v5, v511998; GFX11-FAKE16-NEXT:    .p2align 611999; GFX11-FAKE16-NEXT:  .LBB37_1: ; %atomicrmw.start12000; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=112001; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)12002; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v312003; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12004; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v212005; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v612006; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)12007; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 112008; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v212009; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v212010; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff12011; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12012; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo12013; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v212014; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12015; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v212016; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v212017; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x012018; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off glc12019; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)12020; GFX11-FAKE16-NEXT:    buffer_gl1_inv12021; GFX11-FAKE16-NEXT:    buffer_gl0_inv12022; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v312023; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v212024; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s012025; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12026; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012027; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB37_112028; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end12029; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012030; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]12031;12032; GFX10-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_neg:12033; GFX10:       ; %bb.0:12034; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12035; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v012036; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo12037; GFX10-NEXT:    v_lshlrev_b32_e32 v6, 16, v212038; GFX10-NEXT:    v_and_b32_e32 v0, -4, v412039; GFX10-NEXT:    v_and_b32_e32 v4, 3, v412040; GFX10-NEXT:    s_mov_b32 s4, 012041; GFX10-NEXT:    global_load_dword v3, v[0:1], off12042; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 3, v412043; GFX10-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff12044; GFX10-NEXT:    v_not_b32_e32 v5, v512045; GFX10-NEXT:  .LBB37_1: ; %atomicrmw.start12046; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=112047; GFX10-NEXT:    s_waitcnt vmcnt(0)12048; GFX10-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD12049; GFX10-NEXT:    v_sub_f32_e32 v2, v2, v612050; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 112051; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v212052; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v212053; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff12054; GFX10-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo12055; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112056; GFX10-NEXT:    v_and_or_b32 v2, v3, v5, v212057; GFX10-NEXT:    s_waitcnt_vscnt null, 0x012058; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc12059; GFX10-NEXT:    s_waitcnt vmcnt(0)12060; GFX10-NEXT:    buffer_gl1_inv12061; GFX10-NEXT:    buffer_gl0_inv12062; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v312063; GFX10-NEXT:    v_mov_b32_e32 v3, v212064; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s412065; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s412066; GFX10-NEXT:    s_cbranch_execnz .LBB37_112067; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end12068; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s412069; GFX10-NEXT:    s_setpc_b64 s[30:31]12070;12071; GFX90A-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_neg:12072; GFX90A:       ; %bb.0:12073; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12074; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v012075; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc12076; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v412077; GFX90A-NEXT:    global_load_dword v3, v[0:1], off12078; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v412079; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v412080; GFX90A-NEXT:    s_mov_b32 s4, 0xffff12081; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s412082; GFX90A-NEXT:    v_not_b32_e32 v5, v512083; GFX90A-NEXT:    s_mov_b64 s[4:5], 012084; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v212085; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff12086; GFX90A-NEXT:  .LBB37_1: ; %atomicrmw.start12087; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=112088; GFX90A-NEXT:    s_waitcnt vmcnt(0)12089; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD12090; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v612091; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 112092; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v212093; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s612094; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212095; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc12096; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112097; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v212098; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc12099; GFX90A-NEXT:    s_waitcnt vmcnt(0)12100; GFX90A-NEXT:    buffer_wbinvl112101; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312102; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12103; GFX90A-NEXT:    v_mov_b32_e32 v3, v212104; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]12105; GFX90A-NEXT:    s_cbranch_execnz .LBB37_112106; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end12107; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]12108; GFX90A-NEXT:    s_setpc_b64 s[30:31]12109;12110; GFX908-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_neg:12111; GFX908:       ; %bb.0:12112; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12113; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v012114; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc12115; GFX908-NEXT:    v_and_b32_e32 v0, -4, v412116; GFX908-NEXT:    global_load_dword v3, v[0:1], off12117; GFX908-NEXT:    v_and_b32_e32 v4, 3, v412118; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 3, v412119; GFX908-NEXT:    s_mov_b32 s4, 0xffff12120; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v4, s412121; GFX908-NEXT:    v_not_b32_e32 v5, v512122; GFX908-NEXT:    s_mov_b64 s[4:5], 012123; GFX908-NEXT:    v_lshlrev_b32_e32 v6, 16, v212124; GFX908-NEXT:    s_movk_i32 s6, 0x7fff12125; GFX908-NEXT:  .LBB37_1: ; %atomicrmw.start12126; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=112127; GFX908-NEXT:    s_waitcnt vmcnt(0)12128; GFX908-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD12129; GFX908-NEXT:    v_sub_f32_e32 v2, v2, v612130; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 112131; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v212132; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s612133; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212134; GFX908-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc12135; GFX908-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112136; GFX908-NEXT:    v_and_or_b32 v2, v3, v5, v212137; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc12138; GFX908-NEXT:    s_waitcnt vmcnt(0)12139; GFX908-NEXT:    buffer_wbinvl112140; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312141; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12142; GFX908-NEXT:    v_mov_b32_e32 v3, v212143; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]12144; GFX908-NEXT:    s_cbranch_execnz .LBB37_112145; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end12146; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]12147; GFX908-NEXT:    s_setpc_b64 s[30:31]12148;12149; GFX8-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_neg:12150; GFX8:       ; %bb.0:12151; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12152; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0xfffff800, v012153; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc12154; GFX8-NEXT:    v_and_b32_e32 v0, -4, v412155; GFX8-NEXT:    flat_load_dword v3, v[0:1]12156; GFX8-NEXT:    v_and_b32_e32 v4, 3, v412157; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 3, v412158; GFX8-NEXT:    s_mov_b32 s4, 0xffff12159; GFX8-NEXT:    v_lshlrev_b32_e64 v5, v4, s412160; GFX8-NEXT:    v_not_b32_e32 v5, v512161; GFX8-NEXT:    s_mov_b64 s[4:5], 012162; GFX8-NEXT:    v_lshlrev_b32_e32 v6, 16, v212163; GFX8-NEXT:  .LBB37_1: ; %atomicrmw.start12164; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=112165; GFX8-NEXT:    s_waitcnt vmcnt(0)12166; GFX8-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD12167; GFX8-NEXT:    v_sub_f32_e32 v2, v2, v612168; GFX8-NEXT:    v_bfe_u32 v8, v2, 16, 112169; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v212170; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v812171; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v212172; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212173; GFX8-NEXT:    v_cndmask_b32_e32 v2, v8, v9, vcc12174; GFX8-NEXT:    v_and_b32_e32 v7, v3, v512175; GFX8-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112176; GFX8-NEXT:    v_or_b32_e32 v2, v7, v212177; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc12178; GFX8-NEXT:    s_waitcnt vmcnt(0)12179; GFX8-NEXT:    buffer_wbinvl112180; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312181; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12182; GFX8-NEXT:    v_mov_b32_e32 v3, v212183; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]12184; GFX8-NEXT:    s_cbranch_execnz .LBB37_112185; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end12186; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]12187; GFX8-NEXT:    s_setpc_b64 s[30:31]12188;12189; GFX7-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_neg:12190; GFX7:       ; %bb.0:12191; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12192; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v012193; GFX7-NEXT:    s_mov_b32 s6, 012194; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc12195; GFX7-NEXT:    v_and_b32_e32 v0, -4, v412196; GFX7-NEXT:    s_mov_b32 s7, 0xf00012197; GFX7-NEXT:    s_mov_b32 s4, s612198; GFX7-NEXT:    s_mov_b32 s5, s612199; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6412200; GFX7-NEXT:    v_and_b32_e32 v4, 3, v412201; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v412202; GFX7-NEXT:    v_lshl_b32_e32 v5, 0xffff, v412203; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v212204; GFX7-NEXT:    v_not_b32_e32 v5, v512205; GFX7-NEXT:    s_mov_b64 s[8:9], 012206; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v212207; GFX7-NEXT:  .LBB37_1: ; %atomicrmw.start12208; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=112209; GFX7-NEXT:    s_waitcnt vmcnt(0)12210; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v312211; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v212212; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v612213; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v212214; GFX7-NEXT:    v_and_b32_e32 v7, v3, v512215; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v212216; GFX7-NEXT:    v_or_b32_e32 v2, v7, v212217; GFX7-NEXT:    v_mov_b32_e32 v8, v312218; GFX7-NEXT:    v_mov_b32_e32 v7, v212219; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc12220; GFX7-NEXT:    s_waitcnt vmcnt(0)12221; GFX7-NEXT:    buffer_wbinvl112222; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v312223; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]12224; GFX7-NEXT:    v_mov_b32_e32 v3, v712225; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]12226; GFX7-NEXT:    s_cbranch_execnz .LBB37_112227; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end12228; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]12229; GFX7-NEXT:    s_setpc_b64 s[30:31]12230;12231; GFX6-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b_neg:12232; GFX6:       ; %bb.0:12233; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12234; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v012235; GFX6-NEXT:    s_mov_b32 s6, 012236; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc12237; GFX6-NEXT:    v_and_b32_e32 v0, -4, v412238; GFX6-NEXT:    s_mov_b32 s7, 0xf00012239; GFX6-NEXT:    s_mov_b32 s4, s612240; GFX6-NEXT:    s_mov_b32 s5, s612241; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6412242; GFX6-NEXT:    v_and_b32_e32 v4, 3, v412243; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 3, v412244; GFX6-NEXT:    v_lshl_b32_e32 v5, 0xffff, v412245; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v212246; GFX6-NEXT:    v_not_b32_e32 v5, v512247; GFX6-NEXT:    s_mov_b64 s[8:9], 012248; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v212249; GFX6-NEXT:  .LBB37_1: ; %atomicrmw.start12250; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=112251; GFX6-NEXT:    s_waitcnt vmcnt(0)12252; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v4, v312253; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v212254; GFX6-NEXT:    v_sub_f32_e32 v2, v2, v612255; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v212256; GFX6-NEXT:    s_waitcnt expcnt(0)12257; GFX6-NEXT:    v_and_b32_e32 v7, v3, v512258; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v4, v212259; GFX6-NEXT:    v_or_b32_e32 v2, v7, v212260; GFX6-NEXT:    v_mov_b32_e32 v8, v312261; GFX6-NEXT:    v_mov_b32_e32 v7, v212262; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc12263; GFX6-NEXT:    s_waitcnt vmcnt(0)12264; GFX6-NEXT:    buffer_wbinvl112265; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v312266; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]12267; GFX6-NEXT:    v_mov_b32_e32 v3, v712268; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]12269; GFX6-NEXT:    s_cbranch_execnz .LBB37_112270; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end12271; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]12272; GFX6-NEXT:    s_waitcnt expcnt(0)12273; GFX6-NEXT:    s_setpc_b64 s[30:31]12274  %gep = getelementptr bfloat, ptr addrspace(1) %ptr, i64 -102412275  %unused = atomicrmw fsub ptr addrspace(1) %gep, bfloat %val syncscope("agent") seq_cst12276  ret void12277}12278 12279define bfloat @global_agent_atomic_fsub_ret_bf16__offset12b_pos__align4(ptr addrspace(1) %ptr, bfloat %val) #0 {12280; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos__align4:12281; GFX12-TRUE16:       ; %bb.0:12282; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012283; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x012284; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x012285; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x012286; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x012287; GFX12-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204612288; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 012289; GFX12-TRUE16-NEXT:  .LBB38_1: ; %atomicrmw.start12290; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=112291; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x012292; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v312293; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.l, 012294; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v2.l12295; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)12296; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v412297; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v312298; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v3.l12299; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)12300; GFX12-TRUE16-NEXT:    v_bfe_u32 v6, v5, 16, 112301; GFX12-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v512302; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v512303; GFX12-TRUE16-NEXT:    v_add3_u32 v6, v6, v5, 0x7fff12304; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)12305; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12306; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v6, v7, vcc_lo12307; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v5.h12308; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12309; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v312310; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x012311; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV12312; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x012313; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV12314; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412315; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12316; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s012317; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12318; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012319; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB38_112320; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end12321; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012322; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v3.l12323; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x012324; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]12325;12326; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos__align4:12327; GFX12-FAKE16:       ; %bb.0:12328; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x012329; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x012330; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x012331; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x012332; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x012333; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204612334; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v212335; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 012336; GFX12-FAKE16-NEXT:  .LBB38_1: ; %atomicrmw.start12337; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=112338; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x012339; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v312340; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12341; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v412342; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v212343; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)12344; GFX12-FAKE16-NEXT:    v_bfe_u32 v5, v3, 16, 112345; GFX12-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v312346; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v312347; GFX12-FAKE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff12348; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)12349; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12350; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo12351; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v312352; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12353; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v312354; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x012355; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV12356; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x012357; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV12358; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412359; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12360; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s012361; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12362; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012363; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB38_112364; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end12365; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012366; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v312367; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x012368; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]12369;12370; GFX942-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos__align4:12371; GFX942:       ; %bb.0:12372; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12373; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:204612374; GFX942-NEXT:    s_mov_b64 s[0:1], 012375; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v212376; GFX942-NEXT:    s_movk_i32 s2, 0x7fff12377; GFX942-NEXT:    s_mov_b32 s3, 0xffff000012378; GFX942-NEXT:  .LBB38_1: ; %atomicrmw.start12379; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=112380; GFX942-NEXT:    s_waitcnt vmcnt(0)12381; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v312382; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v412383; GFX942-NEXT:    v_bfe_u32 v5, v2, 16, 112384; GFX942-NEXT:    v_or_b32_e32 v6, 0x400000, v212385; GFX942-NEXT:    v_add3_u32 v5, v5, v2, s212386; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212387; GFX942-NEXT:    s_nop 112388; GFX942-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc12389; GFX942-NEXT:    v_lshrrev_b32_e32 v2, 16, v212390; GFX942-NEXT:    v_and_or_b32 v2, v3, s3, v212391; GFX942-NEXT:    buffer_wbl2 sc112392; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2046 sc012393; GFX942-NEXT:    s_waitcnt vmcnt(0)12394; GFX942-NEXT:    buffer_inv sc112395; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312396; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]12397; GFX942-NEXT:    v_mov_b32_e32 v3, v212398; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]12399; GFX942-NEXT:    s_cbranch_execnz .LBB38_112400; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end12401; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]12402; GFX942-NEXT:    v_mov_b32_e32 v0, v212403; GFX942-NEXT:    s_setpc_b64 s[30:31]12404;12405; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos__align4:12406; GFX11-TRUE16:       ; %bb.0:12407; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12408; GFX11-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204612409; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 012410; GFX11-TRUE16-NEXT:    .p2align 612411; GFX11-TRUE16-NEXT:  .LBB38_1: ; %atomicrmw.start12412; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=112413; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)12414; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v312415; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, 012416; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v2.l12417; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)12418; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v412419; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v312420; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v3.l12421; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)12422; GFX11-TRUE16-NEXT:    v_bfe_u32 v6, v5, 16, 112423; GFX11-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v512424; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v512425; GFX11-TRUE16-NEXT:    v_add3_u32 v6, v6, v5, 0x7fff12426; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12427; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v6, v7, vcc_lo12428; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v5.h12429; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12430; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v312431; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x012432; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 glc12433; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)12434; GFX11-TRUE16-NEXT:    buffer_gl1_inv12435; GFX11-TRUE16-NEXT:    buffer_gl0_inv12436; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412437; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s012438; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12439; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012440; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB38_112441; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end12442; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012443; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v3.l12444; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]12445;12446; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos__align4:12447; GFX11-FAKE16:       ; %bb.0:12448; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12449; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204612450; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v212451; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 012452; GFX11-FAKE16-NEXT:    .p2align 612453; GFX11-FAKE16-NEXT:  .LBB38_1: ; %atomicrmw.start12454; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=112455; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)12456; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v312457; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12458; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v412459; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v212460; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)12461; GFX11-FAKE16-NEXT:    v_bfe_u32 v5, v3, 16, 112462; GFX11-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v312463; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v312464; GFX11-FAKE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff12465; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12466; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo12467; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v312468; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12469; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v312470; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x012471; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 glc12472; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)12473; GFX11-FAKE16-NEXT:    buffer_gl1_inv12474; GFX11-FAKE16-NEXT:    buffer_gl0_inv12475; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412476; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s012477; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12478; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012479; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB38_112480; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end12481; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012482; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v312483; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]12484;12485; GFX10-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos__align4:12486; GFX10:       ; %bb.0:12487; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12488; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:204612489; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v212490; GFX10-NEXT:    s_mov_b32 s4, 012491; GFX10-NEXT:  .LBB38_1: ; %atomicrmw.start12492; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=112493; GFX10-NEXT:    s_waitcnt vmcnt(0)12494; GFX10-NEXT:    v_mov_b32_e32 v4, v312495; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 16, v412496; GFX10-NEXT:    v_sub_f32_e32 v3, v3, v212497; GFX10-NEXT:    v_bfe_u32 v5, v3, 16, 112498; GFX10-NEXT:    v_or_b32_e32 v6, 0x400000, v312499; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v312500; GFX10-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff12501; GFX10-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo12502; GFX10-NEXT:    v_lshrrev_b32_e32 v3, 16, v312503; GFX10-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v312504; GFX10-NEXT:    s_waitcnt_vscnt null, 0x012505; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2046 glc12506; GFX10-NEXT:    s_waitcnt vmcnt(0)12507; GFX10-NEXT:    buffer_gl1_inv12508; GFX10-NEXT:    buffer_gl0_inv12509; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412510; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s412511; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s412512; GFX10-NEXT:    s_cbranch_execnz .LBB38_112513; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end12514; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s412515; GFX10-NEXT:    v_mov_b32_e32 v0, v312516; GFX10-NEXT:    s_setpc_b64 s[30:31]12517;12518; GFX90A-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos__align4:12519; GFX90A:       ; %bb.0:12520; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12521; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:204612522; GFX90A-NEXT:    s_mov_b64 s[4:5], 012523; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v212524; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff12525; GFX90A-NEXT:    s_mov_b32 s7, 0xffff000012526; GFX90A-NEXT:  .LBB38_1: ; %atomicrmw.start12527; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=112528; GFX90A-NEXT:    s_waitcnt vmcnt(0)12529; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v312530; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v412531; GFX90A-NEXT:    v_bfe_u32 v5, v2, 16, 112532; GFX90A-NEXT:    v_or_b32_e32 v6, 0x400000, v212533; GFX90A-NEXT:    v_add3_u32 v5, v5, v2, s612534; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212535; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc12536; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, 16, v212537; GFX90A-NEXT:    v_and_or_b32 v2, v3, s7, v212538; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2046 glc12539; GFX90A-NEXT:    s_waitcnt vmcnt(0)12540; GFX90A-NEXT:    buffer_wbinvl112541; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312542; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12543; GFX90A-NEXT:    v_mov_b32_e32 v3, v212544; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]12545; GFX90A-NEXT:    s_cbranch_execnz .LBB38_112546; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end12547; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]12548; GFX90A-NEXT:    v_mov_b32_e32 v0, v212549; GFX90A-NEXT:    s_setpc_b64 s[30:31]12550;12551; GFX908-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos__align4:12552; GFX908:       ; %bb.0:12553; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12554; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:204612555; GFX908-NEXT:    s_mov_b64 s[4:5], 012556; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v212557; GFX908-NEXT:    s_movk_i32 s6, 0x7fff12558; GFX908-NEXT:    s_mov_b32 s7, 0xffff000012559; GFX908-NEXT:  .LBB38_1: ; %atomicrmw.start12560; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=112561; GFX908-NEXT:    s_waitcnt vmcnt(0)12562; GFX908-NEXT:    v_mov_b32_e32 v4, v312563; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v412564; GFX908-NEXT:    v_sub_f32_e32 v3, v3, v212565; GFX908-NEXT:    v_bfe_u32 v5, v3, 16, 112566; GFX908-NEXT:    v_or_b32_e32 v6, 0x400000, v312567; GFX908-NEXT:    v_add3_u32 v5, v5, v3, s612568; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v3, v312569; GFX908-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc12570; GFX908-NEXT:    v_lshrrev_b32_e32 v3, 16, v312571; GFX908-NEXT:    v_and_or_b32 v3, v4, s7, v312572; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2046 glc12573; GFX908-NEXT:    s_waitcnt vmcnt(0)12574; GFX908-NEXT:    buffer_wbinvl112575; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v412576; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12577; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]12578; GFX908-NEXT:    s_cbranch_execnz .LBB38_112579; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end12580; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]12581; GFX908-NEXT:    v_mov_b32_e32 v0, v312582; GFX908-NEXT:    s_setpc_b64 s[30:31]12583;12584; GFX8-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos__align4:12585; GFX8:       ; %bb.0:12586; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12587; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v012588; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc12589; GFX8-NEXT:    flat_load_dword v0, v[3:4]12590; GFX8-NEXT:    s_mov_b64 s[4:5], 012591; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 16, v212592; GFX8-NEXT:  .LBB38_1: ; %atomicrmw.start12593; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=112594; GFX8-NEXT:    s_waitcnt vmcnt(0)12595; GFX8-NEXT:    v_mov_b32_e32 v6, v012596; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 16, v612597; GFX8-NEXT:    v_sub_f32_e32 v0, v0, v112598; GFX8-NEXT:    v_bfe_u32 v5, v0, 16, 112599; GFX8-NEXT:    v_add_u32_e32 v5, vcc, v5, v012600; GFX8-NEXT:    v_add_u32_e32 v5, vcc, 0x7fff, v512601; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v012602; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v0, v012603; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v612604; GFX8-NEXT:    v_cndmask_b32_e32 v0, v5, v7, vcc12605; GFX8-NEXT:    v_or_b32_sdwa v5, v2, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112606; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc12607; GFX8-NEXT:    s_waitcnt vmcnt(0)12608; GFX8-NEXT:    buffer_wbinvl112609; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v612610; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12611; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]12612; GFX8-NEXT:    s_cbranch_execnz .LBB38_112613; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end12614; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]12615; GFX8-NEXT:    s_setpc_b64 s[30:31]12616;12617; GFX7-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos__align4:12618; GFX7:       ; %bb.0:12619; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12620; GFX7-NEXT:    s_mov_b32 s6, 012621; GFX7-NEXT:    s_mov_b32 s7, 0xf00012622; GFX7-NEXT:    s_mov_b32 s4, s612623; GFX7-NEXT:    s_mov_b32 s5, s612624; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:204612625; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v212626; GFX7-NEXT:    s_mov_b64 s[8:9], 012627; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v212628; GFX7-NEXT:  .LBB38_1: ; %atomicrmw.start12629; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=112630; GFX7-NEXT:    s_waitcnt vmcnt(0)12631; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v312632; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v612633; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v312634; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v212635; GFX7-NEXT:    v_or_b32_e32 v2, v4, v212636; GFX7-NEXT:    v_mov_b32_e32 v5, v312637; GFX7-NEXT:    v_mov_b32_e32 v4, v212638; GFX7-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 offset:2046 glc12639; GFX7-NEXT:    s_waitcnt vmcnt(0)12640; GFX7-NEXT:    buffer_wbinvl112641; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v312642; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]12643; GFX7-NEXT:    v_mov_b32_e32 v3, v412644; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]12645; GFX7-NEXT:    s_cbranch_execnz .LBB38_112646; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end12647; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]12648; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v412649; GFX7-NEXT:    s_setpc_b64 s[30:31]12650;12651; GFX6-LABEL: global_agent_atomic_fsub_ret_bf16__offset12b_pos__align4:12652; GFX6:       ; %bb.0:12653; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12654; GFX6-NEXT:    s_mov_b32 s6, 012655; GFX6-NEXT:    s_mov_b32 s7, 0xf00012656; GFX6-NEXT:    s_mov_b32 s4, s612657; GFX6-NEXT:    s_mov_b32 s5, s612658; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:204612659; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v212660; GFX6-NEXT:    s_mov_b64 s[8:9], 012661; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v212662; GFX6-NEXT:  .LBB38_1: ; %atomicrmw.start12663; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=112664; GFX6-NEXT:    s_waitcnt vmcnt(0)12665; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v312666; GFX6-NEXT:    v_sub_f32_e32 v2, v2, v612667; GFX6-NEXT:    s_waitcnt expcnt(0)12668; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v312669; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v212670; GFX6-NEXT:    v_or_b32_e32 v2, v4, v212671; GFX6-NEXT:    v_mov_b32_e32 v5, v312672; GFX6-NEXT:    v_mov_b32_e32 v4, v212673; GFX6-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 offset:2046 glc12674; GFX6-NEXT:    s_waitcnt vmcnt(0)12675; GFX6-NEXT:    buffer_wbinvl112676; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v312677; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]12678; GFX6-NEXT:    v_mov_b32_e32 v3, v412679; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]12680; GFX6-NEXT:    s_cbranch_execnz .LBB38_112681; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end12682; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]12683; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v412684; GFX6-NEXT:    s_waitcnt expcnt(0)12685; GFX6-NEXT:    s_setpc_b64 s[30:31]12686  %gep = getelementptr bfloat, ptr addrspace(1) %ptr, i64 102312687  %result = atomicrmw fsub ptr addrspace(1) %gep, bfloat %val syncscope("agent") seq_cst, align 412688  ret bfloat %result12689}12690 12691define void @global_agent_atomic_fsub_noret_bf16__offset12b__align4_pos(ptr addrspace(1) %ptr, bfloat %val) #0 {12692; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b__align4_pos:12693; GFX12-TRUE16:       ; %bb.0:12694; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012695; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x012696; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x012697; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x012698; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x012699; GFX12-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off offset:204612700; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 012701; GFX12-TRUE16-NEXT:  .LBB39_1: ; %atomicrmw.start12702; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=112703; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.l, 012704; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v2.l12705; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x012706; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v412707; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)12708; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v312709; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v3.l12710; GFX12-TRUE16-NEXT:    v_bfe_u32 v6, v5, 16, 112711; GFX12-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v512712; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v512713; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)12714; GFX12-TRUE16-NEXT:    v_add3_u32 v6, v6, v5, 0x7fff12715; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)12716; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v6, v7, vcc_lo12717; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12718; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v5.h12719; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v312720; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x012721; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV12722; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x012723; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV12724; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412725; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v312726; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12727; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s012728; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12729; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012730; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB39_112731; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end12732; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012733; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x012734; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]12735;12736; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b__align4_pos:12737; GFX12-FAKE16:       ; %bb.0:12738; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x012739; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x012740; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x012741; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x012742; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x012743; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204612744; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v212745; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 012746; GFX12-FAKE16-NEXT:  .LBB39_1: ; %atomicrmw.start12747; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=112748; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x012749; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v312750; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12751; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v412752; GFX12-FAKE16-NEXT:    v_bfe_u32 v5, v2, 16, 112753; GFX12-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v212754; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v212755; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)12756; GFX12-FAKE16-NEXT:    v_add3_u32 v5, v5, v2, 0x7fff12757; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)12758; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc_lo12759; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12760; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v212761; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v3, v212762; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x012763; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV12764; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x012765; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV12766; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v312767; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v212768; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12769; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s012770; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12771; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012772; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB39_112773; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end12774; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012775; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x012776; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]12777;12778; GFX942-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b__align4_pos:12779; GFX942:       ; %bb.0:12780; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12781; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:204612782; GFX942-NEXT:    s_mov_b64 s[0:1], 012783; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v212784; GFX942-NEXT:    s_movk_i32 s2, 0x7fff12785; GFX942-NEXT:    s_mov_b32 s3, 0xffff000012786; GFX942-NEXT:  .LBB39_1: ; %atomicrmw.start12787; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=112788; GFX942-NEXT:    s_waitcnt vmcnt(0)12789; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v312790; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v412791; GFX942-NEXT:    v_bfe_u32 v5, v2, 16, 112792; GFX942-NEXT:    v_or_b32_e32 v6, 0x400000, v212793; GFX942-NEXT:    v_add3_u32 v5, v5, v2, s212794; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212795; GFX942-NEXT:    s_nop 112796; GFX942-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc12797; GFX942-NEXT:    v_lshrrev_b32_e32 v2, 16, v212798; GFX942-NEXT:    v_and_or_b32 v2, v3, s3, v212799; GFX942-NEXT:    buffer_wbl2 sc112800; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2046 sc012801; GFX942-NEXT:    s_waitcnt vmcnt(0)12802; GFX942-NEXT:    buffer_inv sc112803; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312804; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]12805; GFX942-NEXT:    v_mov_b32_e32 v3, v212806; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]12807; GFX942-NEXT:    s_cbranch_execnz .LBB39_112808; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end12809; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]12810; GFX942-NEXT:    s_setpc_b64 s[30:31]12811;12812; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b__align4_pos:12813; GFX11-TRUE16:       ; %bb.0:12814; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12815; GFX11-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off offset:204612816; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 012817; GFX11-TRUE16-NEXT:    .p2align 612818; GFX11-TRUE16-NEXT:  .LBB39_1: ; %atomicrmw.start12819; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=112820; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, 012821; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v2.l12822; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)12823; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v412824; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)12825; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v312826; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v3.l12827; GFX11-TRUE16-NEXT:    v_bfe_u32 v6, v5, 16, 112828; GFX11-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v512829; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v512830; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)12831; GFX11-TRUE16-NEXT:    v_add3_u32 v6, v6, v5, 0x7fff12832; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v6, v7, vcc_lo12833; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12834; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v5.h12835; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v312836; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x012837; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 glc12838; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)12839; GFX11-TRUE16-NEXT:    buffer_gl1_inv12840; GFX11-TRUE16-NEXT:    buffer_gl0_inv12841; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412842; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v312843; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s012844; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12845; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012846; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB39_112847; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end12848; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012849; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]12850;12851; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b__align4_pos:12852; GFX11-FAKE16:       ; %bb.0:12853; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12854; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204612855; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v212856; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 012857; GFX11-FAKE16-NEXT:    .p2align 612858; GFX11-FAKE16-NEXT:  .LBB39_1: ; %atomicrmw.start12859; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=112860; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)12861; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v312862; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12863; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v412864; GFX11-FAKE16-NEXT:    v_bfe_u32 v5, v2, 16, 112865; GFX11-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v212866; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v212867; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)12868; GFX11-FAKE16-NEXT:    v_add3_u32 v5, v5, v2, 0x7fff12869; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc_lo12870; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12871; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v212872; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v3, v212873; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x012874; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2046 glc12875; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)12876; GFX11-FAKE16-NEXT:    buffer_gl1_inv12877; GFX11-FAKE16-NEXT:    buffer_gl0_inv12878; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v312879; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v212880; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s012881; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12882; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012883; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB39_112884; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end12885; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012886; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]12887;12888; GFX10-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b__align4_pos:12889; GFX10:       ; %bb.0:12890; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12891; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:204612892; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v212893; GFX10-NEXT:    s_mov_b32 s4, 012894; GFX10-NEXT:  .LBB39_1: ; %atomicrmw.start12895; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=112896; GFX10-NEXT:    s_waitcnt vmcnt(0)12897; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v312898; GFX10-NEXT:    v_sub_f32_e32 v2, v2, v412899; GFX10-NEXT:    v_bfe_u32 v5, v2, 16, 112900; GFX10-NEXT:    v_or_b32_e32 v6, 0x400000, v212901; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v212902; GFX10-NEXT:    v_add3_u32 v5, v5, v2, 0x7fff12903; GFX10-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc_lo12904; GFX10-NEXT:    v_lshrrev_b32_e32 v2, 16, v212905; GFX10-NEXT:    v_and_or_b32 v2, 0xffff0000, v3, v212906; GFX10-NEXT:    s_waitcnt_vscnt null, 0x012907; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2046 glc12908; GFX10-NEXT:    s_waitcnt vmcnt(0)12909; GFX10-NEXT:    buffer_gl1_inv12910; GFX10-NEXT:    buffer_gl0_inv12911; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v312912; GFX10-NEXT:    v_mov_b32_e32 v3, v212913; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s412914; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s412915; GFX10-NEXT:    s_cbranch_execnz .LBB39_112916; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end12917; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s412918; GFX10-NEXT:    s_setpc_b64 s[30:31]12919;12920; GFX90A-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b__align4_pos:12921; GFX90A:       ; %bb.0:12922; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12923; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:204612924; GFX90A-NEXT:    s_mov_b64 s[4:5], 012925; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v212926; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff12927; GFX90A-NEXT:    s_mov_b32 s7, 0xffff000012928; GFX90A-NEXT:  .LBB39_1: ; %atomicrmw.start12929; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=112930; GFX90A-NEXT:    s_waitcnt vmcnt(0)12931; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v312932; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v412933; GFX90A-NEXT:    v_bfe_u32 v5, v2, 16, 112934; GFX90A-NEXT:    v_or_b32_e32 v6, 0x400000, v212935; GFX90A-NEXT:    v_add3_u32 v5, v5, v2, s612936; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212937; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc12938; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, 16, v212939; GFX90A-NEXT:    v_and_or_b32 v2, v3, s7, v212940; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2046 glc12941; GFX90A-NEXT:    s_waitcnt vmcnt(0)12942; GFX90A-NEXT:    buffer_wbinvl112943; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312944; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12945; GFX90A-NEXT:    v_mov_b32_e32 v3, v212946; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]12947; GFX90A-NEXT:    s_cbranch_execnz .LBB39_112948; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end12949; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]12950; GFX90A-NEXT:    s_setpc_b64 s[30:31]12951;12952; GFX908-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b__align4_pos:12953; GFX908:       ; %bb.0:12954; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12955; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:204612956; GFX908-NEXT:    s_mov_b64 s[4:5], 012957; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v212958; GFX908-NEXT:    s_movk_i32 s6, 0x7fff12959; GFX908-NEXT:    s_mov_b32 s7, 0xffff000012960; GFX908-NEXT:  .LBB39_1: ; %atomicrmw.start12961; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=112962; GFX908-NEXT:    s_waitcnt vmcnt(0)12963; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v312964; GFX908-NEXT:    v_sub_f32_e32 v2, v2, v412965; GFX908-NEXT:    v_bfe_u32 v5, v2, 16, 112966; GFX908-NEXT:    v_or_b32_e32 v6, 0x400000, v212967; GFX908-NEXT:    v_add3_u32 v5, v5, v2, s612968; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212969; GFX908-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc12970; GFX908-NEXT:    v_lshrrev_b32_e32 v2, 16, v212971; GFX908-NEXT:    v_and_or_b32 v2, v3, s7, v212972; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2046 glc12973; GFX908-NEXT:    s_waitcnt vmcnt(0)12974; GFX908-NEXT:    buffer_wbinvl112975; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312976; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12977; GFX908-NEXT:    v_mov_b32_e32 v3, v212978; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]12979; GFX908-NEXT:    s_cbranch_execnz .LBB39_112980; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end12981; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]12982; GFX908-NEXT:    s_setpc_b64 s[30:31]12983;12984; GFX8-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b__align4_pos:12985; GFX8:       ; %bb.0:12986; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12987; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fe, v012988; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc12989; GFX8-NEXT:    flat_load_dword v3, v[0:1]12990; GFX8-NEXT:    s_mov_b64 s[4:5], 012991; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v212992; GFX8-NEXT:  .LBB39_1: ; %atomicrmw.start12993; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=112994; GFX8-NEXT:    s_waitcnt vmcnt(0)12995; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v312996; GFX8-NEXT:    v_sub_f32_e32 v2, v2, v412997; GFX8-NEXT:    v_bfe_u32 v6, v2, 16, 112998; GFX8-NEXT:    v_add_u32_e32 v6, vcc, v6, v212999; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0x7fff, v613000; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v213001; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213002; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v313003; GFX8-NEXT:    v_cndmask_b32_e32 v2, v6, v7, vcc13004; GFX8-NEXT:    v_or_b32_sdwa v2, v5, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113005; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc13006; GFX8-NEXT:    s_waitcnt vmcnt(0)13007; GFX8-NEXT:    buffer_wbinvl113008; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313009; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13010; GFX8-NEXT:    v_mov_b32_e32 v3, v213011; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]13012; GFX8-NEXT:    s_cbranch_execnz .LBB39_113013; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end13014; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]13015; GFX8-NEXT:    s_setpc_b64 s[30:31]13016;13017; GFX7-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b__align4_pos:13018; GFX7:       ; %bb.0:13019; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13020; GFX7-NEXT:    s_mov_b32 s6, 013021; GFX7-NEXT:    s_mov_b32 s7, 0xf00013022; GFX7-NEXT:    s_mov_b32 s4, s613023; GFX7-NEXT:    s_mov_b32 s5, s613024; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:204613025; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v213026; GFX7-NEXT:    s_mov_b64 s[8:9], 013027; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v213028; GFX7-NEXT:  .LBB39_1: ; %atomicrmw.start13029; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=113030; GFX7-NEXT:    s_waitcnt vmcnt(0)13031; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v313032; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v413033; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v313034; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v213035; GFX7-NEXT:    v_or_b32_e32 v2, v5, v213036; GFX7-NEXT:    v_mov_b32_e32 v6, v313037; GFX7-NEXT:    v_mov_b32_e32 v5, v213038; GFX7-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 offset:2046 glc13039; GFX7-NEXT:    s_waitcnt vmcnt(0)13040; GFX7-NEXT:    buffer_wbinvl113041; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v313042; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]13043; GFX7-NEXT:    v_mov_b32_e32 v3, v513044; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]13045; GFX7-NEXT:    s_cbranch_execnz .LBB39_113046; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end13047; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]13048; GFX7-NEXT:    s_setpc_b64 s[30:31]13049;13050; GFX6-LABEL: global_agent_atomic_fsub_noret_bf16__offset12b__align4_pos:13051; GFX6:       ; %bb.0:13052; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13053; GFX6-NEXT:    s_mov_b32 s6, 013054; GFX6-NEXT:    s_mov_b32 s7, 0xf00013055; GFX6-NEXT:    s_mov_b32 s4, s613056; GFX6-NEXT:    s_mov_b32 s5, s613057; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:204613058; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v213059; GFX6-NEXT:    s_mov_b64 s[8:9], 013060; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v213061; GFX6-NEXT:  .LBB39_1: ; %atomicrmw.start13062; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=113063; GFX6-NEXT:    s_waitcnt vmcnt(0)13064; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v313065; GFX6-NEXT:    v_sub_f32_e32 v2, v2, v413066; GFX6-NEXT:    s_waitcnt expcnt(0)13067; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v313068; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v213069; GFX6-NEXT:    v_or_b32_e32 v2, v5, v213070; GFX6-NEXT:    v_mov_b32_e32 v6, v313071; GFX6-NEXT:    v_mov_b32_e32 v5, v213072; GFX6-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 offset:2046 glc13073; GFX6-NEXT:    s_waitcnt vmcnt(0)13074; GFX6-NEXT:    buffer_wbinvl113075; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v313076; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]13077; GFX6-NEXT:    v_mov_b32_e32 v3, v513078; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]13079; GFX6-NEXT:    s_cbranch_execnz .LBB39_113080; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end13081; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]13082; GFX6-NEXT:    s_waitcnt expcnt(0)13083; GFX6-NEXT:    s_setpc_b64 s[30:31]13084  %gep = getelementptr bfloat, ptr addrspace(1) %ptr, i64 102313085  %unused = atomicrmw fsub ptr addrspace(1) %gep, bfloat %val syncscope("agent") seq_cst, align 413086  ret void13087}13088 13089define bfloat @global_system_atomic_fsub_ret_bf16__offset12b_pos(ptr addrspace(1) %ptr, bfloat %val) #0 {13090; GFX12-TRUE16-LABEL: global_system_atomic_fsub_ret_bf16__offset12b_pos:13091; GFX12-TRUE16:       ; %bb.0:13092; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x013093; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x013094; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x013095; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x013096; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x013097; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v013098; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)13099; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13100; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 013101; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v313102; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v313103; GFX12-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off13104; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v313105; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13106; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff13107; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v413108; GFX12-TRUE16-NEXT:  .LBB40_1: ; %atomicrmw.start13109; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=113110; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x013111; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v513112; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 013113; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l13114; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)13115; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v613116; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v513117; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)13118; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v713119; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l13120; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 113121; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v513122; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v513123; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)13124; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff13125; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)13126; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo13127; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13128; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h13129; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v713130; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13131; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v513132; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS13133; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x013134; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_SYS13135; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x013136; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS13137; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v613138; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13139; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s013140; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13141; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013142; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB40_113143; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end13144; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013145; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v513146; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x013147; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]13148;13149; GFX12-FAKE16-LABEL: global_system_atomic_fsub_ret_bf16__offset12b_pos:13150; GFX12-FAKE16:       ; %bb.0:13151; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x013152; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x013153; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x013154; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x013155; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x013156; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v013157; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)13158; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13159; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v213160; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)13161; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v313162; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v313163; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 013164; GFX12-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off13165; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v313166; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff13167; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13168; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v413169; GFX12-FAKE16-NEXT:  .LBB40_1: ; %atomicrmw.start13170; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=113171; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x013172; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v513173; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13174; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v613175; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v513176; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13177; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v213178; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 113179; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v513180; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v513181; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)13182; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff13183; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)13184; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo13185; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13186; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v513187; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v513188; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13189; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v513190; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS13191; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x013192; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_SYS13193; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x013194; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS13195; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v613196; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13197; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s013198; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13199; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013200; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB40_113201; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end13202; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013203; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v513204; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x013205; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]13206;13207; GFX942-LABEL: global_system_atomic_fsub_ret_bf16__offset12b_pos:13208; GFX942:       ; %bb.0:13209; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13210; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe13211; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]13212; GFX942-NEXT:    v_and_b32_e32 v0, -4, v413213; GFX942-NEXT:    v_mov_b32_e32 v1, v513214; GFX942-NEXT:    global_load_dword v3, v[0:1], off13215; GFX942-NEXT:    v_and_b32_e32 v4, 3, v413216; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v413217; GFX942-NEXT:    s_mov_b32 s0, 0xffff13218; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s013219; GFX942-NEXT:    v_not_b32_e32 v5, v513220; GFX942-NEXT:    s_mov_b64 s[0:1], 013221; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v213222; GFX942-NEXT:    s_movk_i32 s2, 0x7fff13223; GFX942-NEXT:  .LBB40_1: ; %atomicrmw.start13224; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=113225; GFX942-NEXT:    s_waitcnt vmcnt(0)13226; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13227; GFX942-NEXT:    s_nop 013228; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v613229; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 113230; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v213231; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s213232; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213233; GFX942-NEXT:    s_nop 113234; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc13235; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113236; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v213237; GFX942-NEXT:    buffer_wbl2 sc0 sc113238; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc0 sc113239; GFX942-NEXT:    s_waitcnt vmcnt(0)13240; GFX942-NEXT:    buffer_inv sc0 sc113241; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313242; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]13243; GFX942-NEXT:    v_mov_b32_e32 v3, v213244; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]13245; GFX942-NEXT:    s_cbranch_execnz .LBB40_113246; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end13247; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]13248; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v4, v213249; GFX942-NEXT:    s_setpc_b64 s[30:31]13250;13251; GFX11-TRUE16-LABEL: global_system_atomic_fsub_ret_bf16__offset12b_pos:13252; GFX11-TRUE16:       ; %bb.0:13253; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13254; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v013255; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13256; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13257; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 013258; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v313259; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v313260; GFX11-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off13261; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v313262; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13263; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff13264; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v413265; GFX11-TRUE16-NEXT:    .p2align 613266; GFX11-TRUE16-NEXT:  .LBB40_1: ; %atomicrmw.start13267; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=113268; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)13269; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v513270; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 013271; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l13272; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)13273; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v613274; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v513275; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)13276; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v713277; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l13278; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 113279; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v513280; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v513281; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)13282; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff13283; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo13284; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13285; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h13286; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v713287; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13288; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v513289; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x013290; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc13291; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)13292; GFX11-TRUE16-NEXT:    buffer_gl1_inv13293; GFX11-TRUE16-NEXT:    buffer_gl0_inv13294; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v613295; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s013296; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)13297; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013298; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB40_113299; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end13300; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013301; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v513302; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]13303;13304; GFX11-FAKE16-LABEL: global_system_atomic_fsub_ret_bf16__offset12b_pos:13305; GFX11-FAKE16:       ; %bb.0:13306; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13307; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v013308; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)13309; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13310; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v213311; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v313312; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v313313; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 013314; GFX11-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off13315; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v313316; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13317; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff13318; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v413319; GFX11-FAKE16-NEXT:    .p2align 613320; GFX11-FAKE16-NEXT:  .LBB40_1: ; %atomicrmw.start13321; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=113322; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)13323; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v513324; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13325; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v613326; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v513327; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13328; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v213329; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 113330; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v513331; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v513332; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)13333; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff13334; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo13335; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13336; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v513337; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v513338; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13339; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v513340; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x013341; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc13342; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)13343; GFX11-FAKE16-NEXT:    buffer_gl1_inv13344; GFX11-FAKE16-NEXT:    buffer_gl0_inv13345; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v613346; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s013347; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)13348; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013349; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB40_113350; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end13351; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013352; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v513353; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]13354;13355; GFX10-LABEL: global_system_atomic_fsub_ret_bf16__offset12b_pos:13356; GFX10:       ; %bb.0:13357; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13358; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v013359; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo13360; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v213361; GFX10-NEXT:    v_and_b32_e32 v0, -4, v313362; GFX10-NEXT:    v_and_b32_e32 v3, 3, v313363; GFX10-NEXT:    s_mov_b32 s4, 013364; GFX10-NEXT:    global_load_dword v5, v[0:1], off13365; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v313366; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff13367; GFX10-NEXT:    v_not_b32_e32 v4, v413368; GFX10-NEXT:  .LBB40_1: ; %atomicrmw.start13369; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=113370; GFX10-NEXT:    s_waitcnt vmcnt(0)13371; GFX10-NEXT:    v_mov_b32_e32 v6, v513372; GFX10-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13373; GFX10-NEXT:    v_sub_f32_e32 v5, v5, v213374; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 113375; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v513376; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v513377; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff13378; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo13379; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113380; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v513381; GFX10-NEXT:    s_waitcnt_vscnt null, 0x013382; GFX10-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc13383; GFX10-NEXT:    s_waitcnt vmcnt(0)13384; GFX10-NEXT:    buffer_gl1_inv13385; GFX10-NEXT:    buffer_gl0_inv13386; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v613387; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s413388; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s413389; GFX10-NEXT:    s_cbranch_execnz .LBB40_113390; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end13391; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s413392; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v513393; GFX10-NEXT:    s_setpc_b64 s[30:31]13394;13395; GFX90A-LABEL: global_system_atomic_fsub_ret_bf16__offset12b_pos:13396; GFX90A:       ; %bb.0:13397; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13398; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v013399; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc13400; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v413401; GFX90A-NEXT:    global_load_dword v3, v[0:1], off13402; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v413403; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v413404; GFX90A-NEXT:    s_mov_b32 s4, 0xffff13405; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s413406; GFX90A-NEXT:    v_not_b32_e32 v5, v513407; GFX90A-NEXT:    s_mov_b64 s[4:5], 013408; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v213409; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff13410; GFX90A-NEXT:  .LBB40_1: ; %atomicrmw.start13411; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=113412; GFX90A-NEXT:    s_waitcnt vmcnt(0)13413; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13414; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v613415; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 113416; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v213417; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s613418; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213419; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc13420; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113421; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v213422; GFX90A-NEXT:    buffer_wbl213423; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc13424; GFX90A-NEXT:    s_waitcnt vmcnt(0)13425; GFX90A-NEXT:    buffer_invl213426; GFX90A-NEXT:    buffer_wbinvl113427; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313428; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13429; GFX90A-NEXT:    v_mov_b32_e32 v3, v213430; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]13431; GFX90A-NEXT:    s_cbranch_execnz .LBB40_113432; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end13433; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]13434; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v4, v213435; GFX90A-NEXT:    s_setpc_b64 s[30:31]13436;13437; GFX908-LABEL: global_system_atomic_fsub_ret_bf16__offset12b_pos:13438; GFX908:       ; %bb.0:13439; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13440; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v013441; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc13442; GFX908-NEXT:    v_and_b32_e32 v0, -4, v313443; GFX908-NEXT:    global_load_dword v5, v[0:1], off13444; GFX908-NEXT:    v_and_b32_e32 v3, 3, v313445; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v313446; GFX908-NEXT:    s_mov_b32 s4, 0xffff13447; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s413448; GFX908-NEXT:    v_not_b32_e32 v4, v413449; GFX908-NEXT:    s_mov_b64 s[4:5], 013450; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v213451; GFX908-NEXT:    s_movk_i32 s6, 0x7fff13452; GFX908-NEXT:  .LBB40_1: ; %atomicrmw.start13453; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=113454; GFX908-NEXT:    s_waitcnt vmcnt(0)13455; GFX908-NEXT:    v_mov_b32_e32 v6, v513456; GFX908-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13457; GFX908-NEXT:    v_sub_f32_e32 v5, v5, v213458; GFX908-NEXT:    v_bfe_u32 v7, v5, 16, 113459; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v513460; GFX908-NEXT:    v_add3_u32 v7, v7, v5, s613461; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v513462; GFX908-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc13463; GFX908-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113464; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v513465; GFX908-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc13466; GFX908-NEXT:    s_waitcnt vmcnt(0)13467; GFX908-NEXT:    buffer_wbinvl113468; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v613469; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13470; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]13471; GFX908-NEXT:    s_cbranch_execnz .LBB40_113472; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end13473; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]13474; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v513475; GFX908-NEXT:    s_setpc_b64 s[30:31]13476;13477; GFX8-LABEL: global_system_atomic_fsub_ret_bf16__offset12b_pos:13478; GFX8:       ; %bb.0:13479; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13480; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v013481; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc13482; GFX8-NEXT:    v_and_b32_e32 v0, -4, v313483; GFX8-NEXT:    flat_load_dword v5, v[0:1]13484; GFX8-NEXT:    v_and_b32_e32 v3, 3, v313485; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v313486; GFX8-NEXT:    s_mov_b32 s4, 0xffff13487; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s413488; GFX8-NEXT:    v_not_b32_e32 v4, v413489; GFX8-NEXT:    s_mov_b64 s[4:5], 013490; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v213491; GFX8-NEXT:  .LBB40_1: ; %atomicrmw.start13492; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=113493; GFX8-NEXT:    s_waitcnt vmcnt(0)13494; GFX8-NEXT:    v_mov_b32_e32 v6, v513495; GFX8-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13496; GFX8-NEXT:    v_sub_f32_e32 v5, v5, v213497; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 113498; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v513499; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v813500; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v513501; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v513502; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc13503; GFX8-NEXT:    v_and_b32_e32 v7, v6, v413504; GFX8-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113505; GFX8-NEXT:    v_or_b32_e32 v5, v7, v513506; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc13507; GFX8-NEXT:    s_waitcnt vmcnt(0)13508; GFX8-NEXT:    buffer_wbinvl113509; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v613510; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13511; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]13512; GFX8-NEXT:    s_cbranch_execnz .LBB40_113513; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end13514; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]13515; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v513516; GFX8-NEXT:    s_setpc_b64 s[30:31]13517;13518; GFX7-LABEL: global_system_atomic_fsub_ret_bf16__offset12b_pos:13519; GFX7:       ; %bb.0:13520; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13521; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v013522; GFX7-NEXT:    s_mov_b32 s6, 013523; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc13524; GFX7-NEXT:    v_and_b32_e32 v0, -4, v413525; GFX7-NEXT:    s_mov_b32 s7, 0xf00013526; GFX7-NEXT:    s_mov_b32 s4, s613527; GFX7-NEXT:    s_mov_b32 s5, s613528; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6413529; GFX7-NEXT:    v_and_b32_e32 v4, 3, v413530; GFX7-NEXT:    v_lshlrev_b32_e32 v6, 3, v413531; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v613532; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v213533; GFX7-NEXT:    v_not_b32_e32 v7, v413534; GFX7-NEXT:    s_mov_b64 s[8:9], 013535; GFX7-NEXT:    v_and_b32_e32 v8, 0xffff0000, v213536; GFX7-NEXT:  .LBB40_1: ; %atomicrmw.start13537; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=113538; GFX7-NEXT:    s_waitcnt vmcnt(0)13539; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v6, v313540; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v213541; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v813542; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v213543; GFX7-NEXT:    v_and_b32_e32 v4, v3, v713544; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v6, v213545; GFX7-NEXT:    v_or_b32_e32 v2, v4, v213546; GFX7-NEXT:    v_mov_b32_e32 v5, v313547; GFX7-NEXT:    v_mov_b32_e32 v4, v213548; GFX7-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc13549; GFX7-NEXT:    s_waitcnt vmcnt(0)13550; GFX7-NEXT:    buffer_wbinvl113551; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v313552; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]13553; GFX7-NEXT:    v_mov_b32_e32 v3, v413554; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]13555; GFX7-NEXT:    s_cbranch_execnz .LBB40_113556; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end13557; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]13558; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v6, v413559; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v013560; GFX7-NEXT:    s_setpc_b64 s[30:31]13561;13562; GFX6-LABEL: global_system_atomic_fsub_ret_bf16__offset12b_pos:13563; GFX6:       ; %bb.0:13564; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13565; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v013566; GFX6-NEXT:    s_mov_b32 s6, 013567; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc13568; GFX6-NEXT:    v_and_b32_e32 v0, -4, v413569; GFX6-NEXT:    s_mov_b32 s7, 0xf00013570; GFX6-NEXT:    s_mov_b32 s4, s613571; GFX6-NEXT:    s_mov_b32 s5, s613572; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6413573; GFX6-NEXT:    v_and_b32_e32 v4, 3, v413574; GFX6-NEXT:    v_lshlrev_b32_e32 v6, 3, v413575; GFX6-NEXT:    v_lshl_b32_e32 v4, 0xffff, v613576; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v213577; GFX6-NEXT:    v_not_b32_e32 v7, v413578; GFX6-NEXT:    s_mov_b64 s[8:9], 013579; GFX6-NEXT:    v_and_b32_e32 v8, 0xffff0000, v213580; GFX6-NEXT:  .LBB40_1: ; %atomicrmw.start13581; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=113582; GFX6-NEXT:    s_waitcnt vmcnt(0)13583; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v6, v313584; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v213585; GFX6-NEXT:    v_sub_f32_e32 v2, v2, v813586; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v213587; GFX6-NEXT:    s_waitcnt expcnt(0)13588; GFX6-NEXT:    v_and_b32_e32 v4, v3, v713589; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v6, v213590; GFX6-NEXT:    v_or_b32_e32 v2, v4, v213591; GFX6-NEXT:    v_mov_b32_e32 v5, v313592; GFX6-NEXT:    v_mov_b32_e32 v4, v213593; GFX6-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc13594; GFX6-NEXT:    s_waitcnt vmcnt(0)13595; GFX6-NEXT:    buffer_wbinvl113596; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v313597; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]13598; GFX6-NEXT:    v_mov_b32_e32 v3, v413599; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]13600; GFX6-NEXT:    s_cbranch_execnz .LBB40_113601; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end13602; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]13603; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v6, v413604; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v013605; GFX6-NEXT:    s_waitcnt expcnt(0)13606; GFX6-NEXT:    s_setpc_b64 s[30:31]13607  %gep = getelementptr bfloat, ptr addrspace(1) %ptr, i64 102313608  %result = atomicrmw fsub ptr addrspace(1) %gep, bfloat %val seq_cst13609  ret bfloat %result13610}13611 13612define void @global_system_atomic_fsub_noret_bf16__offset12b_pos(ptr addrspace(1) %ptr, bfloat %val) #0 {13613; GFX12-TRUE16-LABEL: global_system_atomic_fsub_noret_bf16__offset12b_pos:13614; GFX12-TRUE16:       ; %bb.0:13615; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x013616; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x013617; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x013618; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x013619; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x013620; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v013621; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)13622; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13623; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 013624; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v313625; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v313626; GFX12-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off13627; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v313628; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13629; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff13630; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v313631; GFX12-TRUE16-NEXT:  .LBB41_1: ; %atomicrmw.start13632; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=113633; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x013634; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v413635; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 013636; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l13637; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)13638; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v313639; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v713640; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l13641; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)13642; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 113643; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v313644; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v313645; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff13646; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)13647; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13648; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo13649; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h13650; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13651; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v713652; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v313653; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS13654; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x013655; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_SYS13656; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x013657; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS13658; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v413659; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v313660; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13661; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s013662; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13663; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013664; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB41_113665; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end13666; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013667; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x013668; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]13669;13670; GFX12-FAKE16-LABEL: global_system_atomic_fsub_noret_bf16__offset12b_pos:13671; GFX12-FAKE16:       ; %bb.0:13672; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x013673; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x013674; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x013675; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x013676; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x013677; GFX12-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v013678; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)13679; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13680; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v213681; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)13682; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v413683; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v413684; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 013685; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off13686; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v413687; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff13688; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13689; GFX12-FAKE16-NEXT:    v_not_b32_e32 v5, v513690; GFX12-FAKE16-NEXT:  .LBB41_1: ; %atomicrmw.start13691; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=113692; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x013693; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v313694; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13695; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v213696; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v613697; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)13698; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 113699; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v213700; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v213701; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff13702; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)13703; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13704; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo13705; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v213706; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13707; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v213708; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v213709; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS13710; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x013711; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off th:TH_ATOMIC_RETURN scope:SCOPE_SYS13712; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x013713; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS13714; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v313715; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v213716; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13717; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s013718; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13719; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013720; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB41_113721; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end13722; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013723; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x013724; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]13725;13726; GFX942-LABEL: global_system_atomic_fsub_noret_bf16__offset12b_pos:13727; GFX942:       ; %bb.0:13728; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13729; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe13730; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]13731; GFX942-NEXT:    v_and_b32_e32 v0, -4, v413732; GFX942-NEXT:    v_mov_b32_e32 v1, v513733; GFX942-NEXT:    global_load_dword v3, v[0:1], off13734; GFX942-NEXT:    v_and_b32_e32 v4, 3, v413735; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v413736; GFX942-NEXT:    s_mov_b32 s0, 0xffff13737; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s013738; GFX942-NEXT:    v_not_b32_e32 v5, v513739; GFX942-NEXT:    s_mov_b64 s[0:1], 013740; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v213741; GFX942-NEXT:    s_movk_i32 s2, 0x7fff13742; GFX942-NEXT:  .LBB41_1: ; %atomicrmw.start13743; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=113744; GFX942-NEXT:    s_waitcnt vmcnt(0)13745; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13746; GFX942-NEXT:    s_nop 013747; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v613748; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 113749; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v213750; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s213751; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213752; GFX942-NEXT:    s_nop 113753; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc13754; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113755; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v213756; GFX942-NEXT:    buffer_wbl2 sc0 sc113757; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc0 sc113758; GFX942-NEXT:    s_waitcnt vmcnt(0)13759; GFX942-NEXT:    buffer_inv sc0 sc113760; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313761; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]13762; GFX942-NEXT:    v_mov_b32_e32 v3, v213763; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]13764; GFX942-NEXT:    s_cbranch_execnz .LBB41_113765; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end13766; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]13767; GFX942-NEXT:    s_setpc_b64 s[30:31]13768;13769; GFX11-TRUE16-LABEL: global_system_atomic_fsub_noret_bf16__offset12b_pos:13770; GFX11-TRUE16:       ; %bb.0:13771; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13772; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v013773; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13774; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13775; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 013776; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v313777; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v313778; GFX11-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off13779; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v313780; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13781; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff13782; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v313783; GFX11-TRUE16-NEXT:    .p2align 613784; GFX11-TRUE16-NEXT:  .LBB41_1: ; %atomicrmw.start13785; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=113786; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)13787; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v413788; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 013789; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l13790; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)13791; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v313792; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v713793; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l13794; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)13795; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 113796; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v313797; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v313798; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff13799; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13800; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo13801; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h13802; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13803; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v713804; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v313805; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x013806; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc13807; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)13808; GFX11-TRUE16-NEXT:    buffer_gl1_inv13809; GFX11-TRUE16-NEXT:    buffer_gl0_inv13810; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v413811; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v313812; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s013813; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)13814; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013815; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB41_113816; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end13817; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013818; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]13819;13820; GFX11-FAKE16-LABEL: global_system_atomic_fsub_noret_bf16__offset12b_pos:13821; GFX11-FAKE16:       ; %bb.0:13822; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13823; GFX11-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v013824; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)13825; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13826; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v213827; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v413828; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v413829; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 013830; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off13831; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v413832; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13833; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff13834; GFX11-FAKE16-NEXT:    v_not_b32_e32 v5, v513835; GFX11-FAKE16-NEXT:    .p2align 613836; GFX11-FAKE16-NEXT:  .LBB41_1: ; %atomicrmw.start13837; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=113838; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)13839; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v313840; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13841; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v213842; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v613843; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)13844; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 113845; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v213846; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v213847; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff13848; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13849; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo13850; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v213851; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13852; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v213853; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v213854; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x013855; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off glc13856; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)13857; GFX11-FAKE16-NEXT:    buffer_gl1_inv13858; GFX11-FAKE16-NEXT:    buffer_gl0_inv13859; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v313860; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v213861; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s013862; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)13863; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013864; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB41_113865; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end13866; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013867; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]13868;13869; GFX10-LABEL: global_system_atomic_fsub_noret_bf16__offset12b_pos:13870; GFX10:       ; %bb.0:13871; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13872; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v013873; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo13874; GFX10-NEXT:    v_lshlrev_b32_e32 v6, 16, v213875; GFX10-NEXT:    v_and_b32_e32 v0, -4, v413876; GFX10-NEXT:    v_and_b32_e32 v4, 3, v413877; GFX10-NEXT:    s_mov_b32 s4, 013878; GFX10-NEXT:    global_load_dword v3, v[0:1], off13879; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 3, v413880; GFX10-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff13881; GFX10-NEXT:    v_not_b32_e32 v5, v513882; GFX10-NEXT:  .LBB41_1: ; %atomicrmw.start13883; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=113884; GFX10-NEXT:    s_waitcnt vmcnt(0)13885; GFX10-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13886; GFX10-NEXT:    v_sub_f32_e32 v2, v2, v613887; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 113888; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v213889; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v213890; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff13891; GFX10-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo13892; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113893; GFX10-NEXT:    v_and_or_b32 v2, v3, v5, v213894; GFX10-NEXT:    s_waitcnt_vscnt null, 0x013895; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc13896; GFX10-NEXT:    s_waitcnt vmcnt(0)13897; GFX10-NEXT:    buffer_gl1_inv13898; GFX10-NEXT:    buffer_gl0_inv13899; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v313900; GFX10-NEXT:    v_mov_b32_e32 v3, v213901; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s413902; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s413903; GFX10-NEXT:    s_cbranch_execnz .LBB41_113904; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end13905; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s413906; GFX10-NEXT:    s_setpc_b64 s[30:31]13907;13908; GFX90A-LABEL: global_system_atomic_fsub_noret_bf16__offset12b_pos:13909; GFX90A:       ; %bb.0:13910; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13911; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v013912; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc13913; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v413914; GFX90A-NEXT:    global_load_dword v3, v[0:1], off13915; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v413916; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v413917; GFX90A-NEXT:    s_mov_b32 s4, 0xffff13918; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s413919; GFX90A-NEXT:    v_not_b32_e32 v5, v513920; GFX90A-NEXT:    s_mov_b64 s[4:5], 013921; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v213922; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff13923; GFX90A-NEXT:  .LBB41_1: ; %atomicrmw.start13924; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=113925; GFX90A-NEXT:    s_waitcnt vmcnt(0)13926; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13927; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v613928; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 113929; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v213930; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s613931; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213932; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc13933; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113934; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v213935; GFX90A-NEXT:    buffer_wbl213936; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc13937; GFX90A-NEXT:    s_waitcnt vmcnt(0)13938; GFX90A-NEXT:    buffer_invl213939; GFX90A-NEXT:    buffer_wbinvl113940; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313941; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13942; GFX90A-NEXT:    v_mov_b32_e32 v3, v213943; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]13944; GFX90A-NEXT:    s_cbranch_execnz .LBB41_113945; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end13946; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]13947; GFX90A-NEXT:    s_setpc_b64 s[30:31]13948;13949; GFX908-LABEL: global_system_atomic_fsub_noret_bf16__offset12b_pos:13950; GFX908:       ; %bb.0:13951; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13952; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v013953; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc13954; GFX908-NEXT:    v_and_b32_e32 v0, -4, v413955; GFX908-NEXT:    global_load_dword v3, v[0:1], off13956; GFX908-NEXT:    v_and_b32_e32 v4, 3, v413957; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 3, v413958; GFX908-NEXT:    s_mov_b32 s4, 0xffff13959; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v4, s413960; GFX908-NEXT:    v_not_b32_e32 v5, v513961; GFX908-NEXT:    s_mov_b64 s[4:5], 013962; GFX908-NEXT:    v_lshlrev_b32_e32 v6, 16, v213963; GFX908-NEXT:    s_movk_i32 s6, 0x7fff13964; GFX908-NEXT:  .LBB41_1: ; %atomicrmw.start13965; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=113966; GFX908-NEXT:    s_waitcnt vmcnt(0)13967; GFX908-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13968; GFX908-NEXT:    v_sub_f32_e32 v2, v2, v613969; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 113970; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v213971; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s613972; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213973; GFX908-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc13974; GFX908-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113975; GFX908-NEXT:    v_and_or_b32 v2, v3, v5, v213976; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc13977; GFX908-NEXT:    s_waitcnt vmcnt(0)13978; GFX908-NEXT:    buffer_wbinvl113979; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313980; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13981; GFX908-NEXT:    v_mov_b32_e32 v3, v213982; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]13983; GFX908-NEXT:    s_cbranch_execnz .LBB41_113984; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end13985; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]13986; GFX908-NEXT:    s_setpc_b64 s[30:31]13987;13988; GFX8-LABEL: global_system_atomic_fsub_noret_bf16__offset12b_pos:13989; GFX8:       ; %bb.0:13990; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13991; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0x7fe, v013992; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc13993; GFX8-NEXT:    v_and_b32_e32 v0, -4, v413994; GFX8-NEXT:    flat_load_dword v3, v[0:1]13995; GFX8-NEXT:    v_and_b32_e32 v4, 3, v413996; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 3, v413997; GFX8-NEXT:    s_mov_b32 s4, 0xffff13998; GFX8-NEXT:    v_lshlrev_b32_e64 v5, v4, s413999; GFX8-NEXT:    v_not_b32_e32 v5, v514000; GFX8-NEXT:    s_mov_b64 s[4:5], 014001; GFX8-NEXT:    v_lshlrev_b32_e32 v6, 16, v214002; GFX8-NEXT:  .LBB41_1: ; %atomicrmw.start14003; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=114004; GFX8-NEXT:    s_waitcnt vmcnt(0)14005; GFX8-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD14006; GFX8-NEXT:    v_sub_f32_e32 v2, v2, v614007; GFX8-NEXT:    v_bfe_u32 v8, v2, 16, 114008; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v214009; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v814010; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v214011; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v2, v214012; GFX8-NEXT:    v_cndmask_b32_e32 v2, v8, v9, vcc14013; GFX8-NEXT:    v_and_b32_e32 v7, v3, v514014; GFX8-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_114015; GFX8-NEXT:    v_or_b32_e32 v2, v7, v214016; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc14017; GFX8-NEXT:    s_waitcnt vmcnt(0)14018; GFX8-NEXT:    buffer_wbinvl114019; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v314020; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14021; GFX8-NEXT:    v_mov_b32_e32 v3, v214022; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]14023; GFX8-NEXT:    s_cbranch_execnz .LBB41_114024; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end14025; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]14026; GFX8-NEXT:    s_setpc_b64 s[30:31]14027;14028; GFX7-LABEL: global_system_atomic_fsub_noret_bf16__offset12b_pos:14029; GFX7:       ; %bb.0:14030; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14031; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v014032; GFX7-NEXT:    s_mov_b32 s6, 014033; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc14034; GFX7-NEXT:    v_and_b32_e32 v0, -4, v414035; GFX7-NEXT:    s_mov_b32 s7, 0xf00014036; GFX7-NEXT:    s_mov_b32 s4, s614037; GFX7-NEXT:    s_mov_b32 s5, s614038; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6414039; GFX7-NEXT:    v_and_b32_e32 v4, 3, v414040; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v414041; GFX7-NEXT:    v_lshl_b32_e32 v5, 0xffff, v414042; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v214043; GFX7-NEXT:    v_not_b32_e32 v5, v514044; GFX7-NEXT:    s_mov_b64 s[8:9], 014045; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v214046; GFX7-NEXT:  .LBB41_1: ; %atomicrmw.start14047; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=114048; GFX7-NEXT:    s_waitcnt vmcnt(0)14049; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v314050; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v214051; GFX7-NEXT:    v_sub_f32_e32 v2, v2, v614052; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v214053; GFX7-NEXT:    v_and_b32_e32 v7, v3, v514054; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v214055; GFX7-NEXT:    v_or_b32_e32 v2, v7, v214056; GFX7-NEXT:    v_mov_b32_e32 v8, v314057; GFX7-NEXT:    v_mov_b32_e32 v7, v214058; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc14059; GFX7-NEXT:    s_waitcnt vmcnt(0)14060; GFX7-NEXT:    buffer_wbinvl114061; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v314062; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]14063; GFX7-NEXT:    v_mov_b32_e32 v3, v714064; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]14065; GFX7-NEXT:    s_cbranch_execnz .LBB41_114066; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end14067; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]14068; GFX7-NEXT:    s_setpc_b64 s[30:31]14069;14070; GFX6-LABEL: global_system_atomic_fsub_noret_bf16__offset12b_pos:14071; GFX6:       ; %bb.0:14072; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14073; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v014074; GFX6-NEXT:    s_mov_b32 s6, 014075; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc14076; GFX6-NEXT:    v_and_b32_e32 v0, -4, v414077; GFX6-NEXT:    s_mov_b32 s7, 0xf00014078; GFX6-NEXT:    s_mov_b32 s4, s614079; GFX6-NEXT:    s_mov_b32 s5, s614080; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6414081; GFX6-NEXT:    v_and_b32_e32 v4, 3, v414082; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 3, v414083; GFX6-NEXT:    v_lshl_b32_e32 v5, 0xffff, v414084; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v214085; GFX6-NEXT:    v_not_b32_e32 v5, v514086; GFX6-NEXT:    s_mov_b64 s[8:9], 014087; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v214088; GFX6-NEXT:  .LBB41_1: ; %atomicrmw.start14089; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=114090; GFX6-NEXT:    s_waitcnt vmcnt(0)14091; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v4, v314092; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v214093; GFX6-NEXT:    v_sub_f32_e32 v2, v2, v614094; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v214095; GFX6-NEXT:    s_waitcnt expcnt(0)14096; GFX6-NEXT:    v_and_b32_e32 v7, v3, v514097; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v4, v214098; GFX6-NEXT:    v_or_b32_e32 v2, v7, v214099; GFX6-NEXT:    v_mov_b32_e32 v8, v314100; GFX6-NEXT:    v_mov_b32_e32 v7, v214101; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc14102; GFX6-NEXT:    s_waitcnt vmcnt(0)14103; GFX6-NEXT:    buffer_wbinvl114104; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v314105; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]14106; GFX6-NEXT:    v_mov_b32_e32 v3, v714107; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]14108; GFX6-NEXT:    s_cbranch_execnz .LBB41_114109; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end14110; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]14111; GFX6-NEXT:    s_waitcnt expcnt(0)14112; GFX6-NEXT:    s_setpc_b64 s[30:31]14113  %gep = getelementptr bfloat, ptr addrspace(1) %ptr, i64 102314114  %unused = atomicrmw fsub ptr addrspace(1) %gep, bfloat %val seq_cst14115  ret void14116}14117 14118; --------------------------------------------------------------------14119; <2 x half>14120; --------------------------------------------------------------------14121 14122define <2 x half> @global_agent_atomic_fsub_ret_v2f16(ptr addrspace(1) %ptr, <2 x half> %val) #0 {14123; GFX12-LABEL: global_agent_atomic_fsub_ret_v2f16:14124; GFX12:       ; %bb.0:14125; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014126; GFX12-NEXT:    s_wait_expcnt 0x014127; GFX12-NEXT:    s_wait_samplecnt 0x014128; GFX12-NEXT:    s_wait_bvhcnt 0x014129; GFX12-NEXT:    s_wait_kmcnt 0x014130; GFX12-NEXT:    global_load_b32 v3, v[0:1], off14131; GFX12-NEXT:    s_mov_b32 s0, 014132; GFX12-NEXT:  .LBB42_1: ; %atomicrmw.start14133; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=114134; GFX12-NEXT:    s_wait_loadcnt 0x014135; GFX12-NEXT:    v_mov_b32_e32 v4, v314136; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)14137; GFX12-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14138; GFX12-NEXT:    s_wait_storecnt 0x014139; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV14140; GFX12-NEXT:    s_wait_loadcnt 0x014141; GFX12-NEXT:    global_inv scope:SCOPE_DEV14142; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414143; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14144; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s014145; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14146; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014147; GFX12-NEXT:    s_cbranch_execnz .LBB42_114148; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end14149; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s014150; GFX12-NEXT:    v_mov_b32_e32 v0, v314151; GFX12-NEXT:    s_wait_loadcnt 0x014152; GFX12-NEXT:    s_setpc_b64 s[30:31]14153;14154; GFX942-LABEL: global_agent_atomic_fsub_ret_v2f16:14155; GFX942:       ; %bb.0:14156; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14157; GFX942-NEXT:    global_load_dword v5, v[0:1], off14158; GFX942-NEXT:    s_mov_b64 s[0:1], 014159; GFX942-NEXT:  .LBB42_1: ; %atomicrmw.start14160; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=114161; GFX942-NEXT:    s_waitcnt vmcnt(0)14162; GFX942-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]14163; GFX942-NEXT:    buffer_wbl2 sc114164; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off sc014165; GFX942-NEXT:    s_waitcnt vmcnt(0)14166; GFX942-NEXT:    buffer_inv sc114167; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v514168; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]14169; GFX942-NEXT:    v_mov_b32_e32 v5, v314170; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]14171; GFX942-NEXT:    s_cbranch_execnz .LBB42_114172; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end14173; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]14174; GFX942-NEXT:    v_mov_b32_e32 v0, v314175; GFX942-NEXT:    s_setpc_b64 s[30:31]14176;14177; GFX11-LABEL: global_agent_atomic_fsub_ret_v2f16:14178; GFX11:       ; %bb.0:14179; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14180; GFX11-NEXT:    global_load_b32 v3, v[0:1], off14181; GFX11-NEXT:    s_mov_b32 s0, 014182; GFX11-NEXT:  .LBB42_1: ; %atomicrmw.start14183; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=114184; GFX11-NEXT:    s_waitcnt vmcnt(0)14185; GFX11-NEXT:    v_mov_b32_e32 v4, v314186; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)14187; GFX11-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14188; GFX11-NEXT:    s_waitcnt_vscnt null, 0x014189; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc14190; GFX11-NEXT:    s_waitcnt vmcnt(0)14191; GFX11-NEXT:    buffer_gl1_inv14192; GFX11-NEXT:    buffer_gl0_inv14193; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414194; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s014195; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)14196; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014197; GFX11-NEXT:    s_cbranch_execnz .LBB42_114198; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end14199; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s014200; GFX11-NEXT:    v_mov_b32_e32 v0, v314201; GFX11-NEXT:    s_setpc_b64 s[30:31]14202;14203; GFX10-LABEL: global_agent_atomic_fsub_ret_v2f16:14204; GFX10:       ; %bb.0:14205; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14206; GFX10-NEXT:    global_load_dword v3, v[0:1], off14207; GFX10-NEXT:    s_mov_b32 s4, 014208; GFX10-NEXT:  .LBB42_1: ; %atomicrmw.start14209; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=114210; GFX10-NEXT:    s_waitcnt vmcnt(0)14211; GFX10-NEXT:    v_mov_b32_e32 v4, v314212; GFX10-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14213; GFX10-NEXT:    s_waitcnt_vscnt null, 0x014214; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc14215; GFX10-NEXT:    s_waitcnt vmcnt(0)14216; GFX10-NEXT:    buffer_gl1_inv14217; GFX10-NEXT:    buffer_gl0_inv14218; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414219; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s414220; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s414221; GFX10-NEXT:    s_cbranch_execnz .LBB42_114222; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end14223; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s414224; GFX10-NEXT:    v_mov_b32_e32 v0, v314225; GFX10-NEXT:    s_setpc_b64 s[30:31]14226;14227; GFX90A-LABEL: global_agent_atomic_fsub_ret_v2f16:14228; GFX90A:       ; %bb.0:14229; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14230; GFX90A-NEXT:    global_load_dword v5, v[0:1], off14231; GFX90A-NEXT:    s_mov_b64 s[4:5], 014232; GFX90A-NEXT:  .LBB42_1: ; %atomicrmw.start14233; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=114234; GFX90A-NEXT:    s_waitcnt vmcnt(0)14235; GFX90A-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]14236; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off glc14237; GFX90A-NEXT:    s_waitcnt vmcnt(0)14238; GFX90A-NEXT:    buffer_wbinvl114239; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v514240; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14241; GFX90A-NEXT:    v_mov_b32_e32 v5, v314242; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]14243; GFX90A-NEXT:    s_cbranch_execnz .LBB42_114244; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end14245; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]14246; GFX90A-NEXT:    v_mov_b32_e32 v0, v314247; GFX90A-NEXT:    s_setpc_b64 s[30:31]14248;14249; GFX908-LABEL: global_agent_atomic_fsub_ret_v2f16:14250; GFX908:       ; %bb.0:14251; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14252; GFX908-NEXT:    global_load_dword v3, v[0:1], off14253; GFX908-NEXT:    s_mov_b64 s[4:5], 014254; GFX908-NEXT:  .LBB42_1: ; %atomicrmw.start14255; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=114256; GFX908-NEXT:    s_waitcnt vmcnt(0)14257; GFX908-NEXT:    v_mov_b32_e32 v4, v314258; GFX908-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14259; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc14260; GFX908-NEXT:    s_waitcnt vmcnt(0)14261; GFX908-NEXT:    buffer_wbinvl114262; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v414263; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14264; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]14265; GFX908-NEXT:    s_cbranch_execnz .LBB42_114266; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end14267; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]14268; GFX908-NEXT:    v_mov_b32_e32 v0, v314269; GFX908-NEXT:    s_setpc_b64 s[30:31]14270;14271; GFX8-LABEL: global_agent_atomic_fsub_ret_v2f16:14272; GFX8:       ; %bb.0:14273; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14274; GFX8-NEXT:    flat_load_dword v3, v[0:1]14275; GFX8-NEXT:    s_mov_b64 s[4:5], 014276; GFX8-NEXT:  .LBB42_1: ; %atomicrmw.start14277; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=114278; GFX8-NEXT:    s_waitcnt vmcnt(0)14279; GFX8-NEXT:    v_mov_b32_e32 v4, v314280; GFX8-NEXT:    v_sub_f16_sdwa v3, v4, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_114281; GFX8-NEXT:    v_sub_f16_e32 v5, v4, v214282; GFX8-NEXT:    v_or_b32_e32 v3, v5, v314283; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc14284; GFX8-NEXT:    s_waitcnt vmcnt(0)14285; GFX8-NEXT:    buffer_wbinvl114286; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v414287; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14288; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]14289; GFX8-NEXT:    s_cbranch_execnz .LBB42_114290; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end14291; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]14292; GFX8-NEXT:    v_mov_b32_e32 v0, v314293; GFX8-NEXT:    s_setpc_b64 s[30:31]14294;14295; GFX7-LABEL: global_agent_atomic_fsub_ret_v2f16:14296; GFX7:       ; %bb.0:14297; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14298; GFX7-NEXT:    s_mov_b32 s6, 014299; GFX7-NEXT:    s_mov_b32 s7, 0xf00014300; GFX7-NEXT:    s_mov_b32 s4, s614301; GFX7-NEXT:    s_mov_b32 s5, s614302; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr6414303; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v314304; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v214305; GFX7-NEXT:    s_mov_b64 s[8:9], 014306; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v314307; GFX7-NEXT:    s_waitcnt vmcnt(0)14308; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v514309; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v514310; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v314311; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v614312; GFX7-NEXT:  .LBB42_1: ; %atomicrmw.start14313; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=114314; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v314315; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v214316; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v314317; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v214318; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v314319; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v414320; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v514321; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v614322; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v714323; GFX7-NEXT:    v_or_b32_e32 v7, v2, v314324; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v614325; GFX7-NEXT:    v_or_b32_e32 v6, v8, v214326; GFX7-NEXT:    v_mov_b32_e32 v9, v714327; GFX7-NEXT:    v_mov_b32_e32 v8, v614328; GFX7-NEXT:    buffer_atomic_cmpswap v[8:9], v[0:1], s[4:7], 0 addr64 glc14329; GFX7-NEXT:    s_waitcnt vmcnt(0)14330; GFX7-NEXT:    buffer_wbinvl114331; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v814332; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v814333; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v314334; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v8, v714335; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]14336; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]14337; GFX7-NEXT:    s_cbranch_execnz .LBB42_114338; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end14339; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]14340; GFX7-NEXT:    v_mov_b32_e32 v0, v214341; GFX7-NEXT:    v_mov_b32_e32 v1, v314342; GFX7-NEXT:    s_setpc_b64 s[30:31]14343;14344; GFX6-LABEL: global_agent_atomic_fsub_ret_v2f16:14345; GFX6:       ; %bb.0:14346; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14347; GFX6-NEXT:    s_mov_b32 s6, 014348; GFX6-NEXT:    s_mov_b32 s7, 0xf00014349; GFX6-NEXT:    s_mov_b32 s4, s614350; GFX6-NEXT:    s_mov_b32 s5, s614351; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr6414352; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v314353; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v214354; GFX6-NEXT:    s_mov_b64 s[8:9], 014355; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v314356; GFX6-NEXT:    s_waitcnt vmcnt(0)14357; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v514358; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v514359; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v314360; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v614361; GFX6-NEXT:  .LBB42_1: ; %atomicrmw.start14362; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=114363; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v314364; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v214365; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v314366; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v214367; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v314368; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v414369; GFX6-NEXT:    v_sub_f32_e32 v7, v7, v514370; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v614371; GFX6-NEXT:    s_waitcnt expcnt(0)14372; GFX6-NEXT:    v_cvt_f16_f32_e32 v8, v714373; GFX6-NEXT:    v_or_b32_e32 v7, v2, v314374; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v614375; GFX6-NEXT:    v_or_b32_e32 v6, v8, v214376; GFX6-NEXT:    v_mov_b32_e32 v9, v714377; GFX6-NEXT:    v_mov_b32_e32 v8, v614378; GFX6-NEXT:    buffer_atomic_cmpswap v[8:9], v[0:1], s[4:7], 0 addr64 glc14379; GFX6-NEXT:    s_waitcnt vmcnt(0)14380; GFX6-NEXT:    buffer_wbinvl114381; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v814382; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v814383; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v314384; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v8, v714385; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]14386; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]14387; GFX6-NEXT:    s_cbranch_execnz .LBB42_114388; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end14389; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]14390; GFX6-NEXT:    v_mov_b32_e32 v0, v214391; GFX6-NEXT:    v_mov_b32_e32 v1, v314392; GFX6-NEXT:    s_waitcnt expcnt(0)14393; GFX6-NEXT:    s_setpc_b64 s[30:31]14394  %result = atomicrmw fsub ptr addrspace(1) %ptr, <2 x half> %val syncscope("agent") seq_cst14395  ret <2 x half> %result14396}14397 14398define <2 x half> @global_agent_atomic_fsub_ret_v2f16__offset12b_pos(ptr addrspace(1) %ptr, <2 x half> %val) #0 {14399; GFX12-LABEL: global_agent_atomic_fsub_ret_v2f16__offset12b_pos:14400; GFX12:       ; %bb.0:14401; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014402; GFX12-NEXT:    s_wait_expcnt 0x014403; GFX12-NEXT:    s_wait_samplecnt 0x014404; GFX12-NEXT:    s_wait_bvhcnt 0x014405; GFX12-NEXT:    s_wait_kmcnt 0x014406; GFX12-NEXT:    global_load_b32 v3, v[0:1], off offset:204414407; GFX12-NEXT:    s_mov_b32 s0, 014408; GFX12-NEXT:  .LBB43_1: ; %atomicrmw.start14409; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=114410; GFX12-NEXT:    s_wait_loadcnt 0x014411; GFX12-NEXT:    v_mov_b32_e32 v4, v314412; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)14413; GFX12-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14414; GFX12-NEXT:    s_wait_storecnt 0x014415; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV14416; GFX12-NEXT:    s_wait_loadcnt 0x014417; GFX12-NEXT:    global_inv scope:SCOPE_DEV14418; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414419; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14420; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s014421; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14422; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014423; GFX12-NEXT:    s_cbranch_execnz .LBB43_114424; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end14425; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s014426; GFX12-NEXT:    v_mov_b32_e32 v0, v314427; GFX12-NEXT:    s_wait_loadcnt 0x014428; GFX12-NEXT:    s_setpc_b64 s[30:31]14429;14430; GFX942-LABEL: global_agent_atomic_fsub_ret_v2f16__offset12b_pos:14431; GFX942:       ; %bb.0:14432; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14433; GFX942-NEXT:    global_load_dword v5, v[0:1], off offset:204414434; GFX942-NEXT:    s_mov_b64 s[0:1], 014435; GFX942-NEXT:  .LBB43_1: ; %atomicrmw.start14436; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=114437; GFX942-NEXT:    s_waitcnt vmcnt(0)14438; GFX942-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]14439; GFX942-NEXT:    buffer_wbl2 sc114440; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 sc014441; GFX942-NEXT:    s_waitcnt vmcnt(0)14442; GFX942-NEXT:    buffer_inv sc114443; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v514444; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]14445; GFX942-NEXT:    v_mov_b32_e32 v5, v314446; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]14447; GFX942-NEXT:    s_cbranch_execnz .LBB43_114448; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end14449; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]14450; GFX942-NEXT:    v_mov_b32_e32 v0, v314451; GFX942-NEXT:    s_setpc_b64 s[30:31]14452;14453; GFX11-LABEL: global_agent_atomic_fsub_ret_v2f16__offset12b_pos:14454; GFX11:       ; %bb.0:14455; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14456; GFX11-NEXT:    global_load_b32 v3, v[0:1], off offset:204414457; GFX11-NEXT:    s_mov_b32 s0, 014458; GFX11-NEXT:  .LBB43_1: ; %atomicrmw.start14459; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=114460; GFX11-NEXT:    s_waitcnt vmcnt(0)14461; GFX11-NEXT:    v_mov_b32_e32 v4, v314462; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)14463; GFX11-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14464; GFX11-NEXT:    s_waitcnt_vscnt null, 0x014465; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 glc14466; GFX11-NEXT:    s_waitcnt vmcnt(0)14467; GFX11-NEXT:    buffer_gl1_inv14468; GFX11-NEXT:    buffer_gl0_inv14469; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414470; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s014471; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)14472; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014473; GFX11-NEXT:    s_cbranch_execnz .LBB43_114474; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end14475; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s014476; GFX11-NEXT:    v_mov_b32_e32 v0, v314477; GFX11-NEXT:    s_setpc_b64 s[30:31]14478;14479; GFX10-LABEL: global_agent_atomic_fsub_ret_v2f16__offset12b_pos:14480; GFX10:       ; %bb.0:14481; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14482; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:204414483; GFX10-NEXT:    s_mov_b32 s4, 014484; GFX10-NEXT:  .LBB43_1: ; %atomicrmw.start14485; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=114486; GFX10-NEXT:    s_waitcnt vmcnt(0)14487; GFX10-NEXT:    v_mov_b32_e32 v4, v314488; GFX10-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14489; GFX10-NEXT:    s_waitcnt_vscnt null, 0x014490; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc14491; GFX10-NEXT:    s_waitcnt vmcnt(0)14492; GFX10-NEXT:    buffer_gl1_inv14493; GFX10-NEXT:    buffer_gl0_inv14494; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414495; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s414496; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s414497; GFX10-NEXT:    s_cbranch_execnz .LBB43_114498; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end14499; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s414500; GFX10-NEXT:    v_mov_b32_e32 v0, v314501; GFX10-NEXT:    s_setpc_b64 s[30:31]14502;14503; GFX90A-LABEL: global_agent_atomic_fsub_ret_v2f16__offset12b_pos:14504; GFX90A:       ; %bb.0:14505; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14506; GFX90A-NEXT:    global_load_dword v5, v[0:1], off offset:204414507; GFX90A-NEXT:    s_mov_b64 s[4:5], 014508; GFX90A-NEXT:  .LBB43_1: ; %atomicrmw.start14509; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=114510; GFX90A-NEXT:    s_waitcnt vmcnt(0)14511; GFX90A-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]14512; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 glc14513; GFX90A-NEXT:    s_waitcnt vmcnt(0)14514; GFX90A-NEXT:    buffer_wbinvl114515; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v514516; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14517; GFX90A-NEXT:    v_mov_b32_e32 v5, v314518; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]14519; GFX90A-NEXT:    s_cbranch_execnz .LBB43_114520; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end14521; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]14522; GFX90A-NEXT:    v_mov_b32_e32 v0, v314523; GFX90A-NEXT:    s_setpc_b64 s[30:31]14524;14525; GFX908-LABEL: global_agent_atomic_fsub_ret_v2f16__offset12b_pos:14526; GFX908:       ; %bb.0:14527; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14528; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:204414529; GFX908-NEXT:    s_mov_b64 s[4:5], 014530; GFX908-NEXT:  .LBB43_1: ; %atomicrmw.start14531; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=114532; GFX908-NEXT:    s_waitcnt vmcnt(0)14533; GFX908-NEXT:    v_mov_b32_e32 v4, v314534; GFX908-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14535; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc14536; GFX908-NEXT:    s_waitcnt vmcnt(0)14537; GFX908-NEXT:    buffer_wbinvl114538; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v414539; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14540; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]14541; GFX908-NEXT:    s_cbranch_execnz .LBB43_114542; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end14543; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]14544; GFX908-NEXT:    v_mov_b32_e32 v0, v314545; GFX908-NEXT:    s_setpc_b64 s[30:31]14546;14547; GFX8-LABEL: global_agent_atomic_fsub_ret_v2f16__offset12b_pos:14548; GFX8:       ; %bb.0:14549; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14550; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v014551; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc14552; GFX8-NEXT:    flat_load_dword v0, v[3:4]14553; GFX8-NEXT:    s_mov_b64 s[4:5], 014554; GFX8-NEXT:  .LBB43_1: ; %atomicrmw.start14555; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=114556; GFX8-NEXT:    s_waitcnt vmcnt(0)14557; GFX8-NEXT:    v_mov_b32_e32 v1, v014558; GFX8-NEXT:    v_sub_f16_sdwa v0, v1, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_114559; GFX8-NEXT:    v_sub_f16_e32 v5, v1, v214560; GFX8-NEXT:    v_or_b32_e32 v0, v5, v014561; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc14562; GFX8-NEXT:    s_waitcnt vmcnt(0)14563; GFX8-NEXT:    buffer_wbinvl114564; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v114565; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14566; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]14567; GFX8-NEXT:    s_cbranch_execnz .LBB43_114568; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end14569; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]14570; GFX8-NEXT:    s_setpc_b64 s[30:31]14571;14572; GFX7-LABEL: global_agent_atomic_fsub_ret_v2f16__offset12b_pos:14573; GFX7:       ; %bb.0:14574; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14575; GFX7-NEXT:    s_mov_b32 s6, 014576; GFX7-NEXT:    s_mov_b32 s7, 0xf00014577; GFX7-NEXT:    s_mov_b32 s4, s614578; GFX7-NEXT:    s_mov_b32 s5, s614579; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204414580; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v314581; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v214582; GFX7-NEXT:    s_mov_b64 s[8:9], 014583; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v314584; GFX7-NEXT:    s_waitcnt vmcnt(0)14585; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v514586; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v514587; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v314588; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v614589; GFX7-NEXT:  .LBB43_1: ; %atomicrmw.start14590; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=114591; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v314592; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v214593; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v314594; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v214595; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v314596; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v414597; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v514598; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v614599; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v714600; GFX7-NEXT:    v_or_b32_e32 v7, v2, v314601; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v614602; GFX7-NEXT:    v_or_b32_e32 v6, v8, v214603; GFX7-NEXT:    v_mov_b32_e32 v9, v714604; GFX7-NEXT:    v_mov_b32_e32 v8, v614605; GFX7-NEXT:    buffer_atomic_cmpswap v[8:9], v[0:1], s[4:7], 0 addr64 offset:2044 glc14606; GFX7-NEXT:    s_waitcnt vmcnt(0)14607; GFX7-NEXT:    buffer_wbinvl114608; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v814609; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v814610; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v314611; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v8, v714612; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]14613; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]14614; GFX7-NEXT:    s_cbranch_execnz .LBB43_114615; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end14616; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]14617; GFX7-NEXT:    v_mov_b32_e32 v0, v214618; GFX7-NEXT:    v_mov_b32_e32 v1, v314619; GFX7-NEXT:    s_setpc_b64 s[30:31]14620;14621; GFX6-LABEL: global_agent_atomic_fsub_ret_v2f16__offset12b_pos:14622; GFX6:       ; %bb.0:14623; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14624; GFX6-NEXT:    s_mov_b32 s6, 014625; GFX6-NEXT:    s_mov_b32 s7, 0xf00014626; GFX6-NEXT:    s_mov_b32 s4, s614627; GFX6-NEXT:    s_mov_b32 s5, s614628; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204414629; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v314630; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v214631; GFX6-NEXT:    s_mov_b64 s[8:9], 014632; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v314633; GFX6-NEXT:    s_waitcnt vmcnt(0)14634; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v514635; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v514636; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v314637; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v614638; GFX6-NEXT:  .LBB43_1: ; %atomicrmw.start14639; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=114640; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v314641; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v214642; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v314643; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v214644; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v314645; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v414646; GFX6-NEXT:    v_sub_f32_e32 v7, v7, v514647; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v614648; GFX6-NEXT:    s_waitcnt expcnt(0)14649; GFX6-NEXT:    v_cvt_f16_f32_e32 v8, v714650; GFX6-NEXT:    v_or_b32_e32 v7, v2, v314651; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v614652; GFX6-NEXT:    v_or_b32_e32 v6, v8, v214653; GFX6-NEXT:    v_mov_b32_e32 v9, v714654; GFX6-NEXT:    v_mov_b32_e32 v8, v614655; GFX6-NEXT:    buffer_atomic_cmpswap v[8:9], v[0:1], s[4:7], 0 addr64 offset:2044 glc14656; GFX6-NEXT:    s_waitcnt vmcnt(0)14657; GFX6-NEXT:    buffer_wbinvl114658; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v814659; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v814660; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v314661; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v8, v714662; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]14663; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]14664; GFX6-NEXT:    s_cbranch_execnz .LBB43_114665; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end14666; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]14667; GFX6-NEXT:    v_mov_b32_e32 v0, v214668; GFX6-NEXT:    v_mov_b32_e32 v1, v314669; GFX6-NEXT:    s_waitcnt expcnt(0)14670; GFX6-NEXT:    s_setpc_b64 s[30:31]14671  %gep = getelementptr <2 x half>, ptr addrspace(1) %ptr, i64 51114672  %result = atomicrmw fsub ptr addrspace(1) %gep, <2 x half> %val syncscope("agent") seq_cst14673  ret <2 x half> %result14674}14675 14676define <2 x half> @global_agent_atomic_fsub_ret_v2f16__offset12b_neg(ptr addrspace(1) %ptr, <2 x half> %val) #0 {14677; GFX12-LABEL: global_agent_atomic_fsub_ret_v2f16__offset12b_neg:14678; GFX12:       ; %bb.0:14679; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014680; GFX12-NEXT:    s_wait_expcnt 0x014681; GFX12-NEXT:    s_wait_samplecnt 0x014682; GFX12-NEXT:    s_wait_bvhcnt 0x014683; GFX12-NEXT:    s_wait_kmcnt 0x014684; GFX12-NEXT:    global_load_b32 v3, v[0:1], off offset:-204814685; GFX12-NEXT:    s_mov_b32 s0, 014686; GFX12-NEXT:  .LBB44_1: ; %atomicrmw.start14687; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=114688; GFX12-NEXT:    s_wait_loadcnt 0x014689; GFX12-NEXT:    v_mov_b32_e32 v4, v314690; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)14691; GFX12-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14692; GFX12-NEXT:    s_wait_storecnt 0x014693; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV14694; GFX12-NEXT:    s_wait_loadcnt 0x014695; GFX12-NEXT:    global_inv scope:SCOPE_DEV14696; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414697; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14698; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s014699; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14700; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014701; GFX12-NEXT:    s_cbranch_execnz .LBB44_114702; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end14703; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s014704; GFX12-NEXT:    v_mov_b32_e32 v0, v314705; GFX12-NEXT:    s_wait_loadcnt 0x014706; GFX12-NEXT:    s_setpc_b64 s[30:31]14707;14708; GFX942-LABEL: global_agent_atomic_fsub_ret_v2f16__offset12b_neg:14709; GFX942:       ; %bb.0:14710; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14711; GFX942-NEXT:    global_load_dword v5, v[0:1], off offset:-204814712; GFX942-NEXT:    s_mov_b64 s[0:1], 014713; GFX942-NEXT:  .LBB44_1: ; %atomicrmw.start14714; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=114715; GFX942-NEXT:    s_waitcnt vmcnt(0)14716; GFX942-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]14717; GFX942-NEXT:    buffer_wbl2 sc114718; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:-2048 sc014719; GFX942-NEXT:    s_waitcnt vmcnt(0)14720; GFX942-NEXT:    buffer_inv sc114721; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v514722; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]14723; GFX942-NEXT:    v_mov_b32_e32 v5, v314724; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]14725; GFX942-NEXT:    s_cbranch_execnz .LBB44_114726; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end14727; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]14728; GFX942-NEXT:    v_mov_b32_e32 v0, v314729; GFX942-NEXT:    s_setpc_b64 s[30:31]14730;14731; GFX11-LABEL: global_agent_atomic_fsub_ret_v2f16__offset12b_neg:14732; GFX11:       ; %bb.0:14733; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14734; GFX11-NEXT:    global_load_b32 v3, v[0:1], off offset:-204814735; GFX11-NEXT:    s_mov_b32 s0, 014736; GFX11-NEXT:  .LBB44_1: ; %atomicrmw.start14737; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=114738; GFX11-NEXT:    s_waitcnt vmcnt(0)14739; GFX11-NEXT:    v_mov_b32_e32 v4, v314740; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)14741; GFX11-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14742; GFX11-NEXT:    s_waitcnt_vscnt null, 0x014743; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:-2048 glc14744; GFX11-NEXT:    s_waitcnt vmcnt(0)14745; GFX11-NEXT:    buffer_gl1_inv14746; GFX11-NEXT:    buffer_gl0_inv14747; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414748; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s014749; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)14750; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014751; GFX11-NEXT:    s_cbranch_execnz .LBB44_114752; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end14753; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s014754; GFX11-NEXT:    v_mov_b32_e32 v0, v314755; GFX11-NEXT:    s_setpc_b64 s[30:31]14756;14757; GFX10-LABEL: global_agent_atomic_fsub_ret_v2f16__offset12b_neg:14758; GFX10:       ; %bb.0:14759; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14760; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:-204814761; GFX10-NEXT:    s_mov_b32 s4, 014762; GFX10-NEXT:  .LBB44_1: ; %atomicrmw.start14763; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=114764; GFX10-NEXT:    s_waitcnt vmcnt(0)14765; GFX10-NEXT:    v_mov_b32_e32 v4, v314766; GFX10-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14767; GFX10-NEXT:    s_waitcnt_vscnt null, 0x014768; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:-2048 glc14769; GFX10-NEXT:    s_waitcnt vmcnt(0)14770; GFX10-NEXT:    buffer_gl1_inv14771; GFX10-NEXT:    buffer_gl0_inv14772; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414773; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s414774; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s414775; GFX10-NEXT:    s_cbranch_execnz .LBB44_114776; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end14777; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s414778; GFX10-NEXT:    v_mov_b32_e32 v0, v314779; GFX10-NEXT:    s_setpc_b64 s[30:31]14780;14781; GFX90A-LABEL: global_agent_atomic_fsub_ret_v2f16__offset12b_neg:14782; GFX90A:       ; %bb.0:14783; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14784; GFX90A-NEXT:    global_load_dword v5, v[0:1], off offset:-204814785; GFX90A-NEXT:    s_mov_b64 s[4:5], 014786; GFX90A-NEXT:  .LBB44_1: ; %atomicrmw.start14787; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=114788; GFX90A-NEXT:    s_waitcnt vmcnt(0)14789; GFX90A-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]14790; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:-2048 glc14791; GFX90A-NEXT:    s_waitcnt vmcnt(0)14792; GFX90A-NEXT:    buffer_wbinvl114793; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v514794; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14795; GFX90A-NEXT:    v_mov_b32_e32 v5, v314796; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]14797; GFX90A-NEXT:    s_cbranch_execnz .LBB44_114798; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end14799; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]14800; GFX90A-NEXT:    v_mov_b32_e32 v0, v314801; GFX90A-NEXT:    s_setpc_b64 s[30:31]14802;14803; GFX908-LABEL: global_agent_atomic_fsub_ret_v2f16__offset12b_neg:14804; GFX908:       ; %bb.0:14805; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14806; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:-204814807; GFX908-NEXT:    s_mov_b64 s[4:5], 014808; GFX908-NEXT:  .LBB44_1: ; %atomicrmw.start14809; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=114810; GFX908-NEXT:    s_waitcnt vmcnt(0)14811; GFX908-NEXT:    v_mov_b32_e32 v4, v314812; GFX908-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14813; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:-2048 glc14814; GFX908-NEXT:    s_waitcnt vmcnt(0)14815; GFX908-NEXT:    buffer_wbinvl114816; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v414817; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14818; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]14819; GFX908-NEXT:    s_cbranch_execnz .LBB44_114820; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end14821; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]14822; GFX908-NEXT:    v_mov_b32_e32 v0, v314823; GFX908-NEXT:    s_setpc_b64 s[30:31]14824;14825; GFX8-LABEL: global_agent_atomic_fsub_ret_v2f16__offset12b_neg:14826; GFX8:       ; %bb.0:14827; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14828; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v014829; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, -1, v1, vcc14830; GFX8-NEXT:    flat_load_dword v0, v[3:4]14831; GFX8-NEXT:    s_mov_b64 s[4:5], 014832; GFX8-NEXT:  .LBB44_1: ; %atomicrmw.start14833; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=114834; GFX8-NEXT:    s_waitcnt vmcnt(0)14835; GFX8-NEXT:    v_mov_b32_e32 v1, v014836; GFX8-NEXT:    v_sub_f16_sdwa v0, v1, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_114837; GFX8-NEXT:    v_sub_f16_e32 v5, v1, v214838; GFX8-NEXT:    v_or_b32_e32 v0, v5, v014839; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc14840; GFX8-NEXT:    s_waitcnt vmcnt(0)14841; GFX8-NEXT:    buffer_wbinvl114842; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v114843; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14844; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]14845; GFX8-NEXT:    s_cbranch_execnz .LBB44_114846; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end14847; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]14848; GFX8-NEXT:    s_setpc_b64 s[30:31]14849;14850; GFX7-LABEL: global_agent_atomic_fsub_ret_v2f16__offset12b_neg:14851; GFX7:       ; %bb.0:14852; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14853; GFX7-NEXT:    s_movk_i32 s4, 0xf80014854; GFX7-NEXT:    s_mov_b32 s5, -114855; GFX7-NEXT:    s_mov_b32 s7, 0xf00014856; GFX7-NEXT:    s_mov_b32 s6, 014857; GFX7-NEXT:    buffer_load_dword v6, v[0:1], s[4:7], 0 addr6414858; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v014859; GFX7-NEXT:    v_cvt_f16_f32_e32 v0, v314860; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v214861; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, -1, v1, vcc14862; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v014863; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v314864; GFX7-NEXT:    s_mov_b64 s[8:9], 014865; GFX7-NEXT:    s_mov_b32 s4, s614866; GFX7-NEXT:    s_mov_b32 s5, s614867; GFX7-NEXT:    s_waitcnt vmcnt(0)14868; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v614869; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v614870; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v114871; GFX7-NEXT:  .LBB44_1: ; %atomicrmw.start14872; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=114873; GFX7-NEXT:    v_cvt_f16_f32_e32 v1, v114874; GFX7-NEXT:    v_cvt_f16_f32_e32 v0, v014875; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v114876; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v014877; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v114878; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v214879; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v314880; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v614881; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v714882; GFX7-NEXT:    v_or_b32_e32 v7, v0, v114883; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v614884; GFX7-NEXT:    v_or_b32_e32 v6, v8, v014885; GFX7-NEXT:    v_mov_b32_e32 v9, v714886; GFX7-NEXT:    v_mov_b32_e32 v8, v614887; GFX7-NEXT:    buffer_atomic_cmpswap v[8:9], v[4:5], s[4:7], 0 addr64 glc14888; GFX7-NEXT:    s_waitcnt vmcnt(0)14889; GFX7-NEXT:    buffer_wbinvl114890; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v814891; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v814892; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v114893; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v8, v714894; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]14895; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]14896; GFX7-NEXT:    s_cbranch_execnz .LBB44_114897; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end14898; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]14899; GFX7-NEXT:    s_setpc_b64 s[30:31]14900;14901; GFX6-LABEL: global_agent_atomic_fsub_ret_v2f16__offset12b_neg:14902; GFX6:       ; %bb.0:14903; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14904; GFX6-NEXT:    s_movk_i32 s4, 0xf80014905; GFX6-NEXT:    s_mov_b32 s5, -114906; GFX6-NEXT:    s_mov_b32 s7, 0xf00014907; GFX6-NEXT:    s_mov_b32 s6, 014908; GFX6-NEXT:    buffer_load_dword v6, v[0:1], s[4:7], 0 addr6414909; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v014910; GFX6-NEXT:    v_cvt_f16_f32_e32 v0, v314911; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v214912; GFX6-NEXT:    v_addc_u32_e32 v5, vcc, -1, v1, vcc14913; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v014914; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v314915; GFX6-NEXT:    s_mov_b64 s[8:9], 014916; GFX6-NEXT:    s_mov_b32 s4, s614917; GFX6-NEXT:    s_mov_b32 s5, s614918; GFX6-NEXT:    s_waitcnt vmcnt(0)14919; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v614920; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v614921; GFX6-NEXT:    v_cvt_f32_f16_e32 v1, v114922; GFX6-NEXT:  .LBB44_1: ; %atomicrmw.start14923; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=114924; GFX6-NEXT:    v_cvt_f16_f32_e32 v1, v114925; GFX6-NEXT:    v_cvt_f16_f32_e32 v0, v014926; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v114927; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v014928; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 16, v114929; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v214930; GFX6-NEXT:    v_sub_f32_e32 v7, v7, v314931; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v614932; GFX6-NEXT:    s_waitcnt expcnt(0)14933; GFX6-NEXT:    v_cvt_f16_f32_e32 v8, v714934; GFX6-NEXT:    v_or_b32_e32 v7, v0, v114935; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v614936; GFX6-NEXT:    v_or_b32_e32 v6, v8, v014937; GFX6-NEXT:    v_mov_b32_e32 v9, v714938; GFX6-NEXT:    v_mov_b32_e32 v8, v614939; GFX6-NEXT:    buffer_atomic_cmpswap v[8:9], v[4:5], s[4:7], 0 addr64 glc14940; GFX6-NEXT:    s_waitcnt vmcnt(0)14941; GFX6-NEXT:    buffer_wbinvl114942; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v814943; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v814944; GFX6-NEXT:    v_cvt_f32_f16_e32 v1, v114945; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v8, v714946; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]14947; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]14948; GFX6-NEXT:    s_cbranch_execnz .LBB44_114949; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end14950; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]14951; GFX6-NEXT:    s_waitcnt expcnt(0)14952; GFX6-NEXT:    s_setpc_b64 s[30:31]14953  %gep = getelementptr <2 x half>, ptr addrspace(1) %ptr, i64 -51214954  %result = atomicrmw fsub ptr addrspace(1) %gep, <2 x half> %val syncscope("agent") seq_cst14955  ret <2 x half> %result14956}14957 14958define void @global_agent_atomic_fsub_noret_v2f16(ptr addrspace(1) %ptr, <2 x half> %val) #0 {14959; GFX12-LABEL: global_agent_atomic_fsub_noret_v2f16:14960; GFX12:       ; %bb.0:14961; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014962; GFX12-NEXT:    s_wait_expcnt 0x014963; GFX12-NEXT:    s_wait_samplecnt 0x014964; GFX12-NEXT:    s_wait_bvhcnt 0x014965; GFX12-NEXT:    s_wait_kmcnt 0x014966; GFX12-NEXT:    global_load_b32 v4, v[0:1], off14967; GFX12-NEXT:    s_mov_b32 s0, 014968; GFX12-NEXT:  .LBB45_1: ; %atomicrmw.start14969; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=114970; GFX12-NEXT:    s_wait_loadcnt 0x014971; GFX12-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]14972; GFX12-NEXT:    s_wait_storecnt 0x014973; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV14974; GFX12-NEXT:    s_wait_loadcnt 0x014975; GFX12-NEXT:    global_inv scope:SCOPE_DEV14976; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414977; GFX12-NEXT:    v_mov_b32_e32 v4, v314978; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14979; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s014980; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14981; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014982; GFX12-NEXT:    s_cbranch_execnz .LBB45_114983; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end14984; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s014985; GFX12-NEXT:    s_wait_loadcnt 0x014986; GFX12-NEXT:    s_setpc_b64 s[30:31]14987;14988; GFX942-LABEL: global_agent_atomic_fsub_noret_v2f16:14989; GFX942:       ; %bb.0:14990; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14991; GFX942-NEXT:    global_load_dword v5, v[0:1], off14992; GFX942-NEXT:    s_mov_b64 s[0:1], 014993; GFX942-NEXT:  .LBB45_1: ; %atomicrmw.start14994; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=114995; GFX942-NEXT:    s_waitcnt vmcnt(0)14996; GFX942-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]14997; GFX942-NEXT:    buffer_wbl2 sc114998; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off sc014999; GFX942-NEXT:    s_waitcnt vmcnt(0)15000; GFX942-NEXT:    buffer_inv sc115001; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v515002; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]15003; GFX942-NEXT:    v_mov_b32_e32 v5, v315004; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]15005; GFX942-NEXT:    s_cbranch_execnz .LBB45_115006; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end15007; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]15008; GFX942-NEXT:    s_setpc_b64 s[30:31]15009;15010; GFX11-LABEL: global_agent_atomic_fsub_noret_v2f16:15011; GFX11:       ; %bb.0:15012; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15013; GFX11-NEXT:    global_load_b32 v4, v[0:1], off15014; GFX11-NEXT:    s_mov_b32 s0, 015015; GFX11-NEXT:  .LBB45_1: ; %atomicrmw.start15016; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=115017; GFX11-NEXT:    s_waitcnt vmcnt(0)15018; GFX11-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15019; GFX11-NEXT:    s_waitcnt_vscnt null, 0x015020; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc15021; GFX11-NEXT:    s_waitcnt vmcnt(0)15022; GFX11-NEXT:    buffer_gl1_inv15023; GFX11-NEXT:    buffer_gl0_inv15024; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v415025; GFX11-NEXT:    v_mov_b32_e32 v4, v315026; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s015027; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15028; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015029; GFX11-NEXT:    s_cbranch_execnz .LBB45_115030; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end15031; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s015032; GFX11-NEXT:    s_setpc_b64 s[30:31]15033;15034; GFX10-LABEL: global_agent_atomic_fsub_noret_v2f16:15035; GFX10:       ; %bb.0:15036; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15037; GFX10-NEXT:    global_load_dword v4, v[0:1], off15038; GFX10-NEXT:    s_mov_b32 s4, 015039; GFX10-NEXT:  .LBB45_1: ; %atomicrmw.start15040; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=115041; GFX10-NEXT:    s_waitcnt vmcnt(0)15042; GFX10-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15043; GFX10-NEXT:    s_waitcnt_vscnt null, 0x015044; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc15045; GFX10-NEXT:    s_waitcnt vmcnt(0)15046; GFX10-NEXT:    buffer_gl1_inv15047; GFX10-NEXT:    buffer_gl0_inv15048; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v415049; GFX10-NEXT:    v_mov_b32_e32 v4, v315050; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s415051; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s415052; GFX10-NEXT:    s_cbranch_execnz .LBB45_115053; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end15054; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s415055; GFX10-NEXT:    s_setpc_b64 s[30:31]15056;15057; GFX90A-LABEL: global_agent_atomic_fsub_noret_v2f16:15058; GFX90A:       ; %bb.0:15059; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15060; GFX90A-NEXT:    global_load_dword v5, v[0:1], off15061; GFX90A-NEXT:    s_mov_b64 s[4:5], 015062; GFX90A-NEXT:  .LBB45_1: ; %atomicrmw.start15063; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=115064; GFX90A-NEXT:    s_waitcnt vmcnt(0)15065; GFX90A-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]15066; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off glc15067; GFX90A-NEXT:    s_waitcnt vmcnt(0)15068; GFX90A-NEXT:    buffer_wbinvl115069; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v515070; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15071; GFX90A-NEXT:    v_mov_b32_e32 v5, v315072; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]15073; GFX90A-NEXT:    s_cbranch_execnz .LBB45_115074; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end15075; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]15076; GFX90A-NEXT:    s_setpc_b64 s[30:31]15077;15078; GFX908-LABEL: global_agent_atomic_fsub_noret_v2f16:15079; GFX908:       ; %bb.0:15080; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15081; GFX908-NEXT:    global_load_dword v4, v[0:1], off15082; GFX908-NEXT:    s_mov_b64 s[4:5], 015083; GFX908-NEXT:  .LBB45_1: ; %atomicrmw.start15084; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=115085; GFX908-NEXT:    s_waitcnt vmcnt(0)15086; GFX908-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15087; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc15088; GFX908-NEXT:    s_waitcnt vmcnt(0)15089; GFX908-NEXT:    buffer_wbinvl115090; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v415091; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15092; GFX908-NEXT:    v_mov_b32_e32 v4, v315093; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]15094; GFX908-NEXT:    s_cbranch_execnz .LBB45_115095; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end15096; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]15097; GFX908-NEXT:    s_setpc_b64 s[30:31]15098;15099; GFX8-LABEL: global_agent_atomic_fsub_noret_v2f16:15100; GFX8:       ; %bb.0:15101; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15102; GFX8-NEXT:    flat_load_dword v4, v[0:1]15103; GFX8-NEXT:    s_mov_b64 s[4:5], 015104; GFX8-NEXT:  .LBB45_1: ; %atomicrmw.start15105; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=115106; GFX8-NEXT:    s_waitcnt vmcnt(0)15107; GFX8-NEXT:    v_sub_f16_sdwa v3, v4, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_115108; GFX8-NEXT:    v_sub_f16_e32 v5, v4, v215109; GFX8-NEXT:    v_or_b32_e32 v3, v5, v315110; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc15111; GFX8-NEXT:    s_waitcnt vmcnt(0)15112; GFX8-NEXT:    buffer_wbinvl115113; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v415114; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15115; GFX8-NEXT:    v_mov_b32_e32 v4, v315116; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]15117; GFX8-NEXT:    s_cbranch_execnz .LBB45_115118; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end15119; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]15120; GFX8-NEXT:    s_setpc_b64 s[30:31]15121;15122; GFX7-LABEL: global_agent_atomic_fsub_noret_v2f16:15123; GFX7:       ; %bb.0:15124; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15125; GFX7-NEXT:    s_mov_b32 s6, 015126; GFX7-NEXT:    s_mov_b32 s7, 0xf00015127; GFX7-NEXT:    s_mov_b32 s4, s615128; GFX7-NEXT:    s_mov_b32 s5, s615129; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr6415130; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v315131; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v215132; GFX7-NEXT:    s_mov_b64 s[8:9], 015133; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v315134; GFX7-NEXT:    s_waitcnt vmcnt(0)15135; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v515136; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v515137; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v315138; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v615139; GFX7-NEXT:  .LBB45_1: ; %atomicrmw.start15140; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=115141; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v515142; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v415143; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v515144; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v415145; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v515146; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v215147; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v315148; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v615149; GFX7-NEXT:    v_cvt_f16_f32_e32 v7, v715150; GFX7-NEXT:    v_or_b32_e32 v6, v4, v515151; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v815152; GFX7-NEXT:    v_or_b32_e32 v5, v7, v415153; GFX7-NEXT:    v_mov_b32_e32 v8, v615154; GFX7-NEXT:    v_mov_b32_e32 v7, v515155; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc15156; GFX7-NEXT:    s_waitcnt vmcnt(0)15157; GFX7-NEXT:    buffer_wbinvl115158; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v715159; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v715160; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v515161; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v615162; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]15163; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]15164; GFX7-NEXT:    s_cbranch_execnz .LBB45_115165; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end15166; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]15167; GFX7-NEXT:    s_setpc_b64 s[30:31]15168;15169; GFX6-LABEL: global_agent_atomic_fsub_noret_v2f16:15170; GFX6:       ; %bb.0:15171; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15172; GFX6-NEXT:    s_mov_b32 s6, 015173; GFX6-NEXT:    s_mov_b32 s7, 0xf00015174; GFX6-NEXT:    s_mov_b32 s4, s615175; GFX6-NEXT:    s_mov_b32 s5, s615176; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr6415177; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v315178; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v215179; GFX6-NEXT:    s_mov_b64 s[8:9], 015180; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v315181; GFX6-NEXT:    s_waitcnt vmcnt(0)15182; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v515183; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v515184; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v315185; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v615186; GFX6-NEXT:  .LBB45_1: ; %atomicrmw.start15187; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=115188; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v515189; GFX6-NEXT:    v_cvt_f16_f32_e32 v4, v415190; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v515191; GFX6-NEXT:    s_waitcnt expcnt(0)15192; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v415193; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 16, v515194; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v215195; GFX6-NEXT:    v_sub_f32_e32 v7, v7, v315196; GFX6-NEXT:    v_cvt_f16_f32_e32 v8, v615197; GFX6-NEXT:    v_cvt_f16_f32_e32 v7, v715198; GFX6-NEXT:    v_or_b32_e32 v6, v4, v515199; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v815200; GFX6-NEXT:    v_or_b32_e32 v5, v7, v415201; GFX6-NEXT:    v_mov_b32_e32 v8, v615202; GFX6-NEXT:    v_mov_b32_e32 v7, v515203; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc15204; GFX6-NEXT:    s_waitcnt vmcnt(0)15205; GFX6-NEXT:    buffer_wbinvl115206; GFX6-NEXT:    v_lshrrev_b32_e32 v5, 16, v715207; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v715208; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v515209; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v615210; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]15211; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]15212; GFX6-NEXT:    s_cbranch_execnz .LBB45_115213; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end15214; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]15215; GFX6-NEXT:    s_waitcnt expcnt(0)15216; GFX6-NEXT:    s_setpc_b64 s[30:31]15217  %unused = atomicrmw fsub ptr addrspace(1) %ptr, <2 x half> %val syncscope("agent") seq_cst15218  ret void15219}15220 15221define void @global_agent_atomic_fsub_noret_v2f16__offset12b_pos(ptr addrspace(1) %ptr, <2 x half> %val) #0 {15222; GFX12-LABEL: global_agent_atomic_fsub_noret_v2f16__offset12b_pos:15223; GFX12:       ; %bb.0:15224; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015225; GFX12-NEXT:    s_wait_expcnt 0x015226; GFX12-NEXT:    s_wait_samplecnt 0x015227; GFX12-NEXT:    s_wait_bvhcnt 0x015228; GFX12-NEXT:    s_wait_kmcnt 0x015229; GFX12-NEXT:    global_load_b32 v4, v[0:1], off offset:204415230; GFX12-NEXT:    s_mov_b32 s0, 015231; GFX12-NEXT:  .LBB46_1: ; %atomicrmw.start15232; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=115233; GFX12-NEXT:    s_wait_loadcnt 0x015234; GFX12-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15235; GFX12-NEXT:    s_wait_storecnt 0x015236; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV15237; GFX12-NEXT:    s_wait_loadcnt 0x015238; GFX12-NEXT:    global_inv scope:SCOPE_DEV15239; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v415240; GFX12-NEXT:    v_mov_b32_e32 v4, v315241; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15242; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s015243; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15244; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015245; GFX12-NEXT:    s_cbranch_execnz .LBB46_115246; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end15247; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s015248; GFX12-NEXT:    s_wait_loadcnt 0x015249; GFX12-NEXT:    s_setpc_b64 s[30:31]15250;15251; GFX942-LABEL: global_agent_atomic_fsub_noret_v2f16__offset12b_pos:15252; GFX942:       ; %bb.0:15253; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15254; GFX942-NEXT:    global_load_dword v5, v[0:1], off offset:204415255; GFX942-NEXT:    s_mov_b64 s[0:1], 015256; GFX942-NEXT:  .LBB46_1: ; %atomicrmw.start15257; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=115258; GFX942-NEXT:    s_waitcnt vmcnt(0)15259; GFX942-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]15260; GFX942-NEXT:    buffer_wbl2 sc115261; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 sc015262; GFX942-NEXT:    s_waitcnt vmcnt(0)15263; GFX942-NEXT:    buffer_inv sc115264; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v515265; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]15266; GFX942-NEXT:    v_mov_b32_e32 v5, v315267; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]15268; GFX942-NEXT:    s_cbranch_execnz .LBB46_115269; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end15270; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]15271; GFX942-NEXT:    s_setpc_b64 s[30:31]15272;15273; GFX11-LABEL: global_agent_atomic_fsub_noret_v2f16__offset12b_pos:15274; GFX11:       ; %bb.0:15275; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15276; GFX11-NEXT:    global_load_b32 v4, v[0:1], off offset:204415277; GFX11-NEXT:    s_mov_b32 s0, 015278; GFX11-NEXT:  .LBB46_1: ; %atomicrmw.start15279; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=115280; GFX11-NEXT:    s_waitcnt vmcnt(0)15281; GFX11-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15282; GFX11-NEXT:    s_waitcnt_vscnt null, 0x015283; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 glc15284; GFX11-NEXT:    s_waitcnt vmcnt(0)15285; GFX11-NEXT:    buffer_gl1_inv15286; GFX11-NEXT:    buffer_gl0_inv15287; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v415288; GFX11-NEXT:    v_mov_b32_e32 v4, v315289; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s015290; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15291; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015292; GFX11-NEXT:    s_cbranch_execnz .LBB46_115293; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end15294; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s015295; GFX11-NEXT:    s_setpc_b64 s[30:31]15296;15297; GFX10-LABEL: global_agent_atomic_fsub_noret_v2f16__offset12b_pos:15298; GFX10:       ; %bb.0:15299; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15300; GFX10-NEXT:    global_load_dword v4, v[0:1], off offset:204415301; GFX10-NEXT:    s_mov_b32 s4, 015302; GFX10-NEXT:  .LBB46_1: ; %atomicrmw.start15303; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=115304; GFX10-NEXT:    s_waitcnt vmcnt(0)15305; GFX10-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15306; GFX10-NEXT:    s_waitcnt_vscnt null, 0x015307; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc15308; GFX10-NEXT:    s_waitcnt vmcnt(0)15309; GFX10-NEXT:    buffer_gl1_inv15310; GFX10-NEXT:    buffer_gl0_inv15311; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v415312; GFX10-NEXT:    v_mov_b32_e32 v4, v315313; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s415314; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s415315; GFX10-NEXT:    s_cbranch_execnz .LBB46_115316; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end15317; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s415318; GFX10-NEXT:    s_setpc_b64 s[30:31]15319;15320; GFX90A-LABEL: global_agent_atomic_fsub_noret_v2f16__offset12b_pos:15321; GFX90A:       ; %bb.0:15322; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15323; GFX90A-NEXT:    global_load_dword v5, v[0:1], off offset:204415324; GFX90A-NEXT:    s_mov_b64 s[4:5], 015325; GFX90A-NEXT:  .LBB46_1: ; %atomicrmw.start15326; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=115327; GFX90A-NEXT:    s_waitcnt vmcnt(0)15328; GFX90A-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]15329; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 glc15330; GFX90A-NEXT:    s_waitcnt vmcnt(0)15331; GFX90A-NEXT:    buffer_wbinvl115332; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v515333; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15334; GFX90A-NEXT:    v_mov_b32_e32 v5, v315335; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]15336; GFX90A-NEXT:    s_cbranch_execnz .LBB46_115337; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end15338; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]15339; GFX90A-NEXT:    s_setpc_b64 s[30:31]15340;15341; GFX908-LABEL: global_agent_atomic_fsub_noret_v2f16__offset12b_pos:15342; GFX908:       ; %bb.0:15343; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15344; GFX908-NEXT:    global_load_dword v4, v[0:1], off offset:204415345; GFX908-NEXT:    s_mov_b64 s[4:5], 015346; GFX908-NEXT:  .LBB46_1: ; %atomicrmw.start15347; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=115348; GFX908-NEXT:    s_waitcnt vmcnt(0)15349; GFX908-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15350; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc15351; GFX908-NEXT:    s_waitcnt vmcnt(0)15352; GFX908-NEXT:    buffer_wbinvl115353; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v415354; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15355; GFX908-NEXT:    v_mov_b32_e32 v4, v315356; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]15357; GFX908-NEXT:    s_cbranch_execnz .LBB46_115358; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end15359; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]15360; GFX908-NEXT:    s_setpc_b64 s[30:31]15361;15362; GFX8-LABEL: global_agent_atomic_fsub_noret_v2f16__offset12b_pos:15363; GFX8:       ; %bb.0:15364; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15365; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v015366; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc15367; GFX8-NEXT:    flat_load_dword v4, v[0:1]15368; GFX8-NEXT:    s_mov_b64 s[4:5], 015369; GFX8-NEXT:  .LBB46_1: ; %atomicrmw.start15370; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=115371; GFX8-NEXT:    s_waitcnt vmcnt(0)15372; GFX8-NEXT:    v_sub_f16_sdwa v3, v4, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_115373; GFX8-NEXT:    v_sub_f16_e32 v5, v4, v215374; GFX8-NEXT:    v_or_b32_e32 v3, v5, v315375; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc15376; GFX8-NEXT:    s_waitcnt vmcnt(0)15377; GFX8-NEXT:    buffer_wbinvl115378; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v415379; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15380; GFX8-NEXT:    v_mov_b32_e32 v4, v315381; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]15382; GFX8-NEXT:    s_cbranch_execnz .LBB46_115383; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end15384; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]15385; GFX8-NEXT:    s_setpc_b64 s[30:31]15386;15387; GFX7-LABEL: global_agent_atomic_fsub_noret_v2f16__offset12b_pos:15388; GFX7:       ; %bb.0:15389; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15390; GFX7-NEXT:    s_mov_b32 s6, 015391; GFX7-NEXT:    s_mov_b32 s7, 0xf00015392; GFX7-NEXT:    s_mov_b32 s4, s615393; GFX7-NEXT:    s_mov_b32 s5, s615394; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204415395; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v315396; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v215397; GFX7-NEXT:    s_mov_b64 s[8:9], 015398; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v315399; GFX7-NEXT:    s_waitcnt vmcnt(0)15400; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v515401; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v515402; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v315403; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v615404; GFX7-NEXT:  .LBB46_1: ; %atomicrmw.start15405; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=115406; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v515407; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v415408; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v515409; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v415410; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v515411; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v215412; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v315413; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v615414; GFX7-NEXT:    v_cvt_f16_f32_e32 v7, v715415; GFX7-NEXT:    v_or_b32_e32 v6, v4, v515416; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v815417; GFX7-NEXT:    v_or_b32_e32 v5, v7, v415418; GFX7-NEXT:    v_mov_b32_e32 v8, v615419; GFX7-NEXT:    v_mov_b32_e32 v7, v515420; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 offset:2044 glc15421; GFX7-NEXT:    s_waitcnt vmcnt(0)15422; GFX7-NEXT:    buffer_wbinvl115423; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v715424; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v715425; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v515426; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v615427; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]15428; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]15429; GFX7-NEXT:    s_cbranch_execnz .LBB46_115430; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end15431; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]15432; GFX7-NEXT:    s_setpc_b64 s[30:31]15433;15434; GFX6-LABEL: global_agent_atomic_fsub_noret_v2f16__offset12b_pos:15435; GFX6:       ; %bb.0:15436; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15437; GFX6-NEXT:    s_mov_b32 s6, 015438; GFX6-NEXT:    s_mov_b32 s7, 0xf00015439; GFX6-NEXT:    s_mov_b32 s4, s615440; GFX6-NEXT:    s_mov_b32 s5, s615441; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204415442; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v315443; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v215444; GFX6-NEXT:    s_mov_b64 s[8:9], 015445; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v315446; GFX6-NEXT:    s_waitcnt vmcnt(0)15447; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v515448; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v515449; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v315450; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v615451; GFX6-NEXT:  .LBB46_1: ; %atomicrmw.start15452; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=115453; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v515454; GFX6-NEXT:    v_cvt_f16_f32_e32 v4, v415455; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v515456; GFX6-NEXT:    s_waitcnt expcnt(0)15457; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v415458; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 16, v515459; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v215460; GFX6-NEXT:    v_sub_f32_e32 v7, v7, v315461; GFX6-NEXT:    v_cvt_f16_f32_e32 v8, v615462; GFX6-NEXT:    v_cvt_f16_f32_e32 v7, v715463; GFX6-NEXT:    v_or_b32_e32 v6, v4, v515464; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v815465; GFX6-NEXT:    v_or_b32_e32 v5, v7, v415466; GFX6-NEXT:    v_mov_b32_e32 v8, v615467; GFX6-NEXT:    v_mov_b32_e32 v7, v515468; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 offset:2044 glc15469; GFX6-NEXT:    s_waitcnt vmcnt(0)15470; GFX6-NEXT:    buffer_wbinvl115471; GFX6-NEXT:    v_lshrrev_b32_e32 v5, 16, v715472; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v715473; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v515474; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v615475; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]15476; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]15477; GFX6-NEXT:    s_cbranch_execnz .LBB46_115478; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end15479; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]15480; GFX6-NEXT:    s_waitcnt expcnt(0)15481; GFX6-NEXT:    s_setpc_b64 s[30:31]15482  %gep = getelementptr <2 x half>, ptr addrspace(1) %ptr, i64 51115483  %unused = atomicrmw fsub ptr addrspace(1) %gep, <2 x half> %val syncscope("agent") seq_cst15484  ret void15485}15486 15487define void @global_agent_atomic_fsub_noret_v2f16__offset12b_neg(ptr addrspace(1) %ptr, <2 x half> %val) #0 {15488; GFX12-LABEL: global_agent_atomic_fsub_noret_v2f16__offset12b_neg:15489; GFX12:       ; %bb.0:15490; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015491; GFX12-NEXT:    s_wait_expcnt 0x015492; GFX12-NEXT:    s_wait_samplecnt 0x015493; GFX12-NEXT:    s_wait_bvhcnt 0x015494; GFX12-NEXT:    s_wait_kmcnt 0x015495; GFX12-NEXT:    global_load_b32 v4, v[0:1], off offset:-204815496; GFX12-NEXT:    s_mov_b32 s0, 015497; GFX12-NEXT:  .LBB47_1: ; %atomicrmw.start15498; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=115499; GFX12-NEXT:    s_wait_loadcnt 0x015500; GFX12-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15501; GFX12-NEXT:    s_wait_storecnt 0x015502; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV15503; GFX12-NEXT:    s_wait_loadcnt 0x015504; GFX12-NEXT:    global_inv scope:SCOPE_DEV15505; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v415506; GFX12-NEXT:    v_mov_b32_e32 v4, v315507; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15508; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s015509; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15510; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015511; GFX12-NEXT:    s_cbranch_execnz .LBB47_115512; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end15513; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s015514; GFX12-NEXT:    s_wait_loadcnt 0x015515; GFX12-NEXT:    s_setpc_b64 s[30:31]15516;15517; GFX942-LABEL: global_agent_atomic_fsub_noret_v2f16__offset12b_neg:15518; GFX942:       ; %bb.0:15519; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15520; GFX942-NEXT:    global_load_dword v5, v[0:1], off offset:-204815521; GFX942-NEXT:    s_mov_b64 s[0:1], 015522; GFX942-NEXT:  .LBB47_1: ; %atomicrmw.start15523; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=115524; GFX942-NEXT:    s_waitcnt vmcnt(0)15525; GFX942-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]15526; GFX942-NEXT:    buffer_wbl2 sc115527; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:-2048 sc015528; GFX942-NEXT:    s_waitcnt vmcnt(0)15529; GFX942-NEXT:    buffer_inv sc115530; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v515531; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]15532; GFX942-NEXT:    v_mov_b32_e32 v5, v315533; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]15534; GFX942-NEXT:    s_cbranch_execnz .LBB47_115535; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end15536; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]15537; GFX942-NEXT:    s_setpc_b64 s[30:31]15538;15539; GFX11-LABEL: global_agent_atomic_fsub_noret_v2f16__offset12b_neg:15540; GFX11:       ; %bb.0:15541; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15542; GFX11-NEXT:    global_load_b32 v4, v[0:1], off offset:-204815543; GFX11-NEXT:    s_mov_b32 s0, 015544; GFX11-NEXT:  .LBB47_1: ; %atomicrmw.start15545; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=115546; GFX11-NEXT:    s_waitcnt vmcnt(0)15547; GFX11-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15548; GFX11-NEXT:    s_waitcnt_vscnt null, 0x015549; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:-2048 glc15550; GFX11-NEXT:    s_waitcnt vmcnt(0)15551; GFX11-NEXT:    buffer_gl1_inv15552; GFX11-NEXT:    buffer_gl0_inv15553; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v415554; GFX11-NEXT:    v_mov_b32_e32 v4, v315555; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s015556; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15557; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015558; GFX11-NEXT:    s_cbranch_execnz .LBB47_115559; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end15560; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s015561; GFX11-NEXT:    s_setpc_b64 s[30:31]15562;15563; GFX10-LABEL: global_agent_atomic_fsub_noret_v2f16__offset12b_neg:15564; GFX10:       ; %bb.0:15565; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15566; GFX10-NEXT:    global_load_dword v4, v[0:1], off offset:-204815567; GFX10-NEXT:    s_mov_b32 s4, 015568; GFX10-NEXT:  .LBB47_1: ; %atomicrmw.start15569; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=115570; GFX10-NEXT:    s_waitcnt vmcnt(0)15571; GFX10-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15572; GFX10-NEXT:    s_waitcnt_vscnt null, 0x015573; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:-2048 glc15574; GFX10-NEXT:    s_waitcnt vmcnt(0)15575; GFX10-NEXT:    buffer_gl1_inv15576; GFX10-NEXT:    buffer_gl0_inv15577; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v415578; GFX10-NEXT:    v_mov_b32_e32 v4, v315579; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s415580; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s415581; GFX10-NEXT:    s_cbranch_execnz .LBB47_115582; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end15583; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s415584; GFX10-NEXT:    s_setpc_b64 s[30:31]15585;15586; GFX90A-LABEL: global_agent_atomic_fsub_noret_v2f16__offset12b_neg:15587; GFX90A:       ; %bb.0:15588; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15589; GFX90A-NEXT:    global_load_dword v5, v[0:1], off offset:-204815590; GFX90A-NEXT:    s_mov_b64 s[4:5], 015591; GFX90A-NEXT:  .LBB47_1: ; %atomicrmw.start15592; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=115593; GFX90A-NEXT:    s_waitcnt vmcnt(0)15594; GFX90A-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]15595; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:-2048 glc15596; GFX90A-NEXT:    s_waitcnt vmcnt(0)15597; GFX90A-NEXT:    buffer_wbinvl115598; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v515599; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15600; GFX90A-NEXT:    v_mov_b32_e32 v5, v315601; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]15602; GFX90A-NEXT:    s_cbranch_execnz .LBB47_115603; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end15604; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]15605; GFX90A-NEXT:    s_setpc_b64 s[30:31]15606;15607; GFX908-LABEL: global_agent_atomic_fsub_noret_v2f16__offset12b_neg:15608; GFX908:       ; %bb.0:15609; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15610; GFX908-NEXT:    global_load_dword v4, v[0:1], off offset:-204815611; GFX908-NEXT:    s_mov_b64 s[4:5], 015612; GFX908-NEXT:  .LBB47_1: ; %atomicrmw.start15613; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=115614; GFX908-NEXT:    s_waitcnt vmcnt(0)15615; GFX908-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15616; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:-2048 glc15617; GFX908-NEXT:    s_waitcnt vmcnt(0)15618; GFX908-NEXT:    buffer_wbinvl115619; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v415620; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15621; GFX908-NEXT:    v_mov_b32_e32 v4, v315622; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]15623; GFX908-NEXT:    s_cbranch_execnz .LBB47_115624; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end15625; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]15626; GFX908-NEXT:    s_setpc_b64 s[30:31]15627;15628; GFX8-LABEL: global_agent_atomic_fsub_noret_v2f16__offset12b_neg:15629; GFX8:       ; %bb.0:15630; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15631; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffff800, v015632; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc15633; GFX8-NEXT:    flat_load_dword v4, v[0:1]15634; GFX8-NEXT:    s_mov_b64 s[4:5], 015635; GFX8-NEXT:  .LBB47_1: ; %atomicrmw.start15636; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=115637; GFX8-NEXT:    s_waitcnt vmcnt(0)15638; GFX8-NEXT:    v_sub_f16_sdwa v3, v4, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_115639; GFX8-NEXT:    v_sub_f16_e32 v5, v4, v215640; GFX8-NEXT:    v_or_b32_e32 v3, v5, v315641; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc15642; GFX8-NEXT:    s_waitcnt vmcnt(0)15643; GFX8-NEXT:    buffer_wbinvl115644; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v415645; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15646; GFX8-NEXT:    v_mov_b32_e32 v4, v315647; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]15648; GFX8-NEXT:    s_cbranch_execnz .LBB47_115649; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end15650; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]15651; GFX8-NEXT:    s_setpc_b64 s[30:31]15652;15653; GFX7-LABEL: global_agent_atomic_fsub_noret_v2f16__offset12b_neg:15654; GFX7:       ; %bb.0:15655; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15656; GFX7-NEXT:    s_movk_i32 s4, 0xf80015657; GFX7-NEXT:    s_mov_b32 s5, -115658; GFX7-NEXT:    s_mov_b32 s7, 0xf00015659; GFX7-NEXT:    s_mov_b32 s6, 015660; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr6415661; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v315662; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v215663; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v015664; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v315665; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc15666; GFX7-NEXT:    s_mov_b64 s[8:9], 015667; GFX7-NEXT:    s_mov_b32 s4, s615668; GFX7-NEXT:    s_mov_b32 s5, s615669; GFX7-NEXT:    s_waitcnt vmcnt(0)15670; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v515671; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v515672; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v315673; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v615674; GFX7-NEXT:  .LBB47_1: ; %atomicrmw.start15675; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=115676; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v515677; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v415678; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v515679; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v415680; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v515681; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v215682; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v315683; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v615684; GFX7-NEXT:    v_cvt_f16_f32_e32 v7, v715685; GFX7-NEXT:    v_or_b32_e32 v6, v4, v515686; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v815687; GFX7-NEXT:    v_or_b32_e32 v5, v7, v415688; GFX7-NEXT:    v_mov_b32_e32 v8, v615689; GFX7-NEXT:    v_mov_b32_e32 v7, v515690; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc15691; GFX7-NEXT:    s_waitcnt vmcnt(0)15692; GFX7-NEXT:    buffer_wbinvl115693; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v715694; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v715695; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v515696; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v615697; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]15698; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]15699; GFX7-NEXT:    s_cbranch_execnz .LBB47_115700; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end15701; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]15702; GFX7-NEXT:    s_setpc_b64 s[30:31]15703;15704; GFX6-LABEL: global_agent_atomic_fsub_noret_v2f16__offset12b_neg:15705; GFX6:       ; %bb.0:15706; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15707; GFX6-NEXT:    s_movk_i32 s4, 0xf80015708; GFX6-NEXT:    s_mov_b32 s5, -115709; GFX6-NEXT:    s_mov_b32 s7, 0xf00015710; GFX6-NEXT:    s_mov_b32 s6, 015711; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr6415712; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v315713; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v215714; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v015715; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v315716; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc15717; GFX6-NEXT:    s_mov_b64 s[8:9], 015718; GFX6-NEXT:    s_mov_b32 s4, s615719; GFX6-NEXT:    s_mov_b32 s5, s615720; GFX6-NEXT:    s_waitcnt vmcnt(0)15721; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v515722; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v515723; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v315724; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v615725; GFX6-NEXT:  .LBB47_1: ; %atomicrmw.start15726; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=115727; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v515728; GFX6-NEXT:    v_cvt_f16_f32_e32 v4, v415729; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v515730; GFX6-NEXT:    s_waitcnt expcnt(0)15731; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v415732; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 16, v515733; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v215734; GFX6-NEXT:    v_sub_f32_e32 v7, v7, v315735; GFX6-NEXT:    v_cvt_f16_f32_e32 v8, v615736; GFX6-NEXT:    v_cvt_f16_f32_e32 v7, v715737; GFX6-NEXT:    v_or_b32_e32 v6, v4, v515738; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v815739; GFX6-NEXT:    v_or_b32_e32 v5, v7, v415740; GFX6-NEXT:    v_mov_b32_e32 v8, v615741; GFX6-NEXT:    v_mov_b32_e32 v7, v515742; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc15743; GFX6-NEXT:    s_waitcnt vmcnt(0)15744; GFX6-NEXT:    buffer_wbinvl115745; GFX6-NEXT:    v_lshrrev_b32_e32 v5, 16, v715746; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v715747; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v515748; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v615749; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]15750; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]15751; GFX6-NEXT:    s_cbranch_execnz .LBB47_115752; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end15753; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]15754; GFX6-NEXT:    s_waitcnt expcnt(0)15755; GFX6-NEXT:    s_setpc_b64 s[30:31]15756  %gep = getelementptr <2 x half>, ptr addrspace(1) %ptr, i64 -51215757  %unused = atomicrmw fsub ptr addrspace(1) %gep, <2 x half> %val syncscope("agent") seq_cst15758  ret void15759}15760 15761define <2 x half> @global_system_atomic_fsub_ret_v2f16__offset12b_pos(ptr addrspace(1) %ptr, <2 x half> %val) #0 {15762; GFX12-LABEL: global_system_atomic_fsub_ret_v2f16__offset12b_pos:15763; GFX12:       ; %bb.0:15764; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015765; GFX12-NEXT:    s_wait_expcnt 0x015766; GFX12-NEXT:    s_wait_samplecnt 0x015767; GFX12-NEXT:    s_wait_bvhcnt 0x015768; GFX12-NEXT:    s_wait_kmcnt 0x015769; GFX12-NEXT:    global_load_b32 v3, v[0:1], off offset:204415770; GFX12-NEXT:    s_mov_b32 s0, 015771; GFX12-NEXT:  .LBB48_1: ; %atomicrmw.start15772; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=115773; GFX12-NEXT:    s_wait_loadcnt 0x015774; GFX12-NEXT:    v_mov_b32_e32 v4, v315775; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)15776; GFX12-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15777; GFX12-NEXT:    global_wb scope:SCOPE_SYS15778; GFX12-NEXT:    s_wait_storecnt 0x015779; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS15780; GFX12-NEXT:    s_wait_loadcnt 0x015781; GFX12-NEXT:    global_inv scope:SCOPE_SYS15782; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v415783; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15784; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s015785; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15786; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015787; GFX12-NEXT:    s_cbranch_execnz .LBB48_115788; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end15789; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s015790; GFX12-NEXT:    v_mov_b32_e32 v0, v315791; GFX12-NEXT:    s_wait_loadcnt 0x015792; GFX12-NEXT:    s_setpc_b64 s[30:31]15793;15794; GFX942-LABEL: global_system_atomic_fsub_ret_v2f16__offset12b_pos:15795; GFX942:       ; %bb.0:15796; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15797; GFX942-NEXT:    global_load_dword v5, v[0:1], off offset:204415798; GFX942-NEXT:    s_mov_b64 s[0:1], 015799; GFX942-NEXT:  .LBB48_1: ; %atomicrmw.start15800; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=115801; GFX942-NEXT:    s_waitcnt vmcnt(0)15802; GFX942-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]15803; GFX942-NEXT:    buffer_wbl2 sc0 sc115804; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 sc0 sc115805; GFX942-NEXT:    s_waitcnt vmcnt(0)15806; GFX942-NEXT:    buffer_inv sc0 sc115807; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v515808; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]15809; GFX942-NEXT:    v_mov_b32_e32 v5, v315810; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]15811; GFX942-NEXT:    s_cbranch_execnz .LBB48_115812; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end15813; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]15814; GFX942-NEXT:    v_mov_b32_e32 v0, v315815; GFX942-NEXT:    s_setpc_b64 s[30:31]15816;15817; GFX11-LABEL: global_system_atomic_fsub_ret_v2f16__offset12b_pos:15818; GFX11:       ; %bb.0:15819; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15820; GFX11-NEXT:    global_load_b32 v3, v[0:1], off offset:204415821; GFX11-NEXT:    s_mov_b32 s0, 015822; GFX11-NEXT:  .LBB48_1: ; %atomicrmw.start15823; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=115824; GFX11-NEXT:    s_waitcnt vmcnt(0)15825; GFX11-NEXT:    v_mov_b32_e32 v4, v315826; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)15827; GFX11-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15828; GFX11-NEXT:    s_waitcnt_vscnt null, 0x015829; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 glc15830; GFX11-NEXT:    s_waitcnt vmcnt(0)15831; GFX11-NEXT:    buffer_gl1_inv15832; GFX11-NEXT:    buffer_gl0_inv15833; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v415834; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s015835; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15836; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015837; GFX11-NEXT:    s_cbranch_execnz .LBB48_115838; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end15839; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s015840; GFX11-NEXT:    v_mov_b32_e32 v0, v315841; GFX11-NEXT:    s_setpc_b64 s[30:31]15842;15843; GFX10-LABEL: global_system_atomic_fsub_ret_v2f16__offset12b_pos:15844; GFX10:       ; %bb.0:15845; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15846; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:204415847; GFX10-NEXT:    s_mov_b32 s4, 015848; GFX10-NEXT:  .LBB48_1: ; %atomicrmw.start15849; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=115850; GFX10-NEXT:    s_waitcnt vmcnt(0)15851; GFX10-NEXT:    v_mov_b32_e32 v4, v315852; GFX10-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15853; GFX10-NEXT:    s_waitcnt_vscnt null, 0x015854; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc15855; GFX10-NEXT:    s_waitcnt vmcnt(0)15856; GFX10-NEXT:    buffer_gl1_inv15857; GFX10-NEXT:    buffer_gl0_inv15858; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v415859; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s415860; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s415861; GFX10-NEXT:    s_cbranch_execnz .LBB48_115862; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end15863; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s415864; GFX10-NEXT:    v_mov_b32_e32 v0, v315865; GFX10-NEXT:    s_setpc_b64 s[30:31]15866;15867; GFX90A-LABEL: global_system_atomic_fsub_ret_v2f16__offset12b_pos:15868; GFX90A:       ; %bb.0:15869; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15870; GFX90A-NEXT:    global_load_dword v5, v[0:1], off offset:204415871; GFX90A-NEXT:    s_mov_b64 s[4:5], 015872; GFX90A-NEXT:  .LBB48_1: ; %atomicrmw.start15873; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=115874; GFX90A-NEXT:    s_waitcnt vmcnt(0)15875; GFX90A-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]15876; GFX90A-NEXT:    buffer_wbl215877; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 glc15878; GFX90A-NEXT:    s_waitcnt vmcnt(0)15879; GFX90A-NEXT:    buffer_invl215880; GFX90A-NEXT:    buffer_wbinvl115881; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v515882; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15883; GFX90A-NEXT:    v_mov_b32_e32 v5, v315884; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]15885; GFX90A-NEXT:    s_cbranch_execnz .LBB48_115886; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end15887; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]15888; GFX90A-NEXT:    v_mov_b32_e32 v0, v315889; GFX90A-NEXT:    s_setpc_b64 s[30:31]15890;15891; GFX908-LABEL: global_system_atomic_fsub_ret_v2f16__offset12b_pos:15892; GFX908:       ; %bb.0:15893; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15894; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:204415895; GFX908-NEXT:    s_mov_b64 s[4:5], 015896; GFX908-NEXT:  .LBB48_1: ; %atomicrmw.start15897; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=115898; GFX908-NEXT:    s_waitcnt vmcnt(0)15899; GFX908-NEXT:    v_mov_b32_e32 v4, v315900; GFX908-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]15901; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc15902; GFX908-NEXT:    s_waitcnt vmcnt(0)15903; GFX908-NEXT:    buffer_wbinvl115904; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v415905; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15906; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]15907; GFX908-NEXT:    s_cbranch_execnz .LBB48_115908; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end15909; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]15910; GFX908-NEXT:    v_mov_b32_e32 v0, v315911; GFX908-NEXT:    s_setpc_b64 s[30:31]15912;15913; GFX8-LABEL: global_system_atomic_fsub_ret_v2f16__offset12b_pos:15914; GFX8:       ; %bb.0:15915; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15916; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v015917; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc15918; GFX8-NEXT:    flat_load_dword v0, v[3:4]15919; GFX8-NEXT:    s_mov_b64 s[4:5], 015920; GFX8-NEXT:  .LBB48_1: ; %atomicrmw.start15921; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=115922; GFX8-NEXT:    s_waitcnt vmcnt(0)15923; GFX8-NEXT:    v_mov_b32_e32 v1, v015924; GFX8-NEXT:    v_sub_f16_sdwa v0, v1, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_115925; GFX8-NEXT:    v_sub_f16_e32 v5, v1, v215926; GFX8-NEXT:    v_or_b32_e32 v0, v5, v015927; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc15928; GFX8-NEXT:    s_waitcnt vmcnt(0)15929; GFX8-NEXT:    buffer_wbinvl115930; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v115931; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15932; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]15933; GFX8-NEXT:    s_cbranch_execnz .LBB48_115934; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end15935; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]15936; GFX8-NEXT:    s_setpc_b64 s[30:31]15937;15938; GFX7-LABEL: global_system_atomic_fsub_ret_v2f16__offset12b_pos:15939; GFX7:       ; %bb.0:15940; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15941; GFX7-NEXT:    s_mov_b32 s6, 015942; GFX7-NEXT:    s_mov_b32 s7, 0xf00015943; GFX7-NEXT:    s_mov_b32 s4, s615944; GFX7-NEXT:    s_mov_b32 s5, s615945; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204415946; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v315947; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v215948; GFX7-NEXT:    s_mov_b64 s[8:9], 015949; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v315950; GFX7-NEXT:    s_waitcnt vmcnt(0)15951; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v515952; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v515953; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v315954; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v615955; GFX7-NEXT:  .LBB48_1: ; %atomicrmw.start15956; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=115957; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v315958; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v215959; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v315960; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v215961; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v315962; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v415963; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v515964; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v615965; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v715966; GFX7-NEXT:    v_or_b32_e32 v7, v2, v315967; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v615968; GFX7-NEXT:    v_or_b32_e32 v6, v8, v215969; GFX7-NEXT:    v_mov_b32_e32 v9, v715970; GFX7-NEXT:    v_mov_b32_e32 v8, v615971; GFX7-NEXT:    buffer_atomic_cmpswap v[8:9], v[0:1], s[4:7], 0 addr64 offset:2044 glc15972; GFX7-NEXT:    s_waitcnt vmcnt(0)15973; GFX7-NEXT:    buffer_wbinvl115974; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v815975; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v815976; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v315977; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v8, v715978; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]15979; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]15980; GFX7-NEXT:    s_cbranch_execnz .LBB48_115981; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end15982; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]15983; GFX7-NEXT:    v_mov_b32_e32 v0, v215984; GFX7-NEXT:    v_mov_b32_e32 v1, v315985; GFX7-NEXT:    s_setpc_b64 s[30:31]15986;15987; GFX6-LABEL: global_system_atomic_fsub_ret_v2f16__offset12b_pos:15988; GFX6:       ; %bb.0:15989; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15990; GFX6-NEXT:    s_mov_b32 s6, 015991; GFX6-NEXT:    s_mov_b32 s7, 0xf00015992; GFX6-NEXT:    s_mov_b32 s4, s615993; GFX6-NEXT:    s_mov_b32 s5, s615994; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204415995; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v315996; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v215997; GFX6-NEXT:    s_mov_b64 s[8:9], 015998; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v315999; GFX6-NEXT:    s_waitcnt vmcnt(0)16000; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v516001; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v516002; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v316003; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v616004; GFX6-NEXT:  .LBB48_1: ; %atomicrmw.start16005; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=116006; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v316007; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v216008; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v316009; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v216010; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v316011; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v416012; GFX6-NEXT:    v_sub_f32_e32 v7, v7, v516013; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v616014; GFX6-NEXT:    s_waitcnt expcnt(0)16015; GFX6-NEXT:    v_cvt_f16_f32_e32 v8, v716016; GFX6-NEXT:    v_or_b32_e32 v7, v2, v316017; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v616018; GFX6-NEXT:    v_or_b32_e32 v6, v8, v216019; GFX6-NEXT:    v_mov_b32_e32 v9, v716020; GFX6-NEXT:    v_mov_b32_e32 v8, v616021; GFX6-NEXT:    buffer_atomic_cmpswap v[8:9], v[0:1], s[4:7], 0 addr64 offset:2044 glc16022; GFX6-NEXT:    s_waitcnt vmcnt(0)16023; GFX6-NEXT:    buffer_wbinvl116024; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v816025; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v816026; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v316027; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v8, v716028; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]16029; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]16030; GFX6-NEXT:    s_cbranch_execnz .LBB48_116031; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end16032; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]16033; GFX6-NEXT:    v_mov_b32_e32 v0, v216034; GFX6-NEXT:    v_mov_b32_e32 v1, v316035; GFX6-NEXT:    s_waitcnt expcnt(0)16036; GFX6-NEXT:    s_setpc_b64 s[30:31]16037  %gep = getelementptr <2 x half>, ptr addrspace(1) %ptr, i64 51116038  %result = atomicrmw fsub ptr addrspace(1) %gep, <2 x half> %val seq_cst16039  ret <2 x half> %result16040}16041 16042define void @global_system_atomic_fsub_noret_v2f16__offset12b_pos(ptr addrspace(1) %ptr, <2 x half> %val) #0 {16043; GFX12-LABEL: global_system_atomic_fsub_noret_v2f16__offset12b_pos:16044; GFX12:       ; %bb.0:16045; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x016046; GFX12-NEXT:    s_wait_expcnt 0x016047; GFX12-NEXT:    s_wait_samplecnt 0x016048; GFX12-NEXT:    s_wait_bvhcnt 0x016049; GFX12-NEXT:    s_wait_kmcnt 0x016050; GFX12-NEXT:    global_load_b32 v4, v[0:1], off offset:204416051; GFX12-NEXT:    s_mov_b32 s0, 016052; GFX12-NEXT:  .LBB49_1: ; %atomicrmw.start16053; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=116054; GFX12-NEXT:    s_wait_loadcnt 0x016055; GFX12-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]16056; GFX12-NEXT:    global_wb scope:SCOPE_SYS16057; GFX12-NEXT:    s_wait_storecnt 0x016058; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS16059; GFX12-NEXT:    s_wait_loadcnt 0x016060; GFX12-NEXT:    global_inv scope:SCOPE_SYS16061; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v416062; GFX12-NEXT:    v_mov_b32_e32 v4, v316063; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)16064; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s016065; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)16066; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s016067; GFX12-NEXT:    s_cbranch_execnz .LBB49_116068; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end16069; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s016070; GFX12-NEXT:    s_wait_loadcnt 0x016071; GFX12-NEXT:    s_setpc_b64 s[30:31]16072;16073; GFX942-LABEL: global_system_atomic_fsub_noret_v2f16__offset12b_pos:16074; GFX942:       ; %bb.0:16075; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16076; GFX942-NEXT:    global_load_dword v5, v[0:1], off offset:204416077; GFX942-NEXT:    s_mov_b64 s[0:1], 016078; GFX942-NEXT:  .LBB49_1: ; %atomicrmw.start16079; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=116080; GFX942-NEXT:    s_waitcnt vmcnt(0)16081; GFX942-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]16082; GFX942-NEXT:    buffer_wbl2 sc0 sc116083; GFX942-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 sc0 sc116084; GFX942-NEXT:    s_waitcnt vmcnt(0)16085; GFX942-NEXT:    buffer_inv sc0 sc116086; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v516087; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]16088; GFX942-NEXT:    v_mov_b32_e32 v5, v316089; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]16090; GFX942-NEXT:    s_cbranch_execnz .LBB49_116091; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end16092; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]16093; GFX942-NEXT:    s_setpc_b64 s[30:31]16094;16095; GFX11-LABEL: global_system_atomic_fsub_noret_v2f16__offset12b_pos:16096; GFX11:       ; %bb.0:16097; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16098; GFX11-NEXT:    global_load_b32 v4, v[0:1], off offset:204416099; GFX11-NEXT:    s_mov_b32 s0, 016100; GFX11-NEXT:  .LBB49_1: ; %atomicrmw.start16101; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=116102; GFX11-NEXT:    s_waitcnt vmcnt(0)16103; GFX11-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]16104; GFX11-NEXT:    s_waitcnt_vscnt null, 0x016105; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 glc16106; GFX11-NEXT:    s_waitcnt vmcnt(0)16107; GFX11-NEXT:    buffer_gl1_inv16108; GFX11-NEXT:    buffer_gl0_inv16109; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v416110; GFX11-NEXT:    v_mov_b32_e32 v4, v316111; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s016112; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)16113; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s016114; GFX11-NEXT:    s_cbranch_execnz .LBB49_116115; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end16116; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s016117; GFX11-NEXT:    s_setpc_b64 s[30:31]16118;16119; GFX10-LABEL: global_system_atomic_fsub_noret_v2f16__offset12b_pos:16120; GFX10:       ; %bb.0:16121; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16122; GFX10-NEXT:    global_load_dword v4, v[0:1], off offset:204416123; GFX10-NEXT:    s_mov_b32 s4, 016124; GFX10-NEXT:  .LBB49_1: ; %atomicrmw.start16125; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=116126; GFX10-NEXT:    s_waitcnt vmcnt(0)16127; GFX10-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]16128; GFX10-NEXT:    s_waitcnt_vscnt null, 0x016129; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc16130; GFX10-NEXT:    s_waitcnt vmcnt(0)16131; GFX10-NEXT:    buffer_gl1_inv16132; GFX10-NEXT:    buffer_gl0_inv16133; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v416134; GFX10-NEXT:    v_mov_b32_e32 v4, v316135; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s416136; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s416137; GFX10-NEXT:    s_cbranch_execnz .LBB49_116138; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end16139; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s416140; GFX10-NEXT:    s_setpc_b64 s[30:31]16141;16142; GFX90A-LABEL: global_system_atomic_fsub_noret_v2f16__offset12b_pos:16143; GFX90A:       ; %bb.0:16144; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16145; GFX90A-NEXT:    global_load_dword v5, v[0:1], off offset:204416146; GFX90A-NEXT:    s_mov_b64 s[4:5], 016147; GFX90A-NEXT:  .LBB49_1: ; %atomicrmw.start16148; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=116149; GFX90A-NEXT:    s_waitcnt vmcnt(0)16150; GFX90A-NEXT:    v_pk_add_f16 v4, v5, v2 neg_lo:[0,1] neg_hi:[0,1]16151; GFX90A-NEXT:    buffer_wbl216152; GFX90A-NEXT:    global_atomic_cmpswap v3, v[0:1], v[4:5], off offset:2044 glc16153; GFX90A-NEXT:    s_waitcnt vmcnt(0)16154; GFX90A-NEXT:    buffer_invl216155; GFX90A-NEXT:    buffer_wbinvl116156; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v516157; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]16158; GFX90A-NEXT:    v_mov_b32_e32 v5, v316159; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]16160; GFX90A-NEXT:    s_cbranch_execnz .LBB49_116161; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end16162; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]16163; GFX90A-NEXT:    s_setpc_b64 s[30:31]16164;16165; GFX908-LABEL: global_system_atomic_fsub_noret_v2f16__offset12b_pos:16166; GFX908:       ; %bb.0:16167; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16168; GFX908-NEXT:    global_load_dword v4, v[0:1], off offset:204416169; GFX908-NEXT:    s_mov_b64 s[4:5], 016170; GFX908-NEXT:  .LBB49_1: ; %atomicrmw.start16171; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=116172; GFX908-NEXT:    s_waitcnt vmcnt(0)16173; GFX908-NEXT:    v_pk_add_f16 v3, v4, v2 neg_lo:[0,1] neg_hi:[0,1]16174; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc16175; GFX908-NEXT:    s_waitcnt vmcnt(0)16176; GFX908-NEXT:    buffer_wbinvl116177; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v416178; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]16179; GFX908-NEXT:    v_mov_b32_e32 v4, v316180; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]16181; GFX908-NEXT:    s_cbranch_execnz .LBB49_116182; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end16183; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]16184; GFX908-NEXT:    s_setpc_b64 s[30:31]16185;16186; GFX8-LABEL: global_system_atomic_fsub_noret_v2f16__offset12b_pos:16187; GFX8:       ; %bb.0:16188; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16189; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v016190; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc16191; GFX8-NEXT:    flat_load_dword v4, v[0:1]16192; GFX8-NEXT:    s_mov_b64 s[4:5], 016193; GFX8-NEXT:  .LBB49_1: ; %atomicrmw.start16194; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=116195; GFX8-NEXT:    s_waitcnt vmcnt(0)16196; GFX8-NEXT:    v_sub_f16_sdwa v3, v4, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_116197; GFX8-NEXT:    v_sub_f16_e32 v5, v4, v216198; GFX8-NEXT:    v_or_b32_e32 v3, v5, v316199; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc16200; GFX8-NEXT:    s_waitcnt vmcnt(0)16201; GFX8-NEXT:    buffer_wbinvl116202; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v416203; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]16204; GFX8-NEXT:    v_mov_b32_e32 v4, v316205; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]16206; GFX8-NEXT:    s_cbranch_execnz .LBB49_116207; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end16208; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]16209; GFX8-NEXT:    s_setpc_b64 s[30:31]16210;16211; GFX7-LABEL: global_system_atomic_fsub_noret_v2f16__offset12b_pos:16212; GFX7:       ; %bb.0:16213; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16214; GFX7-NEXT:    s_mov_b32 s6, 016215; GFX7-NEXT:    s_mov_b32 s7, 0xf00016216; GFX7-NEXT:    s_mov_b32 s4, s616217; GFX7-NEXT:    s_mov_b32 s5, s616218; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204416219; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v316220; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v216221; GFX7-NEXT:    s_mov_b64 s[8:9], 016222; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v316223; GFX7-NEXT:    s_waitcnt vmcnt(0)16224; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v516225; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v516226; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v316227; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v616228; GFX7-NEXT:  .LBB49_1: ; %atomicrmw.start16229; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=116230; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v516231; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v416232; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v516233; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v416234; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v516235; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v216236; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v316237; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v616238; GFX7-NEXT:    v_cvt_f16_f32_e32 v7, v716239; GFX7-NEXT:    v_or_b32_e32 v6, v4, v516240; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v816241; GFX7-NEXT:    v_or_b32_e32 v5, v7, v416242; GFX7-NEXT:    v_mov_b32_e32 v8, v616243; GFX7-NEXT:    v_mov_b32_e32 v7, v516244; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 offset:2044 glc16245; GFX7-NEXT:    s_waitcnt vmcnt(0)16246; GFX7-NEXT:    buffer_wbinvl116247; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v716248; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v716249; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v516250; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v616251; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]16252; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]16253; GFX7-NEXT:    s_cbranch_execnz .LBB49_116254; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end16255; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]16256; GFX7-NEXT:    s_setpc_b64 s[30:31]16257;16258; GFX6-LABEL: global_system_atomic_fsub_noret_v2f16__offset12b_pos:16259; GFX6:       ; %bb.0:16260; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16261; GFX6-NEXT:    s_mov_b32 s6, 016262; GFX6-NEXT:    s_mov_b32 s7, 0xf00016263; GFX6-NEXT:    s_mov_b32 s4, s616264; GFX6-NEXT:    s_mov_b32 s5, s616265; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204416266; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v316267; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v216268; GFX6-NEXT:    s_mov_b64 s[8:9], 016269; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v316270; GFX6-NEXT:    s_waitcnt vmcnt(0)16271; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v516272; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v516273; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v316274; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v616275; GFX6-NEXT:  .LBB49_1: ; %atomicrmw.start16276; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=116277; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v516278; GFX6-NEXT:    v_cvt_f16_f32_e32 v4, v416279; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v516280; GFX6-NEXT:    s_waitcnt expcnt(0)16281; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v416282; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 16, v516283; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v216284; GFX6-NEXT:    v_sub_f32_e32 v7, v7, v316285; GFX6-NEXT:    v_cvt_f16_f32_e32 v8, v616286; GFX6-NEXT:    v_cvt_f16_f32_e32 v7, v716287; GFX6-NEXT:    v_or_b32_e32 v6, v4, v516288; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v816289; GFX6-NEXT:    v_or_b32_e32 v5, v7, v416290; GFX6-NEXT:    v_mov_b32_e32 v8, v616291; GFX6-NEXT:    v_mov_b32_e32 v7, v516292; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 offset:2044 glc16293; GFX6-NEXT:    s_waitcnt vmcnt(0)16294; GFX6-NEXT:    buffer_wbinvl116295; GFX6-NEXT:    v_lshrrev_b32_e32 v5, 16, v716296; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v716297; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v516298; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v616299; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]16300; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]16301; GFX6-NEXT:    s_cbranch_execnz .LBB49_116302; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end16303; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]16304; GFX6-NEXT:    s_waitcnt expcnt(0)16305; GFX6-NEXT:    s_setpc_b64 s[30:31]16306  %gep = getelementptr <2 x half>, ptr addrspace(1) %ptr, i64 51116307  %unused = atomicrmw fsub ptr addrspace(1) %gep, <2 x half> %val seq_cst16308  ret void16309}16310 16311; --------------------------------------------------------------------16312; <2 x bfloat>16313; --------------------------------------------------------------------16314 16315define <2 x bfloat> @global_agent_atomic_fsub_ret_v2bf16(ptr addrspace(1) %ptr, <2 x bfloat> %val) #0 {16316; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_ret_v2bf16:16317; GFX12-TRUE16:       ; %bb.0:16318; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x016319; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x016320; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x016321; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x016322; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x016323; GFX12-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off16324; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v216325; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v216326; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 016327; GFX12-TRUE16-NEXT:  .LBB50_1: ; %atomicrmw.start16328; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=116329; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x016330; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v316331; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16332; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616333; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v416334; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616335; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16336; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 116337; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v216338; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516339; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)16340; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16341; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 116342; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316343; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v316344; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)16345; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16346; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)16347; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo16348; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516349; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)16350; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16351; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)16352; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h16353; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x016354; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV16355; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x016356; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV16357; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616358; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16359; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s016360; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16361; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s016362; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB50_116363; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end16364; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s016365; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v316366; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x016367; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]16368;16369; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_ret_v2bf16:16370; GFX12-FAKE16:       ; %bb.0:16371; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x016372; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x016373; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x016374; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x016375; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x016376; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off16377; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v216378; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216379; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 016380; GFX12-FAKE16-NEXT:  .LBB50_1: ; %atomicrmw.start16381; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=116382; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x016383; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v316384; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16385; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616386; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v216387; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616388; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16389; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 116390; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v416391; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516392; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516393; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16394; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16395; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 116396; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316397; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v316398; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)16399; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16400; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16401; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)16402; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16403; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s016404; GFX12-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030216405; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x016406; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV16407; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x016408; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV16409; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616410; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16411; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s116412; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16413; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s116414; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB50_116415; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end16416; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s116417; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v316418; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x016419; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]16420;16421; GFX942-LABEL: global_agent_atomic_fsub_ret_v2bf16:16422; GFX942:       ; %bb.0:16423; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16424; GFX942-NEXT:    global_load_dword v3, v[0:1], off16425; GFX942-NEXT:    s_mov_b64 s[2:3], 016426; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v216427; GFX942-NEXT:    s_movk_i32 s4, 0x7fff16428; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v216429; GFX942-NEXT:    s_mov_b32 s5, 0x706030216430; GFX942-NEXT:  .LBB50_1: ; %atomicrmw.start16431; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=116432; GFX942-NEXT:    s_waitcnt vmcnt(0)16433; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v316434; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v316435; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v416436; GFX942-NEXT:    v_sub_f32_e32 v6, v6, v516437; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 116438; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 116439; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v216440; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v616441; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s416442; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s416443; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v616444; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v216445; GFX942-NEXT:    s_nop 016446; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc16447; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]16448; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s516449; GFX942-NEXT:    buffer_wbl2 sc116450; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc016451; GFX942-NEXT:    s_waitcnt vmcnt(0)16452; GFX942-NEXT:    buffer_inv sc116453; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v316454; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]16455; GFX942-NEXT:    v_mov_b32_e32 v3, v216456; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]16457; GFX942-NEXT:    s_cbranch_execnz .LBB50_116458; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end16459; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]16460; GFX942-NEXT:    v_mov_b32_e32 v0, v216461; GFX942-NEXT:    s_setpc_b64 s[30:31]16462;16463; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_ret_v2bf16:16464; GFX11-TRUE16:       ; %bb.0:16465; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16466; GFX11-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off16467; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v216468; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v216469; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 016470; GFX11-TRUE16-NEXT:    .p2align 616471; GFX11-TRUE16-NEXT:  .LBB50_1: ; %atomicrmw.start16472; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=116473; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)16474; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v316475; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16476; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616477; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v416478; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616479; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16480; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 116481; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v216482; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516483; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)16484; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16485; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 116486; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316487; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v316488; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)16489; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16490; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo16491; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516492; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16493; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)16494; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h16495; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x016496; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off glc16497; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)16498; GFX11-TRUE16-NEXT:    buffer_gl1_inv16499; GFX11-TRUE16-NEXT:    buffer_gl0_inv16500; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616501; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s016502; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)16503; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s016504; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB50_116505; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end16506; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s016507; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, v316508; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]16509;16510; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_ret_v2bf16:16511; GFX11-FAKE16:       ; %bb.0:16512; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16513; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off16514; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v216515; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216516; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 016517; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x116518; GFX11-FAKE16-NEXT:    .p2align 616519; GFX11-FAKE16-NEXT:  .LBB50_1: ; %atomicrmw.start16520; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=116521; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)16522; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v316523; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16524; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616525; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v216526; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616527; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16528; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 116529; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v416530; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516531; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516532; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16533; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16534; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 116535; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316536; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v316537; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16538; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16539; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16540; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16541; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s016542; GFX11-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030216543; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x016544; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off glc16545; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)16546; GFX11-FAKE16-NEXT:    buffer_gl1_inv16547; GFX11-FAKE16-NEXT:    buffer_gl0_inv16548; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616549; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s116550; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)16551; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s116552; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB50_116553; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end16554; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x216555; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s116556; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v316557; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]16558;16559; GFX10-LABEL: global_agent_atomic_fsub_ret_v2bf16:16560; GFX10:       ; %bb.0:16561; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16562; GFX10-NEXT:    global_load_dword v3, v[0:1], off16563; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v216564; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216565; GFX10-NEXT:    s_mov_b32 s5, 016566; GFX10-NEXT:  .LBB50_1: ; %atomicrmw.start16567; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=116568; GFX10-NEXT:    s_waitcnt vmcnt(0)16569; GFX10-NEXT:    v_mov_b32_e32 v6, v316570; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 16, v616571; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616572; GFX10-NEXT:    v_sub_f32_e32 v3, v3, v416573; GFX10-NEXT:    v_sub_f32_e32 v5, v5, v216574; GFX10-NEXT:    v_bfe_u32 v7, v3, 16, 116575; GFX10-NEXT:    v_bfe_u32 v8, v5, 16, 116576; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v316577; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v516578; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516579; GFX10-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16580; GFX10-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16581; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v3, v316582; GFX10-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16583; GFX10-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s416584; GFX10-NEXT:    v_perm_b32 v5, v5, v3, 0x706030216585; GFX10-NEXT:    s_waitcnt_vscnt null, 0x016586; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[5:6], off glc16587; GFX10-NEXT:    s_waitcnt vmcnt(0)16588; GFX10-NEXT:    buffer_gl1_inv16589; GFX10-NEXT:    buffer_gl0_inv16590; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616591; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s516592; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s516593; GFX10-NEXT:    s_cbranch_execnz .LBB50_116594; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end16595; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s516596; GFX10-NEXT:    v_mov_b32_e32 v0, v316597; GFX10-NEXT:    s_setpc_b64 s[30:31]16598;16599; GFX90A-LABEL: global_agent_atomic_fsub_ret_v2bf16:16600; GFX90A:       ; %bb.0:16601; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16602; GFX90A-NEXT:    global_load_dword v3, v[0:1], off16603; GFX90A-NEXT:    s_mov_b64 s[6:7], 016604; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v216605; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff16606; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v216607; GFX90A-NEXT:    s_mov_b32 s9, 0x706030216608; GFX90A-NEXT:  .LBB50_1: ; %atomicrmw.start16609; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=116610; GFX90A-NEXT:    s_waitcnt vmcnt(0)16611; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v316612; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v316613; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v416614; GFX90A-NEXT:    v_sub_f32_e32 v6, v6, v516615; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 116616; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 116617; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v216618; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v616619; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s816620; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s816621; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v616622; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v216623; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]16624; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc16625; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s916626; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc16627; GFX90A-NEXT:    s_waitcnt vmcnt(0)16628; GFX90A-NEXT:    buffer_wbinvl116629; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v316630; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]16631; GFX90A-NEXT:    v_mov_b32_e32 v3, v216632; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]16633; GFX90A-NEXT:    s_cbranch_execnz .LBB50_116634; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end16635; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]16636; GFX90A-NEXT:    v_mov_b32_e32 v0, v216637; GFX90A-NEXT:    s_setpc_b64 s[30:31]16638;16639; GFX908-LABEL: global_agent_atomic_fsub_ret_v2bf16:16640; GFX908:       ; %bb.0:16641; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16642; GFX908-NEXT:    global_load_dword v3, v[0:1], off16643; GFX908-NEXT:    s_mov_b64 s[6:7], 016644; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v216645; GFX908-NEXT:    s_movk_i32 s8, 0x7fff16646; GFX908-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216647; GFX908-NEXT:    s_mov_b32 s9, 0x706030216648; GFX908-NEXT:  .LBB50_1: ; %atomicrmw.start16649; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=116650; GFX908-NEXT:    s_waitcnt vmcnt(0)16651; GFX908-NEXT:    v_mov_b32_e32 v6, v316652; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v616653; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616654; GFX908-NEXT:    v_sub_f32_e32 v3, v3, v416655; GFX908-NEXT:    v_sub_f32_e32 v5, v5, v216656; GFX908-NEXT:    v_bfe_u32 v7, v3, 16, 116657; GFX908-NEXT:    v_bfe_u32 v9, v5, 16, 116658; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v316659; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v516660; GFX908-NEXT:    v_add3_u32 v7, v7, v3, s816661; GFX908-NEXT:    v_add3_u32 v9, v9, v5, s816662; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v516663; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v3, v316664; GFX908-NEXT:    v_cndmask_b32_e64 v3, v7, v8, s[4:5]16665; GFX908-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc16666; GFX908-NEXT:    v_perm_b32 v5, v5, v3, s916667; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[5:6], off glc16668; GFX908-NEXT:    s_waitcnt vmcnt(0)16669; GFX908-NEXT:    buffer_wbinvl116670; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v616671; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]16672; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]16673; GFX908-NEXT:    s_cbranch_execnz .LBB50_116674; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end16675; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]16676; GFX908-NEXT:    v_mov_b32_e32 v0, v316677; GFX908-NEXT:    s_setpc_b64 s[30:31]16678;16679; GFX8-LABEL: global_agent_atomic_fsub_ret_v2bf16:16680; GFX8:       ; %bb.0:16681; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16682; GFX8-NEXT:    flat_load_dword v3, v[0:1]16683; GFX8-NEXT:    s_mov_b64 s[6:7], 016684; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v216685; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216686; GFX8-NEXT:  .LBB50_1: ; %atomicrmw.start16687; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=116688; GFX8-NEXT:    s_waitcnt vmcnt(0)16689; GFX8-NEXT:    v_mov_b32_e32 v6, v316690; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 16, v616691; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616692; GFX8-NEXT:    v_sub_f32_e32 v3, v3, v416693; GFX8-NEXT:    v_sub_f32_e32 v5, v5, v216694; GFX8-NEXT:    v_bfe_u32 v7, v3, 16, 116695; GFX8-NEXT:    v_bfe_u32 v9, v5, 16, 116696; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v316697; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v516698; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v716699; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v916700; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v516701; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v516702; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v316703; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v3, v316704; GFX8-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc16705; GFX8-NEXT:    v_cndmask_b32_e64 v3, v7, v8, s[4:5]16706; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v516707; GFX8-NEXT:    v_alignbit_b32 v5, v5, v3, 1616708; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[5:6] glc16709; GFX8-NEXT:    s_waitcnt vmcnt(0)16710; GFX8-NEXT:    buffer_wbinvl116711; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v616712; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]16713; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]16714; GFX8-NEXT:    s_cbranch_execnz .LBB50_116715; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end16716; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]16717; GFX8-NEXT:    v_mov_b32_e32 v0, v316718; GFX8-NEXT:    s_setpc_b64 s[30:31]16719;16720; GFX7-LABEL: global_agent_atomic_fsub_ret_v2bf16:16721; GFX7:       ; %bb.0:16722; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16723; GFX7-NEXT:    s_mov_b32 s6, 016724; GFX7-NEXT:    s_mov_b32 s7, 0xf00016725; GFX7-NEXT:    s_mov_b32 s4, s616726; GFX7-NEXT:    s_mov_b32 s5, s616727; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr6416728; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v216729; GFX7-NEXT:    v_mul_f32_e32 v6, 1.0, v316730; GFX7-NEXT:    s_mov_b64 s[8:9], 016731; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v216732; GFX7-NEXT:    s_waitcnt vmcnt(0)16733; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v516734; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v516735; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616736; GFX7-NEXT:  .LBB50_1: ; %atomicrmw.start16737; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=116738; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v216739; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v316740; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v216741; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v316742; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v216743; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v516744; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v416745; GFX7-NEXT:    v_alignbit_b32 v3, v2, v3, 1616746; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v716747; GFX7-NEXT:    v_alignbit_b32 v2, v2, v6, 1616748; GFX7-NEXT:    v_mov_b32_e32 v7, v316749; GFX7-NEXT:    v_mov_b32_e32 v6, v216750; GFX7-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 glc16751; GFX7-NEXT:    s_waitcnt vmcnt(0)16752; GFX7-NEXT:    buffer_wbinvl116753; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v316754; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v616755; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]16756; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v616757; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]16758; GFX7-NEXT:    s_cbranch_execnz .LBB50_116759; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end16760; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]16761; GFX7-NEXT:    v_mov_b32_e32 v0, v316762; GFX7-NEXT:    v_mov_b32_e32 v1, v216763; GFX7-NEXT:    s_setpc_b64 s[30:31]16764;16765; GFX6-LABEL: global_agent_atomic_fsub_ret_v2bf16:16766; GFX6:       ; %bb.0:16767; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16768; GFX6-NEXT:    s_mov_b32 s6, 016769; GFX6-NEXT:    s_mov_b32 s7, 0xf00016770; GFX6-NEXT:    s_mov_b32 s4, s616771; GFX6-NEXT:    s_mov_b32 s5, s616772; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr6416773; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v216774; GFX6-NEXT:    v_mul_f32_e32 v6, 1.0, v316775; GFX6-NEXT:    s_mov_b64 s[8:9], 016776; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v216777; GFX6-NEXT:    s_waitcnt vmcnt(0)16778; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v516779; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v516780; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616781; GFX6-NEXT:  .LBB50_1: ; %atomicrmw.start16782; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=116783; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v216784; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v316785; GFX6-NEXT:    s_waitcnt expcnt(0)16786; GFX6-NEXT:    v_and_b32_e32 v7, 0xffff0000, v216787; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v316788; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v216789; GFX6-NEXT:    v_sub_f32_e32 v7, v7, v516790; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v416791; GFX6-NEXT:    v_alignbit_b32 v3, v2, v3, 1616792; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v716793; GFX6-NEXT:    v_alignbit_b32 v2, v2, v6, 1616794; GFX6-NEXT:    v_mov_b32_e32 v7, v316795; GFX6-NEXT:    v_mov_b32_e32 v6, v216796; GFX6-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 glc16797; GFX6-NEXT:    s_waitcnt vmcnt(0)16798; GFX6-NEXT:    buffer_wbinvl116799; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v316800; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v616801; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]16802; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v616803; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]16804; GFX6-NEXT:    s_cbranch_execnz .LBB50_116805; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end16806; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]16807; GFX6-NEXT:    v_mov_b32_e32 v0, v316808; GFX6-NEXT:    v_mov_b32_e32 v1, v216809; GFX6-NEXT:    s_waitcnt expcnt(0)16810; GFX6-NEXT:    s_setpc_b64 s[30:31]16811  %result = atomicrmw fsub ptr addrspace(1) %ptr, <2 x bfloat> %val syncscope("agent") seq_cst16812  ret <2 x bfloat> %result16813}16814 16815define <2 x bfloat> @global_agent_atomic_fsub_ret_v2bf16__offset12b_pos(ptr addrspace(1) %ptr, <2 x bfloat> %val) #0 {16816; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_pos:16817; GFX12-TRUE16:       ; %bb.0:16818; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x016819; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x016820; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x016821; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x016822; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x016823; GFX12-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204416824; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v216825; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v216826; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 016827; GFX12-TRUE16-NEXT:  .LBB51_1: ; %atomicrmw.start16828; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=116829; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x016830; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v316831; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16832; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616833; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v416834; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616835; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16836; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 116837; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v216838; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516839; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)16840; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16841; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 116842; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316843; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v316844; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)16845; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16846; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)16847; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo16848; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516849; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)16850; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16851; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)16852; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h16853; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x016854; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV16855; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x016856; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV16857; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616858; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16859; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s016860; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16861; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s016862; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB51_116863; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end16864; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s016865; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v316866; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x016867; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]16868;16869; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_pos:16870; GFX12-FAKE16:       ; %bb.0:16871; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x016872; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x016873; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x016874; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x016875; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x016876; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204416877; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v216878; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216879; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 016880; GFX12-FAKE16-NEXT:  .LBB51_1: ; %atomicrmw.start16881; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=116882; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x016883; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v316884; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16885; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616886; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v216887; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616888; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16889; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 116890; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v416891; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516892; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516893; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16894; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16895; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 116896; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316897; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v316898; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)16899; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16900; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16901; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)16902; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16903; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s016904; GFX12-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030216905; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x016906; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV16907; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x016908; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV16909; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616910; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16911; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s116912; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16913; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s116914; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB51_116915; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end16916; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s116917; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v316918; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x016919; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]16920;16921; GFX942-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_pos:16922; GFX942:       ; %bb.0:16923; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16924; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:204416925; GFX942-NEXT:    s_mov_b64 s[2:3], 016926; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v216927; GFX942-NEXT:    s_movk_i32 s4, 0x7fff16928; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v216929; GFX942-NEXT:    s_mov_b32 s5, 0x706030216930; GFX942-NEXT:  .LBB51_1: ; %atomicrmw.start16931; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=116932; GFX942-NEXT:    s_waitcnt vmcnt(0)16933; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v316934; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v316935; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v416936; GFX942-NEXT:    v_sub_f32_e32 v6, v6, v516937; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 116938; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 116939; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v216940; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v616941; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s416942; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s416943; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v616944; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v216945; GFX942-NEXT:    s_nop 016946; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc16947; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]16948; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s516949; GFX942-NEXT:    buffer_wbl2 sc116950; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 sc016951; GFX942-NEXT:    s_waitcnt vmcnt(0)16952; GFX942-NEXT:    buffer_inv sc116953; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v316954; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]16955; GFX942-NEXT:    v_mov_b32_e32 v3, v216956; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]16957; GFX942-NEXT:    s_cbranch_execnz .LBB51_116958; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end16959; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]16960; GFX942-NEXT:    v_mov_b32_e32 v0, v216961; GFX942-NEXT:    s_setpc_b64 s[30:31]16962;16963; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_pos:16964; GFX11-TRUE16:       ; %bb.0:16965; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16966; GFX11-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204416967; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v216968; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v216969; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 016970; GFX11-TRUE16-NEXT:    .p2align 616971; GFX11-TRUE16-NEXT:  .LBB51_1: ; %atomicrmw.start16972; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=116973; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)16974; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v316975; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16976; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616977; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v416978; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616979; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16980; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 116981; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v216982; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516983; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)16984; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16985; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 116986; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316987; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v316988; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)16989; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16990; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo16991; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516992; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16993; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)16994; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h16995; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x016996; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:2044 glc16997; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)16998; GFX11-TRUE16-NEXT:    buffer_gl1_inv16999; GFX11-TRUE16-NEXT:    buffer_gl0_inv17000; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v617001; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s017002; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17003; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s017004; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB51_117005; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end17006; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s017007; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, v317008; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]17009;17010; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_pos:17011; GFX11-FAKE16:       ; %bb.0:17012; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17013; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204417014; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v217015; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217016; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 017017; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x117018; GFX11-FAKE16-NEXT:    .p2align 617019; GFX11-FAKE16-NEXT:  .LBB51_1: ; %atomicrmw.start17020; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=117021; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)17022; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v317023; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17024; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617025; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v217026; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v617027; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17028; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 117029; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v417030; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v517031; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v517032; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)17033; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff17034; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 117035; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v317036; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v317037; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)17038; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo17039; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff17040; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17041; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s017042; GFX11-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030217043; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x017044; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:2044 glc17045; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)17046; GFX11-FAKE16-NEXT:    buffer_gl1_inv17047; GFX11-FAKE16-NEXT:    buffer_gl0_inv17048; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v617049; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s117050; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17051; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s117052; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB51_117053; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end17054; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x217055; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s117056; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v317057; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]17058;17059; GFX10-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_pos:17060; GFX10:       ; %bb.0:17061; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17062; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:204417063; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v217064; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217065; GFX10-NEXT:    s_mov_b32 s5, 017066; GFX10-NEXT:  .LBB51_1: ; %atomicrmw.start17067; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=117068; GFX10-NEXT:    s_waitcnt vmcnt(0)17069; GFX10-NEXT:    v_mov_b32_e32 v6, v317070; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 16, v617071; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617072; GFX10-NEXT:    v_sub_f32_e32 v3, v3, v417073; GFX10-NEXT:    v_sub_f32_e32 v5, v5, v217074; GFX10-NEXT:    v_bfe_u32 v7, v3, 16, 117075; GFX10-NEXT:    v_bfe_u32 v8, v5, 16, 117076; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v317077; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v517078; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v517079; GFX10-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff17080; GFX10-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff17081; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v3, v317082; GFX10-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo17083; GFX10-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s417084; GFX10-NEXT:    v_perm_b32 v5, v5, v3, 0x706030217085; GFX10-NEXT:    s_waitcnt_vscnt null, 0x017086; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[5:6], off offset:2044 glc17087; GFX10-NEXT:    s_waitcnt vmcnt(0)17088; GFX10-NEXT:    buffer_gl1_inv17089; GFX10-NEXT:    buffer_gl0_inv17090; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v617091; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s517092; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s517093; GFX10-NEXT:    s_cbranch_execnz .LBB51_117094; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end17095; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s517096; GFX10-NEXT:    v_mov_b32_e32 v0, v317097; GFX10-NEXT:    s_setpc_b64 s[30:31]17098;17099; GFX90A-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_pos:17100; GFX90A:       ; %bb.0:17101; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17102; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:204417103; GFX90A-NEXT:    s_mov_b64 s[6:7], 017104; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v217105; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff17106; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217107; GFX90A-NEXT:    s_mov_b32 s9, 0x706030217108; GFX90A-NEXT:  .LBB51_1: ; %atomicrmw.start17109; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=117110; GFX90A-NEXT:    s_waitcnt vmcnt(0)17111; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v317112; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317113; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v417114; GFX90A-NEXT:    v_sub_f32_e32 v6, v6, v517115; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 117116; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 117117; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v217118; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v617119; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s817120; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s817121; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617122; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v217123; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]17124; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17125; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s917126; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc17127; GFX90A-NEXT:    s_waitcnt vmcnt(0)17128; GFX90A-NEXT:    buffer_wbinvl117129; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317130; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17131; GFX90A-NEXT:    v_mov_b32_e32 v3, v217132; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]17133; GFX90A-NEXT:    s_cbranch_execnz .LBB51_117134; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end17135; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]17136; GFX90A-NEXT:    v_mov_b32_e32 v0, v217137; GFX90A-NEXT:    s_setpc_b64 s[30:31]17138;17139; GFX908-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_pos:17140; GFX908:       ; %bb.0:17141; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17142; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:204417143; GFX908-NEXT:    s_mov_b64 s[6:7], 017144; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v217145; GFX908-NEXT:    s_movk_i32 s8, 0x7fff17146; GFX908-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217147; GFX908-NEXT:    s_mov_b32 s9, 0x706030217148; GFX908-NEXT:  .LBB51_1: ; %atomicrmw.start17149; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=117150; GFX908-NEXT:    s_waitcnt vmcnt(0)17151; GFX908-NEXT:    v_mov_b32_e32 v6, v317152; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v617153; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617154; GFX908-NEXT:    v_sub_f32_e32 v3, v3, v417155; GFX908-NEXT:    v_sub_f32_e32 v5, v5, v217156; GFX908-NEXT:    v_bfe_u32 v7, v3, 16, 117157; GFX908-NEXT:    v_bfe_u32 v9, v5, 16, 117158; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v317159; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v517160; GFX908-NEXT:    v_add3_u32 v7, v7, v3, s817161; GFX908-NEXT:    v_add3_u32 v9, v9, v5, s817162; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v517163; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v3, v317164; GFX908-NEXT:    v_cndmask_b32_e64 v3, v7, v8, s[4:5]17165; GFX908-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc17166; GFX908-NEXT:    v_perm_b32 v5, v5, v3, s917167; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[5:6], off offset:2044 glc17168; GFX908-NEXT:    s_waitcnt vmcnt(0)17169; GFX908-NEXT:    buffer_wbinvl117170; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v617171; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17172; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]17173; GFX908-NEXT:    s_cbranch_execnz .LBB51_117174; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end17175; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]17176; GFX908-NEXT:    v_mov_b32_e32 v0, v317177; GFX908-NEXT:    s_setpc_b64 s[30:31]17178;17179; GFX8-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_pos:17180; GFX8:       ; %bb.0:17181; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17182; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v017183; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc17184; GFX8-NEXT:    flat_load_dword v0, v[3:4]17185; GFX8-NEXT:    s_mov_b64 s[6:7], 017186; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 16, v217187; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217188; GFX8-NEXT:  .LBB51_1: ; %atomicrmw.start17189; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=117190; GFX8-NEXT:    s_waitcnt vmcnt(0)17191; GFX8-NEXT:    v_mov_b32_e32 v6, v017192; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 16, v617193; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617194; GFX8-NEXT:    v_sub_f32_e32 v0, v0, v117195; GFX8-NEXT:    v_sub_f32_e32 v5, v5, v217196; GFX8-NEXT:    v_bfe_u32 v7, v0, 16, 117197; GFX8-NEXT:    v_bfe_u32 v9, v5, 16, 117198; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v017199; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v517200; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v717201; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v917202; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v517203; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v517204; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v017205; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v0, v017206; GFX8-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc17207; GFX8-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[4:5]17208; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v517209; GFX8-NEXT:    v_alignbit_b32 v5, v5, v0, 1617210; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc17211; GFX8-NEXT:    s_waitcnt vmcnt(0)17212; GFX8-NEXT:    buffer_wbinvl117213; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v617214; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17215; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]17216; GFX8-NEXT:    s_cbranch_execnz .LBB51_117217; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end17218; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]17219; GFX8-NEXT:    s_setpc_b64 s[30:31]17220;17221; GFX7-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_pos:17222; GFX7:       ; %bb.0:17223; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17224; GFX7-NEXT:    s_mov_b32 s6, 017225; GFX7-NEXT:    s_mov_b32 s7, 0xf00017226; GFX7-NEXT:    s_mov_b32 s4, s617227; GFX7-NEXT:    s_mov_b32 s5, s617228; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204417229; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v217230; GFX7-NEXT:    v_mul_f32_e32 v6, 1.0, v317231; GFX7-NEXT:    s_mov_b64 s[8:9], 017232; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v217233; GFX7-NEXT:    s_waitcnt vmcnt(0)17234; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v517235; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v517236; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617237; GFX7-NEXT:  .LBB51_1: ; %atomicrmw.start17238; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=117239; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v217240; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v317241; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v217242; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317243; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v217244; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v517245; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v417246; GFX7-NEXT:    v_alignbit_b32 v3, v2, v3, 1617247; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v717248; GFX7-NEXT:    v_alignbit_b32 v2, v2, v6, 1617249; GFX7-NEXT:    v_mov_b32_e32 v7, v317250; GFX7-NEXT:    v_mov_b32_e32 v6, v217251; GFX7-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 offset:2044 glc17252; GFX7-NEXT:    s_waitcnt vmcnt(0)17253; GFX7-NEXT:    buffer_wbinvl117254; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v317255; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v617256; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]17257; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v617258; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]17259; GFX7-NEXT:    s_cbranch_execnz .LBB51_117260; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end17261; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]17262; GFX7-NEXT:    v_mov_b32_e32 v0, v317263; GFX7-NEXT:    v_mov_b32_e32 v1, v217264; GFX7-NEXT:    s_setpc_b64 s[30:31]17265;17266; GFX6-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_pos:17267; GFX6:       ; %bb.0:17268; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17269; GFX6-NEXT:    s_mov_b32 s6, 017270; GFX6-NEXT:    s_mov_b32 s7, 0xf00017271; GFX6-NEXT:    s_mov_b32 s4, s617272; GFX6-NEXT:    s_mov_b32 s5, s617273; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204417274; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v217275; GFX6-NEXT:    v_mul_f32_e32 v6, 1.0, v317276; GFX6-NEXT:    s_mov_b64 s[8:9], 017277; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v217278; GFX6-NEXT:    s_waitcnt vmcnt(0)17279; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v517280; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v517281; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617282; GFX6-NEXT:  .LBB51_1: ; %atomicrmw.start17283; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=117284; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v217285; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v317286; GFX6-NEXT:    s_waitcnt expcnt(0)17287; GFX6-NEXT:    v_and_b32_e32 v7, 0xffff0000, v217288; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317289; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v217290; GFX6-NEXT:    v_sub_f32_e32 v7, v7, v517291; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v417292; GFX6-NEXT:    v_alignbit_b32 v3, v2, v3, 1617293; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v717294; GFX6-NEXT:    v_alignbit_b32 v2, v2, v6, 1617295; GFX6-NEXT:    v_mov_b32_e32 v7, v317296; GFX6-NEXT:    v_mov_b32_e32 v6, v217297; GFX6-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 offset:2044 glc17298; GFX6-NEXT:    s_waitcnt vmcnt(0)17299; GFX6-NEXT:    buffer_wbinvl117300; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v317301; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v617302; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]17303; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v617304; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]17305; GFX6-NEXT:    s_cbranch_execnz .LBB51_117306; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end17307; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]17308; GFX6-NEXT:    v_mov_b32_e32 v0, v317309; GFX6-NEXT:    v_mov_b32_e32 v1, v217310; GFX6-NEXT:    s_waitcnt expcnt(0)17311; GFX6-NEXT:    s_setpc_b64 s[30:31]17312  %gep = getelementptr <2 x bfloat>, ptr addrspace(1) %ptr, i64 51117313  %result = atomicrmw fsub ptr addrspace(1) %gep, <2 x bfloat> %val syncscope("agent") seq_cst17314  ret <2 x bfloat> %result17315}17316 17317define <2 x bfloat> @global_agent_atomic_fsub_ret_v2bf16__offset12b_neg(ptr addrspace(1) %ptr, <2 x bfloat> %val) #0 {17318; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_neg:17319; GFX12-TRUE16:       ; %bb.0:17320; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x017321; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x017322; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x017323; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x017324; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x017325; GFX12-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:-204817326; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v217327; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v217328; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 017329; GFX12-TRUE16-NEXT:  .LBB52_1: ; %atomicrmw.start17330; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=117331; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x017332; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v317333; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17334; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617335; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v417336; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v617337; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17338; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 117339; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v217340; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v517341; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)17342; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff17343; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 117344; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v317345; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v317346; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)17347; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff17348; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)17349; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo17350; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v517351; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)17352; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo17353; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)17354; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h17355; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x017356; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV17357; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x017358; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV17359; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v617360; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17361; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s017362; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17363; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s017364; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB52_117365; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end17366; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s017367; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v317368; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x017369; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]17370;17371; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_neg:17372; GFX12-FAKE16:       ; %bb.0:17373; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x017374; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x017375; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x017376; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x017377; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x017378; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:-204817379; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v217380; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217381; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 017382; GFX12-FAKE16-NEXT:  .LBB52_1: ; %atomicrmw.start17383; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=117384; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x017385; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v317386; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17387; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617388; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v217389; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v617390; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17391; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 117392; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v417393; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v517394; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v517395; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)17396; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff17397; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 117398; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v317399; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v317400; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)17401; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo17402; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff17403; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)17404; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17405; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s017406; GFX12-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030217407; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x017408; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV17409; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x017410; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV17411; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v617412; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17413; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s117414; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17415; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s117416; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB52_117417; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end17418; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s117419; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v317420; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x017421; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]17422;17423; GFX942-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_neg:17424; GFX942:       ; %bb.0:17425; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17426; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:-204817427; GFX942-NEXT:    s_mov_b64 s[2:3], 017428; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v217429; GFX942-NEXT:    s_movk_i32 s4, 0x7fff17430; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217431; GFX942-NEXT:    s_mov_b32 s5, 0x706030217432; GFX942-NEXT:  .LBB52_1: ; %atomicrmw.start17433; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=117434; GFX942-NEXT:    s_waitcnt vmcnt(0)17435; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v317436; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317437; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v417438; GFX942-NEXT:    v_sub_f32_e32 v6, v6, v517439; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 117440; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 117441; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v217442; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v617443; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s417444; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s417445; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617446; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v217447; GFX942-NEXT:    s_nop 017448; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17449; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]17450; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s517451; GFX942-NEXT:    buffer_wbl2 sc117452; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 sc017453; GFX942-NEXT:    s_waitcnt vmcnt(0)17454; GFX942-NEXT:    buffer_inv sc117455; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317456; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]17457; GFX942-NEXT:    v_mov_b32_e32 v3, v217458; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]17459; GFX942-NEXT:    s_cbranch_execnz .LBB52_117460; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end17461; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]17462; GFX942-NEXT:    v_mov_b32_e32 v0, v217463; GFX942-NEXT:    s_setpc_b64 s[30:31]17464;17465; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_neg:17466; GFX11-TRUE16:       ; %bb.0:17467; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17468; GFX11-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:-204817469; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v217470; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v217471; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 017472; GFX11-TRUE16-NEXT:    .p2align 617473; GFX11-TRUE16-NEXT:  .LBB52_1: ; %atomicrmw.start17474; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=117475; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)17476; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v317477; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17478; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617479; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v417480; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v617481; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17482; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 117483; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v217484; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v517485; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)17486; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff17487; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 117488; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v317489; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v317490; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)17491; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff17492; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo17493; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v517494; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo17495; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)17496; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h17497; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x017498; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:-2048 glc17499; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)17500; GFX11-TRUE16-NEXT:    buffer_gl1_inv17501; GFX11-TRUE16-NEXT:    buffer_gl0_inv17502; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v617503; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s017504; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17505; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s017506; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB52_117507; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end17508; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s017509; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, v317510; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]17511;17512; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_neg:17513; GFX11-FAKE16:       ; %bb.0:17514; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17515; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:-204817516; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v217517; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217518; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 017519; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x117520; GFX11-FAKE16-NEXT:    .p2align 617521; GFX11-FAKE16-NEXT:  .LBB52_1: ; %atomicrmw.start17522; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=117523; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)17524; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v317525; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17526; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617527; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v217528; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v617529; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17530; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 117531; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v417532; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v517533; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v517534; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)17535; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff17536; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 117537; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v317538; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v317539; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)17540; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo17541; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff17542; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17543; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s017544; GFX11-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030217545; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x017546; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:-2048 glc17547; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)17548; GFX11-FAKE16-NEXT:    buffer_gl1_inv17549; GFX11-FAKE16-NEXT:    buffer_gl0_inv17550; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v617551; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s117552; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17553; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s117554; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB52_117555; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end17556; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x217557; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s117558; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v317559; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]17560;17561; GFX10-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_neg:17562; GFX10:       ; %bb.0:17563; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17564; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:-204817565; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v217566; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217567; GFX10-NEXT:    s_mov_b32 s5, 017568; GFX10-NEXT:  .LBB52_1: ; %atomicrmw.start17569; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=117570; GFX10-NEXT:    s_waitcnt vmcnt(0)17571; GFX10-NEXT:    v_mov_b32_e32 v6, v317572; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 16, v617573; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617574; GFX10-NEXT:    v_sub_f32_e32 v3, v3, v417575; GFX10-NEXT:    v_sub_f32_e32 v5, v5, v217576; GFX10-NEXT:    v_bfe_u32 v7, v3, 16, 117577; GFX10-NEXT:    v_bfe_u32 v8, v5, 16, 117578; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v317579; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v517580; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v517581; GFX10-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff17582; GFX10-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff17583; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v3, v317584; GFX10-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo17585; GFX10-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s417586; GFX10-NEXT:    v_perm_b32 v5, v5, v3, 0x706030217587; GFX10-NEXT:    s_waitcnt_vscnt null, 0x017588; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[5:6], off offset:-2048 glc17589; GFX10-NEXT:    s_waitcnt vmcnt(0)17590; GFX10-NEXT:    buffer_gl1_inv17591; GFX10-NEXT:    buffer_gl0_inv17592; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v617593; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s517594; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s517595; GFX10-NEXT:    s_cbranch_execnz .LBB52_117596; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end17597; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s517598; GFX10-NEXT:    v_mov_b32_e32 v0, v317599; GFX10-NEXT:    s_setpc_b64 s[30:31]17600;17601; GFX90A-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_neg:17602; GFX90A:       ; %bb.0:17603; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17604; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:-204817605; GFX90A-NEXT:    s_mov_b64 s[6:7], 017606; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v217607; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff17608; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217609; GFX90A-NEXT:    s_mov_b32 s9, 0x706030217610; GFX90A-NEXT:  .LBB52_1: ; %atomicrmw.start17611; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=117612; GFX90A-NEXT:    s_waitcnt vmcnt(0)17613; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v317614; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317615; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v417616; GFX90A-NEXT:    v_sub_f32_e32 v6, v6, v517617; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 117618; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 117619; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v217620; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v617621; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s817622; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s817623; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617624; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v217625; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]17626; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17627; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s917628; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 glc17629; GFX90A-NEXT:    s_waitcnt vmcnt(0)17630; GFX90A-NEXT:    buffer_wbinvl117631; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317632; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17633; GFX90A-NEXT:    v_mov_b32_e32 v3, v217634; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]17635; GFX90A-NEXT:    s_cbranch_execnz .LBB52_117636; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end17637; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]17638; GFX90A-NEXT:    v_mov_b32_e32 v0, v217639; GFX90A-NEXT:    s_setpc_b64 s[30:31]17640;17641; GFX908-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_neg:17642; GFX908:       ; %bb.0:17643; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17644; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:-204817645; GFX908-NEXT:    s_mov_b64 s[6:7], 017646; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v217647; GFX908-NEXT:    s_movk_i32 s8, 0x7fff17648; GFX908-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217649; GFX908-NEXT:    s_mov_b32 s9, 0x706030217650; GFX908-NEXT:  .LBB52_1: ; %atomicrmw.start17651; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=117652; GFX908-NEXT:    s_waitcnt vmcnt(0)17653; GFX908-NEXT:    v_mov_b32_e32 v6, v317654; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v617655; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617656; GFX908-NEXT:    v_sub_f32_e32 v3, v3, v417657; GFX908-NEXT:    v_sub_f32_e32 v5, v5, v217658; GFX908-NEXT:    v_bfe_u32 v7, v3, 16, 117659; GFX908-NEXT:    v_bfe_u32 v9, v5, 16, 117660; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v317661; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v517662; GFX908-NEXT:    v_add3_u32 v7, v7, v3, s817663; GFX908-NEXT:    v_add3_u32 v9, v9, v5, s817664; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v517665; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v3, v317666; GFX908-NEXT:    v_cndmask_b32_e64 v3, v7, v8, s[4:5]17667; GFX908-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc17668; GFX908-NEXT:    v_perm_b32 v5, v5, v3, s917669; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[5:6], off offset:-2048 glc17670; GFX908-NEXT:    s_waitcnt vmcnt(0)17671; GFX908-NEXT:    buffer_wbinvl117672; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v617673; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17674; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]17675; GFX908-NEXT:    s_cbranch_execnz .LBB52_117676; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end17677; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]17678; GFX908-NEXT:    v_mov_b32_e32 v0, v317679; GFX908-NEXT:    s_setpc_b64 s[30:31]17680;17681; GFX8-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_neg:17682; GFX8:       ; %bb.0:17683; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17684; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v017685; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, -1, v1, vcc17686; GFX8-NEXT:    flat_load_dword v0, v[3:4]17687; GFX8-NEXT:    s_mov_b64 s[6:7], 017688; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 16, v217689; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217690; GFX8-NEXT:  .LBB52_1: ; %atomicrmw.start17691; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=117692; GFX8-NEXT:    s_waitcnt vmcnt(0)17693; GFX8-NEXT:    v_mov_b32_e32 v6, v017694; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 16, v617695; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617696; GFX8-NEXT:    v_sub_f32_e32 v0, v0, v117697; GFX8-NEXT:    v_sub_f32_e32 v5, v5, v217698; GFX8-NEXT:    v_bfe_u32 v7, v0, 16, 117699; GFX8-NEXT:    v_bfe_u32 v9, v5, 16, 117700; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v017701; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v517702; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v717703; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v917704; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v517705; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v517706; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v017707; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v0, v017708; GFX8-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc17709; GFX8-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[4:5]17710; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v517711; GFX8-NEXT:    v_alignbit_b32 v5, v5, v0, 1617712; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc17713; GFX8-NEXT:    s_waitcnt vmcnt(0)17714; GFX8-NEXT:    buffer_wbinvl117715; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v617716; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17717; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]17718; GFX8-NEXT:    s_cbranch_execnz .LBB52_117719; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end17720; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]17721; GFX8-NEXT:    s_setpc_b64 s[30:31]17722;17723; GFX7-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_neg:17724; GFX7:       ; %bb.0:17725; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17726; GFX7-NEXT:    s_movk_i32 s4, 0xf80017727; GFX7-NEXT:    s_mov_b32 s5, -117728; GFX7-NEXT:    s_mov_b32 s7, 0xf00017729; GFX7-NEXT:    s_mov_b32 s6, 017730; GFX7-NEXT:    buffer_load_dword v6, v[0:1], s[4:7], 0 addr6417731; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v017732; GFX7-NEXT:    v_mul_f32_e32 v0, 1.0, v217733; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v317734; GFX7-NEXT:    s_mov_b64 s[8:9], 017735; GFX7-NEXT:    s_mov_b32 s4, s617736; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, -1, v1, vcc17737; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v017738; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v317739; GFX7-NEXT:    s_mov_b32 s5, s617740; GFX7-NEXT:    s_waitcnt vmcnt(0)17741; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v617742; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v617743; GFX7-NEXT:  .LBB52_1: ; %atomicrmw.start17744; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=117745; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v117746; GFX7-NEXT:    v_mul_f32_e32 v0, 1.0, v017747; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v117748; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v017749; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v117750; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v317751; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v217752; GFX7-NEXT:    v_alignbit_b32 v1, v1, v0, 1617753; GFX7-NEXT:    v_lshrrev_b32_e32 v0, 16, v717754; GFX7-NEXT:    v_alignbit_b32 v0, v0, v6, 1617755; GFX7-NEXT:    v_mov_b32_e32 v7, v117756; GFX7-NEXT:    v_mov_b32_e32 v6, v017757; GFX7-NEXT:    buffer_atomic_cmpswap v[6:7], v[4:5], s[4:7], 0 addr64 glc17758; GFX7-NEXT:    s_waitcnt vmcnt(0)17759; GFX7-NEXT:    buffer_wbinvl117760; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v117761; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v617762; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]17763; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v617764; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]17765; GFX7-NEXT:    s_cbranch_execnz .LBB52_117766; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end17767; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]17768; GFX7-NEXT:    s_setpc_b64 s[30:31]17769;17770; GFX6-LABEL: global_agent_atomic_fsub_ret_v2bf16__offset12b_neg:17771; GFX6:       ; %bb.0:17772; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17773; GFX6-NEXT:    s_movk_i32 s4, 0xf80017774; GFX6-NEXT:    s_mov_b32 s5, -117775; GFX6-NEXT:    s_mov_b32 s7, 0xf00017776; GFX6-NEXT:    s_mov_b32 s6, 017777; GFX6-NEXT:    buffer_load_dword v6, v[0:1], s[4:7], 0 addr6417778; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v017779; GFX6-NEXT:    v_mul_f32_e32 v0, 1.0, v217780; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v317781; GFX6-NEXT:    s_mov_b64 s[8:9], 017782; GFX6-NEXT:    s_mov_b32 s4, s617783; GFX6-NEXT:    v_addc_u32_e32 v5, vcc, -1, v1, vcc17784; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v017785; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v317786; GFX6-NEXT:    s_mov_b32 s5, s617787; GFX6-NEXT:    s_waitcnt vmcnt(0)17788; GFX6-NEXT:    v_and_b32_e32 v1, 0xffff0000, v617789; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v617790; GFX6-NEXT:  .LBB52_1: ; %atomicrmw.start17791; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=117792; GFX6-NEXT:    v_mul_f32_e32 v1, 1.0, v117793; GFX6-NEXT:    v_mul_f32_e32 v0, 1.0, v017794; GFX6-NEXT:    s_waitcnt expcnt(0)17795; GFX6-NEXT:    v_and_b32_e32 v7, 0xffff0000, v117796; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v017797; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v117798; GFX6-NEXT:    v_sub_f32_e32 v7, v7, v317799; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v217800; GFX6-NEXT:    v_alignbit_b32 v1, v1, v0, 1617801; GFX6-NEXT:    v_lshrrev_b32_e32 v0, 16, v717802; GFX6-NEXT:    v_alignbit_b32 v0, v0, v6, 1617803; GFX6-NEXT:    v_mov_b32_e32 v7, v117804; GFX6-NEXT:    v_mov_b32_e32 v6, v017805; GFX6-NEXT:    buffer_atomic_cmpswap v[6:7], v[4:5], s[4:7], 0 addr64 glc17806; GFX6-NEXT:    s_waitcnt vmcnt(0)17807; GFX6-NEXT:    buffer_wbinvl117808; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v117809; GFX6-NEXT:    v_and_b32_e32 v1, 0xffff0000, v617810; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]17811; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v617812; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]17813; GFX6-NEXT:    s_cbranch_execnz .LBB52_117814; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end17815; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]17816; GFX6-NEXT:    s_waitcnt expcnt(0)17817; GFX6-NEXT:    s_setpc_b64 s[30:31]17818  %gep = getelementptr <2 x bfloat>, ptr addrspace(1) %ptr, i64 -51217819  %result = atomicrmw fsub ptr addrspace(1) %gep, <2 x bfloat> %val syncscope("agent") seq_cst17820  ret <2 x bfloat> %result17821}17822 17823define void @global_agent_atomic_fsub_noret_v2bf16(ptr addrspace(1) %ptr, <2 x bfloat> %val) #0 {17824; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_noret_v2bf16:17825; GFX12-TRUE16:       ; %bb.0:17826; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x017827; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x017828; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x017829; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x017830; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x017831; GFX12-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off17832; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v217833; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v217834; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 017835; GFX12-TRUE16-NEXT:  .LBB53_1: ; %atomicrmw.start17836; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=117837; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x017838; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317839; GFX12-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317840; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17841; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v2, v2, v517842; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v6, v6, v417843; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17844; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 117845; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 117846; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217847; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v217848; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617849; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17850; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17851; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)17852; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_3)17853; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo17854; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617855; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)17856; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo17857; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h17858; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x017859; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV17860; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x017861; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV17862; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317863; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v217864; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17865; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s017866; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17867; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s017868; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB53_117869; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end17870; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s017871; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x017872; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]17873;17874; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_noret_v2bf16:17875; GFX12-FAKE16:       ; %bb.0:17876; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x017877; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x017878; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x017879; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x017880; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x017881; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off17882; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v217883; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217884; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 017885; GFX12-FAKE16-NEXT:  .LBB53_1: ; %atomicrmw.start17886; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=117887; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x017888; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317889; GFX12-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317890; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17891; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v417892; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v6, v6, v517893; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17894; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 117895; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 117896; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217897; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617898; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617899; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17900; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17901; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v217902; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)17903; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)17904; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo17905; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)17906; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s017907; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)17908; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030217909; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x017910; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV17911; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x017912; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV17913; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317914; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v217915; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17916; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s117917; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17918; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s117919; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB53_117920; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end17921; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s117922; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x017923; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]17924;17925; GFX942-LABEL: global_agent_atomic_fsub_noret_v2bf16:17926; GFX942:       ; %bb.0:17927; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17928; GFX942-NEXT:    global_load_dword v3, v[0:1], off17929; GFX942-NEXT:    s_mov_b64 s[2:3], 017930; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v217931; GFX942-NEXT:    s_movk_i32 s4, 0x7fff17932; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217933; GFX942-NEXT:    s_mov_b32 s5, 0x706030217934; GFX942-NEXT:  .LBB53_1: ; %atomicrmw.start17935; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=117936; GFX942-NEXT:    s_waitcnt vmcnt(0)17937; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v317938; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317939; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v417940; GFX942-NEXT:    v_sub_f32_e32 v6, v6, v517941; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 117942; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 117943; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v217944; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v617945; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s417946; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s417947; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617948; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v217949; GFX942-NEXT:    s_nop 017950; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17951; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]17952; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s517953; GFX942-NEXT:    buffer_wbl2 sc117954; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc017955; GFX942-NEXT:    s_waitcnt vmcnt(0)17956; GFX942-NEXT:    buffer_inv sc117957; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317958; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]17959; GFX942-NEXT:    v_mov_b32_e32 v3, v217960; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]17961; GFX942-NEXT:    s_cbranch_execnz .LBB53_117962; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end17963; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]17964; GFX942-NEXT:    s_setpc_b64 s[30:31]17965;17966; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_noret_v2bf16:17967; GFX11-TRUE16:       ; %bb.0:17968; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17969; GFX11-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off17970; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v217971; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v217972; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 017973; GFX11-TRUE16-NEXT:    .p2align 617974; GFX11-TRUE16-NEXT:  .LBB53_1: ; %atomicrmw.start17975; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=117976; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)17977; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317978; GFX11-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317979; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17980; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v2, v2, v517981; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v6, v6, v417982; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17983; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 117984; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 117985; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217986; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v217987; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617988; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17989; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17990; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)17991; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo17992; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617993; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo17994; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)17995; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h17996; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x017997; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off glc17998; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)17999; GFX11-TRUE16-NEXT:    buffer_gl1_inv18000; GFX11-TRUE16-NEXT:    buffer_gl0_inv18001; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318002; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v218003; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s018004; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)18005; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s018006; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB53_118007; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end18008; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s018009; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]18010;18011; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_noret_v2bf16:18012; GFX11-FAKE16:       ; %bb.0:18013; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18014; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off18015; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v218016; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218017; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 018018; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x118019; GFX11-FAKE16-NEXT:    .p2align 618020; GFX11-FAKE16-NEXT:  .LBB53_1: ; %atomicrmw.start18021; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=118022; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)18023; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318024; GFX11-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318025; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18026; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v418027; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v6, v6, v518028; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18029; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 118030; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 118031; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218032; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618033; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618034; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18035; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18036; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v218037; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18038; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18039; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s018040; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)18041; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218042; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x018043; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off glc18044; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)18045; GFX11-FAKE16-NEXT:    buffer_gl1_inv18046; GFX11-FAKE16-NEXT:    buffer_gl0_inv18047; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318048; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v218049; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s118050; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)18051; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s118052; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB53_118053; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end18054; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x218055; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s118056; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]18057;18058; GFX10-LABEL: global_agent_atomic_fsub_noret_v2bf16:18059; GFX10:       ; %bb.0:18060; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18061; GFX10-NEXT:    global_load_dword v3, v[0:1], off18062; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v218063; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218064; GFX10-NEXT:    s_mov_b32 s5, 018065; GFX10-NEXT:  .LBB53_1: ; %atomicrmw.start18066; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=118067; GFX10-NEXT:    s_waitcnt vmcnt(0)18068; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v318069; GFX10-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318070; GFX10-NEXT:    v_sub_f32_e32 v2, v2, v418071; GFX10-NEXT:    v_sub_f32_e32 v6, v6, v518072; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 118073; GFX10-NEXT:    v_bfe_u32 v8, v6, 16, 118074; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v218075; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v618076; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618077; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18078; GFX10-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18079; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v2, v218080; GFX10-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18081; GFX10-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s418082; GFX10-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218083; GFX10-NEXT:    s_waitcnt_vscnt null, 0x018084; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc18085; GFX10-NEXT:    s_waitcnt vmcnt(0)18086; GFX10-NEXT:    buffer_gl1_inv18087; GFX10-NEXT:    buffer_gl0_inv18088; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318089; GFX10-NEXT:    v_mov_b32_e32 v3, v218090; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s518091; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s518092; GFX10-NEXT:    s_cbranch_execnz .LBB53_118093; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end18094; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s518095; GFX10-NEXT:    s_setpc_b64 s[30:31]18096;18097; GFX90A-LABEL: global_agent_atomic_fsub_noret_v2bf16:18098; GFX90A:       ; %bb.0:18099; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18100; GFX90A-NEXT:    global_load_dword v3, v[0:1], off18101; GFX90A-NEXT:    s_mov_b64 s[6:7], 018102; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v218103; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff18104; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218105; GFX90A-NEXT:    s_mov_b32 s9, 0x706030218106; GFX90A-NEXT:  .LBB53_1: ; %atomicrmw.start18107; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=118108; GFX90A-NEXT:    s_waitcnt vmcnt(0)18109; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v318110; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318111; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v418112; GFX90A-NEXT:    v_sub_f32_e32 v6, v6, v518113; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 118114; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 118115; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v218116; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v618117; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, 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], v2, v218121; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]18122; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18123; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s918124; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc18125; GFX90A-NEXT:    s_waitcnt vmcnt(0)18126; GFX90A-NEXT:    buffer_wbinvl118127; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318128; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]18129; GFX90A-NEXT:    v_mov_b32_e32 v3, v218130; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]18131; GFX90A-NEXT:    s_cbranch_execnz .LBB53_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: global_agent_atomic_fsub_noret_v2bf16:18137; GFX908:       ; %bb.0:18138; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18139; GFX908-NEXT:    global_load_dword v3, v[0:1], off18140; GFX908-NEXT:    s_mov_b64 s[6:7], 018141; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v218142; GFX908-NEXT:    s_movk_i32 s8, 0x7fff18143; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218144; GFX908-NEXT:    s_mov_b32 s9, 0x706030218145; GFX908-NEXT:  .LBB53_1: ; %atomicrmw.start18146; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=118147; GFX908-NEXT:    s_waitcnt vmcnt(0)18148; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v318149; GFX908-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318150; GFX908-NEXT:    v_sub_f32_e32 v2, v2, v418151; GFX908-NEXT:    v_sub_f32_e32 v6, v6, v518152; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 118153; GFX908-NEXT:    v_bfe_u32 v9, v6, 16, 118154; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v218155; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v618156; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s818157; GFX908-NEXT:    v_add3_u32 v9, v9, v6, s818158; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618159; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v218160; GFX908-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]18161; GFX908-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18162; GFX908-NEXT:    v_perm_b32 v2, v6, v2, s918163; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc18164; GFX908-NEXT:    s_waitcnt vmcnt(0)18165; GFX908-NEXT:    buffer_wbinvl118166; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318167; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]18168; GFX908-NEXT:    v_mov_b32_e32 v3, v218169; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]18170; GFX908-NEXT:    s_cbranch_execnz .LBB53_118171; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end18172; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]18173; GFX908-NEXT:    s_setpc_b64 s[30:31]18174;18175; GFX8-LABEL: global_agent_atomic_fsub_noret_v2bf16:18176; GFX8:       ; %bb.0:18177; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18178; GFX8-NEXT:    flat_load_dword v3, v[0:1]18179; GFX8-NEXT:    s_mov_b64 s[6:7], 018180; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v218181; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218182; GFX8-NEXT:  .LBB53_1: ; %atomicrmw.start18183; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=118184; GFX8-NEXT:    s_waitcnt vmcnt(0)18185; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v318186; GFX8-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318187; GFX8-NEXT:    v_sub_f32_e32 v2, v2, v418188; GFX8-NEXT:    v_sub_f32_e32 v6, v6, v518189; GFX8-NEXT:    v_bfe_u32 v7, v2, 16, 118190; GFX8-NEXT:    v_bfe_u32 v9, v6, 16, 118191; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v218192; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v618193; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v718194; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v918195; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v618196; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618197; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v218198; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v218199; GFX8-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18200; GFX8-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]18201; GFX8-NEXT:    v_lshrrev_b32_e32 v6, 16, v618202; GFX8-NEXT:    v_alignbit_b32 v2, v6, v2, 1618203; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc18204; GFX8-NEXT:    s_waitcnt vmcnt(0)18205; GFX8-NEXT:    buffer_wbinvl118206; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318207; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]18208; GFX8-NEXT:    v_mov_b32_e32 v3, v218209; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]18210; GFX8-NEXT:    s_cbranch_execnz .LBB53_118211; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end18212; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]18213; GFX8-NEXT:    s_setpc_b64 s[30:31]18214;18215; GFX7-LABEL: global_agent_atomic_fsub_noret_v2bf16:18216; GFX7:       ; %bb.0:18217; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18218; GFX7-NEXT:    s_mov_b32 s6, 018219; GFX7-NEXT:    s_mov_b32 s7, 0xf00018220; GFX7-NEXT:    s_mov_b32 s4, s618221; GFX7-NEXT:    s_mov_b32 s5, s618222; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr6418223; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v218224; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v318225; GFX7-NEXT:    s_mov_b64 s[8:9], 018226; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v218227; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v318228; GFX7-NEXT:    s_waitcnt vmcnt(0)18229; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v518230; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v518231; GFX7-NEXT:  .LBB53_1: ; %atomicrmw.start18232; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=118233; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v418234; GFX7-NEXT:    v_mul_f32_e32 v5, 1.0, v518235; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v418236; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v518237; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v418238; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v318239; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v218240; GFX7-NEXT:    v_alignbit_b32 v5, v4, v5, 1618241; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v718242; GFX7-NEXT:    v_alignbit_b32 v4, v4, v6, 1618243; GFX7-NEXT:    v_mov_b32_e32 v7, v518244; GFX7-NEXT:    v_mov_b32_e32 v6, v418245; GFX7-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 glc18246; GFX7-NEXT:    s_waitcnt vmcnt(0)18247; GFX7-NEXT:    buffer_wbinvl118248; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v518249; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v618250; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]18251; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v618252; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]18253; GFX7-NEXT:    s_cbranch_execnz .LBB53_118254; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end18255; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]18256; GFX7-NEXT:    s_setpc_b64 s[30:31]18257;18258; GFX6-LABEL: global_agent_atomic_fsub_noret_v2bf16:18259; GFX6:       ; %bb.0:18260; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18261; GFX6-NEXT:    s_mov_b32 s6, 018262; GFX6-NEXT:    s_mov_b32 s7, 0xf00018263; GFX6-NEXT:    s_mov_b32 s4, s618264; GFX6-NEXT:    s_mov_b32 s5, s618265; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr6418266; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v218267; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v318268; GFX6-NEXT:    s_mov_b64 s[8:9], 018269; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v218270; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v318271; GFX6-NEXT:    s_waitcnt vmcnt(0)18272; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v518273; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 16, v518274; GFX6-NEXT:  .LBB53_1: ; %atomicrmw.start18275; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=118276; GFX6-NEXT:    v_mul_f32_e32 v4, 1.0, v418277; GFX6-NEXT:    v_mul_f32_e32 v5, 1.0, v518278; GFX6-NEXT:    s_waitcnt expcnt(0)18279; GFX6-NEXT:    v_and_b32_e32 v7, 0xffff0000, v418280; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v518281; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v418282; GFX6-NEXT:    v_sub_f32_e32 v7, v7, v318283; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v218284; GFX6-NEXT:    v_alignbit_b32 v5, v4, v5, 1618285; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v718286; GFX6-NEXT:    v_alignbit_b32 v4, v4, v6, 1618287; GFX6-NEXT:    v_mov_b32_e32 v7, v518288; GFX6-NEXT:    v_mov_b32_e32 v6, v418289; GFX6-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 glc18290; GFX6-NEXT:    s_waitcnt vmcnt(0)18291; GFX6-NEXT:    buffer_wbinvl118292; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v518293; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v618294; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]18295; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 16, v618296; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]18297; GFX6-NEXT:    s_cbranch_execnz .LBB53_118298; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end18299; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]18300; GFX6-NEXT:    s_waitcnt expcnt(0)18301; GFX6-NEXT:    s_setpc_b64 s[30:31]18302  %unused = atomicrmw fsub ptr addrspace(1) %ptr, <2 x bfloat> %val syncscope("agent") seq_cst18303  ret void18304}18305 18306define void @global_agent_atomic_fsub_noret_v2bf16__offset12b_pos(ptr addrspace(1) %ptr, <2 x bfloat> %val) #0 {18307; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_pos:18308; GFX12-TRUE16:       ; %bb.0:18309; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x018310; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x018311; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x018312; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x018313; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x018314; GFX12-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204418315; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v218316; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v218317; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 018318; GFX12-TRUE16-NEXT:  .LBB54_1: ; %atomicrmw.start18319; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=118320; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x018321; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318322; GFX12-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318323; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18324; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v2, v2, v518325; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v6, v6, v418326; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18327; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 118328; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 118329; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218330; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v218331; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618332; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18333; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18334; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)18335; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_3)18336; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo18337; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618338; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)18339; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo18340; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h18341; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x018342; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV18343; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x018344; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV18345; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318346; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v218347; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18348; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s018349; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18350; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s018351; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB54_118352; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end18353; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s018354; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x018355; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]18356;18357; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_pos:18358; GFX12-FAKE16:       ; %bb.0:18359; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x018360; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x018361; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x018362; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x018363; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x018364; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204418365; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v218366; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218367; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 018368; GFX12-FAKE16-NEXT:  .LBB54_1: ; %atomicrmw.start18369; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=118370; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x018371; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318372; GFX12-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318373; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18374; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v418375; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v6, v6, v518376; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18377; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 118378; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 118379; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218380; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618381; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618382; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18383; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18384; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v218385; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)18386; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)18387; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18388; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)18389; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s018390; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)18391; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218392; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x018393; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV18394; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x018395; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV18396; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318397; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v218398; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18399; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s118400; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18401; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s118402; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB54_118403; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end18404; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s118405; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x018406; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]18407;18408; GFX942-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_pos:18409; GFX942:       ; %bb.0:18410; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18411; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:204418412; GFX942-NEXT:    s_mov_b64 s[2:3], 018413; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v218414; GFX942-NEXT:    s_movk_i32 s4, 0x7fff18415; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218416; GFX942-NEXT:    s_mov_b32 s5, 0x706030218417; GFX942-NEXT:  .LBB54_1: ; %atomicrmw.start18418; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=118419; GFX942-NEXT:    s_waitcnt vmcnt(0)18420; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v318421; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318422; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v418423; GFX942-NEXT:    v_sub_f32_e32 v6, v6, v518424; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 118425; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 118426; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v218427; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v618428; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s418429; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s418430; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618431; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v218432; GFX942-NEXT:    s_nop 018433; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18434; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]18435; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s518436; GFX942-NEXT:    buffer_wbl2 sc118437; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 sc018438; GFX942-NEXT:    s_waitcnt vmcnt(0)18439; GFX942-NEXT:    buffer_inv sc118440; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318441; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]18442; GFX942-NEXT:    v_mov_b32_e32 v3, v218443; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]18444; GFX942-NEXT:    s_cbranch_execnz .LBB54_118445; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end18446; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]18447; GFX942-NEXT:    s_setpc_b64 s[30:31]18448;18449; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_pos:18450; GFX11-TRUE16:       ; %bb.0:18451; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18452; GFX11-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204418453; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v218454; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v218455; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 018456; GFX11-TRUE16-NEXT:    .p2align 618457; GFX11-TRUE16-NEXT:  .LBB54_1: ; %atomicrmw.start18458; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=118459; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)18460; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318461; GFX11-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318462; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18463; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v2, v2, v518464; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v6, v6, v418465; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18466; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 118467; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 118468; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218469; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v218470; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618471; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18472; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18473; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)18474; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo18475; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618476; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo18477; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)18478; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h18479; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x018480; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2044 glc18481; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)18482; GFX11-TRUE16-NEXT:    buffer_gl1_inv18483; GFX11-TRUE16-NEXT:    buffer_gl0_inv18484; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318485; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v218486; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s018487; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)18488; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s018489; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB54_118490; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end18491; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s018492; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]18493;18494; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_pos:18495; GFX11-FAKE16:       ; %bb.0:18496; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18497; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204418498; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v218499; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218500; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 018501; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x118502; GFX11-FAKE16-NEXT:    .p2align 618503; GFX11-FAKE16-NEXT:  .LBB54_1: ; %atomicrmw.start18504; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=118505; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)18506; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318507; GFX11-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318508; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18509; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v418510; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v6, v6, v518511; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18512; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 118513; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 118514; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218515; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618516; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618517; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18518; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18519; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v218520; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18521; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18522; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s018523; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)18524; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218525; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x018526; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2044 glc18527; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)18528; GFX11-FAKE16-NEXT:    buffer_gl1_inv18529; GFX11-FAKE16-NEXT:    buffer_gl0_inv18530; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318531; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v218532; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s118533; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)18534; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s118535; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB54_118536; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end18537; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x218538; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s118539; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]18540;18541; GFX10-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_pos:18542; GFX10:       ; %bb.0:18543; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18544; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:204418545; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v218546; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218547; GFX10-NEXT:    s_mov_b32 s5, 018548; GFX10-NEXT:  .LBB54_1: ; %atomicrmw.start18549; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=118550; GFX10-NEXT:    s_waitcnt vmcnt(0)18551; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v318552; GFX10-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318553; GFX10-NEXT:    v_sub_f32_e32 v2, v2, v418554; GFX10-NEXT:    v_sub_f32_e32 v6, v6, v518555; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 118556; GFX10-NEXT:    v_bfe_u32 v8, v6, 16, 118557; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v218558; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v618559; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618560; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18561; GFX10-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18562; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v2, v218563; GFX10-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18564; GFX10-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s418565; GFX10-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218566; GFX10-NEXT:    s_waitcnt_vscnt null, 0x018567; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc18568; GFX10-NEXT:    s_waitcnt vmcnt(0)18569; GFX10-NEXT:    buffer_gl1_inv18570; GFX10-NEXT:    buffer_gl0_inv18571; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318572; GFX10-NEXT:    v_mov_b32_e32 v3, v218573; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s518574; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s518575; GFX10-NEXT:    s_cbranch_execnz .LBB54_118576; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end18577; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s518578; GFX10-NEXT:    s_setpc_b64 s[30:31]18579;18580; GFX90A-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_pos:18581; GFX90A:       ; %bb.0:18582; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18583; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:204418584; GFX90A-NEXT:    s_mov_b64 s[6:7], 018585; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v218586; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff18587; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218588; GFX90A-NEXT:    s_mov_b32 s9, 0x706030218589; GFX90A-NEXT:  .LBB54_1: ; %atomicrmw.start18590; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=118591; GFX90A-NEXT:    s_waitcnt vmcnt(0)18592; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v318593; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318594; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v418595; GFX90A-NEXT:    v_sub_f32_e32 v6, v6, v518596; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 118597; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 118598; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v218599; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v618600; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s818601; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s818602; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618603; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v218604; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]18605; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18606; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s918607; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc18608; GFX90A-NEXT:    s_waitcnt vmcnt(0)18609; GFX90A-NEXT:    buffer_wbinvl118610; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318611; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]18612; GFX90A-NEXT:    v_mov_b32_e32 v3, v218613; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]18614; GFX90A-NEXT:    s_cbranch_execnz .LBB54_118615; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end18616; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]18617; GFX90A-NEXT:    s_setpc_b64 s[30:31]18618;18619; GFX908-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_pos:18620; GFX908:       ; %bb.0:18621; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18622; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:204418623; GFX908-NEXT:    s_mov_b64 s[6:7], 018624; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v218625; GFX908-NEXT:    s_movk_i32 s8, 0x7fff18626; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218627; GFX908-NEXT:    s_mov_b32 s9, 0x706030218628; GFX908-NEXT:  .LBB54_1: ; %atomicrmw.start18629; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=118630; GFX908-NEXT:    s_waitcnt vmcnt(0)18631; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v318632; GFX908-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318633; GFX908-NEXT:    v_sub_f32_e32 v2, v2, v418634; GFX908-NEXT:    v_sub_f32_e32 v6, v6, v518635; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 118636; GFX908-NEXT:    v_bfe_u32 v9, v6, 16, 118637; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v218638; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v618639; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s818640; GFX908-NEXT:    v_add3_u32 v9, v9, v6, s818641; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618642; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v218643; GFX908-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]18644; GFX908-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18645; GFX908-NEXT:    v_perm_b32 v2, v6, v2, s918646; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc18647; GFX908-NEXT:    s_waitcnt vmcnt(0)18648; GFX908-NEXT:    buffer_wbinvl118649; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318650; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]18651; GFX908-NEXT:    v_mov_b32_e32 v3, v218652; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]18653; GFX908-NEXT:    s_cbranch_execnz .LBB54_118654; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end18655; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]18656; GFX908-NEXT:    s_setpc_b64 s[30:31]18657;18658; GFX8-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_pos:18659; GFX8:       ; %bb.0:18660; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18661; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v018662; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc18663; GFX8-NEXT:    flat_load_dword v3, v[0:1]18664; GFX8-NEXT:    s_mov_b64 s[6:7], 018665; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v218666; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218667; GFX8-NEXT:  .LBB54_1: ; %atomicrmw.start18668; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=118669; GFX8-NEXT:    s_waitcnt vmcnt(0)18670; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v318671; GFX8-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318672; GFX8-NEXT:    v_sub_f32_e32 v2, v2, v418673; GFX8-NEXT:    v_sub_f32_e32 v6, v6, v518674; GFX8-NEXT:    v_bfe_u32 v7, v2, 16, 118675; GFX8-NEXT:    v_bfe_u32 v9, v6, 16, 118676; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v218677; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v618678; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v718679; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v918680; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v618681; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618682; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v218683; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v218684; GFX8-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18685; GFX8-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]18686; GFX8-NEXT:    v_lshrrev_b32_e32 v6, 16, v618687; GFX8-NEXT:    v_alignbit_b32 v2, v6, v2, 1618688; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc18689; GFX8-NEXT:    s_waitcnt vmcnt(0)18690; GFX8-NEXT:    buffer_wbinvl118691; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318692; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]18693; GFX8-NEXT:    v_mov_b32_e32 v3, v218694; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]18695; GFX8-NEXT:    s_cbranch_execnz .LBB54_118696; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end18697; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]18698; GFX8-NEXT:    s_setpc_b64 s[30:31]18699;18700; GFX7-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_pos:18701; GFX7:       ; %bb.0:18702; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18703; GFX7-NEXT:    s_mov_b32 s6, 018704; GFX7-NEXT:    s_mov_b32 s7, 0xf00018705; GFX7-NEXT:    s_mov_b32 s4, s618706; GFX7-NEXT:    s_mov_b32 s5, s618707; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204418708; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v218709; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v318710; GFX7-NEXT:    s_mov_b64 s[8:9], 018711; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v218712; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v318713; GFX7-NEXT:    s_waitcnt vmcnt(0)18714; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v518715; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v518716; GFX7-NEXT:  .LBB54_1: ; %atomicrmw.start18717; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=118718; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v418719; GFX7-NEXT:    v_mul_f32_e32 v5, 1.0, v518720; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v418721; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v518722; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v418723; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v318724; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v218725; GFX7-NEXT:    v_alignbit_b32 v5, v4, v5, 1618726; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v718727; GFX7-NEXT:    v_alignbit_b32 v4, v4, v6, 1618728; GFX7-NEXT:    v_mov_b32_e32 v7, v518729; GFX7-NEXT:    v_mov_b32_e32 v6, v418730; GFX7-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 offset:2044 glc18731; GFX7-NEXT:    s_waitcnt vmcnt(0)18732; GFX7-NEXT:    buffer_wbinvl118733; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v518734; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v618735; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]18736; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v618737; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]18738; GFX7-NEXT:    s_cbranch_execnz .LBB54_118739; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end18740; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]18741; GFX7-NEXT:    s_setpc_b64 s[30:31]18742;18743; GFX6-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_pos:18744; GFX6:       ; %bb.0:18745; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18746; GFX6-NEXT:    s_mov_b32 s6, 018747; GFX6-NEXT:    s_mov_b32 s7, 0xf00018748; GFX6-NEXT:    s_mov_b32 s4, s618749; GFX6-NEXT:    s_mov_b32 s5, s618750; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204418751; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v218752; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v318753; GFX6-NEXT:    s_mov_b64 s[8:9], 018754; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v218755; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v318756; GFX6-NEXT:    s_waitcnt vmcnt(0)18757; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v518758; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 16, v518759; GFX6-NEXT:  .LBB54_1: ; %atomicrmw.start18760; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=118761; GFX6-NEXT:    v_mul_f32_e32 v4, 1.0, v418762; GFX6-NEXT:    v_mul_f32_e32 v5, 1.0, v518763; GFX6-NEXT:    s_waitcnt expcnt(0)18764; GFX6-NEXT:    v_and_b32_e32 v7, 0xffff0000, v418765; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v518766; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v418767; GFX6-NEXT:    v_sub_f32_e32 v7, v7, v318768; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v218769; GFX6-NEXT:    v_alignbit_b32 v5, v4, v5, 1618770; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v718771; GFX6-NEXT:    v_alignbit_b32 v4, v4, v6, 1618772; GFX6-NEXT:    v_mov_b32_e32 v7, v518773; GFX6-NEXT:    v_mov_b32_e32 v6, v418774; GFX6-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 offset:2044 glc18775; GFX6-NEXT:    s_waitcnt vmcnt(0)18776; GFX6-NEXT:    buffer_wbinvl118777; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v518778; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v618779; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]18780; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 16, v618781; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]18782; GFX6-NEXT:    s_cbranch_execnz .LBB54_118783; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end18784; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]18785; GFX6-NEXT:    s_waitcnt expcnt(0)18786; GFX6-NEXT:    s_setpc_b64 s[30:31]18787  %gep = getelementptr <2 x bfloat>, ptr addrspace(1) %ptr, i64 51118788  %unused = atomicrmw fsub ptr addrspace(1) %gep, <2 x bfloat> %val syncscope("agent") seq_cst18789  ret void18790}18791 18792define void @global_agent_atomic_fsub_noret_v2bf16__offset12b_neg(ptr addrspace(1) %ptr, <2 x bfloat> %val) #0 {18793; GFX12-TRUE16-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_neg:18794; GFX12-TRUE16:       ; %bb.0:18795; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x018796; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x018797; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x018798; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x018799; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x018800; GFX12-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:-204818801; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v218802; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v218803; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 018804; GFX12-TRUE16-NEXT:  .LBB55_1: ; %atomicrmw.start18805; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=118806; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x018807; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318808; GFX12-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318809; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18810; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v2, v2, v518811; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v6, v6, v418812; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18813; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 118814; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 118815; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218816; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v218817; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618818; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18819; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18820; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)18821; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_3)18822; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo18823; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618824; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)18825; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo18826; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h18827; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x018828; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV18829; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x018830; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV18831; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318832; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v218833; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18834; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s018835; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18836; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s018837; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB55_118838; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end18839; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s018840; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x018841; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]18842;18843; GFX12-FAKE16-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_neg:18844; GFX12-FAKE16:       ; %bb.0:18845; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x018846; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x018847; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x018848; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x018849; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x018850; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:-204818851; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v218852; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218853; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 018854; GFX12-FAKE16-NEXT:  .LBB55_1: ; %atomicrmw.start18855; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=118856; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x018857; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318858; GFX12-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318859; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18860; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v418861; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v6, v6, v518862; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18863; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 118864; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 118865; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218866; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618867; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618868; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18869; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18870; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v218871; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)18872; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)18873; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18874; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)18875; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s018876; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)18877; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218878; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x018879; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV18880; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x018881; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV18882; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318883; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v218884; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18885; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s118886; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18887; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s118888; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB55_118889; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end18890; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s118891; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x018892; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]18893;18894; GFX942-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_neg:18895; GFX942:       ; %bb.0:18896; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18897; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:-204818898; GFX942-NEXT:    s_mov_b64 s[2:3], 018899; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v218900; GFX942-NEXT:    s_movk_i32 s4, 0x7fff18901; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218902; GFX942-NEXT:    s_mov_b32 s5, 0x706030218903; GFX942-NEXT:  .LBB55_1: ; %atomicrmw.start18904; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=118905; GFX942-NEXT:    s_waitcnt vmcnt(0)18906; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v318907; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318908; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v418909; GFX942-NEXT:    v_sub_f32_e32 v6, v6, v518910; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 118911; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 118912; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v218913; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v618914; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s418915; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s418916; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618917; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v218918; GFX942-NEXT:    s_nop 018919; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18920; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]18921; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s518922; GFX942-NEXT:    buffer_wbl2 sc118923; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 sc018924; GFX942-NEXT:    s_waitcnt vmcnt(0)18925; GFX942-NEXT:    buffer_inv sc118926; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318927; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]18928; GFX942-NEXT:    v_mov_b32_e32 v3, v218929; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]18930; GFX942-NEXT:    s_cbranch_execnz .LBB55_118931; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end18932; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]18933; GFX942-NEXT:    s_setpc_b64 s[30:31]18934;18935; GFX11-TRUE16-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_neg:18936; GFX11-TRUE16:       ; %bb.0:18937; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18938; GFX11-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:-204818939; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v218940; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v218941; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 018942; GFX11-TRUE16-NEXT:    .p2align 618943; GFX11-TRUE16-NEXT:  .LBB55_1: ; %atomicrmw.start18944; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=118945; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)18946; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318947; GFX11-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318948; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18949; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v2, v2, v518950; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v6, v6, v418951; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18952; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 118953; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 118954; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218955; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v218956; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618957; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18958; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18959; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)18960; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo18961; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618962; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo18963; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)18964; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h18965; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x018966; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:-2048 glc18967; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)18968; GFX11-TRUE16-NEXT:    buffer_gl1_inv18969; GFX11-TRUE16-NEXT:    buffer_gl0_inv18970; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318971; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v218972; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s018973; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)18974; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s018975; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB55_118976; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end18977; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s018978; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]18979;18980; GFX11-FAKE16-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_neg:18981; GFX11-FAKE16:       ; %bb.0:18982; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18983; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:-204818984; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v218985; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218986; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 018987; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x118988; GFX11-FAKE16-NEXT:    .p2align 618989; GFX11-FAKE16-NEXT:  .LBB55_1: ; %atomicrmw.start18990; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=118991; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)18992; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318993; GFX11-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318994; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18995; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v418996; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v6, v6, v518997; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18998; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 118999; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 119000; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v219001; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v619002; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v619003; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff19004; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff19005; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v219006; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19007; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo19008; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s019009; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)19010; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030219011; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x019012; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:-2048 glc19013; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)19014; GFX11-FAKE16-NEXT:    buffer_gl1_inv19015; GFX11-FAKE16-NEXT:    buffer_gl0_inv19016; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v319017; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v219018; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s119019; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)19020; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s119021; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB55_119022; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end19023; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x219024; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s119025; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]19026;19027; GFX10-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_neg:19028; GFX10:       ; %bb.0:19029; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19030; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:-204819031; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v219032; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219033; GFX10-NEXT:    s_mov_b32 s5, 019034; GFX10-NEXT:  .LBB55_1: ; %atomicrmw.start19035; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=119036; GFX10-NEXT:    s_waitcnt vmcnt(0)19037; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v319038; GFX10-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319039; GFX10-NEXT:    v_sub_f32_e32 v2, v2, v419040; GFX10-NEXT:    v_sub_f32_e32 v6, v6, v519041; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 119042; GFX10-NEXT:    v_bfe_u32 v8, v6, 16, 119043; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v219044; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v619045; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v619046; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff19047; GFX10-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff19048; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v2, v219049; GFX10-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo19050; GFX10-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s419051; GFX10-NEXT:    v_perm_b32 v2, v6, v2, 0x706030219052; GFX10-NEXT:    s_waitcnt_vscnt null, 0x019053; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 glc19054; GFX10-NEXT:    s_waitcnt vmcnt(0)19055; GFX10-NEXT:    buffer_gl1_inv19056; GFX10-NEXT:    buffer_gl0_inv19057; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v319058; GFX10-NEXT:    v_mov_b32_e32 v3, v219059; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s519060; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s519061; GFX10-NEXT:    s_cbranch_execnz .LBB55_119062; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end19063; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s519064; GFX10-NEXT:    s_setpc_b64 s[30:31]19065;19066; GFX90A-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_neg:19067; GFX90A:       ; %bb.0:19068; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19069; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:-204819070; GFX90A-NEXT:    s_mov_b64 s[6:7], 019071; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v219072; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff19073; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219074; GFX90A-NEXT:    s_mov_b32 s9, 0x706030219075; GFX90A-NEXT:  .LBB55_1: ; %atomicrmw.start19076; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=119077; GFX90A-NEXT:    s_waitcnt vmcnt(0)19078; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v319079; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319080; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v419081; GFX90A-NEXT:    v_sub_f32_e32 v6, v6, v519082; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 119083; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 119084; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v219085; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v619086; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s819087; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s819088; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v619089; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v219090; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]19091; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc19092; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s919093; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 glc19094; GFX90A-NEXT:    s_waitcnt vmcnt(0)19095; GFX90A-NEXT:    buffer_wbinvl119096; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v319097; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]19098; GFX90A-NEXT:    v_mov_b32_e32 v3, v219099; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]19100; GFX90A-NEXT:    s_cbranch_execnz .LBB55_119101; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end19102; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]19103; GFX90A-NEXT:    s_setpc_b64 s[30:31]19104;19105; GFX908-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_neg:19106; GFX908:       ; %bb.0:19107; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19108; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:-204819109; GFX908-NEXT:    s_mov_b64 s[6:7], 019110; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v219111; GFX908-NEXT:    s_movk_i32 s8, 0x7fff19112; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219113; GFX908-NEXT:    s_mov_b32 s9, 0x706030219114; GFX908-NEXT:  .LBB55_1: ; %atomicrmw.start19115; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=119116; GFX908-NEXT:    s_waitcnt vmcnt(0)19117; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v319118; GFX908-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319119; GFX908-NEXT:    v_sub_f32_e32 v2, v2, v419120; GFX908-NEXT:    v_sub_f32_e32 v6, v6, v519121; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 119122; GFX908-NEXT:    v_bfe_u32 v9, v6, 16, 119123; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v219124; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v619125; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s819126; GFX908-NEXT:    v_add3_u32 v9, v9, v6, s819127; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v6, v619128; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v219129; GFX908-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]19130; GFX908-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc19131; GFX908-NEXT:    v_perm_b32 v2, v6, v2, s919132; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 glc19133; GFX908-NEXT:    s_waitcnt vmcnt(0)19134; GFX908-NEXT:    buffer_wbinvl119135; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v319136; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]19137; GFX908-NEXT:    v_mov_b32_e32 v3, v219138; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]19139; GFX908-NEXT:    s_cbranch_execnz .LBB55_119140; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end19141; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]19142; GFX908-NEXT:    s_setpc_b64 s[30:31]19143;19144; GFX8-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_neg:19145; GFX8:       ; %bb.0:19146; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19147; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffff800, v019148; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc19149; GFX8-NEXT:    flat_load_dword v3, v[0:1]19150; GFX8-NEXT:    s_mov_b64 s[6:7], 019151; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v219152; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219153; GFX8-NEXT:  .LBB55_1: ; %atomicrmw.start19154; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=119155; GFX8-NEXT:    s_waitcnt vmcnt(0)19156; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v319157; GFX8-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319158; GFX8-NEXT:    v_sub_f32_e32 v2, v2, v419159; GFX8-NEXT:    v_sub_f32_e32 v6, v6, v519160; GFX8-NEXT:    v_bfe_u32 v7, v2, 16, 119161; GFX8-NEXT:    v_bfe_u32 v9, v6, 16, 119162; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v219163; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v619164; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v719165; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v919166; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v619167; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v6, v619168; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v219169; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v219170; GFX8-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc19171; GFX8-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]19172; GFX8-NEXT:    v_lshrrev_b32_e32 v6, 16, v619173; GFX8-NEXT:    v_alignbit_b32 v2, v6, v2, 1619174; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc19175; GFX8-NEXT:    s_waitcnt vmcnt(0)19176; GFX8-NEXT:    buffer_wbinvl119177; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v319178; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]19179; GFX8-NEXT:    v_mov_b32_e32 v3, v219180; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]19181; GFX8-NEXT:    s_cbranch_execnz .LBB55_119182; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end19183; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]19184; GFX8-NEXT:    s_setpc_b64 s[30:31]19185;19186; GFX7-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_neg:19187; GFX7:       ; %bb.0:19188; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19189; GFX7-NEXT:    s_movk_i32 s4, 0xf80019190; GFX7-NEXT:    s_mov_b32 s5, -119191; GFX7-NEXT:    s_mov_b32 s7, 0xf00019192; GFX7-NEXT:    s_mov_b32 s6, 019193; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr6419194; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v019195; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v219196; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v319197; GFX7-NEXT:    s_mov_b64 s[8:9], 019198; GFX7-NEXT:    s_mov_b32 s4, s619199; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc19200; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v219201; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v319202; GFX7-NEXT:    s_mov_b32 s5, s619203; GFX7-NEXT:    s_waitcnt vmcnt(0)19204; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v519205; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v519206; GFX7-NEXT:  .LBB55_1: ; %atomicrmw.start19207; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=119208; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v419209; GFX7-NEXT:    v_mul_f32_e32 v5, 1.0, v519210; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v419211; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v519212; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v419213; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v319214; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v219215; GFX7-NEXT:    v_alignbit_b32 v5, v4, v5, 1619216; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v719217; GFX7-NEXT:    v_alignbit_b32 v4, v4, v6, 1619218; GFX7-NEXT:    v_mov_b32_e32 v7, v519219; GFX7-NEXT:    v_mov_b32_e32 v6, v419220; GFX7-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 glc19221; GFX7-NEXT:    s_waitcnt vmcnt(0)19222; GFX7-NEXT:    buffer_wbinvl119223; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v519224; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v619225; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]19226; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v619227; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]19228; GFX7-NEXT:    s_cbranch_execnz .LBB55_119229; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end19230; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]19231; GFX7-NEXT:    s_setpc_b64 s[30:31]19232;19233; GFX6-LABEL: global_agent_atomic_fsub_noret_v2bf16__offset12b_neg:19234; GFX6:       ; %bb.0:19235; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19236; GFX6-NEXT:    s_movk_i32 s4, 0xf80019237; GFX6-NEXT:    s_mov_b32 s5, -119238; GFX6-NEXT:    s_mov_b32 s7, 0xf00019239; GFX6-NEXT:    s_mov_b32 s6, 019240; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr6419241; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v019242; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v219243; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v319244; GFX6-NEXT:    s_mov_b64 s[8:9], 019245; GFX6-NEXT:    s_mov_b32 s4, s619246; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc19247; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v219248; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v319249; GFX6-NEXT:    s_mov_b32 s5, s619250; GFX6-NEXT:    s_waitcnt vmcnt(0)19251; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v519252; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 16, v519253; GFX6-NEXT:  .LBB55_1: ; %atomicrmw.start19254; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=119255; GFX6-NEXT:    v_mul_f32_e32 v4, 1.0, v419256; GFX6-NEXT:    v_mul_f32_e32 v5, 1.0, v519257; GFX6-NEXT:    s_waitcnt expcnt(0)19258; GFX6-NEXT:    v_and_b32_e32 v7, 0xffff0000, v419259; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v519260; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v419261; GFX6-NEXT:    v_sub_f32_e32 v7, v7, v319262; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v219263; GFX6-NEXT:    v_alignbit_b32 v5, v4, v5, 1619264; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v719265; GFX6-NEXT:    v_alignbit_b32 v4, v4, v6, 1619266; GFX6-NEXT:    v_mov_b32_e32 v7, v519267; GFX6-NEXT:    v_mov_b32_e32 v6, v419268; GFX6-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 glc19269; GFX6-NEXT:    s_waitcnt vmcnt(0)19270; GFX6-NEXT:    buffer_wbinvl119271; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v519272; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v619273; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]19274; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 16, v619275; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]19276; GFX6-NEXT:    s_cbranch_execnz .LBB55_119277; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end19278; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]19279; GFX6-NEXT:    s_waitcnt expcnt(0)19280; GFX6-NEXT:    s_setpc_b64 s[30:31]19281  %gep = getelementptr <2 x bfloat>, ptr addrspace(1) %ptr, i64 -51219282  %unused = atomicrmw fsub ptr addrspace(1) %gep, <2 x bfloat> %val syncscope("agent") seq_cst19283  ret void19284}19285 19286define <2 x bfloat> @global_system_atomic_fsub_ret_v2bf16__offset12b_pos(ptr addrspace(1) %ptr, <2 x bfloat> %val) #0 {19287; GFX12-TRUE16-LABEL: global_system_atomic_fsub_ret_v2bf16__offset12b_pos:19288; GFX12-TRUE16:       ; %bb.0:19289; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x019290; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x019291; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x019292; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x019293; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x019294; GFX12-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204419295; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v219296; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v219297; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 019298; GFX12-TRUE16-NEXT:  .LBB56_1: ; %atomicrmw.start19299; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=119300; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x019301; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v319302; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)19303; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619304; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v419305; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v619306; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19307; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 119308; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v219309; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v519310; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)19311; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff19312; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 119313; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v319314; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v319315; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)19316; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff19317; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)19318; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo19319; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v519320; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)19321; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo19322; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)19323; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h19324; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS19325; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x019326; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS19327; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x019328; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS19329; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v619330; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)19331; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s019332; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)19333; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s019334; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB56_119335; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end19336; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s019337; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v319338; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x019339; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]19340;19341; GFX12-FAKE16-LABEL: global_system_atomic_fsub_ret_v2bf16__offset12b_pos:19342; GFX12-FAKE16:       ; %bb.0:19343; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x019344; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x019345; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x019346; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x019347; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x019348; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204419349; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v219350; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v219351; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 019352; GFX12-FAKE16-NEXT:  .LBB56_1: ; %atomicrmw.start19353; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=119354; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x019355; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v319356; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)19357; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619358; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v219359; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v619360; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19361; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 119362; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v419363; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v519364; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v519365; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)19366; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff19367; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 119368; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v319369; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v319370; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)19371; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo19372; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff19373; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)19374; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)19375; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s019376; GFX12-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030219377; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS19378; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x019379; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS19380; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x019381; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS19382; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v619383; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)19384; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s119385; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)19386; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s119387; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB56_119388; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end19389; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s119390; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v319391; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x019392; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]19393;19394; GFX942-LABEL: global_system_atomic_fsub_ret_v2bf16__offset12b_pos:19395; GFX942:       ; %bb.0:19396; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19397; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:204419398; GFX942-NEXT:    s_mov_b64 s[2:3], 019399; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v219400; GFX942-NEXT:    s_movk_i32 s4, 0x7fff19401; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219402; GFX942-NEXT:    s_mov_b32 s5, 0x706030219403; GFX942-NEXT:  .LBB56_1: ; %atomicrmw.start19404; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=119405; GFX942-NEXT:    s_waitcnt vmcnt(0)19406; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v319407; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319408; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v419409; GFX942-NEXT:    v_sub_f32_e32 v6, v6, v519410; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 119411; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 119412; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v219413; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v619414; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s419415; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s419416; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v619417; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v219418; GFX942-NEXT:    s_nop 019419; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc19420; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]19421; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s519422; GFX942-NEXT:    buffer_wbl2 sc0 sc119423; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 sc0 sc119424; GFX942-NEXT:    s_waitcnt vmcnt(0)19425; GFX942-NEXT:    buffer_inv sc0 sc119426; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v319427; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]19428; GFX942-NEXT:    v_mov_b32_e32 v3, v219429; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]19430; GFX942-NEXT:    s_cbranch_execnz .LBB56_119431; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end19432; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]19433; GFX942-NEXT:    v_mov_b32_e32 v0, v219434; GFX942-NEXT:    s_setpc_b64 s[30:31]19435;19436; GFX11-TRUE16-LABEL: global_system_atomic_fsub_ret_v2bf16__offset12b_pos:19437; GFX11-TRUE16:       ; %bb.0:19438; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19439; GFX11-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204419440; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v219441; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v219442; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 019443; GFX11-TRUE16-NEXT:    .p2align 619444; GFX11-TRUE16-NEXT:  .LBB56_1: ; %atomicrmw.start19445; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=119446; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)19447; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v319448; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)19449; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619450; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v419451; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v619452; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19453; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 119454; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v3, v3, v219455; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v519456; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)19457; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff19458; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 119459; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v319460; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v319461; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)19462; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff19463; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo19464; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v519465; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo19466; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)19467; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h19468; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x019469; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:2044 glc19470; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)19471; GFX11-TRUE16-NEXT:    buffer_gl1_inv19472; GFX11-TRUE16-NEXT:    buffer_gl0_inv19473; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v619474; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s019475; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)19476; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s019477; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB56_119478; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end19479; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s019480; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, v319481; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]19482;19483; GFX11-FAKE16-LABEL: global_system_atomic_fsub_ret_v2bf16__offset12b_pos:19484; GFX11-FAKE16:       ; %bb.0:19485; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19486; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204419487; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v219488; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v219489; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 019490; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x119491; GFX11-FAKE16-NEXT:    .p2align 619492; GFX11-FAKE16-NEXT:  .LBB56_1: ; %atomicrmw.start19493; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=119494; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)19495; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v319496; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)19497; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619498; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v219499; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v619500; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19501; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 119502; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v3, v3, v419503; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v519504; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v519505; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)19506; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff19507; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 119508; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v319509; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v319510; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)19511; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo19512; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff19513; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)19514; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s019515; GFX11-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030219516; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x019517; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:2044 glc19518; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)19519; GFX11-FAKE16-NEXT:    buffer_gl1_inv19520; GFX11-FAKE16-NEXT:    buffer_gl0_inv19521; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v619522; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s119523; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)19524; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s119525; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB56_119526; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end19527; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x219528; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s119529; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v319530; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]19531;19532; GFX10-LABEL: global_system_atomic_fsub_ret_v2bf16__offset12b_pos:19533; GFX10:       ; %bb.0:19534; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19535; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:204419536; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v219537; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff0000, v219538; GFX10-NEXT:    s_mov_b32 s5, 019539; GFX10-NEXT:  .LBB56_1: ; %atomicrmw.start19540; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=119541; GFX10-NEXT:    s_waitcnt vmcnt(0)19542; GFX10-NEXT:    v_mov_b32_e32 v6, v319543; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 16, v619544; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619545; GFX10-NEXT:    v_sub_f32_e32 v3, v3, v419546; GFX10-NEXT:    v_sub_f32_e32 v5, v5, v219547; GFX10-NEXT:    v_bfe_u32 v7, v3, 16, 119548; GFX10-NEXT:    v_bfe_u32 v8, v5, 16, 119549; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v319550; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v519551; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v519552; GFX10-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff19553; GFX10-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff19554; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v3, v319555; GFX10-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo19556; GFX10-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s419557; GFX10-NEXT:    v_perm_b32 v5, v5, v3, 0x706030219558; GFX10-NEXT:    s_waitcnt_vscnt null, 0x019559; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[5:6], off offset:2044 glc19560; GFX10-NEXT:    s_waitcnt vmcnt(0)19561; GFX10-NEXT:    buffer_gl1_inv19562; GFX10-NEXT:    buffer_gl0_inv19563; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v619564; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s519565; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s519566; GFX10-NEXT:    s_cbranch_execnz .LBB56_119567; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end19568; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s519569; GFX10-NEXT:    v_mov_b32_e32 v0, v319570; GFX10-NEXT:    s_setpc_b64 s[30:31]19571;19572; GFX90A-LABEL: global_system_atomic_fsub_ret_v2bf16__offset12b_pos:19573; GFX90A:       ; %bb.0:19574; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19575; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:204419576; GFX90A-NEXT:    s_mov_b64 s[6:7], 019577; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v219578; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff19579; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219580; GFX90A-NEXT:    s_mov_b32 s9, 0x706030219581; GFX90A-NEXT:  .LBB56_1: ; %atomicrmw.start19582; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=119583; GFX90A-NEXT:    s_waitcnt vmcnt(0)19584; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v319585; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319586; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v419587; GFX90A-NEXT:    v_sub_f32_e32 v6, v6, v519588; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 119589; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 119590; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v219591; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v619592; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s819593; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s819594; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v619595; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v219596; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]19597; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc19598; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s919599; GFX90A-NEXT:    buffer_wbl219600; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc19601; GFX90A-NEXT:    s_waitcnt vmcnt(0)19602; GFX90A-NEXT:    buffer_invl219603; GFX90A-NEXT:    buffer_wbinvl119604; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v319605; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]19606; GFX90A-NEXT:    v_mov_b32_e32 v3, v219607; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]19608; GFX90A-NEXT:    s_cbranch_execnz .LBB56_119609; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end19610; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]19611; GFX90A-NEXT:    v_mov_b32_e32 v0, v219612; GFX90A-NEXT:    s_setpc_b64 s[30:31]19613;19614; GFX908-LABEL: global_system_atomic_fsub_ret_v2bf16__offset12b_pos:19615; GFX908:       ; %bb.0:19616; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19617; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:204419618; GFX908-NEXT:    s_mov_b64 s[6:7], 019619; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v219620; GFX908-NEXT:    s_movk_i32 s8, 0x7fff19621; GFX908-NEXT:    v_and_b32_e32 v2, 0xffff0000, v219622; GFX908-NEXT:    s_mov_b32 s9, 0x706030219623; GFX908-NEXT:  .LBB56_1: ; %atomicrmw.start19624; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=119625; GFX908-NEXT:    s_waitcnt vmcnt(0)19626; GFX908-NEXT:    v_mov_b32_e32 v6, v319627; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v619628; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619629; GFX908-NEXT:    v_sub_f32_e32 v3, v3, v419630; GFX908-NEXT:    v_sub_f32_e32 v5, v5, v219631; GFX908-NEXT:    v_bfe_u32 v7, v3, 16, 119632; GFX908-NEXT:    v_bfe_u32 v9, v5, 16, 119633; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v319634; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v519635; GFX908-NEXT:    v_add3_u32 v7, v7, v3, s819636; GFX908-NEXT:    v_add3_u32 v9, v9, v5, s819637; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v519638; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v3, v319639; GFX908-NEXT:    v_cndmask_b32_e64 v3, v7, v8, s[4:5]19640; GFX908-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc19641; GFX908-NEXT:    v_perm_b32 v5, v5, v3, s919642; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[5:6], off offset:2044 glc19643; GFX908-NEXT:    s_waitcnt vmcnt(0)19644; GFX908-NEXT:    buffer_wbinvl119645; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v619646; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]19647; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]19648; GFX908-NEXT:    s_cbranch_execnz .LBB56_119649; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end19650; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]19651; GFX908-NEXT:    v_mov_b32_e32 v0, v319652; GFX908-NEXT:    s_setpc_b64 s[30:31]19653;19654; GFX8-LABEL: global_system_atomic_fsub_ret_v2bf16__offset12b_pos:19655; GFX8:       ; %bb.0:19656; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19657; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v019658; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc19659; GFX8-NEXT:    flat_load_dword v0, v[3:4]19660; GFX8-NEXT:    s_mov_b64 s[6:7], 019661; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 16, v219662; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v219663; GFX8-NEXT:  .LBB56_1: ; %atomicrmw.start19664; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=119665; GFX8-NEXT:    s_waitcnt vmcnt(0)19666; GFX8-NEXT:    v_mov_b32_e32 v6, v019667; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 16, v619668; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619669; GFX8-NEXT:    v_sub_f32_e32 v0, v0, v119670; GFX8-NEXT:    v_sub_f32_e32 v5, v5, v219671; GFX8-NEXT:    v_bfe_u32 v7, v0, 16, 119672; GFX8-NEXT:    v_bfe_u32 v9, v5, 16, 119673; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v019674; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v519675; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v719676; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v919677; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v519678; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v519679; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v019680; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v0, v019681; GFX8-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc19682; GFX8-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[4:5]19683; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v519684; GFX8-NEXT:    v_alignbit_b32 v5, v5, v0, 1619685; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc19686; GFX8-NEXT:    s_waitcnt vmcnt(0)19687; GFX8-NEXT:    buffer_wbinvl119688; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v619689; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]19690; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]19691; GFX8-NEXT:    s_cbranch_execnz .LBB56_119692; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end19693; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]19694; GFX8-NEXT:    s_setpc_b64 s[30:31]19695;19696; GFX7-LABEL: global_system_atomic_fsub_ret_v2bf16__offset12b_pos:19697; GFX7:       ; %bb.0:19698; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19699; GFX7-NEXT:    s_mov_b32 s6, 019700; GFX7-NEXT:    s_mov_b32 s7, 0xf00019701; GFX7-NEXT:    s_mov_b32 s4, s619702; GFX7-NEXT:    s_mov_b32 s5, s619703; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204419704; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v219705; GFX7-NEXT:    v_mul_f32_e32 v6, 1.0, v319706; GFX7-NEXT:    s_mov_b64 s[8:9], 019707; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v219708; GFX7-NEXT:    s_waitcnt vmcnt(0)19709; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v519710; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v519711; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619712; GFX7-NEXT:  .LBB56_1: ; %atomicrmw.start19713; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=119714; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v219715; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v319716; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v219717; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319718; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v219719; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v519720; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v419721; GFX7-NEXT:    v_alignbit_b32 v3, v2, v3, 1619722; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v719723; GFX7-NEXT:    v_alignbit_b32 v2, v2, v6, 1619724; GFX7-NEXT:    v_mov_b32_e32 v7, v319725; GFX7-NEXT:    v_mov_b32_e32 v6, v219726; GFX7-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 offset:2044 glc19727; GFX7-NEXT:    s_waitcnt vmcnt(0)19728; GFX7-NEXT:    buffer_wbinvl119729; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v319730; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v619731; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]19732; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v619733; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]19734; GFX7-NEXT:    s_cbranch_execnz .LBB56_119735; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end19736; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]19737; GFX7-NEXT:    v_mov_b32_e32 v0, v319738; GFX7-NEXT:    v_mov_b32_e32 v1, v219739; GFX7-NEXT:    s_setpc_b64 s[30:31]19740;19741; GFX6-LABEL: global_system_atomic_fsub_ret_v2bf16__offset12b_pos:19742; GFX6:       ; %bb.0:19743; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19744; GFX6-NEXT:    s_mov_b32 s6, 019745; GFX6-NEXT:    s_mov_b32 s7, 0xf00019746; GFX6-NEXT:    s_mov_b32 s4, s619747; GFX6-NEXT:    s_mov_b32 s5, s619748; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204419749; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v219750; GFX6-NEXT:    v_mul_f32_e32 v6, 1.0, v319751; GFX6-NEXT:    s_mov_b64 s[8:9], 019752; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v219753; GFX6-NEXT:    s_waitcnt vmcnt(0)19754; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v519755; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v519756; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619757; GFX6-NEXT:  .LBB56_1: ; %atomicrmw.start19758; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=119759; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v219760; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v319761; GFX6-NEXT:    s_waitcnt expcnt(0)19762; GFX6-NEXT:    v_and_b32_e32 v7, 0xffff0000, v219763; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319764; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v219765; GFX6-NEXT:    v_sub_f32_e32 v7, v7, v519766; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v419767; GFX6-NEXT:    v_alignbit_b32 v3, v2, v3, 1619768; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v719769; GFX6-NEXT:    v_alignbit_b32 v2, v2, v6, 1619770; GFX6-NEXT:    v_mov_b32_e32 v7, v319771; GFX6-NEXT:    v_mov_b32_e32 v6, v219772; GFX6-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 offset:2044 glc19773; GFX6-NEXT:    s_waitcnt vmcnt(0)19774; GFX6-NEXT:    buffer_wbinvl119775; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v319776; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v619777; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]19778; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v619779; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]19780; GFX6-NEXT:    s_cbranch_execnz .LBB56_119781; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end19782; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]19783; GFX6-NEXT:    v_mov_b32_e32 v0, v319784; GFX6-NEXT:    v_mov_b32_e32 v1, v219785; GFX6-NEXT:    s_waitcnt expcnt(0)19786; GFX6-NEXT:    s_setpc_b64 s[30:31]19787  %gep = getelementptr <2 x bfloat>, ptr addrspace(1) %ptr, i64 51119788  %result = atomicrmw fsub ptr addrspace(1) %gep, <2 x bfloat> %val seq_cst19789  ret <2 x bfloat> %result19790}19791 19792define void @global_system_atomic_fsub_noret_v2bf16__offset12b_pos(ptr addrspace(1) %ptr, <2 x bfloat> %val) #0 {19793; GFX12-TRUE16-LABEL: global_system_atomic_fsub_noret_v2bf16__offset12b_pos:19794; GFX12-TRUE16:       ; %bb.0:19795; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x019796; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x019797; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x019798; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x019799; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x019800; GFX12-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204419801; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v219802; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v219803; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 019804; GFX12-TRUE16-NEXT:  .LBB57_1: ; %atomicrmw.start19805; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=119806; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x019807; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v319808; GFX12-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319809; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19810; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v2, v2, v519811; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v6, v6, v419812; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19813; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 119814; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 119815; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v219816; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v219817; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v619818; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff19819; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff19820; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)19821; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_3)19822; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo19823; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v619824; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)19825; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo19826; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h19827; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS19828; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x019829; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS19830; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x019831; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS19832; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v319833; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v219834; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)19835; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s019836; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)19837; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s019838; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB57_119839; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end19840; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s019841; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x019842; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]19843;19844; GFX12-FAKE16-LABEL: global_system_atomic_fsub_noret_v2bf16__offset12b_pos:19845; GFX12-FAKE16:       ; %bb.0:19846; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x019847; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x019848; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x019849; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x019850; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x019851; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204419852; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v219853; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219854; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 019855; GFX12-FAKE16-NEXT:  .LBB57_1: ; %atomicrmw.start19856; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=119857; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x019858; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v319859; GFX12-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319860; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19861; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v419862; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v6, v6, v519863; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19864; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 119865; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 119866; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v219867; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v619868; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v619869; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff19870; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff19871; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v219872; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)19873; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)19874; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo19875; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)19876; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s019877; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)19878; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030219879; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS19880; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x019881; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS19882; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x019883; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS19884; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v319885; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v219886; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)19887; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s119888; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)19889; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s119890; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB57_119891; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end19892; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s119893; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x019894; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]19895;19896; GFX942-LABEL: global_system_atomic_fsub_noret_v2bf16__offset12b_pos:19897; GFX942:       ; %bb.0:19898; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19899; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:204419900; GFX942-NEXT:    s_mov_b64 s[2:3], 019901; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v219902; GFX942-NEXT:    s_movk_i32 s4, 0x7fff19903; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219904; GFX942-NEXT:    s_mov_b32 s5, 0x706030219905; GFX942-NEXT:  .LBB57_1: ; %atomicrmw.start19906; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=119907; GFX942-NEXT:    s_waitcnt vmcnt(0)19908; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v319909; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319910; GFX942-NEXT:    v_sub_f32_e32 v2, v2, v419911; GFX942-NEXT:    v_sub_f32_e32 v6, v6, v519912; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 119913; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 119914; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v219915; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v619916; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s419917; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s419918; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v619919; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v219920; GFX942-NEXT:    s_nop 019921; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc19922; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]19923; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s519924; GFX942-NEXT:    buffer_wbl2 sc0 sc119925; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 sc0 sc119926; GFX942-NEXT:    s_waitcnt vmcnt(0)19927; GFX942-NEXT:    buffer_inv sc0 sc119928; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v319929; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]19930; GFX942-NEXT:    v_mov_b32_e32 v3, v219931; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]19932; GFX942-NEXT:    s_cbranch_execnz .LBB57_119933; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end19934; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]19935; GFX942-NEXT:    s_setpc_b64 s[30:31]19936;19937; GFX11-TRUE16-LABEL: global_system_atomic_fsub_noret_v2bf16__offset12b_pos:19938; GFX11-TRUE16:       ; %bb.0:19939; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19940; GFX11-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204419941; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v219942; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v219943; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 019944; GFX11-TRUE16-NEXT:    .p2align 619945; GFX11-TRUE16-NEXT:  .LBB57_1: ; %atomicrmw.start19946; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=119947; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)19948; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v319949; GFX11-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319950; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19951; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v2, v2, v519952; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v6, v6, v419953; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19954; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 119955; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 119956; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v219957; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v219958; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v619959; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff19960; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff19961; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)19962; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo19963; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v619964; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo19965; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)19966; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h19967; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x019968; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2044 glc19969; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)19970; GFX11-TRUE16-NEXT:    buffer_gl1_inv19971; GFX11-TRUE16-NEXT:    buffer_gl0_inv19972; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v319973; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v219974; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s019975; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)19976; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s019977; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB57_119978; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end19979; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s019980; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]19981;19982; GFX11-FAKE16-LABEL: global_system_atomic_fsub_noret_v2bf16__offset12b_pos:19983; GFX11-FAKE16:       ; %bb.0:19984; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19985; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204419986; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v219987; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219988; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 019989; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x119990; GFX11-FAKE16-NEXT:    .p2align 619991; GFX11-FAKE16-NEXT:  .LBB57_1: ; %atomicrmw.start19992; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=119993; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)19994; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v319995; GFX11-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319996; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19997; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v419998; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v6, v6, v519999; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)20000; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 120001; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 120002; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v220003; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v620004; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v620005; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff20006; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff20007; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v220008; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)20009; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo20010; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s020011; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)20012; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030220013; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x020014; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2044 glc20015; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)20016; GFX11-FAKE16-NEXT:    buffer_gl1_inv20017; GFX11-FAKE16-NEXT:    buffer_gl0_inv20018; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v320019; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v220020; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s120021; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)20022; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s120023; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB57_120024; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end20025; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x220026; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s120027; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]20028;20029; GFX10-LABEL: global_system_atomic_fsub_noret_v2bf16__offset12b_pos:20030; GFX10:       ; %bb.0:20031; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20032; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:204420033; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v220034; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v220035; GFX10-NEXT:    s_mov_b32 s5, 020036; GFX10-NEXT:  .LBB57_1: ; %atomicrmw.start20037; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=120038; GFX10-NEXT:    s_waitcnt vmcnt(0)20039; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v320040; GFX10-NEXT:    v_and_b32_e32 v6, 0xffff0000, v320041; GFX10-NEXT:    v_sub_f32_e32 v2, v2, v420042; GFX10-NEXT:    v_sub_f32_e32 v6, v6, v520043; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 120044; GFX10-NEXT:    v_bfe_u32 v8, v6, 16, 120045; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v220046; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v620047; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v620048; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff20049; GFX10-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff20050; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v2, v220051; GFX10-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo20052; GFX10-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s420053; GFX10-NEXT:    v_perm_b32 v2, v6, v2, 0x706030220054; GFX10-NEXT:    s_waitcnt_vscnt null, 0x020055; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc20056; GFX10-NEXT:    s_waitcnt vmcnt(0)20057; GFX10-NEXT:    buffer_gl1_inv20058; GFX10-NEXT:    buffer_gl0_inv20059; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v320060; GFX10-NEXT:    v_mov_b32_e32 v3, v220061; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s520062; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s520063; GFX10-NEXT:    s_cbranch_execnz .LBB57_120064; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end20065; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s520066; GFX10-NEXT:    s_setpc_b64 s[30:31]20067;20068; GFX90A-LABEL: global_system_atomic_fsub_noret_v2bf16__offset12b_pos:20069; GFX90A:       ; %bb.0:20070; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20071; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:204420072; GFX90A-NEXT:    s_mov_b64 s[6:7], 020073; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v220074; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff20075; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v220076; GFX90A-NEXT:    s_mov_b32 s9, 0x706030220077; GFX90A-NEXT:  .LBB57_1: ; %atomicrmw.start20078; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=120079; GFX90A-NEXT:    s_waitcnt vmcnt(0)20080; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v320081; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v320082; GFX90A-NEXT:    v_sub_f32_e32 v2, v2, v420083; GFX90A-NEXT:    v_sub_f32_e32 v6, v6, v520084; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 120085; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 120086; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v220087; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v620088; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s820089; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s820090; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v620091; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v220092; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]20093; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc20094; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s920095; GFX90A-NEXT:    buffer_wbl220096; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc20097; GFX90A-NEXT:    s_waitcnt vmcnt(0)20098; GFX90A-NEXT:    buffer_invl220099; GFX90A-NEXT:    buffer_wbinvl120100; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v320101; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]20102; GFX90A-NEXT:    v_mov_b32_e32 v3, v220103; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]20104; GFX90A-NEXT:    s_cbranch_execnz .LBB57_120105; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end20106; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]20107; GFX90A-NEXT:    s_setpc_b64 s[30:31]20108;20109; GFX908-LABEL: global_system_atomic_fsub_noret_v2bf16__offset12b_pos:20110; GFX908:       ; %bb.0:20111; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20112; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:204420113; GFX908-NEXT:    s_mov_b64 s[6:7], 020114; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v220115; GFX908-NEXT:    s_movk_i32 s8, 0x7fff20116; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v220117; GFX908-NEXT:    s_mov_b32 s9, 0x706030220118; GFX908-NEXT:  .LBB57_1: ; %atomicrmw.start20119; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=120120; GFX908-NEXT:    s_waitcnt vmcnt(0)20121; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v320122; GFX908-NEXT:    v_and_b32_e32 v6, 0xffff0000, v320123; GFX908-NEXT:    v_sub_f32_e32 v2, v2, v420124; GFX908-NEXT:    v_sub_f32_e32 v6, v6, v520125; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 120126; GFX908-NEXT:    v_bfe_u32 v9, v6, 16, 120127; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v220128; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v620129; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s820130; GFX908-NEXT:    v_add3_u32 v9, v9, v6, s820131; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v6, v620132; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v220133; GFX908-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]20134; GFX908-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc20135; GFX908-NEXT:    v_perm_b32 v2, v6, v2, s920136; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc20137; GFX908-NEXT:    s_waitcnt vmcnt(0)20138; GFX908-NEXT:    buffer_wbinvl120139; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v320140; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]20141; GFX908-NEXT:    v_mov_b32_e32 v3, v220142; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]20143; GFX908-NEXT:    s_cbranch_execnz .LBB57_120144; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end20145; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]20146; GFX908-NEXT:    s_setpc_b64 s[30:31]20147;20148; GFX8-LABEL: global_system_atomic_fsub_noret_v2bf16__offset12b_pos:20149; GFX8:       ; %bb.0:20150; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20151; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v020152; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc20153; GFX8-NEXT:    flat_load_dword v3, v[0:1]20154; GFX8-NEXT:    s_mov_b64 s[6:7], 020155; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v220156; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v220157; GFX8-NEXT:  .LBB57_1: ; %atomicrmw.start20158; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=120159; GFX8-NEXT:    s_waitcnt vmcnt(0)20160; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v320161; GFX8-NEXT:    v_and_b32_e32 v6, 0xffff0000, v320162; GFX8-NEXT:    v_sub_f32_e32 v2, v2, v420163; GFX8-NEXT:    v_sub_f32_e32 v6, v6, v520164; GFX8-NEXT:    v_bfe_u32 v7, v2, 16, 120165; GFX8-NEXT:    v_bfe_u32 v9, v6, 16, 120166; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v220167; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v620168; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v720169; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v920170; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v620171; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v6, v620172; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v220173; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v220174; GFX8-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc20175; GFX8-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]20176; GFX8-NEXT:    v_lshrrev_b32_e32 v6, 16, v620177; GFX8-NEXT:    v_alignbit_b32 v2, v6, v2, 1620178; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc20179; GFX8-NEXT:    s_waitcnt vmcnt(0)20180; GFX8-NEXT:    buffer_wbinvl120181; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v320182; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]20183; GFX8-NEXT:    v_mov_b32_e32 v3, v220184; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]20185; GFX8-NEXT:    s_cbranch_execnz .LBB57_120186; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end20187; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]20188; GFX8-NEXT:    s_setpc_b64 s[30:31]20189;20190; GFX7-LABEL: global_system_atomic_fsub_noret_v2bf16__offset12b_pos:20191; GFX7:       ; %bb.0:20192; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20193; GFX7-NEXT:    s_mov_b32 s6, 020194; GFX7-NEXT:    s_mov_b32 s7, 0xf00020195; GFX7-NEXT:    s_mov_b32 s4, s620196; GFX7-NEXT:    s_mov_b32 s5, s620197; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204420198; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v220199; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v320200; GFX7-NEXT:    s_mov_b64 s[8:9], 020201; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v220202; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v320203; GFX7-NEXT:    s_waitcnt vmcnt(0)20204; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v520205; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v520206; GFX7-NEXT:  .LBB57_1: ; %atomicrmw.start20207; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=120208; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v420209; GFX7-NEXT:    v_mul_f32_e32 v5, 1.0, v520210; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v420211; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v520212; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v420213; GFX7-NEXT:    v_sub_f32_e32 v7, v7, v320214; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v220215; GFX7-NEXT:    v_alignbit_b32 v5, v4, v5, 1620216; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v720217; GFX7-NEXT:    v_alignbit_b32 v4, v4, v6, 1620218; GFX7-NEXT:    v_mov_b32_e32 v7, v520219; GFX7-NEXT:    v_mov_b32_e32 v6, v420220; GFX7-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 offset:2044 glc20221; GFX7-NEXT:    s_waitcnt vmcnt(0)20222; GFX7-NEXT:    buffer_wbinvl120223; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v520224; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v620225; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]20226; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v620227; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]20228; GFX7-NEXT:    s_cbranch_execnz .LBB57_120229; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end20230; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]20231; GFX7-NEXT:    s_setpc_b64 s[30:31]20232;20233; GFX6-LABEL: global_system_atomic_fsub_noret_v2bf16__offset12b_pos:20234; GFX6:       ; %bb.0:20235; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)20236; GFX6-NEXT:    s_mov_b32 s6, 020237; GFX6-NEXT:    s_mov_b32 s7, 0xf00020238; GFX6-NEXT:    s_mov_b32 s4, s620239; GFX6-NEXT:    s_mov_b32 s5, s620240; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204420241; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v220242; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v320243; GFX6-NEXT:    s_mov_b64 s[8:9], 020244; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v220245; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v320246; GFX6-NEXT:    s_waitcnt vmcnt(0)20247; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v520248; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 16, v520249; GFX6-NEXT:  .LBB57_1: ; %atomicrmw.start20250; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=120251; GFX6-NEXT:    v_mul_f32_e32 v4, 1.0, v420252; GFX6-NEXT:    v_mul_f32_e32 v5, 1.0, v520253; GFX6-NEXT:    s_waitcnt expcnt(0)20254; GFX6-NEXT:    v_and_b32_e32 v7, 0xffff0000, v420255; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v520256; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v420257; GFX6-NEXT:    v_sub_f32_e32 v7, v7, v320258; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v220259; GFX6-NEXT:    v_alignbit_b32 v5, v4, v5, 1620260; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v720261; GFX6-NEXT:    v_alignbit_b32 v4, v4, v6, 1620262; GFX6-NEXT:    v_mov_b32_e32 v7, v520263; GFX6-NEXT:    v_mov_b32_e32 v6, v420264; GFX6-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 offset:2044 glc20265; GFX6-NEXT:    s_waitcnt vmcnt(0)20266; GFX6-NEXT:    buffer_wbinvl120267; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v520268; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v620269; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]20270; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 16, v620271; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]20272; GFX6-NEXT:    s_cbranch_execnz .LBB57_120273; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end20274; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]20275; GFX6-NEXT:    s_waitcnt expcnt(0)20276; GFX6-NEXT:    s_setpc_b64 s[30:31]20277  %gep = getelementptr <2 x bfloat>, ptr addrspace(1) %ptr, i64 51120278  %unused = atomicrmw fsub ptr addrspace(1) %gep, <2 x bfloat> %val seq_cst20279  ret void20280}20281 20282attributes #0 = { nounwind }20283attributes #1 = { nounwind "denormal-fp-math-f32"="preserve-sign,preserve-sign" }20284