brintos

brintos / llvm-project-archived public Read only

0
0
Text · 430.8 KiB · dfe37fd Raw
9681 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 @local_atomic_fsub_ret_f32(ptr addrspace(3) %ptr) nounwind {19; GFX12-LABEL: local_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:    ds_load_b32 v1, v027; 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_dscnt 0x031; GFX12-NEXT:    v_mov_b32_e32 v2, v132; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)33; GFX12-NEXT:    v_add_f32_e32 v1, -4.0, v234; GFX12-NEXT:    s_wait_storecnt 0x035; GFX12-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v236; GFX12-NEXT:    s_wait_dscnt 0x037; GFX12-NEXT:    global_inv scope:SCOPE_SE38; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v239; 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, v147; GFX12-NEXT:    s_wait_loadcnt 0x048; GFX12-NEXT:    s_setpc_b64 s[30:31]49;50; GFX942-LABEL: local_atomic_fsub_ret_f32:51; GFX942:       ; %bb.0:52; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)53; GFX942-NEXT:    ds_read_b32 v2, v054; 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 lgkmcnt(0)58; GFX942-NEXT:    v_add_f32_e32 v1, -4.0, v259; GFX942-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v160; GFX942-NEXT:    s_waitcnt lgkmcnt(0)61; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v262; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]63; GFX942-NEXT:    v_mov_b32_e32 v2, v164; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]65; GFX942-NEXT:    s_cbranch_execnz .LBB0_166; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end67; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]68; GFX942-NEXT:    v_mov_b32_e32 v0, v169; GFX942-NEXT:    s_setpc_b64 s[30:31]70;71; GFX11-LABEL: local_atomic_fsub_ret_f32:72; GFX11:       ; %bb.0:73; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)74; GFX11-NEXT:    ds_load_b32 v1, v075; GFX11-NEXT:    s_mov_b32 s0, 076; GFX11-NEXT:  .LBB0_1: ; %atomicrmw.start77; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=178; GFX11-NEXT:    s_waitcnt lgkmcnt(0)79; GFX11-NEXT:    v_mov_b32_e32 v2, v180; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)81; GFX11-NEXT:    v_add_f32_e32 v1, -4.0, v282; GFX11-NEXT:    s_waitcnt_vscnt null, 0x083; GFX11-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v284; GFX11-NEXT:    s_waitcnt lgkmcnt(0)85; GFX11-NEXT:    buffer_gl0_inv86; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v287; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s088; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)89; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s090; GFX11-NEXT:    s_cbranch_execnz .LBB0_191; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end92; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s093; GFX11-NEXT:    v_mov_b32_e32 v0, v194; GFX11-NEXT:    s_setpc_b64 s[30:31]95;96; GFX10-LABEL: local_atomic_fsub_ret_f32:97; GFX10:       ; %bb.0:98; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)99; GFX10-NEXT:    ds_read_b32 v1, v0100; GFX10-NEXT:    s_mov_b32 s4, 0101; GFX10-NEXT:  .LBB0_1: ; %atomicrmw.start102; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1103; GFX10-NEXT:    s_waitcnt lgkmcnt(0)104; GFX10-NEXT:    v_mov_b32_e32 v2, v1105; GFX10-NEXT:    v_add_f32_e32 v1, -4.0, v2106; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0107; GFX10-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1108; GFX10-NEXT:    s_waitcnt lgkmcnt(0)109; GFX10-NEXT:    buffer_gl0_inv110; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v2111; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s4112; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s4113; GFX10-NEXT:    s_cbranch_execnz .LBB0_1114; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end115; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s4116; GFX10-NEXT:    v_mov_b32_e32 v0, v1117; GFX10-NEXT:    s_setpc_b64 s[30:31]118;119; GFX90A-LABEL: local_atomic_fsub_ret_f32:120; GFX90A:       ; %bb.0:121; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)122; GFX90A-NEXT:    ds_read_b32 v2, v0123; GFX90A-NEXT:    s_mov_b64 s[4:5], 0124; GFX90A-NEXT:  .LBB0_1: ; %atomicrmw.start125; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1126; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)127; GFX90A-NEXT:    v_add_f32_e32 v1, -4.0, v2128; GFX90A-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1129; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)130; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v2131; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]132; GFX90A-NEXT:    v_mov_b32_e32 v2, v1133; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]134; GFX90A-NEXT:    s_cbranch_execnz .LBB0_1135; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end136; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]137; GFX90A-NEXT:    v_mov_b32_e32 v0, v1138; GFX90A-NEXT:    s_setpc_b64 s[30:31]139;140; GFX908-LABEL: local_atomic_fsub_ret_f32:141; GFX908:       ; %bb.0:142; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)143; GFX908-NEXT:    ds_read_b32 v1, v0144; GFX908-NEXT:    s_mov_b64 s[4:5], 0145; GFX908-NEXT:  .LBB0_1: ; %atomicrmw.start146; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1147; GFX908-NEXT:    s_waitcnt lgkmcnt(0)148; GFX908-NEXT:    v_mov_b32_e32 v2, v1149; GFX908-NEXT:    v_add_f32_e32 v1, -4.0, v2150; GFX908-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1151; GFX908-NEXT:    s_waitcnt lgkmcnt(0)152; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v2153; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]154; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]155; GFX908-NEXT:    s_cbranch_execnz .LBB0_1156; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end157; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]158; GFX908-NEXT:    v_mov_b32_e32 v0, v1159; GFX908-NEXT:    s_setpc_b64 s[30:31]160;161; GFX8-LABEL: local_atomic_fsub_ret_f32:162; GFX8:       ; %bb.0:163; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)164; GFX8-NEXT:    s_mov_b32 m0, -1165; GFX8-NEXT:    ds_read_b32 v1, v0166; GFX8-NEXT:    s_mov_b64 s[4:5], 0167; GFX8-NEXT:  .LBB0_1: ; %atomicrmw.start168; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1169; GFX8-NEXT:    s_waitcnt lgkmcnt(0)170; GFX8-NEXT:    v_mov_b32_e32 v2, v1171; GFX8-NEXT:    v_add_f32_e32 v1, -4.0, v2172; GFX8-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1173; GFX8-NEXT:    s_waitcnt lgkmcnt(0)174; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v2175; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]176; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]177; GFX8-NEXT:    s_cbranch_execnz .LBB0_1178; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end179; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]180; GFX8-NEXT:    v_mov_b32_e32 v0, v1181; GFX8-NEXT:    s_setpc_b64 s[30:31]182;183; GFX7-LABEL: local_atomic_fsub_ret_f32:184; GFX7:       ; %bb.0:185; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)186; GFX7-NEXT:    s_mov_b32 m0, -1187; GFX7-NEXT:    ds_read_b32 v1, v0188; GFX7-NEXT:    s_mov_b64 s[4:5], 0189; GFX7-NEXT:  .LBB0_1: ; %atomicrmw.start190; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=1191; GFX7-NEXT:    s_waitcnt lgkmcnt(0)192; GFX7-NEXT:    v_mov_b32_e32 v2, v1193; GFX7-NEXT:    v_add_f32_e32 v1, -4.0, v2194; GFX7-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1195; GFX7-NEXT:    s_waitcnt lgkmcnt(0)196; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v2197; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]198; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]199; GFX7-NEXT:    s_cbranch_execnz .LBB0_1200; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end201; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]202; GFX7-NEXT:    v_mov_b32_e32 v0, v1203; GFX7-NEXT:    s_setpc_b64 s[30:31]204;205; GFX6-LABEL: local_atomic_fsub_ret_f32:206; GFX6:       ; %bb.0:207; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)208; GFX6-NEXT:    s_mov_b32 m0, -1209; GFX6-NEXT:    ds_read_b32 v1, v0210; GFX6-NEXT:    s_mov_b64 s[4:5], 0211; GFX6-NEXT:  .LBB0_1: ; %atomicrmw.start212; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=1213; GFX6-NEXT:    s_waitcnt lgkmcnt(0)214; GFX6-NEXT:    v_mov_b32_e32 v2, v1215; GFX6-NEXT:    v_add_f32_e32 v1, -4.0, v2216; GFX6-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1217; GFX6-NEXT:    s_waitcnt lgkmcnt(0)218; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v2219; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]220; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]221; GFX6-NEXT:    s_cbranch_execnz .LBB0_1222; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end223; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]224; GFX6-NEXT:    v_mov_b32_e32 v0, v1225; GFX6-NEXT:    s_setpc_b64 s[30:31]226  %result = atomicrmw fsub ptr addrspace(3) %ptr, float 4.0 seq_cst227  ret float %result228}229 230define float @local_atomic_fsub_ret_f32__offset(ptr addrspace(3) %ptr) nounwind {231; GFX12-LABEL: local_atomic_fsub_ret_f32__offset:232; GFX12:       ; %bb.0:233; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0234; GFX12-NEXT:    s_wait_expcnt 0x0235; GFX12-NEXT:    s_wait_samplecnt 0x0236; GFX12-NEXT:    s_wait_bvhcnt 0x0237; GFX12-NEXT:    s_wait_kmcnt 0x0238; GFX12-NEXT:    ds_load_b32 v1, v0 offset:65532239; GFX12-NEXT:    s_mov_b32 s0, 0240; GFX12-NEXT:  .LBB1_1: ; %atomicrmw.start241; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=1242; GFX12-NEXT:    s_wait_dscnt 0x0243; GFX12-NEXT:    v_mov_b32_e32 v2, v1244; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)245; GFX12-NEXT:    v_add_f32_e32 v1, -4.0, v2246; GFX12-NEXT:    s_wait_storecnt 0x0247; GFX12-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v2 offset:65532248; GFX12-NEXT:    s_wait_dscnt 0x0249; GFX12-NEXT:    global_inv scope:SCOPE_SE250; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v2251; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)252; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s0253; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)254; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0255; GFX12-NEXT:    s_cbranch_execnz .LBB1_1256; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end257; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s0258; GFX12-NEXT:    v_mov_b32_e32 v0, v1259; GFX12-NEXT:    s_wait_loadcnt 0x0260; GFX12-NEXT:    s_setpc_b64 s[30:31]261;262; GFX942-LABEL: local_atomic_fsub_ret_f32__offset:263; GFX942:       ; %bb.0:264; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)265; GFX942-NEXT:    ds_read_b32 v2, v0 offset:65532266; GFX942-NEXT:    s_mov_b64 s[0:1], 0267; GFX942-NEXT:  .LBB1_1: ; %atomicrmw.start268; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1269; GFX942-NEXT:    s_waitcnt lgkmcnt(0)270; GFX942-NEXT:    v_add_f32_e32 v1, -4.0, v2271; GFX942-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:65532272; GFX942-NEXT:    s_waitcnt lgkmcnt(0)273; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v2274; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]275; GFX942-NEXT:    v_mov_b32_e32 v2, v1276; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]277; GFX942-NEXT:    s_cbranch_execnz .LBB1_1278; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end279; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]280; GFX942-NEXT:    v_mov_b32_e32 v0, v1281; GFX942-NEXT:    s_setpc_b64 s[30:31]282;283; GFX11-LABEL: local_atomic_fsub_ret_f32__offset:284; GFX11:       ; %bb.0:285; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)286; GFX11-NEXT:    ds_load_b32 v1, v0 offset:65532287; GFX11-NEXT:    s_mov_b32 s0, 0288; GFX11-NEXT:  .LBB1_1: ; %atomicrmw.start289; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1290; GFX11-NEXT:    s_waitcnt lgkmcnt(0)291; GFX11-NEXT:    v_mov_b32_e32 v2, v1292; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)293; GFX11-NEXT:    v_add_f32_e32 v1, -4.0, v2294; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0295; GFX11-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v2 offset:65532296; GFX11-NEXT:    s_waitcnt lgkmcnt(0)297; GFX11-NEXT:    buffer_gl0_inv298; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v2299; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s0300; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)301; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0302; GFX11-NEXT:    s_cbranch_execnz .LBB1_1303; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end304; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s0305; GFX11-NEXT:    v_mov_b32_e32 v0, v1306; GFX11-NEXT:    s_setpc_b64 s[30:31]307;308; GFX10-LABEL: local_atomic_fsub_ret_f32__offset:309; GFX10:       ; %bb.0:310; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)311; GFX10-NEXT:    ds_read_b32 v1, v0 offset:65532312; GFX10-NEXT:    s_mov_b32 s4, 0313; GFX10-NEXT:  .LBB1_1: ; %atomicrmw.start314; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1315; GFX10-NEXT:    s_waitcnt lgkmcnt(0)316; GFX10-NEXT:    v_mov_b32_e32 v2, v1317; GFX10-NEXT:    v_add_f32_e32 v1, -4.0, v2318; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0319; GFX10-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:65532320; GFX10-NEXT:    s_waitcnt lgkmcnt(0)321; GFX10-NEXT:    buffer_gl0_inv322; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v2323; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s4324; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s4325; GFX10-NEXT:    s_cbranch_execnz .LBB1_1326; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end327; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s4328; GFX10-NEXT:    v_mov_b32_e32 v0, v1329; GFX10-NEXT:    s_setpc_b64 s[30:31]330;331; GFX90A-LABEL: local_atomic_fsub_ret_f32__offset:332; GFX90A:       ; %bb.0:333; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)334; GFX90A-NEXT:    ds_read_b32 v2, v0 offset:65532335; GFX90A-NEXT:    s_mov_b64 s[4:5], 0336; GFX90A-NEXT:  .LBB1_1: ; %atomicrmw.start337; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1338; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)339; GFX90A-NEXT:    v_add_f32_e32 v1, -4.0, v2340; GFX90A-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:65532341; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)342; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v2343; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]344; GFX90A-NEXT:    v_mov_b32_e32 v2, v1345; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]346; GFX90A-NEXT:    s_cbranch_execnz .LBB1_1347; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end348; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]349; GFX90A-NEXT:    v_mov_b32_e32 v0, v1350; GFX90A-NEXT:    s_setpc_b64 s[30:31]351;352; GFX908-LABEL: local_atomic_fsub_ret_f32__offset:353; GFX908:       ; %bb.0:354; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)355; GFX908-NEXT:    ds_read_b32 v1, v0 offset:65532356; GFX908-NEXT:    s_mov_b64 s[4:5], 0357; GFX908-NEXT:  .LBB1_1: ; %atomicrmw.start358; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1359; GFX908-NEXT:    s_waitcnt lgkmcnt(0)360; GFX908-NEXT:    v_mov_b32_e32 v2, v1361; GFX908-NEXT:    v_add_f32_e32 v1, -4.0, v2362; GFX908-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:65532363; GFX908-NEXT:    s_waitcnt lgkmcnt(0)364; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v2365; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]366; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]367; GFX908-NEXT:    s_cbranch_execnz .LBB1_1368; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end369; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]370; GFX908-NEXT:    v_mov_b32_e32 v0, v1371; GFX908-NEXT:    s_setpc_b64 s[30:31]372;373; GFX8-LABEL: local_atomic_fsub_ret_f32__offset:374; GFX8:       ; %bb.0:375; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)376; GFX8-NEXT:    s_mov_b32 m0, -1377; GFX8-NEXT:    ds_read_b32 v1, v0 offset:65532378; GFX8-NEXT:    s_mov_b64 s[4:5], 0379; GFX8-NEXT:  .LBB1_1: ; %atomicrmw.start380; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1381; GFX8-NEXT:    s_waitcnt lgkmcnt(0)382; GFX8-NEXT:    v_mov_b32_e32 v2, v1383; GFX8-NEXT:    v_add_f32_e32 v1, -4.0, v2384; GFX8-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:65532385; GFX8-NEXT:    s_waitcnt lgkmcnt(0)386; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v2387; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]388; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]389; GFX8-NEXT:    s_cbranch_execnz .LBB1_1390; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end391; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]392; GFX8-NEXT:    v_mov_b32_e32 v0, v1393; GFX8-NEXT:    s_setpc_b64 s[30:31]394;395; GFX7-LABEL: local_atomic_fsub_ret_f32__offset:396; GFX7:       ; %bb.0:397; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)398; GFX7-NEXT:    s_mov_b32 m0, -1399; GFX7-NEXT:    ds_read_b32 v1, v0 offset:65532400; GFX7-NEXT:    s_mov_b64 s[4:5], 0401; GFX7-NEXT:  .LBB1_1: ; %atomicrmw.start402; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=1403; GFX7-NEXT:    s_waitcnt lgkmcnt(0)404; GFX7-NEXT:    v_mov_b32_e32 v2, v1405; GFX7-NEXT:    v_add_f32_e32 v1, -4.0, v2406; GFX7-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:65532407; GFX7-NEXT:    s_waitcnt lgkmcnt(0)408; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v2409; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]410; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]411; GFX7-NEXT:    s_cbranch_execnz .LBB1_1412; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end413; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]414; GFX7-NEXT:    v_mov_b32_e32 v0, v1415; GFX7-NEXT:    s_setpc_b64 s[30:31]416;417; GFX6-LABEL: local_atomic_fsub_ret_f32__offset:418; GFX6:       ; %bb.0:419; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)420; GFX6-NEXT:    v_add_i32_e32 v1, vcc, 0xfffc, v0421; GFX6-NEXT:    s_mov_b32 m0, -1422; GFX6-NEXT:    ds_read_b32 v0, v1423; GFX6-NEXT:    s_mov_b64 s[4:5], 0424; GFX6-NEXT:  .LBB1_1: ; %atomicrmw.start425; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=1426; GFX6-NEXT:    s_waitcnt lgkmcnt(0)427; GFX6-NEXT:    v_mov_b32_e32 v2, v0428; GFX6-NEXT:    v_add_f32_e32 v0, -4.0, v2429; GFX6-NEXT:    ds_cmpst_rtn_b32 v0, v1, v2, v0430; GFX6-NEXT:    s_waitcnt lgkmcnt(0)431; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v2432; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]433; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]434; GFX6-NEXT:    s_cbranch_execnz .LBB1_1435; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end436; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]437; GFX6-NEXT:    s_setpc_b64 s[30:31]438  %gep = getelementptr float, ptr addrspace(3) %ptr, i32 16383439  %result = atomicrmw fsub ptr addrspace(3) %gep, float 4.0 seq_cst440  ret float %result441}442 443define void @local_atomic_fsub_noret_f32(ptr addrspace(3) %ptr) nounwind {444; GFX12-LABEL: local_atomic_fsub_noret_f32:445; GFX12:       ; %bb.0:446; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0447; GFX12-NEXT:    s_wait_expcnt 0x0448; GFX12-NEXT:    s_wait_samplecnt 0x0449; GFX12-NEXT:    s_wait_bvhcnt 0x0450; GFX12-NEXT:    s_wait_kmcnt 0x0451; GFX12-NEXT:    ds_load_b32 v1, v0452; GFX12-NEXT:    s_mov_b32 s0, 0453; GFX12-NEXT:  .LBB2_1: ; %atomicrmw.start454; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=1455; GFX12-NEXT:    s_wait_dscnt 0x0456; GFX12-NEXT:    v_add_f32_e32 v2, -4.0, v1457; GFX12-NEXT:    s_wait_storecnt 0x0458; GFX12-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v1459; GFX12-NEXT:    s_wait_dscnt 0x0460; GFX12-NEXT:    global_inv scope:SCOPE_SE461; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v1462; GFX12-NEXT:    v_mov_b32_e32 v1, v2463; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)464; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s0465; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)466; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0467; GFX12-NEXT:    s_cbranch_execnz .LBB2_1468; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end469; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s0470; GFX12-NEXT:    s_wait_loadcnt 0x0471; GFX12-NEXT:    s_setpc_b64 s[30:31]472;473; GFX942-LABEL: local_atomic_fsub_noret_f32:474; GFX942:       ; %bb.0:475; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)476; GFX942-NEXT:    ds_read_b32 v1, v0477; GFX942-NEXT:    s_mov_b64 s[0:1], 0478; GFX942-NEXT:  .LBB2_1: ; %atomicrmw.start479; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1480; GFX942-NEXT:    s_waitcnt lgkmcnt(0)481; GFX942-NEXT:    v_add_f32_e32 v2, -4.0, v1482; GFX942-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2483; GFX942-NEXT:    s_waitcnt lgkmcnt(0)484; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v1485; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]486; GFX942-NEXT:    v_mov_b32_e32 v1, v2487; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]488; GFX942-NEXT:    s_cbranch_execnz .LBB2_1489; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end490; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]491; GFX942-NEXT:    s_setpc_b64 s[30:31]492;493; GFX11-LABEL: local_atomic_fsub_noret_f32:494; GFX11:       ; %bb.0:495; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)496; GFX11-NEXT:    ds_load_b32 v1, v0497; GFX11-NEXT:    s_mov_b32 s0, 0498; GFX11-NEXT:  .LBB2_1: ; %atomicrmw.start499; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1500; GFX11-NEXT:    s_waitcnt lgkmcnt(0)501; GFX11-NEXT:    v_add_f32_e32 v2, -4.0, v1502; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0503; GFX11-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v1504; GFX11-NEXT:    s_waitcnt lgkmcnt(0)505; GFX11-NEXT:    buffer_gl0_inv506; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v1507; GFX11-NEXT:    v_mov_b32_e32 v1, v2508; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s0509; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)510; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0511; GFX11-NEXT:    s_cbranch_execnz .LBB2_1512; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end513; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s0514; GFX11-NEXT:    s_setpc_b64 s[30:31]515;516; GFX10-LABEL: local_atomic_fsub_noret_f32:517; GFX10:       ; %bb.0:518; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)519; GFX10-NEXT:    ds_read_b32 v1, v0520; GFX10-NEXT:    s_mov_b32 s4, 0521; GFX10-NEXT:  .LBB2_1: ; %atomicrmw.start522; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1523; GFX10-NEXT:    s_waitcnt lgkmcnt(0)524; GFX10-NEXT:    v_add_f32_e32 v2, -4.0, v1525; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0526; GFX10-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2527; GFX10-NEXT:    s_waitcnt lgkmcnt(0)528; GFX10-NEXT:    buffer_gl0_inv529; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v1530; GFX10-NEXT:    v_mov_b32_e32 v1, v2531; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s4532; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s4533; GFX10-NEXT:    s_cbranch_execnz .LBB2_1534; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end535; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s4536; GFX10-NEXT:    s_setpc_b64 s[30:31]537;538; GFX90A-LABEL: local_atomic_fsub_noret_f32:539; GFX90A:       ; %bb.0:540; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)541; GFX90A-NEXT:    ds_read_b32 v1, v0542; GFX90A-NEXT:    s_mov_b64 s[4:5], 0543; GFX90A-NEXT:  .LBB2_1: ; %atomicrmw.start544; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1545; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)546; GFX90A-NEXT:    v_add_f32_e32 v2, -4.0, v1547; GFX90A-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2548; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)549; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v1550; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]551; GFX90A-NEXT:    v_mov_b32_e32 v1, v2552; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]553; GFX90A-NEXT:    s_cbranch_execnz .LBB2_1554; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end555; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]556; GFX90A-NEXT:    s_setpc_b64 s[30:31]557;558; GFX908-LABEL: local_atomic_fsub_noret_f32:559; GFX908:       ; %bb.0:560; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)561; GFX908-NEXT:    ds_read_b32 v1, v0562; GFX908-NEXT:    s_mov_b64 s[4:5], 0563; GFX908-NEXT:  .LBB2_1: ; %atomicrmw.start564; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1565; GFX908-NEXT:    s_waitcnt lgkmcnt(0)566; GFX908-NEXT:    v_add_f32_e32 v2, -4.0, v1567; GFX908-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2568; GFX908-NEXT:    s_waitcnt lgkmcnt(0)569; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v1570; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]571; GFX908-NEXT:    v_mov_b32_e32 v1, v2572; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]573; GFX908-NEXT:    s_cbranch_execnz .LBB2_1574; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end575; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]576; GFX908-NEXT:    s_setpc_b64 s[30:31]577;578; GFX8-LABEL: local_atomic_fsub_noret_f32:579; GFX8:       ; %bb.0:580; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)581; GFX8-NEXT:    s_mov_b32 m0, -1582; GFX8-NEXT:    ds_read_b32 v1, v0583; GFX8-NEXT:    s_mov_b64 s[4:5], 0584; GFX8-NEXT:  .LBB2_1: ; %atomicrmw.start585; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1586; GFX8-NEXT:    s_waitcnt lgkmcnt(0)587; GFX8-NEXT:    v_add_f32_e32 v2, -4.0, v1588; GFX8-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2589; GFX8-NEXT:    s_waitcnt lgkmcnt(0)590; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v1591; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]592; GFX8-NEXT:    v_mov_b32_e32 v1, v2593; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]594; GFX8-NEXT:    s_cbranch_execnz .LBB2_1595; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end596; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]597; GFX8-NEXT:    s_setpc_b64 s[30:31]598;599; GFX7-LABEL: local_atomic_fsub_noret_f32:600; GFX7:       ; %bb.0:601; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)602; GFX7-NEXT:    s_mov_b32 m0, -1603; GFX7-NEXT:    ds_read_b32 v1, v0604; GFX7-NEXT:    s_mov_b64 s[4:5], 0605; GFX7-NEXT:  .LBB2_1: ; %atomicrmw.start606; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=1607; GFX7-NEXT:    s_waitcnt lgkmcnt(0)608; GFX7-NEXT:    v_add_f32_e32 v2, -4.0, v1609; GFX7-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2610; GFX7-NEXT:    s_waitcnt lgkmcnt(0)611; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v1612; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]613; GFX7-NEXT:    v_mov_b32_e32 v1, v2614; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]615; GFX7-NEXT:    s_cbranch_execnz .LBB2_1616; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end617; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]618; GFX7-NEXT:    s_setpc_b64 s[30:31]619;620; GFX6-LABEL: local_atomic_fsub_noret_f32:621; GFX6:       ; %bb.0:622; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)623; GFX6-NEXT:    s_mov_b32 m0, -1624; GFX6-NEXT:    ds_read_b32 v1, v0625; GFX6-NEXT:    s_mov_b64 s[4:5], 0626; GFX6-NEXT:  .LBB2_1: ; %atomicrmw.start627; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=1628; GFX6-NEXT:    s_waitcnt lgkmcnt(0)629; GFX6-NEXT:    v_add_f32_e32 v2, -4.0, v1630; GFX6-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2631; GFX6-NEXT:    s_waitcnt lgkmcnt(0)632; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v1633; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]634; GFX6-NEXT:    v_mov_b32_e32 v1, v2635; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]636; GFX6-NEXT:    s_cbranch_execnz .LBB2_1637; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end638; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]639; GFX6-NEXT:    s_setpc_b64 s[30:31]640  %result = atomicrmw fsub ptr addrspace(3) %ptr, float 4.0 seq_cst641  ret void642}643 644define void @local_atomic_fsub_noret_f32__offset(ptr addrspace(3) %ptr) nounwind {645; GFX12-LABEL: local_atomic_fsub_noret_f32__offset:646; GFX12:       ; %bb.0:647; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0648; GFX12-NEXT:    s_wait_expcnt 0x0649; GFX12-NEXT:    s_wait_samplecnt 0x0650; GFX12-NEXT:    s_wait_bvhcnt 0x0651; GFX12-NEXT:    s_wait_kmcnt 0x0652; GFX12-NEXT:    ds_load_b32 v1, v0 offset:65532653; GFX12-NEXT:    s_mov_b32 s0, 0654; GFX12-NEXT:  .LBB3_1: ; %atomicrmw.start655; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=1656; GFX12-NEXT:    s_wait_dscnt 0x0657; GFX12-NEXT:    v_add_f32_e32 v2, -4.0, v1658; GFX12-NEXT:    s_wait_storecnt 0x0659; GFX12-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v1 offset:65532660; GFX12-NEXT:    s_wait_dscnt 0x0661; GFX12-NEXT:    global_inv scope:SCOPE_SE662; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v1663; GFX12-NEXT:    v_mov_b32_e32 v1, v2664; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)665; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s0666; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)667; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0668; GFX12-NEXT:    s_cbranch_execnz .LBB3_1669; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end670; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s0671; GFX12-NEXT:    s_wait_loadcnt 0x0672; GFX12-NEXT:    s_setpc_b64 s[30:31]673;674; GFX942-LABEL: local_atomic_fsub_noret_f32__offset:675; GFX942:       ; %bb.0:676; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)677; GFX942-NEXT:    ds_read_b32 v1, v0 offset:65532678; GFX942-NEXT:    s_mov_b64 s[0:1], 0679; GFX942-NEXT:  .LBB3_1: ; %atomicrmw.start680; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1681; GFX942-NEXT:    s_waitcnt lgkmcnt(0)682; GFX942-NEXT:    v_add_f32_e32 v2, -4.0, v1683; GFX942-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:65532684; GFX942-NEXT:    s_waitcnt lgkmcnt(0)685; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v1686; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]687; GFX942-NEXT:    v_mov_b32_e32 v1, v2688; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]689; GFX942-NEXT:    s_cbranch_execnz .LBB3_1690; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end691; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]692; GFX942-NEXT:    s_setpc_b64 s[30:31]693;694; GFX11-LABEL: local_atomic_fsub_noret_f32__offset:695; GFX11:       ; %bb.0:696; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)697; GFX11-NEXT:    ds_load_b32 v1, v0 offset:65532698; GFX11-NEXT:    s_mov_b32 s0, 0699; GFX11-NEXT:  .LBB3_1: ; %atomicrmw.start700; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1701; GFX11-NEXT:    s_waitcnt lgkmcnt(0)702; GFX11-NEXT:    v_add_f32_e32 v2, -4.0, v1703; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0704; GFX11-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v1 offset:65532705; GFX11-NEXT:    s_waitcnt lgkmcnt(0)706; GFX11-NEXT:    buffer_gl0_inv707; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v1708; GFX11-NEXT:    v_mov_b32_e32 v1, v2709; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s0710; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)711; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0712; GFX11-NEXT:    s_cbranch_execnz .LBB3_1713; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end714; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s0715; GFX11-NEXT:    s_setpc_b64 s[30:31]716;717; GFX10-LABEL: local_atomic_fsub_noret_f32__offset:718; GFX10:       ; %bb.0:719; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)720; GFX10-NEXT:    ds_read_b32 v1, v0 offset:65532721; GFX10-NEXT:    s_mov_b32 s4, 0722; GFX10-NEXT:  .LBB3_1: ; %atomicrmw.start723; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1724; GFX10-NEXT:    s_waitcnt lgkmcnt(0)725; GFX10-NEXT:    v_add_f32_e32 v2, -4.0, v1726; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0727; GFX10-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:65532728; GFX10-NEXT:    s_waitcnt lgkmcnt(0)729; GFX10-NEXT:    buffer_gl0_inv730; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v1731; GFX10-NEXT:    v_mov_b32_e32 v1, v2732; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s4733; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s4734; GFX10-NEXT:    s_cbranch_execnz .LBB3_1735; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end736; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s4737; GFX10-NEXT:    s_setpc_b64 s[30:31]738;739; GFX90A-LABEL: local_atomic_fsub_noret_f32__offset:740; GFX90A:       ; %bb.0:741; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)742; GFX90A-NEXT:    ds_read_b32 v1, v0 offset:65532743; GFX90A-NEXT:    s_mov_b64 s[4:5], 0744; GFX90A-NEXT:  .LBB3_1: ; %atomicrmw.start745; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1746; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)747; GFX90A-NEXT:    v_add_f32_e32 v2, -4.0, v1748; GFX90A-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:65532749; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)750; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v1751; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]752; GFX90A-NEXT:    v_mov_b32_e32 v1, v2753; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]754; GFX90A-NEXT:    s_cbranch_execnz .LBB3_1755; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end756; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]757; GFX90A-NEXT:    s_setpc_b64 s[30:31]758;759; GFX908-LABEL: local_atomic_fsub_noret_f32__offset:760; GFX908:       ; %bb.0:761; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)762; GFX908-NEXT:    ds_read_b32 v1, v0 offset:65532763; GFX908-NEXT:    s_mov_b64 s[4:5], 0764; GFX908-NEXT:  .LBB3_1: ; %atomicrmw.start765; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1766; GFX908-NEXT:    s_waitcnt lgkmcnt(0)767; GFX908-NEXT:    v_add_f32_e32 v2, -4.0, v1768; GFX908-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:65532769; GFX908-NEXT:    s_waitcnt lgkmcnt(0)770; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v1771; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]772; GFX908-NEXT:    v_mov_b32_e32 v1, v2773; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]774; GFX908-NEXT:    s_cbranch_execnz .LBB3_1775; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end776; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]777; GFX908-NEXT:    s_setpc_b64 s[30:31]778;779; GFX8-LABEL: local_atomic_fsub_noret_f32__offset:780; GFX8:       ; %bb.0:781; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)782; GFX8-NEXT:    s_mov_b32 m0, -1783; GFX8-NEXT:    ds_read_b32 v1, v0 offset:65532784; GFX8-NEXT:    s_mov_b64 s[4:5], 0785; GFX8-NEXT:  .LBB3_1: ; %atomicrmw.start786; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1787; GFX8-NEXT:    s_waitcnt lgkmcnt(0)788; GFX8-NEXT:    v_add_f32_e32 v2, -4.0, v1789; GFX8-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:65532790; GFX8-NEXT:    s_waitcnt lgkmcnt(0)791; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v1792; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]793; GFX8-NEXT:    v_mov_b32_e32 v1, v2794; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]795; GFX8-NEXT:    s_cbranch_execnz .LBB3_1796; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end797; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]798; GFX8-NEXT:    s_setpc_b64 s[30:31]799;800; GFX7-LABEL: local_atomic_fsub_noret_f32__offset:801; GFX7:       ; %bb.0:802; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)803; GFX7-NEXT:    s_mov_b32 m0, -1804; GFX7-NEXT:    ds_read_b32 v1, v0 offset:65532805; GFX7-NEXT:    s_mov_b64 s[4:5], 0806; GFX7-NEXT:  .LBB3_1: ; %atomicrmw.start807; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=1808; GFX7-NEXT:    s_waitcnt lgkmcnt(0)809; GFX7-NEXT:    v_add_f32_e32 v2, -4.0, v1810; GFX7-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:65532811; GFX7-NEXT:    s_waitcnt lgkmcnt(0)812; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v1813; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]814; GFX7-NEXT:    v_mov_b32_e32 v1, v2815; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]816; GFX7-NEXT:    s_cbranch_execnz .LBB3_1817; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end818; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]819; GFX7-NEXT:    s_setpc_b64 s[30:31]820;821; GFX6-LABEL: local_atomic_fsub_noret_f32__offset:822; GFX6:       ; %bb.0:823; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)824; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffc, v0825; GFX6-NEXT:    s_mov_b32 m0, -1826; GFX6-NEXT:    ds_read_b32 v1, v0827; GFX6-NEXT:    s_mov_b64 s[4:5], 0828; GFX6-NEXT:  .LBB3_1: ; %atomicrmw.start829; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=1830; GFX6-NEXT:    s_waitcnt lgkmcnt(0)831; GFX6-NEXT:    v_add_f32_e32 v2, -4.0, v1832; GFX6-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2833; GFX6-NEXT:    s_waitcnt lgkmcnt(0)834; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v1835; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]836; GFX6-NEXT:    v_mov_b32_e32 v1, v2837; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]838; GFX6-NEXT:    s_cbranch_execnz .LBB3_1839; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end840; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]841; GFX6-NEXT:    s_setpc_b64 s[30:31]842  %gep = getelementptr float, ptr addrspace(3) %ptr, i32 16383843  %unused = atomicrmw fsub ptr addrspace(3) %gep, float 4.0 seq_cst844  ret void845}846 847; --------------------------------------------------------------------848; double849; --------------------------------------------------------------------850 851define double @local_atomic_fsub_ret_f64(ptr addrspace(3) %ptr) nounwind {852; GFX12-LABEL: local_atomic_fsub_ret_f64:853; GFX12:       ; %bb.0:854; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0855; GFX12-NEXT:    s_wait_expcnt 0x0856; GFX12-NEXT:    s_wait_samplecnt 0x0857; GFX12-NEXT:    s_wait_bvhcnt 0x0858; GFX12-NEXT:    s_wait_kmcnt 0x0859; GFX12-NEXT:    v_mov_b32_e32 v2, v0860; GFX12-NEXT:    ds_load_b64 v[0:1], v0861; GFX12-NEXT:    s_mov_b32 s0, 0862; GFX12-NEXT:  .LBB4_1: ; %atomicrmw.start863; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=1864; GFX12-NEXT:    s_wait_dscnt 0x0865; GFX12-NEXT:    v_dual_mov_b32 v4, v1 :: v_dual_mov_b32 v3, v0866; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)867; GFX12-NEXT:    v_add_f64_e32 v[0:1], -4.0, v[3:4]868; GFX12-NEXT:    s_wait_storecnt 0x0869; GFX12-NEXT:    ds_cmpstore_rtn_b64 v[0:1], v2, v[0:1], v[3:4]870; GFX12-NEXT:    s_wait_dscnt 0x0871; GFX12-NEXT:    global_inv scope:SCOPE_SE872; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[3:4]873; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)874; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s0875; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)876; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0877; GFX12-NEXT:    s_cbranch_execnz .LBB4_1878; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end879; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s0880; GFX12-NEXT:    s_wait_loadcnt 0x0881; GFX12-NEXT:    s_setpc_b64 s[30:31]882;883; GFX942-LABEL: local_atomic_fsub_ret_f64:884; GFX942:       ; %bb.0:885; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)886; GFX942-NEXT:    ds_read_b64 v[4:5], v0887; GFX942-NEXT:    v_mov_b32_e32 v2, v0888; GFX942-NEXT:    s_mov_b64 s[0:1], 0889; GFX942-NEXT:  .LBB4_1: ; %atomicrmw.start890; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1891; GFX942-NEXT:    s_waitcnt lgkmcnt(0)892; GFX942-NEXT:    v_add_f64 v[0:1], v[4:5], -4.0893; GFX942-NEXT:    ds_cmpst_rtn_b64 v[0:1], v2, v[4:5], v[0:1]894; GFX942-NEXT:    s_waitcnt lgkmcnt(0)895; GFX942-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[4:5]896; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]897; GFX942-NEXT:    v_mov_b64_e32 v[4:5], v[0:1]898; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]899; GFX942-NEXT:    s_cbranch_execnz .LBB4_1900; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end901; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]902; GFX942-NEXT:    s_setpc_b64 s[30:31]903;904; GFX11-LABEL: local_atomic_fsub_ret_f64:905; GFX11:       ; %bb.0:906; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)907; GFX11-NEXT:    v_mov_b32_e32 v2, v0908; GFX11-NEXT:    ds_load_b64 v[0:1], v0909; GFX11-NEXT:    s_mov_b32 s0, 0910; GFX11-NEXT:  .LBB4_1: ; %atomicrmw.start911; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=1912; GFX11-NEXT:    s_waitcnt lgkmcnt(0)913; GFX11-NEXT:    v_dual_mov_b32 v4, v1 :: v_dual_mov_b32 v3, v0914; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)915; GFX11-NEXT:    v_add_f64 v[0:1], v[3:4], -4.0916; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0917; GFX11-NEXT:    ds_cmpstore_rtn_b64 v[0:1], v2, v[0:1], v[3:4]918; GFX11-NEXT:    s_waitcnt lgkmcnt(0)919; GFX11-NEXT:    buffer_gl0_inv920; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[3:4]921; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s0922; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)923; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0924; GFX11-NEXT:    s_cbranch_execnz .LBB4_1925; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end926; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s0927; GFX11-NEXT:    s_setpc_b64 s[30:31]928;929; GFX10-LABEL: local_atomic_fsub_ret_f64:930; GFX10:       ; %bb.0:931; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)932; GFX10-NEXT:    v_mov_b32_e32 v2, v0933; GFX10-NEXT:    ds_read_b64 v[0:1], v0934; GFX10-NEXT:    s_mov_b32 s4, 0935; GFX10-NEXT:  .LBB4_1: ; %atomicrmw.start936; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1937; GFX10-NEXT:    s_waitcnt lgkmcnt(0)938; GFX10-NEXT:    v_mov_b32_e32 v4, v1939; GFX10-NEXT:    v_mov_b32_e32 v3, v0940; GFX10-NEXT:    v_add_f64 v[0:1], v[3:4], -4.0941; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0942; GFX10-NEXT:    ds_cmpst_rtn_b64 v[0:1], v2, v[3:4], v[0:1]943; GFX10-NEXT:    s_waitcnt lgkmcnt(0)944; GFX10-NEXT:    buffer_gl0_inv945; GFX10-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[3:4]946; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s4947; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s4948; GFX10-NEXT:    s_cbranch_execnz .LBB4_1949; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end950; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s4951; GFX10-NEXT:    s_setpc_b64 s[30:31]952;953; GFX90A-LABEL: local_atomic_fsub_ret_f64:954; GFX90A:       ; %bb.0:955; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)956; GFX90A-NEXT:    ds_read_b64 v[4:5], v0957; GFX90A-NEXT:    v_mov_b32_e32 v2, v0958; GFX90A-NEXT:    s_mov_b64 s[4:5], 0959; GFX90A-NEXT:  .LBB4_1: ; %atomicrmw.start960; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1961; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)962; GFX90A-NEXT:    v_add_f64 v[0:1], v[4:5], -4.0963; GFX90A-NEXT:    ds_cmpst_rtn_b64 v[0:1], v2, v[4:5], v[0:1]964; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)965; GFX90A-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[4:5]966; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]967; GFX90A-NEXT:    v_pk_mov_b32 v[4:5], v[0:1], v[0:1] op_sel:[0,1]968; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]969; GFX90A-NEXT:    s_cbranch_execnz .LBB4_1970; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end971; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]972; GFX90A-NEXT:    s_setpc_b64 s[30:31]973;974; GFX908-LABEL: local_atomic_fsub_ret_f64:975; GFX908:       ; %bb.0:976; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)977; GFX908-NEXT:    v_mov_b32_e32 v2, v0978; GFX908-NEXT:    ds_read_b64 v[0:1], v0979; GFX908-NEXT:    s_mov_b64 s[4:5], 0980; GFX908-NEXT:  .LBB4_1: ; %atomicrmw.start981; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1982; GFX908-NEXT:    s_waitcnt lgkmcnt(0)983; GFX908-NEXT:    v_mov_b32_e32 v4, v1984; GFX908-NEXT:    v_mov_b32_e32 v3, v0985; GFX908-NEXT:    v_add_f64 v[0:1], v[3:4], -4.0986; GFX908-NEXT:    ds_cmpst_rtn_b64 v[0:1], v2, v[3:4], v[0:1]987; GFX908-NEXT:    s_waitcnt lgkmcnt(0)988; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[3:4]989; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]990; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]991; GFX908-NEXT:    s_cbranch_execnz .LBB4_1992; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end993; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]994; GFX908-NEXT:    s_setpc_b64 s[30:31]995;996; GFX8-LABEL: local_atomic_fsub_ret_f64:997; GFX8:       ; %bb.0:998; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)999; GFX8-NEXT:    s_mov_b32 m0, -11000; GFX8-NEXT:    v_mov_b32_e32 v2, v01001; GFX8-NEXT:    ds_read_b64 v[0:1], v01002; GFX8-NEXT:    s_mov_b64 s[4:5], 01003; GFX8-NEXT:  .LBB4_1: ; %atomicrmw.start1004; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11005; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1006; GFX8-NEXT:    v_mov_b32_e32 v4, v11007; GFX8-NEXT:    v_mov_b32_e32 v3, v01008; GFX8-NEXT:    v_add_f64 v[0:1], v[3:4], -4.01009; GFX8-NEXT:    ds_cmpst_rtn_b64 v[0:1], v2, v[3:4], v[0:1]1010; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1011; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[3:4]1012; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1013; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1014; GFX8-NEXT:    s_cbranch_execnz .LBB4_11015; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1016; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1017; GFX8-NEXT:    s_setpc_b64 s[30:31]1018;1019; GFX7-LABEL: local_atomic_fsub_ret_f64:1020; GFX7:       ; %bb.0:1021; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1022; GFX7-NEXT:    s_mov_b32 m0, -11023; GFX7-NEXT:    v_mov_b32_e32 v2, v01024; GFX7-NEXT:    ds_read_b64 v[0:1], v01025; GFX7-NEXT:    s_mov_b64 s[4:5], 01026; GFX7-NEXT:  .LBB4_1: ; %atomicrmw.start1027; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=11028; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1029; GFX7-NEXT:    v_mov_b32_e32 v4, v11030; GFX7-NEXT:    v_mov_b32_e32 v3, v01031; GFX7-NEXT:    v_add_f64 v[0:1], v[3:4], -4.01032; GFX7-NEXT:    ds_cmpst_rtn_b64 v[0:1], v2, v[3:4], v[0:1]1033; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1034; GFX7-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[3:4]1035; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1036; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]1037; GFX7-NEXT:    s_cbranch_execnz .LBB4_11038; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end1039; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]1040; GFX7-NEXT:    s_setpc_b64 s[30:31]1041;1042; GFX6-LABEL: local_atomic_fsub_ret_f64:1043; GFX6:       ; %bb.0:1044; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1045; GFX6-NEXT:    s_mov_b32 m0, -11046; GFX6-NEXT:    v_mov_b32_e32 v2, v01047; GFX6-NEXT:    ds_read_b64 v[0:1], v01048; GFX6-NEXT:    s_mov_b64 s[4:5], 01049; GFX6-NEXT:  .LBB4_1: ; %atomicrmw.start1050; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=11051; GFX6-NEXT:    s_waitcnt lgkmcnt(0)1052; GFX6-NEXT:    v_mov_b32_e32 v4, v11053; GFX6-NEXT:    v_mov_b32_e32 v3, v01054; GFX6-NEXT:    v_add_f64 v[0:1], v[3:4], -4.01055; GFX6-NEXT:    ds_cmpst_rtn_b64 v[0:1], v2, v[3:4], v[0:1]1056; GFX6-NEXT:    s_waitcnt lgkmcnt(0)1057; GFX6-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[3:4]1058; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1059; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]1060; GFX6-NEXT:    s_cbranch_execnz .LBB4_11061; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end1062; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]1063; GFX6-NEXT:    s_setpc_b64 s[30:31]1064  %result = atomicrmw fsub ptr addrspace(3) %ptr, double 4.0 seq_cst1065  ret double %result1066}1067 1068define double @local_atomic_fsub_ret_f64__offset(ptr addrspace(3) %ptr) nounwind {1069; GFX12-LABEL: local_atomic_fsub_ret_f64__offset:1070; GFX12:       ; %bb.0:1071; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01072; GFX12-NEXT:    s_wait_expcnt 0x01073; GFX12-NEXT:    s_wait_samplecnt 0x01074; GFX12-NEXT:    s_wait_bvhcnt 0x01075; GFX12-NEXT:    s_wait_kmcnt 0x01076; GFX12-NEXT:    v_mov_b32_e32 v2, v01077; GFX12-NEXT:    ds_load_b64 v[0:1], v0 offset:655281078; GFX12-NEXT:    s_mov_b32 s0, 01079; GFX12-NEXT:  .LBB5_1: ; %atomicrmw.start1080; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=11081; GFX12-NEXT:    s_wait_dscnt 0x01082; GFX12-NEXT:    v_dual_mov_b32 v4, v1 :: v_dual_mov_b32 v3, v01083; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)1084; GFX12-NEXT:    v_add_f64_e32 v[0:1], -4.0, v[3:4]1085; GFX12-NEXT:    s_wait_storecnt 0x01086; GFX12-NEXT:    ds_cmpstore_rtn_b64 v[0:1], v2, v[0:1], v[3:4] offset:655281087; GFX12-NEXT:    s_wait_dscnt 0x01088; GFX12-NEXT:    global_inv scope:SCOPE_SE1089; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[3:4]1090; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1091; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s01092; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1093; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01094; GFX12-NEXT:    s_cbranch_execnz .LBB5_11095; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end1096; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s01097; GFX12-NEXT:    s_wait_loadcnt 0x01098; GFX12-NEXT:    s_setpc_b64 s[30:31]1099;1100; GFX942-LABEL: local_atomic_fsub_ret_f64__offset:1101; GFX942:       ; %bb.0:1102; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1103; GFX942-NEXT:    ds_read_b64 v[4:5], v0 offset:655281104; GFX942-NEXT:    v_mov_b32_e32 v2, v01105; GFX942-NEXT:    s_mov_b64 s[0:1], 01106; GFX942-NEXT:  .LBB5_1: ; %atomicrmw.start1107; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11108; GFX942-NEXT:    s_waitcnt lgkmcnt(0)1109; GFX942-NEXT:    v_add_f64 v[0:1], v[4:5], -4.01110; GFX942-NEXT:    ds_cmpst_rtn_b64 v[0:1], v2, v[4:5], v[0:1] offset:655281111; GFX942-NEXT:    s_waitcnt lgkmcnt(0)1112; GFX942-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[4:5]1113; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1114; GFX942-NEXT:    v_mov_b64_e32 v[4:5], v[0:1]1115; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1116; GFX942-NEXT:    s_cbranch_execnz .LBB5_11117; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1118; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1119; GFX942-NEXT:    s_setpc_b64 s[30:31]1120;1121; GFX11-LABEL: local_atomic_fsub_ret_f64__offset:1122; GFX11:       ; %bb.0:1123; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1124; GFX11-NEXT:    v_mov_b32_e32 v2, v01125; GFX11-NEXT:    ds_load_b64 v[0:1], v0 offset:655281126; GFX11-NEXT:    s_mov_b32 s0, 01127; GFX11-NEXT:  .LBB5_1: ; %atomicrmw.start1128; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=11129; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1130; GFX11-NEXT:    v_dual_mov_b32 v4, v1 :: v_dual_mov_b32 v3, v01131; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1132; GFX11-NEXT:    v_add_f64 v[0:1], v[3:4], -4.01133; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01134; GFX11-NEXT:    ds_cmpstore_rtn_b64 v[0:1], v2, v[0:1], v[3:4] offset:655281135; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1136; GFX11-NEXT:    buffer_gl0_inv1137; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[3:4]1138; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s01139; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1140; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01141; GFX11-NEXT:    s_cbranch_execnz .LBB5_11142; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end1143; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s01144; GFX11-NEXT:    s_setpc_b64 s[30:31]1145;1146; GFX10-LABEL: local_atomic_fsub_ret_f64__offset:1147; GFX10:       ; %bb.0:1148; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1149; GFX10-NEXT:    v_mov_b32_e32 v2, v01150; GFX10-NEXT:    ds_read_b64 v[0:1], v0 offset:655281151; GFX10-NEXT:    s_mov_b32 s4, 01152; GFX10-NEXT:  .LBB5_1: ; %atomicrmw.start1153; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=11154; GFX10-NEXT:    s_waitcnt lgkmcnt(0)1155; GFX10-NEXT:    v_mov_b32_e32 v4, v11156; GFX10-NEXT:    v_mov_b32_e32 v3, v01157; GFX10-NEXT:    v_add_f64 v[0:1], v[3:4], -4.01158; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01159; GFX10-NEXT:    ds_cmpst_rtn_b64 v[0:1], v2, v[3:4], v[0:1] offset:655281160; GFX10-NEXT:    s_waitcnt lgkmcnt(0)1161; GFX10-NEXT:    buffer_gl0_inv1162; GFX10-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[3:4]1163; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s41164; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s41165; GFX10-NEXT:    s_cbranch_execnz .LBB5_11166; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end1167; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s41168; GFX10-NEXT:    s_setpc_b64 s[30:31]1169;1170; GFX90A-LABEL: local_atomic_fsub_ret_f64__offset:1171; GFX90A:       ; %bb.0:1172; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1173; GFX90A-NEXT:    ds_read_b64 v[4:5], v0 offset:655281174; GFX90A-NEXT:    v_mov_b32_e32 v2, v01175; GFX90A-NEXT:    s_mov_b64 s[4:5], 01176; GFX90A-NEXT:  .LBB5_1: ; %atomicrmw.start1177; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11178; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)1179; GFX90A-NEXT:    v_add_f64 v[0:1], v[4:5], -4.01180; GFX90A-NEXT:    ds_cmpst_rtn_b64 v[0:1], v2, v[4:5], v[0:1] offset:655281181; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)1182; GFX90A-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[4:5]1183; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1184; GFX90A-NEXT:    v_pk_mov_b32 v[4:5], v[0:1], v[0:1] op_sel:[0,1]1185; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1186; GFX90A-NEXT:    s_cbranch_execnz .LBB5_11187; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1188; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1189; GFX90A-NEXT:    s_setpc_b64 s[30:31]1190;1191; GFX908-LABEL: local_atomic_fsub_ret_f64__offset:1192; GFX908:       ; %bb.0:1193; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1194; GFX908-NEXT:    v_mov_b32_e32 v2, v01195; GFX908-NEXT:    ds_read_b64 v[0:1], v0 offset:655281196; GFX908-NEXT:    s_mov_b64 s[4:5], 01197; GFX908-NEXT:  .LBB5_1: ; %atomicrmw.start1198; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11199; GFX908-NEXT:    s_waitcnt lgkmcnt(0)1200; GFX908-NEXT:    v_mov_b32_e32 v4, v11201; GFX908-NEXT:    v_mov_b32_e32 v3, v01202; GFX908-NEXT:    v_add_f64 v[0:1], v[3:4], -4.01203; GFX908-NEXT:    ds_cmpst_rtn_b64 v[0:1], v2, v[3:4], v[0:1] offset:655281204; GFX908-NEXT:    s_waitcnt lgkmcnt(0)1205; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[3:4]1206; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1207; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1208; GFX908-NEXT:    s_cbranch_execnz .LBB5_11209; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1210; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1211; GFX908-NEXT:    s_setpc_b64 s[30:31]1212;1213; GFX8-LABEL: local_atomic_fsub_ret_f64__offset:1214; GFX8:       ; %bb.0:1215; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1216; GFX8-NEXT:    s_mov_b32 m0, -11217; GFX8-NEXT:    v_mov_b32_e32 v2, v01218; GFX8-NEXT:    ds_read_b64 v[0:1], v0 offset:655281219; GFX8-NEXT:    s_mov_b64 s[4:5], 01220; GFX8-NEXT:  .LBB5_1: ; %atomicrmw.start1221; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11222; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1223; GFX8-NEXT:    v_mov_b32_e32 v4, v11224; GFX8-NEXT:    v_mov_b32_e32 v3, v01225; GFX8-NEXT:    v_add_f64 v[0:1], v[3:4], -4.01226; GFX8-NEXT:    ds_cmpst_rtn_b64 v[0:1], v2, v[3:4], v[0:1] offset:655281227; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1228; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[3:4]1229; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1230; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1231; GFX8-NEXT:    s_cbranch_execnz .LBB5_11232; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1233; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1234; GFX8-NEXT:    s_setpc_b64 s[30:31]1235;1236; GFX7-LABEL: local_atomic_fsub_ret_f64__offset:1237; GFX7:       ; %bb.0:1238; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1239; GFX7-NEXT:    s_mov_b32 m0, -11240; GFX7-NEXT:    v_mov_b32_e32 v2, v01241; GFX7-NEXT:    ds_read_b64 v[0:1], v0 offset:655281242; GFX7-NEXT:    s_mov_b64 s[4:5], 01243; GFX7-NEXT:  .LBB5_1: ; %atomicrmw.start1244; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=11245; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1246; GFX7-NEXT:    v_mov_b32_e32 v4, v11247; GFX7-NEXT:    v_mov_b32_e32 v3, v01248; GFX7-NEXT:    v_add_f64 v[0:1], v[3:4], -4.01249; GFX7-NEXT:    ds_cmpst_rtn_b64 v[0:1], v2, v[3:4], v[0:1] offset:655281250; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1251; GFX7-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[3:4]1252; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1253; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]1254; GFX7-NEXT:    s_cbranch_execnz .LBB5_11255; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end1256; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]1257; GFX7-NEXT:    s_setpc_b64 s[30:31]1258;1259; GFX6-LABEL: local_atomic_fsub_ret_f64__offset:1260; GFX6:       ; %bb.0:1261; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1262; GFX6-NEXT:    v_add_i32_e32 v2, vcc, 0xfff8, v01263; GFX6-NEXT:    s_mov_b32 m0, -11264; GFX6-NEXT:    ds_read_b64 v[0:1], v21265; GFX6-NEXT:    s_mov_b64 s[4:5], 01266; GFX6-NEXT:  .LBB5_1: ; %atomicrmw.start1267; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=11268; GFX6-NEXT:    s_waitcnt lgkmcnt(0)1269; GFX6-NEXT:    v_mov_b32_e32 v4, v11270; GFX6-NEXT:    v_mov_b32_e32 v3, v01271; GFX6-NEXT:    v_add_f64 v[0:1], v[3:4], -4.01272; GFX6-NEXT:    ds_cmpst_rtn_b64 v[0:1], v2, v[3:4], v[0:1]1273; GFX6-NEXT:    s_waitcnt lgkmcnt(0)1274; GFX6-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[3:4]1275; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1276; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]1277; GFX6-NEXT:    s_cbranch_execnz .LBB5_11278; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end1279; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]1280; GFX6-NEXT:    s_setpc_b64 s[30:31]1281  %gep = getelementptr double, ptr addrspace(3) %ptr, i32 81911282  %result = atomicrmw fsub ptr addrspace(3) %gep, double 4.0 seq_cst1283  ret double %result1284}1285 1286define void @local_atomic_fsub_noret_f64(ptr addrspace(3) %ptr) nounwind {1287; GFX12-LABEL: local_atomic_fsub_noret_f64:1288; GFX12:       ; %bb.0:1289; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01290; GFX12-NEXT:    s_wait_expcnt 0x01291; GFX12-NEXT:    s_wait_samplecnt 0x01292; GFX12-NEXT:    s_wait_bvhcnt 0x01293; GFX12-NEXT:    s_wait_kmcnt 0x01294; GFX12-NEXT:    ds_load_b64 v[1:2], v01295; GFX12-NEXT:    s_mov_b32 s0, 01296; GFX12-NEXT:  .LBB6_1: ; %atomicrmw.start1297; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=11298; GFX12-NEXT:    s_wait_dscnt 0x01299; GFX12-NEXT:    v_add_f64_e32 v[3:4], -4.0, v[1:2]1300; GFX12-NEXT:    s_wait_storecnt 0x01301; GFX12-NEXT:    ds_cmpstore_rtn_b64 v[3:4], v0, v[3:4], v[1:2]1302; GFX12-NEXT:    s_wait_dscnt 0x01303; GFX12-NEXT:    global_inv scope:SCOPE_SE1304; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[3:4], v[1:2]1305; GFX12-NEXT:    v_dual_mov_b32 v1, v3 :: v_dual_mov_b32 v2, v41306; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1307; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s01308; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1309; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01310; GFX12-NEXT:    s_cbranch_execnz .LBB6_11311; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end1312; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s01313; GFX12-NEXT:    s_wait_loadcnt 0x01314; GFX12-NEXT:    s_setpc_b64 s[30:31]1315;1316; GFX942-LABEL: local_atomic_fsub_noret_f64:1317; GFX942:       ; %bb.0:1318; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1319; GFX942-NEXT:    ds_read_b64 v[2:3], v01320; GFX942-NEXT:    s_mov_b64 s[0:1], 01321; GFX942-NEXT:  .LBB6_1: ; %atomicrmw.start1322; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11323; GFX942-NEXT:    s_waitcnt lgkmcnt(0)1324; GFX942-NEXT:    v_add_f64 v[4:5], v[2:3], -4.01325; GFX942-NEXT:    ds_cmpst_rtn_b64 v[4:5], v0, v[2:3], v[4:5]1326; GFX942-NEXT:    s_waitcnt lgkmcnt(0)1327; GFX942-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[2:3]1328; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1329; GFX942-NEXT:    v_mov_b64_e32 v[2:3], v[4:5]1330; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1331; GFX942-NEXT:    s_cbranch_execnz .LBB6_11332; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1333; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1334; GFX942-NEXT:    s_setpc_b64 s[30:31]1335;1336; GFX11-LABEL: local_atomic_fsub_noret_f64:1337; GFX11:       ; %bb.0:1338; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1339; GFX11-NEXT:    ds_load_b64 v[1:2], v01340; GFX11-NEXT:    s_mov_b32 s0, 01341; GFX11-NEXT:  .LBB6_1: ; %atomicrmw.start1342; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=11343; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1344; GFX11-NEXT:    v_add_f64 v[3:4], v[1:2], -4.01345; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01346; GFX11-NEXT:    ds_cmpstore_rtn_b64 v[3:4], v0, v[3:4], v[1:2]1347; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1348; GFX11-NEXT:    buffer_gl0_inv1349; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[3:4], v[1:2]1350; GFX11-NEXT:    v_dual_mov_b32 v1, v3 :: v_dual_mov_b32 v2, v41351; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s01352; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1353; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01354; GFX11-NEXT:    s_cbranch_execnz .LBB6_11355; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end1356; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s01357; GFX11-NEXT:    s_setpc_b64 s[30:31]1358;1359; GFX10-LABEL: local_atomic_fsub_noret_f64:1360; GFX10:       ; %bb.0:1361; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1362; GFX10-NEXT:    ds_read_b64 v[1:2], v01363; GFX10-NEXT:    s_mov_b32 s4, 01364; GFX10-NEXT:  .LBB6_1: ; %atomicrmw.start1365; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=11366; GFX10-NEXT:    s_waitcnt lgkmcnt(0)1367; GFX10-NEXT:    v_add_f64 v[3:4], v[1:2], -4.01368; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01369; GFX10-NEXT:    ds_cmpst_rtn_b64 v[3:4], v0, v[1:2], v[3:4]1370; GFX10-NEXT:    s_waitcnt lgkmcnt(0)1371; GFX10-NEXT:    buffer_gl0_inv1372; GFX10-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[3:4], v[1:2]1373; GFX10-NEXT:    v_mov_b32_e32 v1, v31374; GFX10-NEXT:    v_mov_b32_e32 v2, v41375; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s41376; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s41377; GFX10-NEXT:    s_cbranch_execnz .LBB6_11378; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end1379; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s41380; GFX10-NEXT:    s_setpc_b64 s[30:31]1381;1382; GFX90A-LABEL: local_atomic_fsub_noret_f64:1383; GFX90A:       ; %bb.0:1384; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1385; GFX90A-NEXT:    ds_read_b64 v[2:3], v01386; GFX90A-NEXT:    s_mov_b64 s[4:5], 01387; GFX90A-NEXT:  .LBB6_1: ; %atomicrmw.start1388; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11389; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)1390; GFX90A-NEXT:    v_add_f64 v[4:5], v[2:3], -4.01391; GFX90A-NEXT:    ds_cmpst_rtn_b64 v[4:5], v0, v[2:3], v[4:5]1392; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)1393; GFX90A-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[2:3]1394; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1395; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], v[4:5], v[4:5] op_sel:[0,1]1396; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1397; GFX90A-NEXT:    s_cbranch_execnz .LBB6_11398; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1399; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1400; GFX90A-NEXT:    s_setpc_b64 s[30:31]1401;1402; GFX908-LABEL: local_atomic_fsub_noret_f64:1403; GFX908:       ; %bb.0:1404; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1405; GFX908-NEXT:    ds_read_b64 v[1:2], v01406; GFX908-NEXT:    s_mov_b64 s[4:5], 01407; GFX908-NEXT:  .LBB6_1: ; %atomicrmw.start1408; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11409; GFX908-NEXT:    s_waitcnt lgkmcnt(0)1410; GFX908-NEXT:    v_add_f64 v[3:4], v[1:2], -4.01411; GFX908-NEXT:    ds_cmpst_rtn_b64 v[3:4], v0, v[1:2], v[3:4]1412; GFX908-NEXT:    s_waitcnt lgkmcnt(0)1413; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[3:4], v[1:2]1414; GFX908-NEXT:    v_mov_b32_e32 v1, v31415; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1416; GFX908-NEXT:    v_mov_b32_e32 v2, v41417; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1418; GFX908-NEXT:    s_cbranch_execnz .LBB6_11419; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1420; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1421; GFX908-NEXT:    s_setpc_b64 s[30:31]1422;1423; GFX8-LABEL: local_atomic_fsub_noret_f64:1424; GFX8:       ; %bb.0:1425; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1426; GFX8-NEXT:    s_mov_b32 m0, -11427; GFX8-NEXT:    ds_read_b64 v[1:2], v01428; GFX8-NEXT:    s_mov_b64 s[4:5], 01429; GFX8-NEXT:  .LBB6_1: ; %atomicrmw.start1430; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11431; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1432; GFX8-NEXT:    v_add_f64 v[3:4], v[1:2], -4.01433; GFX8-NEXT:    ds_cmpst_rtn_b64 v[3:4], v0, v[1:2], v[3:4]1434; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1435; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[3:4], v[1:2]1436; GFX8-NEXT:    v_mov_b32_e32 v1, v31437; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1438; GFX8-NEXT:    v_mov_b32_e32 v2, v41439; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1440; GFX8-NEXT:    s_cbranch_execnz .LBB6_11441; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1442; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1443; GFX8-NEXT:    s_setpc_b64 s[30:31]1444;1445; GFX7-LABEL: local_atomic_fsub_noret_f64:1446; GFX7:       ; %bb.0:1447; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1448; GFX7-NEXT:    s_mov_b32 m0, -11449; GFX7-NEXT:    ds_read_b64 v[1:2], v01450; GFX7-NEXT:    s_mov_b64 s[4:5], 01451; GFX7-NEXT:  .LBB6_1: ; %atomicrmw.start1452; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=11453; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1454; GFX7-NEXT:    v_add_f64 v[3:4], v[1:2], -4.01455; GFX7-NEXT:    ds_cmpst_rtn_b64 v[3:4], v0, v[1:2], v[3:4]1456; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1457; GFX7-NEXT:    v_cmp_eq_u64_e32 vcc, v[3:4], v[1:2]1458; GFX7-NEXT:    v_mov_b32_e32 v1, v31459; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1460; GFX7-NEXT:    v_mov_b32_e32 v2, v41461; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]1462; GFX7-NEXT:    s_cbranch_execnz .LBB6_11463; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end1464; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]1465; GFX7-NEXT:    s_setpc_b64 s[30:31]1466;1467; GFX6-LABEL: local_atomic_fsub_noret_f64:1468; GFX6:       ; %bb.0:1469; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1470; GFX6-NEXT:    s_mov_b32 m0, -11471; GFX6-NEXT:    ds_read_b64 v[1:2], v01472; GFX6-NEXT:    s_mov_b64 s[4:5], 01473; GFX6-NEXT:  .LBB6_1: ; %atomicrmw.start1474; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=11475; GFX6-NEXT:    s_waitcnt lgkmcnt(0)1476; GFX6-NEXT:    v_add_f64 v[3:4], v[1:2], -4.01477; GFX6-NEXT:    ds_cmpst_rtn_b64 v[3:4], v0, v[1:2], v[3:4]1478; GFX6-NEXT:    s_waitcnt lgkmcnt(0)1479; GFX6-NEXT:    v_cmp_eq_u64_e32 vcc, v[3:4], v[1:2]1480; GFX6-NEXT:    v_mov_b32_e32 v1, v31481; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1482; GFX6-NEXT:    v_mov_b32_e32 v2, v41483; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]1484; GFX6-NEXT:    s_cbranch_execnz .LBB6_11485; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end1486; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]1487; GFX6-NEXT:    s_setpc_b64 s[30:31]1488  %result = atomicrmw fsub ptr addrspace(3) %ptr, double 4.0 seq_cst1489  ret void1490}1491 1492define void @local_atomic_fsub_noret_f64__offset(ptr addrspace(3) %ptr) nounwind {1493; GFX12-LABEL: local_atomic_fsub_noret_f64__offset:1494; GFX12:       ; %bb.0:1495; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01496; GFX12-NEXT:    s_wait_expcnt 0x01497; GFX12-NEXT:    s_wait_samplecnt 0x01498; GFX12-NEXT:    s_wait_bvhcnt 0x01499; GFX12-NEXT:    s_wait_kmcnt 0x01500; GFX12-NEXT:    ds_load_b64 v[1:2], v0 offset:655281501; GFX12-NEXT:    s_mov_b32 s0, 01502; GFX12-NEXT:  .LBB7_1: ; %atomicrmw.start1503; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=11504; GFX12-NEXT:    s_wait_dscnt 0x01505; GFX12-NEXT:    v_add_f64_e32 v[3:4], -4.0, v[1:2]1506; GFX12-NEXT:    s_wait_storecnt 0x01507; GFX12-NEXT:    ds_cmpstore_rtn_b64 v[3:4], v0, v[3:4], v[1:2] offset:655281508; GFX12-NEXT:    s_wait_dscnt 0x01509; GFX12-NEXT:    global_inv scope:SCOPE_SE1510; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[3:4], v[1:2]1511; GFX12-NEXT:    v_dual_mov_b32 v1, v3 :: v_dual_mov_b32 v2, v41512; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1513; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s01514; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)1515; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01516; GFX12-NEXT:    s_cbranch_execnz .LBB7_11517; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end1518; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s01519; GFX12-NEXT:    s_wait_loadcnt 0x01520; GFX12-NEXT:    s_setpc_b64 s[30:31]1521;1522; GFX942-LABEL: local_atomic_fsub_noret_f64__offset:1523; GFX942:       ; %bb.0:1524; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1525; GFX942-NEXT:    ds_read_b64 v[2:3], v0 offset:655281526; GFX942-NEXT:    s_mov_b64 s[0:1], 01527; GFX942-NEXT:  .LBB7_1: ; %atomicrmw.start1528; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11529; GFX942-NEXT:    s_waitcnt lgkmcnt(0)1530; GFX942-NEXT:    v_add_f64 v[4:5], v[2:3], -4.01531; GFX942-NEXT:    ds_cmpst_rtn_b64 v[4:5], v0, v[2:3], v[4:5] offset:655281532; GFX942-NEXT:    s_waitcnt lgkmcnt(0)1533; GFX942-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[2:3]1534; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1535; GFX942-NEXT:    v_mov_b64_e32 v[2:3], v[4:5]1536; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1537; GFX942-NEXT:    s_cbranch_execnz .LBB7_11538; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1539; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1540; GFX942-NEXT:    s_setpc_b64 s[30:31]1541;1542; GFX11-LABEL: local_atomic_fsub_noret_f64__offset:1543; GFX11:       ; %bb.0:1544; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1545; GFX11-NEXT:    ds_load_b64 v[1:2], v0 offset:655281546; GFX11-NEXT:    s_mov_b32 s0, 01547; GFX11-NEXT:  .LBB7_1: ; %atomicrmw.start1548; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=11549; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1550; GFX11-NEXT:    v_add_f64 v[3:4], v[1:2], -4.01551; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01552; GFX11-NEXT:    ds_cmpstore_rtn_b64 v[3:4], v0, v[3:4], v[1:2] offset:655281553; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1554; GFX11-NEXT:    buffer_gl0_inv1555; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[3:4], v[1:2]1556; GFX11-NEXT:    v_dual_mov_b32 v1, v3 :: v_dual_mov_b32 v2, v41557; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s01558; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1559; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01560; GFX11-NEXT:    s_cbranch_execnz .LBB7_11561; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end1562; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s01563; GFX11-NEXT:    s_setpc_b64 s[30:31]1564;1565; GFX10-LABEL: local_atomic_fsub_noret_f64__offset:1566; GFX10:       ; %bb.0:1567; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1568; GFX10-NEXT:    ds_read_b64 v[1:2], v0 offset:655281569; GFX10-NEXT:    s_mov_b32 s4, 01570; GFX10-NEXT:  .LBB7_1: ; %atomicrmw.start1571; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=11572; GFX10-NEXT:    s_waitcnt lgkmcnt(0)1573; GFX10-NEXT:    v_add_f64 v[3:4], v[1:2], -4.01574; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01575; GFX10-NEXT:    ds_cmpst_rtn_b64 v[3:4], v0, v[1:2], v[3:4] offset:655281576; GFX10-NEXT:    s_waitcnt lgkmcnt(0)1577; GFX10-NEXT:    buffer_gl0_inv1578; GFX10-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[3:4], v[1:2]1579; GFX10-NEXT:    v_mov_b32_e32 v1, v31580; GFX10-NEXT:    v_mov_b32_e32 v2, v41581; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s41582; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s41583; GFX10-NEXT:    s_cbranch_execnz .LBB7_11584; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end1585; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s41586; GFX10-NEXT:    s_setpc_b64 s[30:31]1587;1588; GFX90A-LABEL: local_atomic_fsub_noret_f64__offset:1589; GFX90A:       ; %bb.0:1590; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1591; GFX90A-NEXT:    ds_read_b64 v[2:3], v0 offset:655281592; GFX90A-NEXT:    s_mov_b64 s[4:5], 01593; GFX90A-NEXT:  .LBB7_1: ; %atomicrmw.start1594; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11595; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)1596; GFX90A-NEXT:    v_add_f64 v[4:5], v[2:3], -4.01597; GFX90A-NEXT:    ds_cmpst_rtn_b64 v[4:5], v0, v[2:3], v[4:5] offset:655281598; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)1599; GFX90A-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[2:3]1600; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1601; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], v[4:5], v[4:5] op_sel:[0,1]1602; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1603; GFX90A-NEXT:    s_cbranch_execnz .LBB7_11604; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1605; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1606; GFX90A-NEXT:    s_setpc_b64 s[30:31]1607;1608; GFX908-LABEL: local_atomic_fsub_noret_f64__offset:1609; GFX908:       ; %bb.0:1610; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1611; GFX908-NEXT:    ds_read_b64 v[1:2], v0 offset:655281612; GFX908-NEXT:    s_mov_b64 s[4:5], 01613; GFX908-NEXT:  .LBB7_1: ; %atomicrmw.start1614; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11615; GFX908-NEXT:    s_waitcnt lgkmcnt(0)1616; GFX908-NEXT:    v_add_f64 v[3:4], v[1:2], -4.01617; GFX908-NEXT:    ds_cmpst_rtn_b64 v[3:4], v0, v[1:2], v[3:4] offset:655281618; GFX908-NEXT:    s_waitcnt lgkmcnt(0)1619; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[3:4], v[1:2]1620; GFX908-NEXT:    v_mov_b32_e32 v1, v31621; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1622; GFX908-NEXT:    v_mov_b32_e32 v2, v41623; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1624; GFX908-NEXT:    s_cbranch_execnz .LBB7_11625; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1626; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1627; GFX908-NEXT:    s_setpc_b64 s[30:31]1628;1629; GFX8-LABEL: local_atomic_fsub_noret_f64__offset:1630; GFX8:       ; %bb.0:1631; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1632; GFX8-NEXT:    s_mov_b32 m0, -11633; GFX8-NEXT:    ds_read_b64 v[1:2], v0 offset:655281634; GFX8-NEXT:    s_mov_b64 s[4:5], 01635; GFX8-NEXT:  .LBB7_1: ; %atomicrmw.start1636; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11637; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1638; GFX8-NEXT:    v_add_f64 v[3:4], v[1:2], -4.01639; GFX8-NEXT:    ds_cmpst_rtn_b64 v[3:4], v0, v[1:2], v[3:4] offset:655281640; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1641; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[3:4], v[1:2]1642; GFX8-NEXT:    v_mov_b32_e32 v1, v31643; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1644; GFX8-NEXT:    v_mov_b32_e32 v2, v41645; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1646; GFX8-NEXT:    s_cbranch_execnz .LBB7_11647; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1648; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1649; GFX8-NEXT:    s_setpc_b64 s[30:31]1650;1651; GFX7-LABEL: local_atomic_fsub_noret_f64__offset:1652; GFX7:       ; %bb.0:1653; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1654; GFX7-NEXT:    s_mov_b32 m0, -11655; GFX7-NEXT:    ds_read_b64 v[1:2], v0 offset:655281656; GFX7-NEXT:    s_mov_b64 s[4:5], 01657; GFX7-NEXT:  .LBB7_1: ; %atomicrmw.start1658; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=11659; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1660; GFX7-NEXT:    v_add_f64 v[3:4], v[1:2], -4.01661; GFX7-NEXT:    ds_cmpst_rtn_b64 v[3:4], v0, v[1:2], v[3:4] offset:655281662; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1663; GFX7-NEXT:    v_cmp_eq_u64_e32 vcc, v[3:4], v[1:2]1664; GFX7-NEXT:    v_mov_b32_e32 v1, v31665; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1666; GFX7-NEXT:    v_mov_b32_e32 v2, v41667; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]1668; GFX7-NEXT:    s_cbranch_execnz .LBB7_11669; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end1670; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]1671; GFX7-NEXT:    s_setpc_b64 s[30:31]1672;1673; GFX6-LABEL: local_atomic_fsub_noret_f64__offset:1674; GFX6:       ; %bb.0:1675; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1676; GFX6-NEXT:    v_add_i32_e32 v2, vcc, 0xfff8, v01677; GFX6-NEXT:    s_mov_b32 m0, -11678; GFX6-NEXT:    ds_read_b64 v[0:1], v21679; GFX6-NEXT:    s_mov_b64 s[4:5], 01680; GFX6-NEXT:  .LBB7_1: ; %atomicrmw.start1681; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=11682; GFX6-NEXT:    s_waitcnt lgkmcnt(0)1683; GFX6-NEXT:    v_add_f64 v[3:4], v[0:1], -4.01684; GFX6-NEXT:    ds_cmpst_rtn_b64 v[3:4], v2, v[0:1], v[3:4]1685; GFX6-NEXT:    s_waitcnt lgkmcnt(0)1686; GFX6-NEXT:    v_cmp_eq_u64_e32 vcc, v[3:4], v[0:1]1687; GFX6-NEXT:    v_mov_b32_e32 v0, v31688; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1689; GFX6-NEXT:    v_mov_b32_e32 v1, v41690; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]1691; GFX6-NEXT:    s_cbranch_execnz .LBB7_11692; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end1693; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]1694; GFX6-NEXT:    s_setpc_b64 s[30:31]1695  %gep = getelementptr double, ptr addrspace(3) %ptr, i32 81911696  %unused = atomicrmw fsub ptr addrspace(3) %gep, double 4.0 seq_cst1697  ret void1698}1699 1700; --------------------------------------------------------------------1701; half1702; --------------------------------------------------------------------1703 1704define half @local_atomic_fsub_ret_f16(ptr addrspace(3) %ptr) nounwind {1705; GFX12-TRUE16-LABEL: local_atomic_fsub_ret_f16:1706; GFX12-TRUE16:       ; %bb.0:1707; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x01708; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x01709; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x01710; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x01711; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x01712; GFX12-TRUE16-NEXT:    v_and_b32_e32 v1, -4, v01713; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v01714; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 01715; GFX12-TRUE16-NEXT:    ds_load_b32 v3, v11716; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v0, 0xffff1717; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, 24, v01718; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)1719; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v21720; GFX12-TRUE16-NEXT:  .LBB8_1: ; %atomicrmw.start1721; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=11722; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x01723; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v31724; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)1725; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v0, v41726; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 01727; GFX12-TRUE16-NEXT:    v_add_f16_e32 v3.l, -4.0, v3.l1728; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1729; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v0, v31730; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v2, v31731; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x01732; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v3, v1, v3, v41733; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x01734; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE1735; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41736; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)1737; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s01738; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)1739; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01740; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB8_11741; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end1742; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s01743; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v0, v31744; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x01745; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]1746;1747; GFX12-FAKE16-LABEL: local_atomic_fsub_ret_f16:1748; GFX12-FAKE16:       ; %bb.0:1749; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x01750; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x01751; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x01752; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x01753; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x01754; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, -4, v01755; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v01756; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 01757; GFX12-FAKE16-NEXT:    ds_load_b32 v2, v11758; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff1759; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, 24, v01760; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)1761; GFX12-FAKE16-NEXT:    v_not_b32_e32 v3, v31762; GFX12-FAKE16-NEXT:  .LBB8_1: ; %atomicrmw.start1763; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=11764; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x01765; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v21766; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1767; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v0, v41768; GFX12-FAKE16-NEXT:    v_add_f16_e32 v2, -4.0, v21769; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1770; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v21771; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v0, v21772; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1773; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, v4, v3, v21774; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x01775; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v2, v1, v2, v41776; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x01777; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE1778; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v41779; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)1780; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s01781; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)1782; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01783; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB8_11784; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end1785; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s01786; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v0, v21787; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x01788; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]1789;1790; GFX942-LABEL: local_atomic_fsub_ret_f16:1791; GFX942:       ; %bb.0:1792; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1793; GFX942-NEXT:    v_and_b32_e32 v1, -4, v01794; GFX942-NEXT:    ds_read_b32 v3, v11795; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 3, v01796; GFX942-NEXT:    s_mov_b32 s0, 0xffff1797; GFX942-NEXT:    v_and_b32_e32 v0, 24, v21798; GFX942-NEXT:    v_lshlrev_b32_e64 v2, v2, s01799; GFX942-NEXT:    v_not_b32_e32 v2, v21800; GFX942-NEXT:    s_mov_b64 s[0:1], 01801; GFX942-NEXT:  .LBB8_1: ; %atomicrmw.start1802; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11803; GFX942-NEXT:    s_waitcnt lgkmcnt(0)1804; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v0, v31805; GFX942-NEXT:    v_add_f16_e32 v4, -4.0, v41806; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v0, v41807; GFX942-NEXT:    v_and_or_b32 v4, v3, v2, v41808; GFX942-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v41809; GFX942-NEXT:    s_waitcnt lgkmcnt(0)1810; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v31811; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1812; GFX942-NEXT:    v_mov_b32_e32 v3, v41813; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1814; GFX942-NEXT:    s_cbranch_execnz .LBB8_11815; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1816; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1817; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v0, v41818; GFX942-NEXT:    s_setpc_b64 s[30:31]1819;1820; GFX11-TRUE16-LABEL: local_atomic_fsub_ret_f16:1821; GFX11-TRUE16:       ; %bb.0:1822; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1823; GFX11-TRUE16-NEXT:    v_and_b32_e32 v1, -4, v01824; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v01825; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 01826; GFX11-TRUE16-NEXT:    ds_load_b32 v3, v11827; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v0, 0xffff1828; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, 24, v01829; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)1830; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v21831; GFX11-TRUE16-NEXT:  .LBB8_1: ; %atomicrmw.start1832; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=11833; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)1834; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v31835; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)1836; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v0, v41837; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 01838; GFX11-TRUE16-NEXT:    v_add_f16_e32 v3.l, -4.0, v3.l1839; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1840; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v0, v31841; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v2, v31842; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x01843; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v3, v1, v3, v41844; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)1845; GFX11-TRUE16-NEXT:    buffer_gl0_inv1846; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41847; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s01848; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1849; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01850; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB8_11851; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end1852; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s01853; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v0, v31854; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]1855;1856; GFX11-FAKE16-LABEL: local_atomic_fsub_ret_f16:1857; GFX11-FAKE16:       ; %bb.0:1858; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1859; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, -4, v01860; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v01861; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 01862; GFX11-FAKE16-NEXT:    ds_load_b32 v2, v11863; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff1864; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, 24, v01865; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)1866; GFX11-FAKE16-NEXT:    v_not_b32_e32 v3, v31867; GFX11-FAKE16-NEXT:  .LBB8_1: ; %atomicrmw.start1868; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=11869; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)1870; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v21871; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1872; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v0, v41873; GFX11-FAKE16-NEXT:    v_add_f16_e32 v2, -4.0, v21874; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1875; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v21876; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v0, v21877; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1878; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, v4, v3, v21879; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x01880; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v2, v1, v2, v41881; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)1882; GFX11-FAKE16-NEXT:    buffer_gl0_inv1883; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v41884; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s01885; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1886; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01887; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB8_11888; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end1889; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s01890; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v0, v21891; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]1892;1893; GFX10-LABEL: local_atomic_fsub_ret_f16:1894; GFX10:       ; %bb.0:1895; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1896; GFX10-NEXT:    v_and_b32_e32 v1, -4, v01897; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 3, v01898; GFX10-NEXT:    s_mov_b32 s4, 01899; GFX10-NEXT:    ds_read_b32 v2, v11900; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff1901; GFX10-NEXT:    v_and_b32_e32 v0, 24, v01902; GFX10-NEXT:    v_not_b32_e32 v3, v31903; GFX10-NEXT:  .LBB8_1: ; %atomicrmw.start1904; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=11905; GFX10-NEXT:    s_waitcnt lgkmcnt(0)1906; GFX10-NEXT:    v_mov_b32_e32 v4, v21907; GFX10-NEXT:    v_lshrrev_b32_e32 v2, v0, v41908; GFX10-NEXT:    v_add_f16_e32 v2, -4.0, v21909; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_01910; GFX10-NEXT:    v_and_or_b32 v2, v4, v3, v21911; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01912; GFX10-NEXT:    ds_cmpst_rtn_b32 v2, v1, v4, v21913; GFX10-NEXT:    s_waitcnt lgkmcnt(0)1914; GFX10-NEXT:    buffer_gl0_inv1915; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v41916; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s41917; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s41918; GFX10-NEXT:    s_cbranch_execnz .LBB8_11919; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end1920; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s41921; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v0, v21922; GFX10-NEXT:    s_setpc_b64 s[30:31]1923;1924; GFX90A-LABEL: local_atomic_fsub_ret_f16:1925; GFX90A:       ; %bb.0:1926; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1927; GFX90A-NEXT:    v_and_b32_e32 v1, -4, v01928; GFX90A-NEXT:    ds_read_b32 v3, v11929; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 3, v01930; GFX90A-NEXT:    s_mov_b32 s4, 0xffff1931; GFX90A-NEXT:    v_and_b32_e32 v0, 24, v21932; GFX90A-NEXT:    v_lshlrev_b32_e64 v2, v2, s41933; GFX90A-NEXT:    v_not_b32_e32 v2, v21934; GFX90A-NEXT:    s_mov_b64 s[4:5], 01935; GFX90A-NEXT:  .LBB8_1: ; %atomicrmw.start1936; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11937; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)1938; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v0, v31939; GFX90A-NEXT:    v_add_f16_e32 v4, -4.0, v41940; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v0, v41941; GFX90A-NEXT:    v_and_or_b32 v4, v3, v2, v41942; GFX90A-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v41943; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)1944; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v31945; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1946; GFX90A-NEXT:    v_mov_b32_e32 v3, v41947; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1948; GFX90A-NEXT:    s_cbranch_execnz .LBB8_11949; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1950; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1951; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v0, v41952; GFX90A-NEXT:    s_setpc_b64 s[30:31]1953;1954; GFX908-LABEL: local_atomic_fsub_ret_f16:1955; GFX908:       ; %bb.0:1956; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1957; GFX908-NEXT:    v_and_b32_e32 v1, -4, v01958; GFX908-NEXT:    ds_read_b32 v2, v11959; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v01960; GFX908-NEXT:    s_mov_b32 s4, 0xffff1961; GFX908-NEXT:    v_and_b32_e32 v0, 24, v31962; GFX908-NEXT:    v_lshlrev_b32_e64 v3, v3, s41963; GFX908-NEXT:    v_not_b32_e32 v3, v31964; GFX908-NEXT:    s_mov_b64 s[4:5], 01965; GFX908-NEXT:  .LBB8_1: ; %atomicrmw.start1966; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11967; GFX908-NEXT:    s_waitcnt lgkmcnt(0)1968; GFX908-NEXT:    v_mov_b32_e32 v4, v21969; GFX908-NEXT:    v_lshrrev_b32_e32 v2, v0, v41970; GFX908-NEXT:    v_add_f16_e32 v2, -4.0, v21971; GFX908-NEXT:    v_lshlrev_b32_e32 v2, v0, v21972; GFX908-NEXT:    v_and_or_b32 v2, v4, v3, v21973; GFX908-NEXT:    ds_cmpst_rtn_b32 v2, v1, v4, v21974; GFX908-NEXT:    s_waitcnt lgkmcnt(0)1975; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v41976; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1977; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1978; GFX908-NEXT:    s_cbranch_execnz .LBB8_11979; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1980; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1981; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v0, v21982; GFX908-NEXT:    s_setpc_b64 s[30:31]1983;1984; GFX8-LABEL: local_atomic_fsub_ret_f16:1985; GFX8:       ; %bb.0:1986; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1987; GFX8-NEXT:    v_and_b32_e32 v1, -4, v01988; GFX8-NEXT:    s_mov_b32 m0, -11989; GFX8-NEXT:    ds_read_b32 v3, v11990; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 3, v01991; GFX8-NEXT:    s_mov_b32 s4, 0xffff1992; GFX8-NEXT:    v_and_b32_e32 v0, 24, v21993; GFX8-NEXT:    v_lshlrev_b32_e64 v2, v2, s41994; GFX8-NEXT:    v_not_b32_e32 v2, v21995; GFX8-NEXT:    s_mov_b64 s[4:5], 01996; GFX8-NEXT:  .LBB8_1: ; %atomicrmw.start1997; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11998; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1999; GFX8-NEXT:    v_mov_b32_e32 v4, v32000; GFX8-NEXT:    v_lshrrev_b32_e32 v3, v0, v42001; GFX8-NEXT:    v_add_f16_e32 v3, -4.0, v32002; GFX8-NEXT:    v_and_b32_e32 v5, v4, v22003; GFX8-NEXT:    v_lshlrev_b32_e32 v3, v0, v32004; GFX8-NEXT:    v_or_b32_e32 v3, v5, v32005; GFX8-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v32006; GFX8-NEXT:    s_waitcnt lgkmcnt(0)2007; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42008; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2009; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2010; GFX8-NEXT:    s_cbranch_execnz .LBB8_12011; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2012; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2013; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v0, v32014; GFX8-NEXT:    s_setpc_b64 s[30:31]2015;2016; GFX7-LABEL: local_atomic_fsub_ret_f16:2017; GFX7:       ; %bb.0:2018; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2019; GFX7-NEXT:    v_and_b32_e32 v1, -4, v02020; GFX7-NEXT:    s_mov_b32 m0, -12021; GFX7-NEXT:    ds_read_b32 v3, v12022; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 3, v02023; GFX7-NEXT:    v_and_b32_e32 v0, 24, v22024; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v22025; GFX7-NEXT:    v_not_b32_e32 v2, v22026; GFX7-NEXT:    s_mov_b64 s[4:5], 02027; GFX7-NEXT:  .LBB8_1: ; %atomicrmw.start2028; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=12029; GFX7-NEXT:    s_waitcnt lgkmcnt(0)2030; GFX7-NEXT:    v_mov_b32_e32 v4, v32031; GFX7-NEXT:    v_lshrrev_b32_e32 v3, v0, v42032; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v32033; GFX7-NEXT:    v_and_b32_e32 v5, v4, v22034; GFX7-NEXT:    v_add_f32_e32 v3, -4.0, v32035; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v32036; GFX7-NEXT:    v_lshlrev_b32_e32 v3, v0, v32037; GFX7-NEXT:    v_or_b32_e32 v3, v5, v32038; GFX7-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v32039; GFX7-NEXT:    s_waitcnt lgkmcnt(0)2040; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42041; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2042; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]2043; GFX7-NEXT:    s_cbranch_execnz .LBB8_12044; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end2045; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]2046; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v0, v32047; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v02048; GFX7-NEXT:    s_setpc_b64 s[30:31]2049;2050; GFX6-LABEL: local_atomic_fsub_ret_f16:2051; GFX6:       ; %bb.0:2052; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2053; GFX6-NEXT:    v_and_b32_e32 v1, -4, v02054; GFX6-NEXT:    s_mov_b32 m0, -12055; GFX6-NEXT:    ds_read_b32 v3, v12056; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 3, v02057; GFX6-NEXT:    v_and_b32_e32 v0, 24, v22058; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v22059; GFX6-NEXT:    v_not_b32_e32 v2, v22060; GFX6-NEXT:    s_mov_b64 s[4:5], 02061; GFX6-NEXT:  .LBB8_1: ; %atomicrmw.start2062; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=12063; GFX6-NEXT:    s_waitcnt lgkmcnt(0)2064; GFX6-NEXT:    v_mov_b32_e32 v4, v32065; GFX6-NEXT:    v_lshrrev_b32_e32 v3, v0, v42066; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v32067; GFX6-NEXT:    v_and_b32_e32 v5, v4, v22068; GFX6-NEXT:    v_add_f32_e32 v3, -4.0, v32069; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v32070; GFX6-NEXT:    v_lshlrev_b32_e32 v3, v0, v32071; GFX6-NEXT:    v_or_b32_e32 v3, v5, v32072; GFX6-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v32073; GFX6-NEXT:    s_waitcnt lgkmcnt(0)2074; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42075; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2076; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]2077; GFX6-NEXT:    s_cbranch_execnz .LBB8_12078; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end2079; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]2080; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v0, v32081; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v02082; GFX6-NEXT:    s_setpc_b64 s[30:31]2083  %result = atomicrmw fsub ptr addrspace(3) %ptr, half 4.0 seq_cst2084  ret half %result2085}2086 2087define half @local_atomic_fsub_ret_f16__offset(ptr addrspace(3) %ptr) nounwind {2088; GFX12-TRUE16-LABEL: local_atomic_fsub_ret_f16__offset:2089; GFX12-TRUE16:       ; %bb.0:2090; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x02091; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x02092; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x02093; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x02094; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x02095; GFX12-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v02096; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 02097; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)2098; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v12099; GFX12-TRUE16-NEXT:    v_and_b32_e32 v1, 3, v12100; GFX12-TRUE16-NEXT:    ds_load_b32 v3, v02101; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v12102; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff2103; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2104; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v22105; GFX12-TRUE16-NEXT:  .LBB9_1: ; %atomicrmw.start2106; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=12107; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x02108; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v32109; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)2110; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v1, v42111; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 02112; GFX12-TRUE16-NEXT:    v_add_f16_e32 v3.l, -4.0, v3.l2113; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2114; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v1, v32115; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v2, v32116; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x02117; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v42118; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x02119; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE2120; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42121; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2122; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s02123; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2124; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02125; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB9_12126; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end2127; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02128; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v32129; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x02130; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]2131;2132; GFX12-FAKE16-LABEL: local_atomic_fsub_ret_f16__offset:2133; GFX12-FAKE16:       ; %bb.0:2134; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x02135; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x02136; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x02137; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x02138; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x02139; GFX12-FAKE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v02140; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 02141; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)2142; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v12143; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, 3, v12144; GFX12-FAKE16-NEXT:    ds_load_b32 v3, v02145; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v12146; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff2147; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2148; GFX12-FAKE16-NEXT:    v_not_b32_e32 v2, v22149; GFX12-FAKE16-NEXT:  .LBB9_1: ; %atomicrmw.start2150; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=12151; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x02152; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v32153; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2154; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v1, v42155; GFX12-FAKE16-NEXT:    v_add_f16_e32 v3, -4.0, v32156; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2157; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v32158; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v1, v32159; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2160; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, v4, v2, v32161; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x02162; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v42163; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x02164; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE2165; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42166; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2167; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s02168; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2169; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02170; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB9_12171; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end2172; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02173; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v32174; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x02175; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]2176;2177; GFX942-LABEL: local_atomic_fsub_ret_f16__offset:2178; GFX942:       ; %bb.0:2179; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2180; GFX942-NEXT:    v_add_u32_e32 v0, 0xfffe, v02181; GFX942-NEXT:    v_and_b32_e32 v1, -4, v02182; GFX942-NEXT:    ds_read_b32 v3, v12183; GFX942-NEXT:    v_and_b32_e32 v0, 3, v02184; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 3, v02185; GFX942-NEXT:    s_mov_b32 s0, 0xffff2186; GFX942-NEXT:    v_lshlrev_b32_e64 v2, v0, s02187; GFX942-NEXT:    v_not_b32_e32 v2, v22188; GFX942-NEXT:    s_mov_b64 s[0:1], 02189; GFX942-NEXT:  .LBB9_1: ; %atomicrmw.start2190; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12191; GFX942-NEXT:    s_waitcnt lgkmcnt(0)2192; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v0, v32193; GFX942-NEXT:    v_add_f16_e32 v4, -4.0, v42194; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v0, v42195; GFX942-NEXT:    v_and_or_b32 v4, v3, v2, v42196; GFX942-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v42197; GFX942-NEXT:    s_waitcnt lgkmcnt(0)2198; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v32199; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2200; GFX942-NEXT:    v_mov_b32_e32 v3, v42201; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2202; GFX942-NEXT:    s_cbranch_execnz .LBB9_12203; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2204; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2205; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v0, v42206; GFX942-NEXT:    s_setpc_b64 s[30:31]2207;2208; GFX11-TRUE16-LABEL: local_atomic_fsub_ret_f16__offset:2209; GFX11-TRUE16:       ; %bb.0:2210; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2211; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v02212; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 02213; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)2214; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v12215; GFX11-TRUE16-NEXT:    v_and_b32_e32 v1, 3, v12216; GFX11-TRUE16-NEXT:    ds_load_b32 v3, v02217; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v12218; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff2219; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2220; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v22221; GFX11-TRUE16-NEXT:  .LBB9_1: ; %atomicrmw.start2222; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=12223; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)2224; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v32225; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)2226; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v1, v42227; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 02228; GFX11-TRUE16-NEXT:    v_add_f16_e32 v3.l, -4.0, v3.l2229; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2230; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v1, v32231; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v2, v32232; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x02233; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v42234; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)2235; GFX11-TRUE16-NEXT:    buffer_gl0_inv2236; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42237; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s02238; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2239; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02240; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB9_12241; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end2242; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02243; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v32244; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]2245;2246; GFX11-FAKE16-LABEL: local_atomic_fsub_ret_f16__offset:2247; GFX11-FAKE16:       ; %bb.0:2248; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2249; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v02250; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 02251; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)2252; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v12253; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 3, v12254; GFX11-FAKE16-NEXT:    ds_load_b32 v3, v02255; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v12256; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff2257; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2258; GFX11-FAKE16-NEXT:    v_not_b32_e32 v2, v22259; GFX11-FAKE16-NEXT:  .LBB9_1: ; %atomicrmw.start2260; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=12261; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)2262; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v32263; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2264; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v1, v42265; GFX11-FAKE16-NEXT:    v_add_f16_e32 v3, -4.0, v32266; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2267; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v32268; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v1, v32269; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2270; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, v4, v2, v32271; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x02272; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v42273; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)2274; GFX11-FAKE16-NEXT:    buffer_gl0_inv2275; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v42276; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s02277; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2278; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02279; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB9_12280; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end2281; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02282; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v32283; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]2284;2285; GFX10-LABEL: local_atomic_fsub_ret_f16__offset:2286; GFX10:       ; %bb.0:2287; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2288; GFX10-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v02289; GFX10-NEXT:    s_mov_b32 s4, 02290; GFX10-NEXT:    v_and_b32_e32 v0, -4, v12291; GFX10-NEXT:    v_and_b32_e32 v1, 3, v12292; GFX10-NEXT:    ds_read_b32 v2, v02293; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 3, v12294; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v1, 0xffff2295; GFX10-NEXT:    v_not_b32_e32 v3, v32296; GFX10-NEXT:  .LBB9_1: ; %atomicrmw.start2297; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=12298; GFX10-NEXT:    s_waitcnt lgkmcnt(0)2299; GFX10-NEXT:    v_mov_b32_e32 v4, v22300; GFX10-NEXT:    v_lshrrev_b32_e32 v2, v1, v42301; GFX10-NEXT:    v_add_f16_e32 v2, -4.0, v22302; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v1, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_02303; GFX10-NEXT:    v_and_or_b32 v2, v4, v3, v22304; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02305; GFX10-NEXT:    ds_cmpst_rtn_b32 v2, v0, v4, v22306; GFX10-NEXT:    s_waitcnt lgkmcnt(0)2307; GFX10-NEXT:    buffer_gl0_inv2308; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v42309; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s42310; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s42311; GFX10-NEXT:    s_cbranch_execnz .LBB9_12312; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end2313; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s42314; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v1, v22315; GFX10-NEXT:    s_setpc_b64 s[30:31]2316;2317; GFX90A-LABEL: local_atomic_fsub_ret_f16__offset:2318; GFX90A:       ; %bb.0:2319; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2320; GFX90A-NEXT:    v_add_u32_e32 v0, 0xfffe, v02321; GFX90A-NEXT:    v_and_b32_e32 v1, -4, v02322; GFX90A-NEXT:    ds_read_b32 v3, v12323; GFX90A-NEXT:    v_and_b32_e32 v0, 3, v02324; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 3, v02325; GFX90A-NEXT:    s_mov_b32 s4, 0xffff2326; GFX90A-NEXT:    v_lshlrev_b32_e64 v2, v0, s42327; GFX90A-NEXT:    v_not_b32_e32 v2, v22328; GFX90A-NEXT:    s_mov_b64 s[4:5], 02329; GFX90A-NEXT:  .LBB9_1: ; %atomicrmw.start2330; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12331; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)2332; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v0, v32333; GFX90A-NEXT:    v_add_f16_e32 v4, -4.0, v42334; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v0, v42335; GFX90A-NEXT:    v_and_or_b32 v4, v3, v2, v42336; GFX90A-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v42337; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)2338; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v32339; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2340; GFX90A-NEXT:    v_mov_b32_e32 v3, v42341; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2342; GFX90A-NEXT:    s_cbranch_execnz .LBB9_12343; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2344; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2345; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v0, v42346; GFX90A-NEXT:    s_setpc_b64 s[30:31]2347;2348; GFX908-LABEL: local_atomic_fsub_ret_f16__offset:2349; GFX908:       ; %bb.0:2350; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2351; GFX908-NEXT:    v_add_u32_e32 v0, 0xfffe, v02352; GFX908-NEXT:    v_and_b32_e32 v1, -4, v02353; GFX908-NEXT:    ds_read_b32 v2, v12354; GFX908-NEXT:    v_and_b32_e32 v0, 3, v02355; GFX908-NEXT:    v_lshlrev_b32_e32 v0, 3, v02356; GFX908-NEXT:    s_mov_b32 s4, 0xffff2357; GFX908-NEXT:    v_lshlrev_b32_e64 v3, v0, s42358; GFX908-NEXT:    v_not_b32_e32 v3, v32359; GFX908-NEXT:    s_mov_b64 s[4:5], 02360; GFX908-NEXT:  .LBB9_1: ; %atomicrmw.start2361; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12362; GFX908-NEXT:    s_waitcnt lgkmcnt(0)2363; GFX908-NEXT:    v_mov_b32_e32 v4, v22364; GFX908-NEXT:    v_lshrrev_b32_e32 v2, v0, v42365; GFX908-NEXT:    v_add_f16_e32 v2, -4.0, v22366; GFX908-NEXT:    v_lshlrev_b32_e32 v2, v0, v22367; GFX908-NEXT:    v_and_or_b32 v2, v4, v3, v22368; GFX908-NEXT:    ds_cmpst_rtn_b32 v2, v1, v4, v22369; GFX908-NEXT:    s_waitcnt lgkmcnt(0)2370; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v42371; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2372; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2373; GFX908-NEXT:    s_cbranch_execnz .LBB9_12374; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2375; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2376; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v0, v22377; GFX908-NEXT:    s_setpc_b64 s[30:31]2378;2379; GFX8-LABEL: local_atomic_fsub_ret_f16__offset:2380; GFX8:       ; %bb.0:2381; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2382; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffe, v02383; GFX8-NEXT:    v_and_b32_e32 v1, -4, v02384; GFX8-NEXT:    s_mov_b32 m0, -12385; GFX8-NEXT:    ds_read_b32 v3, v12386; GFX8-NEXT:    v_and_b32_e32 v0, 3, v02387; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 3, v02388; GFX8-NEXT:    s_mov_b32 s4, 0xffff2389; GFX8-NEXT:    v_lshlrev_b32_e64 v2, v0, s42390; GFX8-NEXT:    v_not_b32_e32 v2, v22391; GFX8-NEXT:    s_mov_b64 s[4:5], 02392; GFX8-NEXT:  .LBB9_1: ; %atomicrmw.start2393; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12394; GFX8-NEXT:    s_waitcnt lgkmcnt(0)2395; GFX8-NEXT:    v_mov_b32_e32 v4, v32396; GFX8-NEXT:    v_lshrrev_b32_e32 v3, v0, v42397; GFX8-NEXT:    v_add_f16_e32 v3, -4.0, v32398; GFX8-NEXT:    v_and_b32_e32 v5, v4, v22399; GFX8-NEXT:    v_lshlrev_b32_e32 v3, v0, v32400; GFX8-NEXT:    v_or_b32_e32 v3, v5, v32401; GFX8-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v32402; GFX8-NEXT:    s_waitcnt lgkmcnt(0)2403; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42404; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2405; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2406; GFX8-NEXT:    s_cbranch_execnz .LBB9_12407; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2408; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2409; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v0, v32410; GFX8-NEXT:    s_setpc_b64 s[30:31]2411;2412; GFX7-LABEL: local_atomic_fsub_ret_f16__offset:2413; GFX7:       ; %bb.0:2414; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2415; GFX7-NEXT:    v_add_i32_e32 v1, vcc, 0xfffe, v02416; GFX7-NEXT:    v_and_b32_e32 v0, -4, v12417; GFX7-NEXT:    s_mov_b32 m0, -12418; GFX7-NEXT:    ds_read_b32 v3, v02419; GFX7-NEXT:    v_and_b32_e32 v1, 3, v12420; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 3, v12421; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v12422; GFX7-NEXT:    v_not_b32_e32 v2, v22423; GFX7-NEXT:    s_mov_b64 s[4:5], 02424; GFX7-NEXT:  .LBB9_1: ; %atomicrmw.start2425; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=12426; GFX7-NEXT:    s_waitcnt lgkmcnt(0)2427; GFX7-NEXT:    v_mov_b32_e32 v4, v32428; GFX7-NEXT:    v_lshrrev_b32_e32 v3, v1, v42429; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v32430; GFX7-NEXT:    v_and_b32_e32 v5, v4, v22431; GFX7-NEXT:    v_add_f32_e32 v3, -4.0, v32432; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v32433; GFX7-NEXT:    v_lshlrev_b32_e32 v3, v1, v32434; GFX7-NEXT:    v_or_b32_e32 v3, v5, v32435; GFX7-NEXT:    ds_cmpst_rtn_b32 v3, v0, v4, v32436; GFX7-NEXT:    s_waitcnt lgkmcnt(0)2437; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42438; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2439; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]2440; GFX7-NEXT:    s_cbranch_execnz .LBB9_12441; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end2442; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]2443; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v1, v32444; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v02445; GFX7-NEXT:    s_setpc_b64 s[30:31]2446;2447; GFX6-LABEL: local_atomic_fsub_ret_f16__offset:2448; GFX6:       ; %bb.0:2449; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2450; GFX6-NEXT:    v_add_i32_e32 v1, vcc, 0xfffe, v02451; GFX6-NEXT:    v_and_b32_e32 v0, -4, v12452; GFX6-NEXT:    s_mov_b32 m0, -12453; GFX6-NEXT:    ds_read_b32 v3, v02454; GFX6-NEXT:    v_and_b32_e32 v1, 3, v12455; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 3, v12456; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v12457; GFX6-NEXT:    v_not_b32_e32 v2, v22458; GFX6-NEXT:    s_mov_b64 s[4:5], 02459; GFX6-NEXT:  .LBB9_1: ; %atomicrmw.start2460; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=12461; GFX6-NEXT:    s_waitcnt lgkmcnt(0)2462; GFX6-NEXT:    v_mov_b32_e32 v4, v32463; GFX6-NEXT:    v_lshrrev_b32_e32 v3, v1, v42464; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v32465; GFX6-NEXT:    v_and_b32_e32 v5, v4, v22466; GFX6-NEXT:    v_add_f32_e32 v3, -4.0, v32467; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v32468; GFX6-NEXT:    v_lshlrev_b32_e32 v3, v1, v32469; GFX6-NEXT:    v_or_b32_e32 v3, v5, v32470; GFX6-NEXT:    ds_cmpst_rtn_b32 v3, v0, v4, v32471; GFX6-NEXT:    s_waitcnt lgkmcnt(0)2472; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42473; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2474; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]2475; GFX6-NEXT:    s_cbranch_execnz .LBB9_12476; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end2477; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]2478; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v1, v32479; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v02480; GFX6-NEXT:    s_setpc_b64 s[30:31]2481  %gep = getelementptr half, ptr addrspace(3) %ptr, i32 327672482  %result = atomicrmw fsub ptr addrspace(3) %gep, half 4.0 seq_cst2483  ret half %result2484}2485 2486define void @local_atomic_fsub_noret_f16(ptr addrspace(3) %ptr) nounwind {2487; GFX12-TRUE16-LABEL: local_atomic_fsub_noret_f16:2488; GFX12-TRUE16:       ; %bb.0:2489; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x02490; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x02491; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x02492; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x02493; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x02494; GFX12-TRUE16-NEXT:    v_and_b32_e32 v1, -4, v02495; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v02496; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 02497; GFX12-TRUE16-NEXT:    ds_load_b32 v2, v12498; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff2499; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, 24, v02500; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)2501; GFX12-TRUE16-NEXT:    v_not_b32_e32 v3, v32502; GFX12-TRUE16-NEXT:  .LBB10_1: ; %atomicrmw.start2503; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=12504; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x02505; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)2506; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v4, v0, v22507; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v4.h, 02508; GFX12-TRUE16-NEXT:    v_add_f16_e32 v4.l, -4.0, v4.l2509; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2510; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, v0, v42511; GFX12-TRUE16-NEXT:    v_and_or_b32 v4, v2, v3, v42512; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x02513; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v1, v4, v22514; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x02515; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE2516; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v22517; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v2, v42518; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2519; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s02520; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2521; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02522; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB10_12523; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end2524; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02525; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x02526; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]2527;2528; GFX12-FAKE16-LABEL: local_atomic_fsub_noret_f16:2529; GFX12-FAKE16:       ; %bb.0:2530; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x02531; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x02532; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x02533; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x02534; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x02535; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, -4, v02536; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v02537; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 02538; GFX12-FAKE16-NEXT:    ds_load_b32 v2, v12539; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff2540; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, 24, v02541; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)2542; GFX12-FAKE16-NEXT:    v_not_b32_e32 v3, v32543; GFX12-FAKE16-NEXT:  .LBB10_1: ; %atomicrmw.start2544; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=12545; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x02546; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2547; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, v0, v22548; GFX12-FAKE16-NEXT:    v_add_f16_e32 v4, -4.0, v42549; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2550; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 0xffff, v42551; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, v0, v42552; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2553; GFX12-FAKE16-NEXT:    v_and_or_b32 v4, v2, v3, v42554; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x02555; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v1, v4, v22556; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x02557; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE2558; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v22559; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v2, v42560; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2561; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s02562; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2563; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02564; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB10_12565; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end2566; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02567; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x02568; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]2569;2570; GFX942-LABEL: local_atomic_fsub_noret_f16:2571; GFX942:       ; %bb.0:2572; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2573; GFX942-NEXT:    v_and_b32_e32 v1, -4, v02574; GFX942-NEXT:    ds_read_b32 v3, v12575; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 3, v02576; GFX942-NEXT:    s_mov_b32 s0, 0xffff2577; GFX942-NEXT:    v_and_b32_e32 v0, 24, v22578; GFX942-NEXT:    v_lshlrev_b32_e64 v2, v2, s02579; GFX942-NEXT:    v_not_b32_e32 v2, v22580; GFX942-NEXT:    s_mov_b64 s[0:1], 02581; GFX942-NEXT:  .LBB10_1: ; %atomicrmw.start2582; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12583; GFX942-NEXT:    s_waitcnt lgkmcnt(0)2584; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v0, v32585; GFX942-NEXT:    v_add_f16_e32 v4, -4.0, v42586; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v0, v42587; GFX942-NEXT:    v_and_or_b32 v4, v3, v2, v42588; GFX942-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v42589; GFX942-NEXT:    s_waitcnt lgkmcnt(0)2590; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v32591; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2592; GFX942-NEXT:    v_mov_b32_e32 v3, v42593; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2594; GFX942-NEXT:    s_cbranch_execnz .LBB10_12595; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2596; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2597; GFX942-NEXT:    s_setpc_b64 s[30:31]2598;2599; GFX11-TRUE16-LABEL: local_atomic_fsub_noret_f16:2600; GFX11-TRUE16:       ; %bb.0:2601; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2602; GFX11-TRUE16-NEXT:    v_and_b32_e32 v1, -4, v02603; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v02604; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 02605; GFX11-TRUE16-NEXT:    ds_load_b32 v2, v12606; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff2607; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, 24, v02608; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)2609; GFX11-TRUE16-NEXT:    v_not_b32_e32 v3, v32610; GFX11-TRUE16-NEXT:  .LBB10_1: ; %atomicrmw.start2611; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=12612; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)2613; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)2614; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v4, v0, v22615; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v4.h, 02616; GFX11-TRUE16-NEXT:    v_add_f16_e32 v4.l, -4.0, v4.l2617; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2618; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, v0, v42619; GFX11-TRUE16-NEXT:    v_and_or_b32 v4, v2, v3, v42620; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x02621; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v1, v4, v22622; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)2623; GFX11-TRUE16-NEXT:    buffer_gl0_inv2624; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v22625; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, v42626; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s02627; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2628; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02629; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB10_12630; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end2631; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02632; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]2633;2634; GFX11-FAKE16-LABEL: local_atomic_fsub_noret_f16:2635; GFX11-FAKE16:       ; %bb.0:2636; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2637; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, -4, v02638; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v02639; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 02640; GFX11-FAKE16-NEXT:    ds_load_b32 v2, v12641; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff2642; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, 24, v02643; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)2644; GFX11-FAKE16-NEXT:    v_not_b32_e32 v3, v32645; GFX11-FAKE16-NEXT:  .LBB10_1: ; %atomicrmw.start2646; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=12647; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)2648; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2649; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, v0, v22650; GFX11-FAKE16-NEXT:    v_add_f16_e32 v4, -4.0, v42651; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2652; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 0xffff, v42653; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, v0, v42654; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2655; GFX11-FAKE16-NEXT:    v_and_or_b32 v4, v2, v3, v42656; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x02657; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v1, v4, v22658; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)2659; GFX11-FAKE16-NEXT:    buffer_gl0_inv2660; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v22661; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v42662; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s02663; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2664; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02665; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB10_12666; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end2667; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02668; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]2669;2670; GFX10-LABEL: local_atomic_fsub_noret_f16:2671; GFX10:       ; %bb.0:2672; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2673; GFX10-NEXT:    v_and_b32_e32 v1, -4, v02674; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 3, v02675; GFX10-NEXT:    s_mov_b32 s4, 02676; GFX10-NEXT:    ds_read_b32 v2, v12677; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff2678; GFX10-NEXT:    v_and_b32_e32 v0, 24, v02679; GFX10-NEXT:    v_not_b32_e32 v3, v32680; GFX10-NEXT:  .LBB10_1: ; %atomicrmw.start2681; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=12682; GFX10-NEXT:    s_waitcnt lgkmcnt(0)2683; GFX10-NEXT:    v_lshrrev_b32_e32 v4, v0, v22684; GFX10-NEXT:    v_add_f16_e32 v4, -4.0, v42685; GFX10-NEXT:    v_lshlrev_b32_sdwa v4, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_02686; GFX10-NEXT:    v_and_or_b32 v4, v2, v3, v42687; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02688; GFX10-NEXT:    ds_cmpst_rtn_b32 v4, v1, v2, v42689; GFX10-NEXT:    s_waitcnt lgkmcnt(0)2690; GFX10-NEXT:    buffer_gl0_inv2691; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v22692; GFX10-NEXT:    v_mov_b32_e32 v2, v42693; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s42694; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s42695; GFX10-NEXT:    s_cbranch_execnz .LBB10_12696; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end2697; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s42698; GFX10-NEXT:    s_setpc_b64 s[30:31]2699;2700; GFX90A-LABEL: local_atomic_fsub_noret_f16:2701; GFX90A:       ; %bb.0:2702; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2703; GFX90A-NEXT:    v_and_b32_e32 v1, -4, v02704; GFX90A-NEXT:    ds_read_b32 v3, v12705; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 3, v02706; GFX90A-NEXT:    s_mov_b32 s4, 0xffff2707; GFX90A-NEXT:    v_and_b32_e32 v0, 24, v22708; GFX90A-NEXT:    v_lshlrev_b32_e64 v2, v2, s42709; GFX90A-NEXT:    v_not_b32_e32 v2, v22710; GFX90A-NEXT:    s_mov_b64 s[4:5], 02711; GFX90A-NEXT:  .LBB10_1: ; %atomicrmw.start2712; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12713; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)2714; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v0, v32715; GFX90A-NEXT:    v_add_f16_e32 v4, -4.0, v42716; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v0, v42717; GFX90A-NEXT:    v_and_or_b32 v4, v3, v2, v42718; GFX90A-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v42719; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)2720; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v32721; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2722; GFX90A-NEXT:    v_mov_b32_e32 v3, v42723; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2724; GFX90A-NEXT:    s_cbranch_execnz .LBB10_12725; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2726; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2727; GFX90A-NEXT:    s_setpc_b64 s[30:31]2728;2729; GFX908-LABEL: local_atomic_fsub_noret_f16:2730; GFX908:       ; %bb.0:2731; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2732; GFX908-NEXT:    v_and_b32_e32 v1, -4, v02733; GFX908-NEXT:    ds_read_b32 v3, v12734; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 3, v02735; GFX908-NEXT:    s_mov_b32 s4, 0xffff2736; GFX908-NEXT:    v_and_b32_e32 v0, 24, v22737; GFX908-NEXT:    v_lshlrev_b32_e64 v2, v2, s42738; GFX908-NEXT:    v_not_b32_e32 v2, v22739; GFX908-NEXT:    s_mov_b64 s[4:5], 02740; GFX908-NEXT:  .LBB10_1: ; %atomicrmw.start2741; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12742; GFX908-NEXT:    s_waitcnt lgkmcnt(0)2743; GFX908-NEXT:    v_lshrrev_b32_e32 v4, v0, v32744; GFX908-NEXT:    v_add_f16_e32 v4, -4.0, v42745; GFX908-NEXT:    v_lshlrev_b32_e32 v4, v0, v42746; GFX908-NEXT:    v_and_or_b32 v4, v3, v2, v42747; GFX908-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v42748; GFX908-NEXT:    s_waitcnt lgkmcnt(0)2749; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v32750; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2751; GFX908-NEXT:    v_mov_b32_e32 v3, v42752; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2753; GFX908-NEXT:    s_cbranch_execnz .LBB10_12754; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2755; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2756; GFX908-NEXT:    s_setpc_b64 s[30:31]2757;2758; GFX8-LABEL: local_atomic_fsub_noret_f16:2759; GFX8:       ; %bb.0:2760; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2761; GFX8-NEXT:    v_and_b32_e32 v1, -4, v02762; GFX8-NEXT:    s_mov_b32 m0, -12763; GFX8-NEXT:    ds_read_b32 v3, v12764; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 3, v02765; GFX8-NEXT:    s_mov_b32 s4, 0xffff2766; GFX8-NEXT:    v_and_b32_e32 v0, 24, v22767; GFX8-NEXT:    v_lshlrev_b32_e64 v2, v2, s42768; GFX8-NEXT:    v_not_b32_e32 v2, v22769; GFX8-NEXT:    s_mov_b64 s[4:5], 02770; GFX8-NEXT:  .LBB10_1: ; %atomicrmw.start2771; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12772; GFX8-NEXT:    s_waitcnt lgkmcnt(0)2773; GFX8-NEXT:    v_lshrrev_b32_e32 v4, v0, v32774; GFX8-NEXT:    v_add_f16_e32 v4, -4.0, v42775; GFX8-NEXT:    v_and_b32_e32 v5, v3, v22776; GFX8-NEXT:    v_lshlrev_b32_e32 v4, v0, v42777; GFX8-NEXT:    v_or_b32_e32 v4, v5, v42778; GFX8-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v42779; GFX8-NEXT:    s_waitcnt lgkmcnt(0)2780; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v32781; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2782; GFX8-NEXT:    v_mov_b32_e32 v3, v42783; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2784; GFX8-NEXT:    s_cbranch_execnz .LBB10_12785; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2786; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2787; GFX8-NEXT:    s_setpc_b64 s[30:31]2788;2789; GFX7-LABEL: local_atomic_fsub_noret_f16:2790; GFX7:       ; %bb.0:2791; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2792; GFX7-NEXT:    v_and_b32_e32 v1, -4, v02793; GFX7-NEXT:    s_mov_b32 m0, -12794; GFX7-NEXT:    ds_read_b32 v3, v12795; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 3, v02796; GFX7-NEXT:    v_and_b32_e32 v0, 24, v22797; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v22798; GFX7-NEXT:    v_not_b32_e32 v2, v22799; GFX7-NEXT:    s_mov_b64 s[4:5], 02800; GFX7-NEXT:  .LBB10_1: ; %atomicrmw.start2801; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=12802; GFX7-NEXT:    s_waitcnt lgkmcnt(0)2803; GFX7-NEXT:    v_lshrrev_b32_e32 v4, v0, v32804; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v42805; GFX7-NEXT:    v_and_b32_e32 v5, v3, v22806; GFX7-NEXT:    v_add_f32_e32 v4, -4.0, v42807; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v42808; GFX7-NEXT:    v_lshlrev_b32_e32 v4, v0, v42809; GFX7-NEXT:    v_or_b32_e32 v4, v5, v42810; GFX7-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v42811; GFX7-NEXT:    s_waitcnt lgkmcnt(0)2812; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v32813; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2814; GFX7-NEXT:    v_mov_b32_e32 v3, v42815; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]2816; GFX7-NEXT:    s_cbranch_execnz .LBB10_12817; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end2818; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]2819; GFX7-NEXT:    s_setpc_b64 s[30:31]2820;2821; GFX6-LABEL: local_atomic_fsub_noret_f16:2822; GFX6:       ; %bb.0:2823; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2824; GFX6-NEXT:    v_and_b32_e32 v1, -4, v02825; GFX6-NEXT:    s_mov_b32 m0, -12826; GFX6-NEXT:    ds_read_b32 v3, v12827; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 3, v02828; GFX6-NEXT:    v_and_b32_e32 v0, 24, v22829; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v22830; GFX6-NEXT:    v_not_b32_e32 v2, v22831; GFX6-NEXT:    s_mov_b64 s[4:5], 02832; GFX6-NEXT:  .LBB10_1: ; %atomicrmw.start2833; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=12834; GFX6-NEXT:    s_waitcnt lgkmcnt(0)2835; GFX6-NEXT:    v_lshrrev_b32_e32 v4, v0, v32836; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v42837; GFX6-NEXT:    v_and_b32_e32 v5, v3, v22838; GFX6-NEXT:    v_add_f32_e32 v4, -4.0, v42839; GFX6-NEXT:    v_cvt_f16_f32_e32 v4, v42840; GFX6-NEXT:    v_lshlrev_b32_e32 v4, v0, v42841; GFX6-NEXT:    v_or_b32_e32 v4, v5, v42842; GFX6-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v42843; GFX6-NEXT:    s_waitcnt lgkmcnt(0)2844; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v32845; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2846; GFX6-NEXT:    v_mov_b32_e32 v3, v42847; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]2848; GFX6-NEXT:    s_cbranch_execnz .LBB10_12849; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end2850; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]2851; GFX6-NEXT:    s_setpc_b64 s[30:31]2852  %result = atomicrmw fsub ptr addrspace(3) %ptr, half 4.0 seq_cst2853  ret void2854}2855 2856define void @local_atomic_fsub_noret_f16__offset(ptr addrspace(3) %ptr) nounwind {2857; GFX12-TRUE16-LABEL: local_atomic_fsub_noret_f16__offset:2858; GFX12-TRUE16:       ; %bb.0:2859; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x02860; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x02861; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x02862; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x02863; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x02864; GFX12-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v02865; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 02866; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)2867; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v12868; GFX12-TRUE16-NEXT:    v_and_b32_e32 v1, 3, v12869; GFX12-TRUE16-NEXT:    ds_load_b32 v3, v02870; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v12871; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff2872; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2873; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v22874; GFX12-TRUE16-NEXT:  .LBB11_1: ; %atomicrmw.start2875; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=12876; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x02877; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v4, v1, v32878; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v4.h, 02879; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2880; GFX12-TRUE16-NEXT:    v_add_f16_e32 v4.l, -4.0, v4.l2881; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, v1, v42882; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2883; GFX12-TRUE16-NEXT:    v_and_or_b32 v4, v3, v2, v42884; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x02885; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v32886; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x02887; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE2888; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v32889; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v42890; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2891; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s02892; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2893; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02894; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB11_12895; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end2896; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02897; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x02898; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]2899;2900; GFX12-FAKE16-LABEL: local_atomic_fsub_noret_f16__offset:2901; GFX12-FAKE16:       ; %bb.0:2902; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x02903; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x02904; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x02905; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x02906; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x02907; GFX12-FAKE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v02908; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 02909; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)2910; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v12911; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, 3, v12912; GFX12-FAKE16-NEXT:    ds_load_b32 v3, v02913; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v12914; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff2915; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2916; GFX12-FAKE16-NEXT:    v_not_b32_e32 v2, v22917; GFX12-FAKE16-NEXT:  .LBB11_1: ; %atomicrmw.start2918; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=12919; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x02920; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, v1, v32921; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2922; GFX12-FAKE16-NEXT:    v_add_f16_e32 v4, -4.0, v42923; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 0xffff, v42924; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2925; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, v1, v42926; GFX12-FAKE16-NEXT:    v_and_or_b32 v4, v3, v2, v42927; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x02928; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v32929; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x02930; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE2931; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v32932; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v42933; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2934; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s02935; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2936; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02937; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB11_12938; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end2939; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02940; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x02941; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]2942;2943; GFX942-LABEL: local_atomic_fsub_noret_f16__offset:2944; GFX942:       ; %bb.0:2945; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2946; GFX942-NEXT:    v_add_u32_e32 v1, 0xfffe, v02947; GFX942-NEXT:    v_and_b32_e32 v0, -4, v12948; GFX942-NEXT:    ds_read_b32 v3, v02949; GFX942-NEXT:    v_and_b32_e32 v1, 3, v12950; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 3, v12951; GFX942-NEXT:    s_mov_b32 s0, 0xffff2952; GFX942-NEXT:    v_lshlrev_b32_e64 v2, v1, s02953; GFX942-NEXT:    v_not_b32_e32 v2, v22954; GFX942-NEXT:    s_mov_b64 s[0:1], 02955; GFX942-NEXT:  .LBB11_1: ; %atomicrmw.start2956; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12957; GFX942-NEXT:    s_waitcnt lgkmcnt(0)2958; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v1, v32959; GFX942-NEXT:    v_add_f16_e32 v4, -4.0, v42960; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v1, v42961; GFX942-NEXT:    v_and_or_b32 v4, v3, v2, v42962; GFX942-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v42963; GFX942-NEXT:    s_waitcnt lgkmcnt(0)2964; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v32965; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2966; GFX942-NEXT:    v_mov_b32_e32 v3, v42967; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2968; GFX942-NEXT:    s_cbranch_execnz .LBB11_12969; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2970; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2971; GFX942-NEXT:    s_setpc_b64 s[30:31]2972;2973; GFX11-TRUE16-LABEL: local_atomic_fsub_noret_f16__offset:2974; GFX11-TRUE16:       ; %bb.0:2975; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2976; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v02977; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 02978; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)2979; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v12980; GFX11-TRUE16-NEXT:    v_and_b32_e32 v1, 3, v12981; GFX11-TRUE16-NEXT:    ds_load_b32 v3, v02982; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v12983; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff2984; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2985; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v22986; GFX11-TRUE16-NEXT:  .LBB11_1: ; %atomicrmw.start2987; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=12988; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)2989; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v4, v1, v32990; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v4.h, 02991; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2992; GFX11-TRUE16-NEXT:    v_add_f16_e32 v4.l, -4.0, v4.l2993; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, v1, v42994; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2995; GFX11-TRUE16-NEXT:    v_and_or_b32 v4, v3, v2, v42996; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x02997; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v32998; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)2999; GFX11-TRUE16-NEXT:    buffer_gl0_inv3000; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v33001; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v43002; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s03003; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3004; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03005; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB11_13006; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end3007; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s03008; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]3009;3010; GFX11-FAKE16-LABEL: local_atomic_fsub_noret_f16__offset:3011; GFX11-FAKE16:       ; %bb.0:3012; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3013; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v03014; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 03015; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)3016; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v13017; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 3, v13018; GFX11-FAKE16-NEXT:    ds_load_b32 v3, v03019; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v13020; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff3021; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)3022; GFX11-FAKE16-NEXT:    v_not_b32_e32 v2, v23023; GFX11-FAKE16-NEXT:  .LBB11_1: ; %atomicrmw.start3024; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=13025; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)3026; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, v1, v33027; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3028; GFX11-FAKE16-NEXT:    v_add_f16_e32 v4, -4.0, v43029; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 0xffff, v43030; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3031; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, v1, v43032; GFX11-FAKE16-NEXT:    v_and_or_b32 v4, v3, v2, v43033; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x03034; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v33035; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)3036; GFX11-FAKE16-NEXT:    buffer_gl0_inv3037; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v33038; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v43039; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s03040; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3041; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03042; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB11_13043; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end3044; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s03045; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]3046;3047; GFX10-LABEL: local_atomic_fsub_noret_f16__offset:3048; GFX10:       ; %bb.0:3049; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3050; GFX10-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v03051; GFX10-NEXT:    s_mov_b32 s4, 03052; GFX10-NEXT:    v_and_b32_e32 v0, -4, v13053; GFX10-NEXT:    v_and_b32_e32 v1, 3, v13054; GFX10-NEXT:    ds_read_b32 v3, v03055; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 3, v13056; GFX10-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff3057; GFX10-NEXT:    v_not_b32_e32 v2, v23058; GFX10-NEXT:  .LBB11_1: ; %atomicrmw.start3059; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=13060; GFX10-NEXT:    s_waitcnt lgkmcnt(0)3061; GFX10-NEXT:    v_lshrrev_b32_e32 v4, v1, v33062; GFX10-NEXT:    v_add_f16_e32 v4, -4.0, v43063; GFX10-NEXT:    v_lshlrev_b32_sdwa v4, v1, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_03064; GFX10-NEXT:    v_and_or_b32 v4, v3, v2, v43065; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03066; GFX10-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v43067; GFX10-NEXT:    s_waitcnt lgkmcnt(0)3068; GFX10-NEXT:    buffer_gl0_inv3069; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v33070; GFX10-NEXT:    v_mov_b32_e32 v3, v43071; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s43072; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s43073; GFX10-NEXT:    s_cbranch_execnz .LBB11_13074; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end3075; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s43076; GFX10-NEXT:    s_setpc_b64 s[30:31]3077;3078; GFX90A-LABEL: local_atomic_fsub_noret_f16__offset:3079; GFX90A:       ; %bb.0:3080; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3081; GFX90A-NEXT:    v_add_u32_e32 v1, 0xfffe, v03082; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v13083; GFX90A-NEXT:    ds_read_b32 v3, v03084; GFX90A-NEXT:    v_and_b32_e32 v1, 3, v13085; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 3, v13086; GFX90A-NEXT:    s_mov_b32 s4, 0xffff3087; GFX90A-NEXT:    v_lshlrev_b32_e64 v2, v1, s43088; GFX90A-NEXT:    v_not_b32_e32 v2, v23089; GFX90A-NEXT:    s_mov_b64 s[4:5], 03090; GFX90A-NEXT:  .LBB11_1: ; %atomicrmw.start3091; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=13092; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)3093; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v1, v33094; GFX90A-NEXT:    v_add_f16_e32 v4, -4.0, v43095; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v1, v43096; GFX90A-NEXT:    v_and_or_b32 v4, v3, v2, v43097; GFX90A-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v43098; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)3099; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v33100; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3101; GFX90A-NEXT:    v_mov_b32_e32 v3, v43102; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]3103; GFX90A-NEXT:    s_cbranch_execnz .LBB11_13104; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end3105; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]3106; GFX90A-NEXT:    s_setpc_b64 s[30:31]3107;3108; GFX908-LABEL: local_atomic_fsub_noret_f16__offset:3109; GFX908:       ; %bb.0:3110; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3111; GFX908-NEXT:    v_add_u32_e32 v1, 0xfffe, v03112; GFX908-NEXT:    v_and_b32_e32 v0, -4, v13113; GFX908-NEXT:    ds_read_b32 v3, v03114; GFX908-NEXT:    v_and_b32_e32 v1, 3, v13115; GFX908-NEXT:    v_lshlrev_b32_e32 v1, 3, v13116; GFX908-NEXT:    s_mov_b32 s4, 0xffff3117; GFX908-NEXT:    v_lshlrev_b32_e64 v2, v1, s43118; GFX908-NEXT:    v_not_b32_e32 v2, v23119; GFX908-NEXT:    s_mov_b64 s[4:5], 03120; GFX908-NEXT:  .LBB11_1: ; %atomicrmw.start3121; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=13122; GFX908-NEXT:    s_waitcnt lgkmcnt(0)3123; GFX908-NEXT:    v_lshrrev_b32_e32 v4, v1, v33124; GFX908-NEXT:    v_add_f16_e32 v4, -4.0, v43125; GFX908-NEXT:    v_lshlrev_b32_e32 v4, v1, v43126; GFX908-NEXT:    v_and_or_b32 v4, v3, v2, v43127; GFX908-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v43128; GFX908-NEXT:    s_waitcnt lgkmcnt(0)3129; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v33130; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3131; GFX908-NEXT:    v_mov_b32_e32 v3, v43132; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]3133; GFX908-NEXT:    s_cbranch_execnz .LBB11_13134; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end3135; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3136; GFX908-NEXT:    s_setpc_b64 s[30:31]3137;3138; GFX8-LABEL: local_atomic_fsub_noret_f16__offset:3139; GFX8:       ; %bb.0:3140; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3141; GFX8-NEXT:    v_add_u32_e32 v1, vcc, 0xfffe, v03142; GFX8-NEXT:    v_and_b32_e32 v0, -4, v13143; GFX8-NEXT:    s_mov_b32 m0, -13144; GFX8-NEXT:    ds_read_b32 v3, v03145; GFX8-NEXT:    v_and_b32_e32 v1, 3, v13146; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 3, v13147; GFX8-NEXT:    s_mov_b32 s4, 0xffff3148; GFX8-NEXT:    v_lshlrev_b32_e64 v2, v1, s43149; GFX8-NEXT:    v_not_b32_e32 v2, v23150; GFX8-NEXT:    s_mov_b64 s[4:5], 03151; GFX8-NEXT:  .LBB11_1: ; %atomicrmw.start3152; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=13153; GFX8-NEXT:    s_waitcnt lgkmcnt(0)3154; GFX8-NEXT:    v_lshrrev_b32_e32 v4, v1, v33155; GFX8-NEXT:    v_add_f16_e32 v4, -4.0, v43156; GFX8-NEXT:    v_and_b32_e32 v5, v3, v23157; GFX8-NEXT:    v_lshlrev_b32_e32 v4, v1, v43158; GFX8-NEXT:    v_or_b32_e32 v4, v5, v43159; GFX8-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v43160; GFX8-NEXT:    s_waitcnt lgkmcnt(0)3161; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v33162; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3163; GFX8-NEXT:    v_mov_b32_e32 v3, v43164; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]3165; GFX8-NEXT:    s_cbranch_execnz .LBB11_13166; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end3167; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3168; GFX8-NEXT:    s_setpc_b64 s[30:31]3169;3170; GFX7-LABEL: local_atomic_fsub_noret_f16__offset:3171; GFX7:       ; %bb.0:3172; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3173; GFX7-NEXT:    v_add_i32_e32 v1, vcc, 0xfffe, v03174; GFX7-NEXT:    v_and_b32_e32 v0, -4, v13175; GFX7-NEXT:    s_mov_b32 m0, -13176; GFX7-NEXT:    ds_read_b32 v3, v03177; GFX7-NEXT:    v_and_b32_e32 v1, 3, v13178; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 3, v13179; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v13180; GFX7-NEXT:    v_not_b32_e32 v2, v23181; GFX7-NEXT:    s_mov_b64 s[4:5], 03182; GFX7-NEXT:  .LBB11_1: ; %atomicrmw.start3183; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=13184; GFX7-NEXT:    s_waitcnt lgkmcnt(0)3185; GFX7-NEXT:    v_lshrrev_b32_e32 v4, v1, v33186; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v43187; GFX7-NEXT:    v_and_b32_e32 v5, v3, v23188; GFX7-NEXT:    v_add_f32_e32 v4, -4.0, v43189; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v43190; GFX7-NEXT:    v_lshlrev_b32_e32 v4, v1, v43191; GFX7-NEXT:    v_or_b32_e32 v4, v5, v43192; GFX7-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v43193; GFX7-NEXT:    s_waitcnt lgkmcnt(0)3194; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v33195; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3196; GFX7-NEXT:    v_mov_b32_e32 v3, v43197; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]3198; GFX7-NEXT:    s_cbranch_execnz .LBB11_13199; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end3200; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]3201; GFX7-NEXT:    s_setpc_b64 s[30:31]3202;3203; GFX6-LABEL: local_atomic_fsub_noret_f16__offset:3204; GFX6:       ; %bb.0:3205; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3206; GFX6-NEXT:    v_add_i32_e32 v1, vcc, 0xfffe, v03207; GFX6-NEXT:    v_and_b32_e32 v0, -4, v13208; GFX6-NEXT:    s_mov_b32 m0, -13209; GFX6-NEXT:    ds_read_b32 v3, v03210; GFX6-NEXT:    v_and_b32_e32 v1, 3, v13211; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 3, v13212; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v13213; GFX6-NEXT:    v_not_b32_e32 v2, v23214; GFX6-NEXT:    s_mov_b64 s[4:5], 03215; GFX6-NEXT:  .LBB11_1: ; %atomicrmw.start3216; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=13217; GFX6-NEXT:    s_waitcnt lgkmcnt(0)3218; GFX6-NEXT:    v_lshrrev_b32_e32 v4, v1, v33219; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v43220; GFX6-NEXT:    v_and_b32_e32 v5, v3, v23221; GFX6-NEXT:    v_add_f32_e32 v4, -4.0, v43222; GFX6-NEXT:    v_cvt_f16_f32_e32 v4, v43223; GFX6-NEXT:    v_lshlrev_b32_e32 v4, v1, v43224; GFX6-NEXT:    v_or_b32_e32 v4, v5, v43225; GFX6-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v43226; GFX6-NEXT:    s_waitcnt lgkmcnt(0)3227; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v33228; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3229; GFX6-NEXT:    v_mov_b32_e32 v3, v43230; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]3231; GFX6-NEXT:    s_cbranch_execnz .LBB11_13232; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end3233; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]3234; GFX6-NEXT:    s_setpc_b64 s[30:31]3235  %gep = getelementptr half, ptr addrspace(3) %ptr, i32 327673236  %unused = atomicrmw fsub ptr addrspace(3) %gep, half 4.0 seq_cst3237  ret void3238}3239 3240define half @local_atomic_fsub_ret_f16__offset__align4(ptr addrspace(3) %ptr) nounwind {3241; GFX12-TRUE16-LABEL: local_atomic_fsub_ret_f16__offset__align4:3242; GFX12-TRUE16:       ; %bb.0:3243; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x03244; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x03245; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x03246; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x03247; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x03248; GFX12-TRUE16-NEXT:    ds_load_b32 v1, v0 offset:655343249; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 03250; GFX12-TRUE16-NEXT:  .LBB12_1: ; %atomicrmw.start3251; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=13252; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x03253; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v2, v13254; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v1.h, 03255; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3256; GFX12-TRUE16-NEXT:    v_add_f16_e32 v1.l, -4.0, v2.l3257; GFX12-TRUE16-NEXT:    v_and_or_b32 v1, 0xffff0000, v2, v13258; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x03259; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v2 offset:655343260; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x03261; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE3262; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v23263; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3264; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s03265; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3266; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03267; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB12_13268; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end3269; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s03270; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v1.l3271; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x03272; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]3273;3274; GFX12-FAKE16-LABEL: local_atomic_fsub_ret_f16__offset__align4:3275; GFX12-FAKE16:       ; %bb.0:3276; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x03277; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x03278; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x03279; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x03280; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x03281; GFX12-FAKE16-NEXT:    ds_load_b32 v1, v0 offset:655343282; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 03283; GFX12-FAKE16-NEXT:  .LBB12_1: ; %atomicrmw.start3284; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=13285; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x03286; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v2, v13287; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3288; GFX12-FAKE16-NEXT:    v_add_f16_e32 v1, -4.0, v23289; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff, v13290; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)3291; GFX12-FAKE16-NEXT:    v_and_or_b32 v1, 0xffff0000, v2, v13292; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x03293; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v2 offset:655343294; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x03295; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE3296; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v23297; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3298; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s03299; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3300; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03301; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB12_13302; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end3303; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s03304; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v13305; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x03306; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]3307;3308; GFX942-LABEL: local_atomic_fsub_ret_f16__offset__align4:3309; GFX942:       ; %bb.0:3310; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3311; GFX942-NEXT:    ds_read_b32 v2, v0 offset:655343312; GFX942-NEXT:    s_mov_b64 s[0:1], 03313; GFX942-NEXT:    s_mov_b32 s2, 0xffff00003314; GFX942-NEXT:  .LBB12_1: ; %atomicrmw.start3315; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=13316; GFX942-NEXT:    s_waitcnt lgkmcnt(0)3317; GFX942-NEXT:    v_add_f16_e32 v1, -4.0, v23318; GFX942-NEXT:    v_and_or_b32 v1, v2, s2, v13319; GFX942-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655343320; GFX942-NEXT:    s_waitcnt lgkmcnt(0)3321; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v23322; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]3323; GFX942-NEXT:    v_mov_b32_e32 v2, v13324; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]3325; GFX942-NEXT:    s_cbranch_execnz .LBB12_13326; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end3327; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]3328; GFX942-NEXT:    v_mov_b32_e32 v0, v13329; GFX942-NEXT:    s_setpc_b64 s[30:31]3330;3331; GFX11-TRUE16-LABEL: local_atomic_fsub_ret_f16__offset__align4:3332; GFX11-TRUE16:       ; %bb.0:3333; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3334; GFX11-TRUE16-NEXT:    ds_load_b32 v1, v0 offset:655343335; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 03336; GFX11-TRUE16-NEXT:  .LBB12_1: ; %atomicrmw.start3337; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=13338; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)3339; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, v13340; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, 03341; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3342; GFX11-TRUE16-NEXT:    v_add_f16_e32 v1.l, -4.0, v2.l3343; GFX11-TRUE16-NEXT:    v_and_or_b32 v1, 0xffff0000, v2, v13344; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x03345; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v2 offset:655343346; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)3347; GFX11-TRUE16-NEXT:    buffer_gl0_inv3348; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v23349; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s03350; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3351; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03352; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB12_13353; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end3354; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s03355; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v1.l3356; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]3357;3358; GFX11-FAKE16-LABEL: local_atomic_fsub_ret_f16__offset__align4:3359; GFX11-FAKE16:       ; %bb.0:3360; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3361; GFX11-FAKE16-NEXT:    ds_load_b32 v1, v0 offset:655343362; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 03363; GFX11-FAKE16-NEXT:  .LBB12_1: ; %atomicrmw.start3364; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=13365; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)3366; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v13367; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3368; GFX11-FAKE16-NEXT:    v_add_f16_e32 v1, -4.0, v23369; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff, v13370; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)3371; GFX11-FAKE16-NEXT:    v_and_or_b32 v1, 0xffff0000, v2, v13372; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x03373; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v2 offset:655343374; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)3375; GFX11-FAKE16-NEXT:    buffer_gl0_inv3376; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v23377; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s03378; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3379; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03380; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB12_13381; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end3382; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s03383; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v13384; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]3385;3386; GFX10-LABEL: local_atomic_fsub_ret_f16__offset__align4:3387; GFX10:       ; %bb.0:3388; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3389; GFX10-NEXT:    ds_read_b32 v1, v0 offset:655343390; GFX10-NEXT:    s_mov_b32 s4, 03391; GFX10-NEXT:  .LBB12_1: ; %atomicrmw.start3392; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=13393; GFX10-NEXT:    s_waitcnt lgkmcnt(0)3394; GFX10-NEXT:    v_mov_b32_e32 v2, v13395; GFX10-NEXT:    v_add_f16_e32 v1, -4.0, v23396; GFX10-NEXT:    v_and_b32_e32 v1, 0xffff, v13397; GFX10-NEXT:    v_and_or_b32 v1, 0xffff0000, v2, v13398; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03399; GFX10-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655343400; GFX10-NEXT:    s_waitcnt lgkmcnt(0)3401; GFX10-NEXT:    buffer_gl0_inv3402; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v23403; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s43404; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s43405; GFX10-NEXT:    s_cbranch_execnz .LBB12_13406; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end3407; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s43408; GFX10-NEXT:    v_mov_b32_e32 v0, v13409; GFX10-NEXT:    s_setpc_b64 s[30:31]3410;3411; GFX90A-LABEL: local_atomic_fsub_ret_f16__offset__align4:3412; GFX90A:       ; %bb.0:3413; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3414; GFX90A-NEXT:    ds_read_b32 v2, v0 offset:655343415; GFX90A-NEXT:    s_mov_b64 s[4:5], 03416; GFX90A-NEXT:    s_mov_b32 s6, 0xffff00003417; GFX90A-NEXT:  .LBB12_1: ; %atomicrmw.start3418; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=13419; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)3420; GFX90A-NEXT:    v_add_f16_e32 v1, -4.0, v23421; GFX90A-NEXT:    v_and_or_b32 v1, v2, s6, v13422; GFX90A-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655343423; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)3424; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v23425; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3426; GFX90A-NEXT:    v_mov_b32_e32 v2, v13427; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]3428; GFX90A-NEXT:    s_cbranch_execnz .LBB12_13429; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end3430; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]3431; GFX90A-NEXT:    v_mov_b32_e32 v0, v13432; GFX90A-NEXT:    s_setpc_b64 s[30:31]3433;3434; GFX908-LABEL: local_atomic_fsub_ret_f16__offset__align4:3435; GFX908:       ; %bb.0:3436; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3437; GFX908-NEXT:    ds_read_b32 v1, v0 offset:655343438; GFX908-NEXT:    s_mov_b64 s[4:5], 03439; GFX908-NEXT:    s_mov_b32 s6, 0xffff00003440; GFX908-NEXT:  .LBB12_1: ; %atomicrmw.start3441; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=13442; GFX908-NEXT:    s_waitcnt lgkmcnt(0)3443; GFX908-NEXT:    v_mov_b32_e32 v2, v13444; GFX908-NEXT:    v_add_f16_e32 v1, -4.0, v23445; GFX908-NEXT:    v_and_or_b32 v1, v2, s6, v13446; GFX908-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655343447; GFX908-NEXT:    s_waitcnt lgkmcnt(0)3448; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v23449; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3450; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]3451; GFX908-NEXT:    s_cbranch_execnz .LBB12_13452; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end3453; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3454; GFX908-NEXT:    v_mov_b32_e32 v0, v13455; GFX908-NEXT:    s_setpc_b64 s[30:31]3456;3457; GFX8-LABEL: local_atomic_fsub_ret_f16__offset__align4:3458; GFX8:       ; %bb.0:3459; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3460; GFX8-NEXT:    s_mov_b32 m0, -13461; GFX8-NEXT:    ds_read_b32 v1, v0 offset:655343462; GFX8-NEXT:    s_mov_b64 s[4:5], 03463; GFX8-NEXT:  .LBB12_1: ; %atomicrmw.start3464; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=13465; GFX8-NEXT:    s_waitcnt lgkmcnt(0)3466; GFX8-NEXT:    v_mov_b32_e32 v2, v13467; GFX8-NEXT:    v_add_f16_e32 v1, -4.0, v23468; GFX8-NEXT:    v_and_b32_e32 v3, 0xffff0000, v23469; GFX8-NEXT:    v_or_b32_e32 v1, v3, v13470; GFX8-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655343471; GFX8-NEXT:    s_waitcnt lgkmcnt(0)3472; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v23473; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3474; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]3475; GFX8-NEXT:    s_cbranch_execnz .LBB12_13476; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end3477; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3478; GFX8-NEXT:    v_mov_b32_e32 v0, v13479; GFX8-NEXT:    s_setpc_b64 s[30:31]3480;3481; GFX7-LABEL: local_atomic_fsub_ret_f16__offset__align4:3482; GFX7:       ; %bb.0:3483; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3484; GFX7-NEXT:    s_mov_b32 m0, -13485; GFX7-NEXT:    ds_read_b32 v1, v0 offset:655343486; GFX7-NEXT:    s_mov_b64 s[4:5], 03487; GFX7-NEXT:  .LBB12_1: ; %atomicrmw.start3488; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=13489; GFX7-NEXT:    s_waitcnt lgkmcnt(0)3490; GFX7-NEXT:    v_mov_b32_e32 v2, v13491; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v23492; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v23493; GFX7-NEXT:    v_add_f32_e32 v1, -4.0, v13494; GFX7-NEXT:    v_cvt_f16_f32_e32 v1, v13495; GFX7-NEXT:    v_or_b32_e32 v1, v3, v13496; GFX7-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655343497; GFX7-NEXT:    s_waitcnt lgkmcnt(0)3498; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v23499; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3500; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]3501; GFX7-NEXT:    s_cbranch_execnz .LBB12_13502; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end3503; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]3504; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v13505; GFX7-NEXT:    s_setpc_b64 s[30:31]3506;3507; GFX6-LABEL: local_atomic_fsub_ret_f16__offset__align4:3508; GFX6:       ; %bb.0:3509; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3510; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffe, v03511; GFX6-NEXT:    s_mov_b32 m0, -13512; GFX6-NEXT:    ds_read_b32 v1, v03513; GFX6-NEXT:    s_mov_b64 s[4:5], 03514; GFX6-NEXT:  .LBB12_1: ; %atomicrmw.start3515; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=13516; GFX6-NEXT:    s_waitcnt lgkmcnt(0)3517; GFX6-NEXT:    v_mov_b32_e32 v2, v13518; GFX6-NEXT:    v_cvt_f32_f16_e32 v1, v23519; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v23520; GFX6-NEXT:    v_add_f32_e32 v1, -4.0, v13521; GFX6-NEXT:    v_cvt_f16_f32_e32 v1, v13522; GFX6-NEXT:    v_or_b32_e32 v1, v3, v13523; GFX6-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v13524; GFX6-NEXT:    s_waitcnt lgkmcnt(0)3525; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v23526; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3527; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]3528; GFX6-NEXT:    s_cbranch_execnz .LBB12_13529; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end3530; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]3531; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v13532; GFX6-NEXT:    s_setpc_b64 s[30:31]3533  %gep = getelementptr half, ptr addrspace(3) %ptr, i32 327673534  %result = atomicrmw fsub ptr addrspace(3) %gep, half 4.0 seq_cst, align 43535  ret half %result3536}3537 3538define void @local_atomic_fsub_noret_f16__offset__align4(ptr addrspace(3) %ptr) nounwind {3539; GFX12-TRUE16-LABEL: local_atomic_fsub_noret_f16__offset__align4:3540; GFX12-TRUE16:       ; %bb.0:3541; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x03542; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x03543; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x03544; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x03545; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x03546; GFX12-TRUE16-NEXT:    ds_load_b32 v1, v0 offset:655343547; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 03548; GFX12-TRUE16-NEXT:  .LBB13_1: ; %atomicrmw.start3549; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=13550; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x03551; GFX12-TRUE16-NEXT:    v_add_f16_e32 v2.l, -4.0, v1.l3552; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.h, 03553; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)3554; GFX12-TRUE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v1, v23555; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x03556; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v1 offset:655343557; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x03558; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE3559; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v13560; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v1, v23561; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3562; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s03563; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3564; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03565; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB13_13566; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end3567; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s03568; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x03569; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]3570;3571; GFX12-FAKE16-LABEL: local_atomic_fsub_noret_f16__offset__align4:3572; GFX12-FAKE16:       ; %bb.0:3573; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x03574; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x03575; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x03576; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x03577; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x03578; GFX12-FAKE16-NEXT:    ds_load_b32 v1, v0 offset:655343579; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 03580; GFX12-FAKE16-NEXT:  .LBB13_1: ; %atomicrmw.start3581; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=13582; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x03583; GFX12-FAKE16-NEXT:    v_add_f16_e32 v2, -4.0, v13584; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3585; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v23586; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v1, v23587; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x03588; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v1 offset:655343589; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x03590; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE3591; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v13592; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v1, v23593; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3594; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s03595; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3596; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03597; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB13_13598; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end3599; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s03600; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x03601; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]3602;3603; GFX942-LABEL: local_atomic_fsub_noret_f16__offset__align4:3604; GFX942:       ; %bb.0:3605; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3606; GFX942-NEXT:    ds_read_b32 v1, v0 offset:655343607; GFX942-NEXT:    s_mov_b64 s[0:1], 03608; GFX942-NEXT:    s_mov_b32 s2, 0xffff00003609; GFX942-NEXT:  .LBB13_1: ; %atomicrmw.start3610; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=13611; GFX942-NEXT:    s_waitcnt lgkmcnt(0)3612; GFX942-NEXT:    v_add_f16_e32 v2, -4.0, v13613; GFX942-NEXT:    v_and_or_b32 v2, v1, s2, v23614; GFX942-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655343615; GFX942-NEXT:    s_waitcnt lgkmcnt(0)3616; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v13617; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]3618; GFX942-NEXT:    v_mov_b32_e32 v1, v23619; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]3620; GFX942-NEXT:    s_cbranch_execnz .LBB13_13621; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end3622; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]3623; GFX942-NEXT:    s_setpc_b64 s[30:31]3624;3625; GFX11-TRUE16-LABEL: local_atomic_fsub_noret_f16__offset__align4:3626; GFX11-TRUE16:       ; %bb.0:3627; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3628; GFX11-TRUE16-NEXT:    ds_load_b32 v1, v0 offset:655343629; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 03630; GFX11-TRUE16-NEXT:  .LBB13_1: ; %atomicrmw.start3631; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=13632; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)3633; GFX11-TRUE16-NEXT:    v_add_f16_e32 v2.l, -4.0, v1.l3634; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.h, 03635; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)3636; GFX11-TRUE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v1, v23637; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x03638; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v1 offset:655343639; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)3640; GFX11-TRUE16-NEXT:    buffer_gl0_inv3641; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v13642; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, v23643; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s03644; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3645; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03646; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB13_13647; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end3648; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s03649; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]3650;3651; GFX11-FAKE16-LABEL: local_atomic_fsub_noret_f16__offset__align4:3652; GFX11-FAKE16:       ; %bb.0:3653; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3654; GFX11-FAKE16-NEXT:    ds_load_b32 v1, v0 offset:655343655; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 03656; GFX11-FAKE16-NEXT:  .LBB13_1: ; %atomicrmw.start3657; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=13658; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)3659; GFX11-FAKE16-NEXT:    v_add_f16_e32 v2, -4.0, v13660; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3661; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v23662; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v1, v23663; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x03664; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v1 offset:655343665; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)3666; GFX11-FAKE16-NEXT:    buffer_gl0_inv3667; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v13668; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v23669; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s03670; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3671; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03672; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB13_13673; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end3674; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s03675; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]3676;3677; GFX10-LABEL: local_atomic_fsub_noret_f16__offset__align4:3678; GFX10:       ; %bb.0:3679; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3680; GFX10-NEXT:    ds_read_b32 v1, v0 offset:655343681; GFX10-NEXT:    s_mov_b32 s4, 03682; GFX10-NEXT:  .LBB13_1: ; %atomicrmw.start3683; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=13684; GFX10-NEXT:    s_waitcnt lgkmcnt(0)3685; GFX10-NEXT:    v_add_f16_e32 v2, -4.0, v13686; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff, v23687; GFX10-NEXT:    v_and_or_b32 v2, 0xffff0000, v1, v23688; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03689; GFX10-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655343690; GFX10-NEXT:    s_waitcnt lgkmcnt(0)3691; GFX10-NEXT:    buffer_gl0_inv3692; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v13693; GFX10-NEXT:    v_mov_b32_e32 v1, v23694; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s43695; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s43696; GFX10-NEXT:    s_cbranch_execnz .LBB13_13697; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end3698; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s43699; GFX10-NEXT:    s_setpc_b64 s[30:31]3700;3701; GFX90A-LABEL: local_atomic_fsub_noret_f16__offset__align4:3702; GFX90A:       ; %bb.0:3703; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3704; GFX90A-NEXT:    ds_read_b32 v1, v0 offset:655343705; GFX90A-NEXT:    s_mov_b64 s[4:5], 03706; GFX90A-NEXT:    s_mov_b32 s6, 0xffff00003707; GFX90A-NEXT:  .LBB13_1: ; %atomicrmw.start3708; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=13709; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)3710; GFX90A-NEXT:    v_add_f16_e32 v2, -4.0, v13711; GFX90A-NEXT:    v_and_or_b32 v2, v1, s6, v23712; GFX90A-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655343713; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)3714; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v13715; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3716; GFX90A-NEXT:    v_mov_b32_e32 v1, v23717; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]3718; GFX90A-NEXT:    s_cbranch_execnz .LBB13_13719; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end3720; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]3721; GFX90A-NEXT:    s_setpc_b64 s[30:31]3722;3723; GFX908-LABEL: local_atomic_fsub_noret_f16__offset__align4:3724; GFX908:       ; %bb.0:3725; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3726; GFX908-NEXT:    ds_read_b32 v1, v0 offset:655343727; GFX908-NEXT:    s_mov_b64 s[4:5], 03728; GFX908-NEXT:    s_mov_b32 s6, 0xffff00003729; GFX908-NEXT:  .LBB13_1: ; %atomicrmw.start3730; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=13731; GFX908-NEXT:    s_waitcnt lgkmcnt(0)3732; GFX908-NEXT:    v_add_f16_e32 v2, -4.0, v13733; GFX908-NEXT:    v_and_or_b32 v2, v1, s6, v23734; GFX908-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655343735; GFX908-NEXT:    s_waitcnt lgkmcnt(0)3736; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v13737; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3738; GFX908-NEXT:    v_mov_b32_e32 v1, v23739; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]3740; GFX908-NEXT:    s_cbranch_execnz .LBB13_13741; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end3742; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3743; GFX908-NEXT:    s_setpc_b64 s[30:31]3744;3745; GFX8-LABEL: local_atomic_fsub_noret_f16__offset__align4:3746; GFX8:       ; %bb.0:3747; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3748; GFX8-NEXT:    s_mov_b32 m0, -13749; GFX8-NEXT:    ds_read_b32 v1, v0 offset:655343750; GFX8-NEXT:    s_mov_b64 s[4:5], 03751; GFX8-NEXT:  .LBB13_1: ; %atomicrmw.start3752; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=13753; GFX8-NEXT:    s_waitcnt lgkmcnt(0)3754; GFX8-NEXT:    v_add_f16_e32 v2, -4.0, v13755; GFX8-NEXT:    v_and_b32_e32 v3, 0xffff0000, v13756; GFX8-NEXT:    v_or_b32_e32 v2, v3, v23757; GFX8-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655343758; GFX8-NEXT:    s_waitcnt lgkmcnt(0)3759; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v13760; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3761; GFX8-NEXT:    v_mov_b32_e32 v1, v23762; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]3763; GFX8-NEXT:    s_cbranch_execnz .LBB13_13764; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end3765; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3766; GFX8-NEXT:    s_setpc_b64 s[30:31]3767;3768; GFX7-LABEL: local_atomic_fsub_noret_f16__offset__align4:3769; GFX7:       ; %bb.0:3770; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3771; GFX7-NEXT:    s_mov_b32 m0, -13772; GFX7-NEXT:    ds_read_b32 v1, v0 offset:655343773; GFX7-NEXT:    s_mov_b64 s[4:5], 03774; GFX7-NEXT:  .LBB13_1: ; %atomicrmw.start3775; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=13776; GFX7-NEXT:    s_waitcnt lgkmcnt(0)3777; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v13778; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v13779; GFX7-NEXT:    v_add_f32_e32 v2, -4.0, v23780; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v23781; GFX7-NEXT:    v_or_b32_e32 v2, v3, v23782; GFX7-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655343783; GFX7-NEXT:    s_waitcnt lgkmcnt(0)3784; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v13785; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3786; GFX7-NEXT:    v_mov_b32_e32 v1, v23787; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]3788; GFX7-NEXT:    s_cbranch_execnz .LBB13_13789; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end3790; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]3791; GFX7-NEXT:    s_setpc_b64 s[30:31]3792;3793; GFX6-LABEL: local_atomic_fsub_noret_f16__offset__align4:3794; GFX6:       ; %bb.0:3795; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3796; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffe, v03797; GFX6-NEXT:    s_mov_b32 m0, -13798; GFX6-NEXT:    ds_read_b32 v1, v03799; GFX6-NEXT:    s_mov_b64 s[4:5], 03800; GFX6-NEXT:  .LBB13_1: ; %atomicrmw.start3801; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=13802; GFX6-NEXT:    s_waitcnt lgkmcnt(0)3803; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v13804; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v13805; GFX6-NEXT:    v_add_f32_e32 v2, -4.0, v23806; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v23807; GFX6-NEXT:    v_or_b32_e32 v2, v3, v23808; GFX6-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v23809; GFX6-NEXT:    s_waitcnt lgkmcnt(0)3810; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v13811; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3812; GFX6-NEXT:    v_mov_b32_e32 v1, v23813; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]3814; GFX6-NEXT:    s_cbranch_execnz .LBB13_13815; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end3816; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]3817; GFX6-NEXT:    s_setpc_b64 s[30:31]3818  %gep = getelementptr half, ptr addrspace(3) %ptr, i32 327673819  %unused = atomicrmw fsub ptr addrspace(3) %gep, half 4.0 seq_cst, align 43820  ret void3821}3822 3823; --------------------------------------------------------------------3824; bfloat3825; --------------------------------------------------------------------3826 3827define bfloat @local_atomic_fsub_ret_bf16(ptr addrspace(3) %ptr) nounwind {3828; GFX12-TRUE16-LABEL: local_atomic_fsub_ret_bf16:3829; GFX12-TRUE16:       ; %bb.0:3830; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x03831; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x03832; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x03833; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x03834; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x03835; GFX12-TRUE16-NEXT:    v_and_b32_e32 v1, -4, v03836; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v03837; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 03838; GFX12-TRUE16-NEXT:    ds_load_b32 v3, v13839; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v0, 0xffff3840; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, 24, v03841; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)3842; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v23843; GFX12-TRUE16-NEXT:  .LBB14_1: ; %atomicrmw.start3844; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=13845; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x03846; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v33847; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3848; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v0, v43849; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v33850; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3851; GFX12-TRUE16-NEXT:    v_add_f32_e32 v3, -4.0, v33852; GFX12-TRUE16-NEXT:    v_bfe_u32 v5, v3, 16, 13853; GFX12-TRUE16-NEXT:    v_or_b32_e32 v6, 0x400000, v33854; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v33855; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)3856; GFX12-TRUE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff3857; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)3858; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo3859; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 03860; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3861; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h3862; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v0, v53863; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)3864; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v2, v33865; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x03866; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v3, v1, v3, v43867; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x03868; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE3869; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43870; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3871; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s03872; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3873; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03874; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB14_13875; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end3876; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s03877; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v0, v33878; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x03879; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]3880;3881; GFX12-FAKE16-LABEL: local_atomic_fsub_ret_bf16:3882; GFX12-FAKE16:       ; %bb.0:3883; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x03884; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x03885; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x03886; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x03887; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x03888; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, -4, v03889; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v03890; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 03891; GFX12-FAKE16-NEXT:    ds_load_b32 v3, v13892; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v0, 0xffff3893; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, 24, v03894; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)3895; GFX12-FAKE16-NEXT:    v_not_b32_e32 v2, v23896; GFX12-FAKE16-NEXT:  .LBB14_1: ; %atomicrmw.start3897; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=13898; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x03899; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v33900; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3901; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v0, v43902; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v33903; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3904; GFX12-FAKE16-NEXT:    v_add_f32_e32 v3, -4.0, v33905; GFX12-FAKE16-NEXT:    v_bfe_u32 v5, v3, 16, 13906; GFX12-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v33907; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v33908; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)3909; GFX12-FAKE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff3910; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)3911; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo3912; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3913; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v33914; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v0, v33915; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)3916; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, v4, v2, v33917; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x03918; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v3, v1, v3, v43919; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x03920; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE3921; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43922; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3923; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s03924; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3925; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03926; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB14_13927; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end3928; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s03929; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v0, v33930; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x03931; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]3932;3933; GFX942-LABEL: local_atomic_fsub_ret_bf16:3934; GFX942:       ; %bb.0:3935; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3936; GFX942-NEXT:    v_and_b32_e32 v1, -4, v03937; GFX942-NEXT:    ds_read_b32 v3, v13938; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 3, v03939; GFX942-NEXT:    s_mov_b32 s0, 0xffff3940; GFX942-NEXT:    v_and_b32_e32 v0, 24, v23941; GFX942-NEXT:    v_lshlrev_b32_e64 v2, v2, s03942; GFX942-NEXT:    v_not_b32_e32 v2, v23943; GFX942-NEXT:    s_mov_b64 s[0:1], 03944; GFX942-NEXT:    s_movk_i32 s2, 0x7fff3945; GFX942-NEXT:  .LBB14_1: ; %atomicrmw.start3946; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=13947; GFX942-NEXT:    s_waitcnt lgkmcnt(0)3948; GFX942-NEXT:    v_lshrrev_b32_sdwa v4, v0, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD3949; GFX942-NEXT:    s_nop 03950; GFX942-NEXT:    v_add_f32_e32 v4, -4.0, v43951; GFX942-NEXT:    v_bfe_u32 v5, v4, 16, 13952; GFX942-NEXT:    v_or_b32_e32 v6, 0x400000, v43953; GFX942-NEXT:    v_add3_u32 v5, v5, v4, s23954; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v4, v43955; GFX942-NEXT:    s_nop 13956; GFX942-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc3957; GFX942-NEXT:    v_lshlrev_b32_sdwa v4, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_13958; GFX942-NEXT:    v_and_or_b32 v4, v3, v2, v43959; GFX942-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v43960; GFX942-NEXT:    s_waitcnt lgkmcnt(0)3961; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v33962; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]3963; GFX942-NEXT:    v_mov_b32_e32 v3, v43964; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]3965; GFX942-NEXT:    s_cbranch_execnz .LBB14_13966; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end3967; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]3968; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v0, v43969; GFX942-NEXT:    s_setpc_b64 s[30:31]3970;3971; GFX11-TRUE16-LABEL: local_atomic_fsub_ret_bf16:3972; GFX11-TRUE16:       ; %bb.0:3973; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3974; GFX11-TRUE16-NEXT:    v_and_b32_e32 v1, -4, v03975; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v03976; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 03977; GFX11-TRUE16-NEXT:    ds_load_b32 v3, v13978; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v0, 0xffff3979; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, 24, v03980; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)3981; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v23982; GFX11-TRUE16-NEXT:    .p2align 63983; GFX11-TRUE16-NEXT:  .LBB14_1: ; %atomicrmw.start3984; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=13985; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)3986; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v33987; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3988; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v0, v43989; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v33990; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3991; GFX11-TRUE16-NEXT:    v_add_f32_e32 v3, -4.0, v33992; GFX11-TRUE16-NEXT:    v_bfe_u32 v5, v3, 16, 13993; GFX11-TRUE16-NEXT:    v_or_b32_e32 v6, 0x400000, v33994; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v33995; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)3996; GFX11-TRUE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff3997; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo3998; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 03999; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4000; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h4001; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v0, v54002; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4003; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v2, v34004; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x04005; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v3, v1, v3, v44006; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)4007; GFX11-TRUE16-NEXT:    buffer_gl0_inv4008; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v44009; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s04010; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4011; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04012; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB14_14013; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end4014; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04015; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v0, v34016; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]4017;4018; GFX11-FAKE16-LABEL: local_atomic_fsub_ret_bf16:4019; GFX11-FAKE16:       ; %bb.0:4020; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4021; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, -4, v04022; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v04023; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 04024; GFX11-FAKE16-NEXT:    ds_load_b32 v3, v14025; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v0, 0xffff4026; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, 24, v04027; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)4028; GFX11-FAKE16-NEXT:    v_not_b32_e32 v2, v24029; GFX11-FAKE16-NEXT:    .p2align 64030; GFX11-FAKE16-NEXT:  .LBB14_1: ; %atomicrmw.start4031; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=14032; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)4033; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v34034; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4035; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v0, v44036; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v34037; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4038; GFX11-FAKE16-NEXT:    v_add_f32_e32 v3, -4.0, v34039; GFX11-FAKE16-NEXT:    v_bfe_u32 v5, v3, 16, 14040; GFX11-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v34041; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v34042; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)4043; GFX11-FAKE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff4044; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo4045; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4046; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v34047; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v0, v34048; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4049; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, v4, v2, v34050; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x04051; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v3, v1, v3, v44052; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)4053; GFX11-FAKE16-NEXT:    buffer_gl0_inv4054; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v44055; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s04056; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4057; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04058; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB14_14059; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end4060; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04061; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v0, v34062; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]4063;4064; GFX10-LABEL: local_atomic_fsub_ret_bf16:4065; GFX10:       ; %bb.0:4066; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4067; GFX10-NEXT:    v_and_b32_e32 v1, -4, v04068; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 3, v04069; GFX10-NEXT:    s_mov_b32 s4, 04070; GFX10-NEXT:    ds_read_b32 v3, v14071; GFX10-NEXT:    v_lshlrev_b32_e64 v2, v0, 0xffff4072; GFX10-NEXT:    v_and_b32_e32 v0, 24, v04073; GFX10-NEXT:    v_not_b32_e32 v2, v24074; GFX10-NEXT:  .LBB14_1: ; %atomicrmw.start4075; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=14076; GFX10-NEXT:    s_waitcnt lgkmcnt(0)4077; GFX10-NEXT:    v_mov_b32_e32 v4, v34078; GFX10-NEXT:    v_lshrrev_b32_sdwa v3, v0, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD4079; GFX10-NEXT:    v_add_f32_e32 v3, -4.0, v34080; GFX10-NEXT:    v_bfe_u32 v5, v3, 16, 14081; GFX10-NEXT:    v_or_b32_e32 v6, 0x400000, v34082; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v34083; GFX10-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff4084; GFX10-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo4085; GFX10-NEXT:    v_lshlrev_b32_sdwa v3, v0, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_14086; GFX10-NEXT:    v_and_or_b32 v3, v4, v2, v34087; GFX10-NEXT:    s_waitcnt_vscnt null, 0x04088; GFX10-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v34089; GFX10-NEXT:    s_waitcnt lgkmcnt(0)4090; GFX10-NEXT:    buffer_gl0_inv4091; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v44092; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s44093; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s44094; GFX10-NEXT:    s_cbranch_execnz .LBB14_14095; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end4096; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s44097; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v0, v34098; GFX10-NEXT:    s_setpc_b64 s[30:31]4099;4100; GFX90A-LABEL: local_atomic_fsub_ret_bf16:4101; GFX90A:       ; %bb.0:4102; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4103; GFX90A-NEXT:    v_and_b32_e32 v1, -4, v04104; GFX90A-NEXT:    ds_read_b32 v3, v14105; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 3, v04106; GFX90A-NEXT:    s_mov_b32 s4, 0xffff4107; GFX90A-NEXT:    v_and_b32_e32 v0, 24, v24108; GFX90A-NEXT:    v_lshlrev_b32_e64 v2, v2, s44109; GFX90A-NEXT:    v_not_b32_e32 v2, v24110; GFX90A-NEXT:    s_mov_b64 s[4:5], 04111; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff4112; GFX90A-NEXT:  .LBB14_1: ; %atomicrmw.start4113; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=14114; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)4115; GFX90A-NEXT:    v_lshrrev_b32_sdwa v4, v0, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD4116; GFX90A-NEXT:    v_add_f32_e32 v4, -4.0, v44117; GFX90A-NEXT:    v_bfe_u32 v5, v4, 16, 14118; GFX90A-NEXT:    v_or_b32_e32 v6, 0x400000, v44119; GFX90A-NEXT:    v_add3_u32 v5, v5, v4, s64120; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v4, v44121; GFX90A-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc4122; GFX90A-NEXT:    v_lshlrev_b32_sdwa v4, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_14123; GFX90A-NEXT:    v_and_or_b32 v4, v3, v2, v44124; GFX90A-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v44125; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)4126; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v34127; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4128; GFX90A-NEXT:    v_mov_b32_e32 v3, v44129; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]4130; GFX90A-NEXT:    s_cbranch_execnz .LBB14_14131; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end4132; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]4133; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v0, v44134; GFX90A-NEXT:    s_setpc_b64 s[30:31]4135;4136; GFX908-LABEL: local_atomic_fsub_ret_bf16:4137; GFX908:       ; %bb.0:4138; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4139; GFX908-NEXT:    v_and_b32_e32 v1, -4, v04140; GFX908-NEXT:    ds_read_b32 v3, v14141; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 3, v04142; GFX908-NEXT:    s_mov_b32 s4, 0xffff4143; GFX908-NEXT:    v_and_b32_e32 v0, 24, v24144; GFX908-NEXT:    v_lshlrev_b32_e64 v2, v2, s44145; GFX908-NEXT:    v_not_b32_e32 v2, v24146; GFX908-NEXT:    s_mov_b64 s[4:5], 04147; GFX908-NEXT:    s_movk_i32 s6, 0x7fff4148; GFX908-NEXT:  .LBB14_1: ; %atomicrmw.start4149; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=14150; GFX908-NEXT:    s_waitcnt lgkmcnt(0)4151; GFX908-NEXT:    v_mov_b32_e32 v4, v34152; GFX908-NEXT:    v_lshrrev_b32_sdwa v3, v0, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD4153; GFX908-NEXT:    v_add_f32_e32 v3, -4.0, v34154; GFX908-NEXT:    v_bfe_u32 v5, v3, 16, 14155; GFX908-NEXT:    v_or_b32_e32 v6, 0x400000, v34156; GFX908-NEXT:    v_add3_u32 v5, v5, v3, s64157; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v3, v34158; GFX908-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc4159; GFX908-NEXT:    v_lshlrev_b32_sdwa v3, v0, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_14160; GFX908-NEXT:    v_and_or_b32 v3, v4, v2, v34161; GFX908-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v34162; GFX908-NEXT:    s_waitcnt lgkmcnt(0)4163; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v44164; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4165; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]4166; GFX908-NEXT:    s_cbranch_execnz .LBB14_14167; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end4168; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]4169; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v0, v34170; GFX908-NEXT:    s_setpc_b64 s[30:31]4171;4172; GFX8-LABEL: local_atomic_fsub_ret_bf16:4173; GFX8:       ; %bb.0:4174; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4175; GFX8-NEXT:    v_and_b32_e32 v1, -4, v04176; GFX8-NEXT:    s_mov_b32 m0, -14177; GFX8-NEXT:    ds_read_b32 v3, v14178; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 3, v04179; GFX8-NEXT:    s_mov_b32 s4, 0xffff4180; GFX8-NEXT:    v_and_b32_e32 v0, 24, v24181; GFX8-NEXT:    v_lshlrev_b32_e64 v2, v2, s44182; GFX8-NEXT:    v_not_b32_e32 v2, v24183; GFX8-NEXT:    s_mov_b64 s[4:5], 04184; GFX8-NEXT:  .LBB14_1: ; %atomicrmw.start4185; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=14186; GFX8-NEXT:    s_waitcnt lgkmcnt(0)4187; GFX8-NEXT:    v_mov_b32_e32 v4, v34188; GFX8-NEXT:    v_lshrrev_b32_sdwa v3, v0, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD4189; GFX8-NEXT:    v_add_f32_e32 v3, -4.0, v34190; GFX8-NEXT:    v_bfe_u32 v6, v3, 16, 14191; GFX8-NEXT:    v_add_u32_e32 v6, vcc, v6, v34192; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0x7fff, v64193; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v34194; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v3, v34195; GFX8-NEXT:    v_cndmask_b32_e32 v3, v6, v7, vcc4196; GFX8-NEXT:    v_and_b32_e32 v5, v4, v24197; GFX8-NEXT:    v_lshlrev_b32_sdwa v3, v0, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_14198; GFX8-NEXT:    v_or_b32_e32 v3, v5, v34199; GFX8-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v34200; GFX8-NEXT:    s_waitcnt lgkmcnt(0)4201; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v44202; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4203; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]4204; GFX8-NEXT:    s_cbranch_execnz .LBB14_14205; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end4206; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]4207; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v0, v34208; GFX8-NEXT:    s_setpc_b64 s[30:31]4209;4210; GFX7-LABEL: local_atomic_fsub_ret_bf16:4211; GFX7:       ; %bb.0:4212; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4213; GFX7-NEXT:    v_and_b32_e32 v1, -4, v04214; GFX7-NEXT:    s_mov_b32 m0, -14215; GFX7-NEXT:    ds_read_b32 v3, v14216; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 3, v04217; GFX7-NEXT:    v_and_b32_e32 v0, 24, v24218; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v24219; GFX7-NEXT:    v_not_b32_e32 v2, v24220; GFX7-NEXT:    s_mov_b64 s[4:5], 04221; GFX7-NEXT:  .LBB14_1: ; %atomicrmw.start4222; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=14223; GFX7-NEXT:    s_waitcnt lgkmcnt(0)4224; GFX7-NEXT:    v_mov_b32_e32 v4, v34225; GFX7-NEXT:    v_lshrrev_b32_e32 v3, v0, v44226; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v34227; GFX7-NEXT:    v_add_f32_e32 v3, -4.0, v34228; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v34229; GFX7-NEXT:    v_and_b32_e32 v5, v4, v24230; GFX7-NEXT:    v_lshlrev_b32_e32 v3, v0, v34231; GFX7-NEXT:    v_or_b32_e32 v3, v5, v34232; GFX7-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v34233; GFX7-NEXT:    s_waitcnt lgkmcnt(0)4234; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v44235; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4236; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]4237; GFX7-NEXT:    s_cbranch_execnz .LBB14_14238; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end4239; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]4240; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v0, v34241; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v04242; GFX7-NEXT:    s_setpc_b64 s[30:31]4243;4244; GFX6-LABEL: local_atomic_fsub_ret_bf16:4245; GFX6:       ; %bb.0:4246; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4247; GFX6-NEXT:    v_and_b32_e32 v1, -4, v04248; GFX6-NEXT:    s_mov_b32 m0, -14249; GFX6-NEXT:    ds_read_b32 v3, v14250; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 3, v04251; GFX6-NEXT:    v_and_b32_e32 v0, 24, v24252; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v24253; GFX6-NEXT:    v_not_b32_e32 v2, v24254; GFX6-NEXT:    s_mov_b64 s[4:5], 04255; GFX6-NEXT:  .LBB14_1: ; %atomicrmw.start4256; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=14257; GFX6-NEXT:    s_waitcnt lgkmcnt(0)4258; GFX6-NEXT:    v_mov_b32_e32 v4, v34259; GFX6-NEXT:    v_lshrrev_b32_e32 v3, v0, v44260; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v34261; GFX6-NEXT:    v_add_f32_e32 v3, -4.0, v34262; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v34263; GFX6-NEXT:    v_and_b32_e32 v5, v4, v24264; GFX6-NEXT:    v_lshlrev_b32_e32 v3, v0, v34265; GFX6-NEXT:    v_or_b32_e32 v3, v5, v34266; GFX6-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v34267; GFX6-NEXT:    s_waitcnt lgkmcnt(0)4268; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v44269; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4270; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]4271; GFX6-NEXT:    s_cbranch_execnz .LBB14_14272; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end4273; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]4274; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v0, v34275; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v04276; GFX6-NEXT:    s_setpc_b64 s[30:31]4277  %result = atomicrmw fsub ptr addrspace(3) %ptr, bfloat 4.0 seq_cst4278  ret bfloat %result4279}4280 4281define bfloat @local_atomic_fsub_ret_bf16__offset(ptr addrspace(3) %ptr) nounwind {4282; GFX12-TRUE16-LABEL: local_atomic_fsub_ret_bf16__offset:4283; GFX12-TRUE16:       ; %bb.0:4284; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x04285; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x04286; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x04287; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x04288; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x04289; GFX12-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v04290; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 04291; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)4292; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v14293; GFX12-TRUE16-NEXT:    v_and_b32_e32 v1, 3, v14294; GFX12-TRUE16-NEXT:    ds_load_b32 v3, v04295; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v14296; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff4297; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4298; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v24299; GFX12-TRUE16-NEXT:  .LBB15_1: ; %atomicrmw.start4300; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=14301; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x04302; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v34303; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4304; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v1, v44305; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v34306; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4307; GFX12-TRUE16-NEXT:    v_add_f32_e32 v3, -4.0, v34308; GFX12-TRUE16-NEXT:    v_bfe_u32 v5, v3, 16, 14309; GFX12-TRUE16-NEXT:    v_or_b32_e32 v6, 0x400000, v34310; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v34311; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)4312; GFX12-TRUE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff4313; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)4314; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo4315; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 04316; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4317; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h4318; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v1, v54319; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4320; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v2, v34321; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x04322; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v44323; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x04324; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE4325; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v44326; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4327; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s04328; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4329; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04330; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB15_14331; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end4332; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04333; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v34334; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x04335; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]4336;4337; GFX12-FAKE16-LABEL: local_atomic_fsub_ret_bf16__offset:4338; GFX12-FAKE16:       ; %bb.0:4339; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x04340; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x04341; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x04342; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x04343; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x04344; GFX12-FAKE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v04345; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 04346; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)4347; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v14348; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, 3, v14349; GFX12-FAKE16-NEXT:    ds_load_b32 v3, v04350; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v14351; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff4352; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4353; GFX12-FAKE16-NEXT:    v_not_b32_e32 v2, v24354; GFX12-FAKE16-NEXT:  .LBB15_1: ; %atomicrmw.start4355; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=14356; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x04357; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v34358; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4359; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v1, v44360; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v34361; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4362; GFX12-FAKE16-NEXT:    v_add_f32_e32 v3, -4.0, v34363; GFX12-FAKE16-NEXT:    v_bfe_u32 v5, v3, 16, 14364; GFX12-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v34365; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v34366; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)4367; GFX12-FAKE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff4368; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)4369; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo4370; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4371; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v34372; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v1, v34373; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4374; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, v4, v2, v34375; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x04376; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v44377; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x04378; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE4379; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v44380; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4381; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s04382; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4383; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04384; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB15_14385; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end4386; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04387; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v34388; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x04389; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]4390;4391; GFX942-LABEL: local_atomic_fsub_ret_bf16__offset:4392; GFX942:       ; %bb.0:4393; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4394; GFX942-NEXT:    v_add_u32_e32 v0, 0xfffe, v04395; GFX942-NEXT:    v_and_b32_e32 v1, -4, v04396; GFX942-NEXT:    ds_read_b32 v3, v14397; GFX942-NEXT:    v_and_b32_e32 v0, 3, v04398; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 3, v04399; GFX942-NEXT:    s_mov_b32 s0, 0xffff4400; GFX942-NEXT:    v_lshlrev_b32_e64 v2, v0, s04401; GFX942-NEXT:    v_not_b32_e32 v2, v24402; GFX942-NEXT:    s_mov_b64 s[0:1], 04403; GFX942-NEXT:    s_movk_i32 s2, 0x7fff4404; GFX942-NEXT:  .LBB15_1: ; %atomicrmw.start4405; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=14406; GFX942-NEXT:    s_waitcnt lgkmcnt(0)4407; GFX942-NEXT:    v_lshrrev_b32_sdwa v4, v0, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD4408; GFX942-NEXT:    s_nop 04409; GFX942-NEXT:    v_add_f32_e32 v4, -4.0, v44410; GFX942-NEXT:    v_bfe_u32 v5, v4, 16, 14411; GFX942-NEXT:    v_or_b32_e32 v6, 0x400000, v44412; GFX942-NEXT:    v_add3_u32 v5, v5, v4, s24413; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v4, v44414; GFX942-NEXT:    s_nop 14415; GFX942-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc4416; GFX942-NEXT:    v_lshlrev_b32_sdwa v4, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_14417; GFX942-NEXT:    v_and_or_b32 v4, v3, v2, v44418; GFX942-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v44419; GFX942-NEXT:    s_waitcnt lgkmcnt(0)4420; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v34421; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]4422; GFX942-NEXT:    v_mov_b32_e32 v3, v44423; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]4424; GFX942-NEXT:    s_cbranch_execnz .LBB15_14425; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end4426; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]4427; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v0, v44428; GFX942-NEXT:    s_setpc_b64 s[30:31]4429;4430; GFX11-TRUE16-LABEL: local_atomic_fsub_ret_bf16__offset:4431; GFX11-TRUE16:       ; %bb.0:4432; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4433; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v04434; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 04435; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)4436; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v14437; GFX11-TRUE16-NEXT:    v_and_b32_e32 v1, 3, v14438; GFX11-TRUE16-NEXT:    ds_load_b32 v3, v04439; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v14440; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff4441; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4442; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v24443; GFX11-TRUE16-NEXT:    .p2align 64444; GFX11-TRUE16-NEXT:  .LBB15_1: ; %atomicrmw.start4445; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=14446; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)4447; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v34448; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4449; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v1, v44450; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v34451; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4452; GFX11-TRUE16-NEXT:    v_add_f32_e32 v3, -4.0, v34453; GFX11-TRUE16-NEXT:    v_bfe_u32 v5, v3, 16, 14454; GFX11-TRUE16-NEXT:    v_or_b32_e32 v6, 0x400000, v34455; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v34456; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)4457; GFX11-TRUE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff4458; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo4459; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 04460; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4461; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h4462; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v1, v54463; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4464; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v2, v34465; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x04466; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v44467; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)4468; GFX11-TRUE16-NEXT:    buffer_gl0_inv4469; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v44470; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s04471; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4472; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04473; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB15_14474; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end4475; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04476; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v34477; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]4478;4479; GFX11-FAKE16-LABEL: local_atomic_fsub_ret_bf16__offset:4480; GFX11-FAKE16:       ; %bb.0:4481; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4482; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v04483; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 04484; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)4485; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v14486; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 3, v14487; GFX11-FAKE16-NEXT:    ds_load_b32 v3, v04488; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v14489; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff4490; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4491; GFX11-FAKE16-NEXT:    v_not_b32_e32 v2, v24492; GFX11-FAKE16-NEXT:    .p2align 64493; GFX11-FAKE16-NEXT:  .LBB15_1: ; %atomicrmw.start4494; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=14495; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)4496; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v34497; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4498; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v1, v44499; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v34500; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4501; GFX11-FAKE16-NEXT:    v_add_f32_e32 v3, -4.0, v34502; GFX11-FAKE16-NEXT:    v_bfe_u32 v5, v3, 16, 14503; GFX11-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v34504; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v34505; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)4506; GFX11-FAKE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff4507; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo4508; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4509; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v34510; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v1, v34511; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4512; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, v4, v2, v34513; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x04514; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v44515; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)4516; GFX11-FAKE16-NEXT:    buffer_gl0_inv4517; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v44518; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s04519; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4520; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04521; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB15_14522; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end4523; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04524; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v34525; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]4526;4527; GFX10-LABEL: local_atomic_fsub_ret_bf16__offset:4528; GFX10:       ; %bb.0:4529; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4530; GFX10-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v04531; GFX10-NEXT:    s_mov_b32 s4, 04532; GFX10-NEXT:    v_and_b32_e32 v0, -4, v14533; GFX10-NEXT:    v_and_b32_e32 v1, 3, v14534; GFX10-NEXT:    ds_read_b32 v3, v04535; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 3, v14536; GFX10-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff4537; GFX10-NEXT:    v_not_b32_e32 v2, v24538; GFX10-NEXT:  .LBB15_1: ; %atomicrmw.start4539; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=14540; GFX10-NEXT:    s_waitcnt lgkmcnt(0)4541; GFX10-NEXT:    v_mov_b32_e32 v4, v34542; GFX10-NEXT:    v_lshrrev_b32_sdwa v3, v1, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD4543; GFX10-NEXT:    v_add_f32_e32 v3, -4.0, v34544; GFX10-NEXT:    v_bfe_u32 v5, v3, 16, 14545; GFX10-NEXT:    v_or_b32_e32 v6, 0x400000, v34546; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v34547; GFX10-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff4548; GFX10-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo4549; GFX10-NEXT:    v_lshlrev_b32_sdwa v3, v1, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_14550; GFX10-NEXT:    v_and_or_b32 v3, v4, v2, v34551; GFX10-NEXT:    s_waitcnt_vscnt null, 0x04552; GFX10-NEXT:    ds_cmpst_rtn_b32 v3, v0, v4, v34553; GFX10-NEXT:    s_waitcnt lgkmcnt(0)4554; GFX10-NEXT:    buffer_gl0_inv4555; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v44556; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s44557; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s44558; GFX10-NEXT:    s_cbranch_execnz .LBB15_14559; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end4560; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s44561; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v1, v34562; GFX10-NEXT:    s_setpc_b64 s[30:31]4563;4564; GFX90A-LABEL: local_atomic_fsub_ret_bf16__offset:4565; GFX90A:       ; %bb.0:4566; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4567; GFX90A-NEXT:    v_add_u32_e32 v0, 0xfffe, v04568; GFX90A-NEXT:    v_and_b32_e32 v1, -4, v04569; GFX90A-NEXT:    ds_read_b32 v3, v14570; GFX90A-NEXT:    v_and_b32_e32 v0, 3, v04571; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 3, v04572; GFX90A-NEXT:    s_mov_b32 s4, 0xffff4573; GFX90A-NEXT:    v_lshlrev_b32_e64 v2, v0, s44574; GFX90A-NEXT:    v_not_b32_e32 v2, v24575; GFX90A-NEXT:    s_mov_b64 s[4:5], 04576; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff4577; GFX90A-NEXT:  .LBB15_1: ; %atomicrmw.start4578; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=14579; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)4580; GFX90A-NEXT:    v_lshrrev_b32_sdwa v4, v0, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD4581; GFX90A-NEXT:    v_add_f32_e32 v4, -4.0, v44582; GFX90A-NEXT:    v_bfe_u32 v5, v4, 16, 14583; GFX90A-NEXT:    v_or_b32_e32 v6, 0x400000, v44584; GFX90A-NEXT:    v_add3_u32 v5, v5, v4, s64585; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v4, v44586; GFX90A-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc4587; GFX90A-NEXT:    v_lshlrev_b32_sdwa v4, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_14588; GFX90A-NEXT:    v_and_or_b32 v4, v3, v2, v44589; GFX90A-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v44590; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)4591; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v34592; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4593; GFX90A-NEXT:    v_mov_b32_e32 v3, v44594; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]4595; GFX90A-NEXT:    s_cbranch_execnz .LBB15_14596; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end4597; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]4598; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v0, v44599; GFX90A-NEXT:    s_setpc_b64 s[30:31]4600;4601; GFX908-LABEL: local_atomic_fsub_ret_bf16__offset:4602; GFX908:       ; %bb.0:4603; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4604; GFX908-NEXT:    v_add_u32_e32 v0, 0xfffe, v04605; GFX908-NEXT:    v_and_b32_e32 v1, -4, v04606; GFX908-NEXT:    ds_read_b32 v3, v14607; GFX908-NEXT:    v_and_b32_e32 v0, 3, v04608; GFX908-NEXT:    v_lshlrev_b32_e32 v0, 3, v04609; GFX908-NEXT:    s_mov_b32 s4, 0xffff4610; GFX908-NEXT:    v_lshlrev_b32_e64 v2, v0, s44611; GFX908-NEXT:    v_not_b32_e32 v2, v24612; GFX908-NEXT:    s_mov_b64 s[4:5], 04613; GFX908-NEXT:    s_movk_i32 s6, 0x7fff4614; GFX908-NEXT:  .LBB15_1: ; %atomicrmw.start4615; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=14616; GFX908-NEXT:    s_waitcnt lgkmcnt(0)4617; GFX908-NEXT:    v_mov_b32_e32 v4, v34618; GFX908-NEXT:    v_lshrrev_b32_sdwa v3, v0, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD4619; GFX908-NEXT:    v_add_f32_e32 v3, -4.0, v34620; GFX908-NEXT:    v_bfe_u32 v5, v3, 16, 14621; GFX908-NEXT:    v_or_b32_e32 v6, 0x400000, v34622; GFX908-NEXT:    v_add3_u32 v5, v5, v3, s64623; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v3, v34624; GFX908-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc4625; GFX908-NEXT:    v_lshlrev_b32_sdwa v3, v0, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_14626; GFX908-NEXT:    v_and_or_b32 v3, v4, v2, v34627; GFX908-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v34628; GFX908-NEXT:    s_waitcnt lgkmcnt(0)4629; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v44630; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4631; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]4632; GFX908-NEXT:    s_cbranch_execnz .LBB15_14633; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end4634; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]4635; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v0, v34636; GFX908-NEXT:    s_setpc_b64 s[30:31]4637;4638; GFX8-LABEL: local_atomic_fsub_ret_bf16__offset:4639; GFX8:       ; %bb.0:4640; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4641; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffe, v04642; GFX8-NEXT:    v_and_b32_e32 v1, -4, v04643; GFX8-NEXT:    s_mov_b32 m0, -14644; GFX8-NEXT:    ds_read_b32 v3, v14645; GFX8-NEXT:    v_and_b32_e32 v0, 3, v04646; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 3, v04647; GFX8-NEXT:    s_mov_b32 s4, 0xffff4648; GFX8-NEXT:    v_lshlrev_b32_e64 v2, v0, s44649; GFX8-NEXT:    v_not_b32_e32 v2, v24650; GFX8-NEXT:    s_mov_b64 s[4:5], 04651; GFX8-NEXT:  .LBB15_1: ; %atomicrmw.start4652; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=14653; GFX8-NEXT:    s_waitcnt lgkmcnt(0)4654; GFX8-NEXT:    v_mov_b32_e32 v4, v34655; GFX8-NEXT:    v_lshrrev_b32_sdwa v3, v0, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD4656; GFX8-NEXT:    v_add_f32_e32 v3, -4.0, v34657; GFX8-NEXT:    v_bfe_u32 v6, v3, 16, 14658; GFX8-NEXT:    v_add_u32_e32 v6, vcc, v6, v34659; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0x7fff, v64660; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v34661; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v3, v34662; GFX8-NEXT:    v_cndmask_b32_e32 v3, v6, v7, vcc4663; GFX8-NEXT:    v_and_b32_e32 v5, v4, v24664; GFX8-NEXT:    v_lshlrev_b32_sdwa v3, v0, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_14665; GFX8-NEXT:    v_or_b32_e32 v3, v5, v34666; GFX8-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v34667; GFX8-NEXT:    s_waitcnt lgkmcnt(0)4668; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v44669; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4670; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]4671; GFX8-NEXT:    s_cbranch_execnz .LBB15_14672; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end4673; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]4674; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v0, v34675; GFX8-NEXT:    s_setpc_b64 s[30:31]4676;4677; GFX7-LABEL: local_atomic_fsub_ret_bf16__offset:4678; GFX7:       ; %bb.0:4679; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4680; GFX7-NEXT:    v_add_i32_e32 v1, vcc, 0xfffe, v04681; GFX7-NEXT:    v_and_b32_e32 v0, -4, v14682; GFX7-NEXT:    s_mov_b32 m0, -14683; GFX7-NEXT:    ds_read_b32 v3, v04684; GFX7-NEXT:    v_and_b32_e32 v1, 3, v14685; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 3, v14686; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v14687; GFX7-NEXT:    v_not_b32_e32 v2, v24688; GFX7-NEXT:    s_mov_b64 s[4:5], 04689; GFX7-NEXT:  .LBB15_1: ; %atomicrmw.start4690; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=14691; GFX7-NEXT:    s_waitcnt lgkmcnt(0)4692; GFX7-NEXT:    v_mov_b32_e32 v4, v34693; GFX7-NEXT:    v_lshrrev_b32_e32 v3, v1, v44694; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v34695; GFX7-NEXT:    v_add_f32_e32 v3, -4.0, v34696; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v34697; GFX7-NEXT:    v_and_b32_e32 v5, v4, v24698; GFX7-NEXT:    v_lshlrev_b32_e32 v3, v1, v34699; GFX7-NEXT:    v_or_b32_e32 v3, v5, v34700; GFX7-NEXT:    ds_cmpst_rtn_b32 v3, v0, v4, v34701; GFX7-NEXT:    s_waitcnt lgkmcnt(0)4702; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v44703; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4704; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]4705; GFX7-NEXT:    s_cbranch_execnz .LBB15_14706; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end4707; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]4708; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v1, v34709; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v04710; GFX7-NEXT:    s_setpc_b64 s[30:31]4711;4712; GFX6-LABEL: local_atomic_fsub_ret_bf16__offset:4713; GFX6:       ; %bb.0:4714; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4715; GFX6-NEXT:    v_add_i32_e32 v1, vcc, 0xfffe, v04716; GFX6-NEXT:    v_and_b32_e32 v0, -4, v14717; GFX6-NEXT:    s_mov_b32 m0, -14718; GFX6-NEXT:    ds_read_b32 v3, v04719; GFX6-NEXT:    v_and_b32_e32 v1, 3, v14720; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 3, v14721; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v14722; GFX6-NEXT:    v_not_b32_e32 v2, v24723; GFX6-NEXT:    s_mov_b64 s[4:5], 04724; GFX6-NEXT:  .LBB15_1: ; %atomicrmw.start4725; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=14726; GFX6-NEXT:    s_waitcnt lgkmcnt(0)4727; GFX6-NEXT:    v_mov_b32_e32 v4, v34728; GFX6-NEXT:    v_lshrrev_b32_e32 v3, v1, v44729; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v34730; GFX6-NEXT:    v_add_f32_e32 v3, -4.0, v34731; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v34732; GFX6-NEXT:    v_and_b32_e32 v5, v4, v24733; GFX6-NEXT:    v_lshlrev_b32_e32 v3, v1, v34734; GFX6-NEXT:    v_or_b32_e32 v3, v5, v34735; GFX6-NEXT:    ds_cmpst_rtn_b32 v3, v0, v4, v34736; GFX6-NEXT:    s_waitcnt lgkmcnt(0)4737; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v44738; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4739; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]4740; GFX6-NEXT:    s_cbranch_execnz .LBB15_14741; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end4742; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]4743; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v1, v34744; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v04745; GFX6-NEXT:    s_setpc_b64 s[30:31]4746  %gep = getelementptr bfloat, ptr addrspace(3) %ptr, i32 327674747  %result = atomicrmw fsub ptr addrspace(3) %gep, bfloat 4.0 seq_cst4748  ret bfloat %result4749}4750 4751define void @local_atomic_fsub_noret_bf16(ptr addrspace(3) %ptr) nounwind {4752; GFX12-TRUE16-LABEL: local_atomic_fsub_noret_bf16:4753; GFX12-TRUE16:       ; %bb.0:4754; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x04755; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x04756; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x04757; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x04758; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x04759; GFX12-TRUE16-NEXT:    v_and_b32_e32 v1, -4, v04760; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v04761; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 04762; GFX12-TRUE16-NEXT:    ds_load_b32 v2, v14763; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff4764; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, 24, v04765; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)4766; GFX12-TRUE16-NEXT:    v_not_b32_e32 v3, v34767; GFX12-TRUE16-NEXT:  .LBB16_1: ; %atomicrmw.start4768; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=14769; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x04770; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4771; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v4, v0, v24772; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v44773; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4774; GFX12-TRUE16-NEXT:    v_add_f32_e32 v4, -4.0, v44775; GFX12-TRUE16-NEXT:    v_bfe_u32 v5, v4, 16, 14776; GFX12-TRUE16-NEXT:    v_or_b32_e32 v6, 0x400000, v44777; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v44778; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)4779; GFX12-TRUE16-NEXT:    v_add3_u32 v5, v5, v4, 0x7fff4780; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)4781; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc_lo4782; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 04783; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4784; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v4.h4785; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, v0, v54786; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4787; GFX12-TRUE16-NEXT:    v_and_or_b32 v4, v2, v3, v44788; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x04789; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v1, v4, v24790; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x04791; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE4792; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v24793; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v2, v44794; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4795; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s04796; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4797; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04798; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB16_14799; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end4800; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04801; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x04802; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]4803;4804; GFX12-FAKE16-LABEL: local_atomic_fsub_noret_bf16:4805; GFX12-FAKE16:       ; %bb.0:4806; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x04807; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x04808; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x04809; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x04810; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x04811; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, -4, v04812; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v04813; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 04814; GFX12-FAKE16-NEXT:    ds_load_b32 v2, v14815; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff4816; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, 24, v04817; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)4818; GFX12-FAKE16-NEXT:    v_not_b32_e32 v3, v34819; GFX12-FAKE16-NEXT:  .LBB16_1: ; %atomicrmw.start4820; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=14821; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x04822; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4823; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, v0, v24824; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v44825; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4826; GFX12-FAKE16-NEXT:    v_add_f32_e32 v4, -4.0, v44827; GFX12-FAKE16-NEXT:    v_bfe_u32 v5, v4, 16, 14828; GFX12-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v44829; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v44830; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)4831; GFX12-FAKE16-NEXT:    v_add3_u32 v5, v5, v4, 0x7fff4832; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)4833; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc_lo4834; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4835; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, 16, v44836; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, v0, v44837; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4838; GFX12-FAKE16-NEXT:    v_and_or_b32 v4, v2, v3, v44839; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x04840; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v1, v4, v24841; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x04842; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE4843; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v24844; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v2, v44845; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4846; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s04847; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4848; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04849; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB16_14850; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end4851; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04852; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x04853; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]4854;4855; GFX942-LABEL: local_atomic_fsub_noret_bf16:4856; GFX942:       ; %bb.0:4857; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4858; GFX942-NEXT:    v_and_b32_e32 v1, -4, v04859; GFX942-NEXT:    ds_read_b32 v3, v14860; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 3, v04861; GFX942-NEXT:    s_mov_b32 s0, 0xffff4862; GFX942-NEXT:    v_and_b32_e32 v0, 24, v24863; GFX942-NEXT:    v_lshlrev_b32_e64 v2, v2, s04864; GFX942-NEXT:    v_not_b32_e32 v2, v24865; GFX942-NEXT:    s_mov_b64 s[0:1], 04866; GFX942-NEXT:    s_movk_i32 s2, 0x7fff4867; GFX942-NEXT:  .LBB16_1: ; %atomicrmw.start4868; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=14869; GFX942-NEXT:    s_waitcnt lgkmcnt(0)4870; GFX942-NEXT:    v_lshrrev_b32_sdwa v4, v0, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD4871; GFX942-NEXT:    s_nop 04872; GFX942-NEXT:    v_add_f32_e32 v4, -4.0, v44873; GFX942-NEXT:    v_bfe_u32 v5, v4, 16, 14874; GFX942-NEXT:    v_or_b32_e32 v6, 0x400000, v44875; GFX942-NEXT:    v_add3_u32 v5, v5, v4, s24876; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v4, v44877; GFX942-NEXT:    s_nop 14878; GFX942-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc4879; GFX942-NEXT:    v_lshlrev_b32_sdwa v4, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_14880; GFX942-NEXT:    v_and_or_b32 v4, v3, v2, v44881; GFX942-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v44882; GFX942-NEXT:    s_waitcnt lgkmcnt(0)4883; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v34884; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]4885; GFX942-NEXT:    v_mov_b32_e32 v3, v44886; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]4887; GFX942-NEXT:    s_cbranch_execnz .LBB16_14888; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end4889; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]4890; GFX942-NEXT:    s_setpc_b64 s[30:31]4891;4892; GFX11-TRUE16-LABEL: local_atomic_fsub_noret_bf16:4893; GFX11-TRUE16:       ; %bb.0:4894; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4895; GFX11-TRUE16-NEXT:    v_and_b32_e32 v1, -4, v04896; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v04897; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 04898; GFX11-TRUE16-NEXT:    ds_load_b32 v2, v14899; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff4900; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, 24, v04901; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)4902; GFX11-TRUE16-NEXT:    v_not_b32_e32 v3, v34903; GFX11-TRUE16-NEXT:    .p2align 64904; GFX11-TRUE16-NEXT:  .LBB16_1: ; %atomicrmw.start4905; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=14906; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)4907; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4908; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v4, v0, v24909; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v44910; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4911; GFX11-TRUE16-NEXT:    v_add_f32_e32 v4, -4.0, v44912; GFX11-TRUE16-NEXT:    v_bfe_u32 v5, v4, 16, 14913; GFX11-TRUE16-NEXT:    v_or_b32_e32 v6, 0x400000, v44914; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v44915; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)4916; GFX11-TRUE16-NEXT:    v_add3_u32 v5, v5, v4, 0x7fff4917; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc_lo4918; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 04919; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4920; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v4.h4921; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, v0, v54922; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4923; GFX11-TRUE16-NEXT:    v_and_or_b32 v4, v2, v3, v44924; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x04925; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v1, v4, v24926; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)4927; GFX11-TRUE16-NEXT:    buffer_gl0_inv4928; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v24929; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, v44930; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s04931; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4932; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04933; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB16_14934; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end4935; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04936; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]4937;4938; GFX11-FAKE16-LABEL: local_atomic_fsub_noret_bf16:4939; GFX11-FAKE16:       ; %bb.0:4940; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4941; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, -4, v04942; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v04943; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 04944; GFX11-FAKE16-NEXT:    ds_load_b32 v2, v14945; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff4946; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, 24, v04947; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)4948; GFX11-FAKE16-NEXT:    v_not_b32_e32 v3, v34949; GFX11-FAKE16-NEXT:    .p2align 64950; GFX11-FAKE16-NEXT:  .LBB16_1: ; %atomicrmw.start4951; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=14952; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)4953; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4954; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, v0, v24955; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v44956; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4957; GFX11-FAKE16-NEXT:    v_add_f32_e32 v4, -4.0, v44958; GFX11-FAKE16-NEXT:    v_bfe_u32 v5, v4, 16, 14959; GFX11-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v44960; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v44961; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)4962; GFX11-FAKE16-NEXT:    v_add3_u32 v5, v5, v4, 0x7fff4963; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc_lo4964; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4965; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, 16, v44966; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, v0, v44967; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4968; GFX11-FAKE16-NEXT:    v_and_or_b32 v4, v2, v3, v44969; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x04970; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v1, v4, v24971; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)4972; GFX11-FAKE16-NEXT:    buffer_gl0_inv4973; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v24974; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v44975; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s04976; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4977; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04978; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB16_14979; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end4980; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04981; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]4982;4983; GFX10-LABEL: local_atomic_fsub_noret_bf16:4984; GFX10:       ; %bb.0:4985; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4986; GFX10-NEXT:    v_and_b32_e32 v1, -4, v04987; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 3, v04988; GFX10-NEXT:    s_mov_b32 s4, 04989; GFX10-NEXT:    ds_read_b32 v2, v14990; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff4991; GFX10-NEXT:    v_and_b32_e32 v0, 24, v04992; GFX10-NEXT:    v_not_b32_e32 v3, v34993; GFX10-NEXT:  .LBB16_1: ; %atomicrmw.start4994; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=14995; GFX10-NEXT:    s_waitcnt lgkmcnt(0)4996; GFX10-NEXT:    v_lshrrev_b32_sdwa v4, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD4997; GFX10-NEXT:    v_add_f32_e32 v4, -4.0, v44998; GFX10-NEXT:    v_bfe_u32 v5, v4, 16, 14999; GFX10-NEXT:    v_or_b32_e32 v6, 0x400000, v45000; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v45001; GFX10-NEXT:    v_add3_u32 v5, v5, v4, 0x7fff5002; GFX10-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc_lo5003; GFX10-NEXT:    v_lshlrev_b32_sdwa v4, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_15004; GFX10-NEXT:    v_and_or_b32 v4, v2, v3, v45005; GFX10-NEXT:    s_waitcnt_vscnt null, 0x05006; GFX10-NEXT:    ds_cmpst_rtn_b32 v4, v1, v2, v45007; GFX10-NEXT:    s_waitcnt lgkmcnt(0)5008; GFX10-NEXT:    buffer_gl0_inv5009; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v25010; GFX10-NEXT:    v_mov_b32_e32 v2, v45011; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s45012; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s45013; GFX10-NEXT:    s_cbranch_execnz .LBB16_15014; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end5015; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s45016; GFX10-NEXT:    s_setpc_b64 s[30:31]5017;5018; GFX90A-LABEL: local_atomic_fsub_noret_bf16:5019; GFX90A:       ; %bb.0:5020; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5021; GFX90A-NEXT:    v_and_b32_e32 v1, -4, v05022; GFX90A-NEXT:    ds_read_b32 v3, v15023; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 3, v05024; GFX90A-NEXT:    s_mov_b32 s4, 0xffff5025; GFX90A-NEXT:    v_and_b32_e32 v0, 24, v25026; GFX90A-NEXT:    v_lshlrev_b32_e64 v2, v2, s45027; GFX90A-NEXT:    v_not_b32_e32 v2, v25028; GFX90A-NEXT:    s_mov_b64 s[4:5], 05029; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff5030; GFX90A-NEXT:  .LBB16_1: ; %atomicrmw.start5031; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=15032; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)5033; GFX90A-NEXT:    v_lshrrev_b32_sdwa v4, v0, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD5034; GFX90A-NEXT:    v_add_f32_e32 v4, -4.0, v45035; GFX90A-NEXT:    v_bfe_u32 v5, v4, 16, 15036; GFX90A-NEXT:    v_or_b32_e32 v6, 0x400000, v45037; GFX90A-NEXT:    v_add3_u32 v5, v5, v4, s65038; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v4, v45039; GFX90A-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc5040; GFX90A-NEXT:    v_lshlrev_b32_sdwa v4, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_15041; GFX90A-NEXT:    v_and_or_b32 v4, v3, v2, v45042; GFX90A-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v45043; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)5044; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v35045; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5046; GFX90A-NEXT:    v_mov_b32_e32 v3, v45047; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]5048; GFX90A-NEXT:    s_cbranch_execnz .LBB16_15049; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end5050; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]5051; GFX90A-NEXT:    s_setpc_b64 s[30:31]5052;5053; GFX908-LABEL: local_atomic_fsub_noret_bf16:5054; GFX908:       ; %bb.0:5055; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5056; GFX908-NEXT:    v_and_b32_e32 v1, -4, v05057; GFX908-NEXT:    ds_read_b32 v3, v15058; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 3, v05059; GFX908-NEXT:    s_mov_b32 s4, 0xffff5060; GFX908-NEXT:    v_and_b32_e32 v0, 24, v25061; GFX908-NEXT:    v_lshlrev_b32_e64 v2, v2, s45062; GFX908-NEXT:    v_not_b32_e32 v2, v25063; GFX908-NEXT:    s_mov_b64 s[4:5], 05064; GFX908-NEXT:    s_movk_i32 s6, 0x7fff5065; GFX908-NEXT:  .LBB16_1: ; %atomicrmw.start5066; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=15067; GFX908-NEXT:    s_waitcnt lgkmcnt(0)5068; GFX908-NEXT:    v_lshrrev_b32_sdwa v4, v0, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD5069; GFX908-NEXT:    v_add_f32_e32 v4, -4.0, v45070; GFX908-NEXT:    v_bfe_u32 v5, v4, 16, 15071; GFX908-NEXT:    v_or_b32_e32 v6, 0x400000, v45072; GFX908-NEXT:    v_add3_u32 v5, v5, v4, s65073; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v4, v45074; GFX908-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc5075; GFX908-NEXT:    v_lshlrev_b32_sdwa v4, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_15076; GFX908-NEXT:    v_and_or_b32 v4, v3, v2, v45077; GFX908-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v45078; GFX908-NEXT:    s_waitcnt lgkmcnt(0)5079; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v35080; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5081; GFX908-NEXT:    v_mov_b32_e32 v3, v45082; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]5083; GFX908-NEXT:    s_cbranch_execnz .LBB16_15084; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end5085; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]5086; GFX908-NEXT:    s_setpc_b64 s[30:31]5087;5088; GFX8-LABEL: local_atomic_fsub_noret_bf16:5089; GFX8:       ; %bb.0:5090; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5091; GFX8-NEXT:    v_and_b32_e32 v1, -4, v05092; GFX8-NEXT:    s_mov_b32 m0, -15093; GFX8-NEXT:    ds_read_b32 v3, v15094; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 3, v05095; GFX8-NEXT:    s_mov_b32 s4, 0xffff5096; GFX8-NEXT:    v_and_b32_e32 v0, 24, v25097; GFX8-NEXT:    v_lshlrev_b32_e64 v2, v2, s45098; GFX8-NEXT:    v_not_b32_e32 v2, v25099; GFX8-NEXT:    s_mov_b64 s[4:5], 05100; GFX8-NEXT:  .LBB16_1: ; %atomicrmw.start5101; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=15102; GFX8-NEXT:    s_waitcnt lgkmcnt(0)5103; GFX8-NEXT:    v_lshrrev_b32_sdwa v4, v0, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD5104; GFX8-NEXT:    v_add_f32_e32 v4, -4.0, v45105; GFX8-NEXT:    v_bfe_u32 v6, v4, 16, 15106; GFX8-NEXT:    v_add_u32_e32 v6, vcc, v6, v45107; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0x7fff, v65108; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v45109; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v4, v45110; GFX8-NEXT:    v_cndmask_b32_e32 v4, v6, v7, vcc5111; GFX8-NEXT:    v_and_b32_e32 v5, v3, v25112; GFX8-NEXT:    v_lshlrev_b32_sdwa v4, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_15113; GFX8-NEXT:    v_or_b32_e32 v4, v5, v45114; GFX8-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v45115; GFX8-NEXT:    s_waitcnt lgkmcnt(0)5116; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v35117; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5118; GFX8-NEXT:    v_mov_b32_e32 v3, v45119; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]5120; GFX8-NEXT:    s_cbranch_execnz .LBB16_15121; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end5122; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]5123; GFX8-NEXT:    s_setpc_b64 s[30:31]5124;5125; GFX7-LABEL: local_atomic_fsub_noret_bf16:5126; GFX7:       ; %bb.0:5127; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5128; GFX7-NEXT:    v_and_b32_e32 v1, -4, v05129; GFX7-NEXT:    s_mov_b32 m0, -15130; GFX7-NEXT:    ds_read_b32 v3, v15131; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 3, v05132; GFX7-NEXT:    v_and_b32_e32 v0, 24, v25133; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v25134; GFX7-NEXT:    v_not_b32_e32 v2, v25135; GFX7-NEXT:    s_mov_b64 s[4:5], 05136; GFX7-NEXT:  .LBB16_1: ; %atomicrmw.start5137; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=15138; GFX7-NEXT:    s_waitcnt lgkmcnt(0)5139; GFX7-NEXT:    v_lshrrev_b32_e32 v4, v0, v35140; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v45141; GFX7-NEXT:    v_add_f32_e32 v4, -4.0, v45142; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v45143; GFX7-NEXT:    v_and_b32_e32 v5, v3, v25144; GFX7-NEXT:    v_lshlrev_b32_e32 v4, v0, v45145; GFX7-NEXT:    v_or_b32_e32 v4, v5, v45146; GFX7-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v45147; GFX7-NEXT:    s_waitcnt lgkmcnt(0)5148; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v35149; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5150; GFX7-NEXT:    v_mov_b32_e32 v3, v45151; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]5152; GFX7-NEXT:    s_cbranch_execnz .LBB16_15153; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end5154; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]5155; GFX7-NEXT:    s_setpc_b64 s[30:31]5156;5157; GFX6-LABEL: local_atomic_fsub_noret_bf16:5158; GFX6:       ; %bb.0:5159; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5160; GFX6-NEXT:    v_and_b32_e32 v1, -4, v05161; GFX6-NEXT:    s_mov_b32 m0, -15162; GFX6-NEXT:    ds_read_b32 v3, v15163; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 3, v05164; GFX6-NEXT:    v_and_b32_e32 v0, 24, v25165; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v25166; GFX6-NEXT:    v_not_b32_e32 v2, v25167; GFX6-NEXT:    s_mov_b64 s[4:5], 05168; GFX6-NEXT:  .LBB16_1: ; %atomicrmw.start5169; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=15170; GFX6-NEXT:    s_waitcnt lgkmcnt(0)5171; GFX6-NEXT:    v_lshrrev_b32_e32 v4, v0, v35172; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v45173; GFX6-NEXT:    v_add_f32_e32 v4, -4.0, v45174; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v45175; GFX6-NEXT:    v_and_b32_e32 v5, v3, v25176; GFX6-NEXT:    v_lshlrev_b32_e32 v4, v0, v45177; GFX6-NEXT:    v_or_b32_e32 v4, v5, v45178; GFX6-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v45179; GFX6-NEXT:    s_waitcnt lgkmcnt(0)5180; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v35181; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5182; GFX6-NEXT:    v_mov_b32_e32 v3, v45183; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]5184; GFX6-NEXT:    s_cbranch_execnz .LBB16_15185; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end5186; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]5187; GFX6-NEXT:    s_setpc_b64 s[30:31]5188  %result = atomicrmw fsub ptr addrspace(3) %ptr, bfloat 4.0 seq_cst5189  ret void5190}5191 5192define void @local_atomic_fsub_noret_bf16__offset(ptr addrspace(3) %ptr) nounwind {5193; GFX12-TRUE16-LABEL: local_atomic_fsub_noret_bf16__offset:5194; GFX12-TRUE16:       ; %bb.0:5195; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x05196; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x05197; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x05198; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x05199; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x05200; GFX12-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v05201; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 05202; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)5203; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v15204; GFX12-TRUE16-NEXT:    v_and_b32_e32 v1, 3, v15205; GFX12-TRUE16-NEXT:    ds_load_b32 v3, v05206; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v15207; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff5208; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5209; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v25210; GFX12-TRUE16-NEXT:  .LBB17_1: ; %atomicrmw.start5211; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=15212; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x05213; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v4, v1, v35214; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5215; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v45216; GFX12-TRUE16-NEXT:    v_add_f32_e32 v4, -4.0, v45217; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)5218; GFX12-TRUE16-NEXT:    v_bfe_u32 v5, v4, 16, 15219; GFX12-TRUE16-NEXT:    v_or_b32_e32 v6, 0x400000, v45220; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v45221; GFX12-TRUE16-NEXT:    v_add3_u32 v5, v5, v4, 0x7fff5222; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)5223; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)5224; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc_lo5225; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 05226; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v4.h5227; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5228; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, v1, v55229; GFX12-TRUE16-NEXT:    v_and_or_b32 v4, v3, v2, v45230; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x05231; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v35232; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x05233; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE5234; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v35235; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v45236; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5237; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s05238; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5239; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05240; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB17_15241; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end5242; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05243; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x05244; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]5245;5246; GFX12-FAKE16-LABEL: local_atomic_fsub_noret_bf16__offset:5247; GFX12-FAKE16:       ; %bb.0:5248; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x05249; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x05250; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x05251; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x05252; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x05253; GFX12-FAKE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v05254; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 05255; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)5256; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v15257; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, 3, v15258; GFX12-FAKE16-NEXT:    ds_load_b32 v3, v05259; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v15260; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff5261; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5262; GFX12-FAKE16-NEXT:    v_not_b32_e32 v2, v25263; GFX12-FAKE16-NEXT:  .LBB17_1: ; %atomicrmw.start5264; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=15265; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x05266; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, v1, v35267; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5268; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v45269; GFX12-FAKE16-NEXT:    v_add_f32_e32 v4, -4.0, v45270; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)5271; GFX12-FAKE16-NEXT:    v_bfe_u32 v5, v4, 16, 15272; GFX12-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v45273; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v45274; GFX12-FAKE16-NEXT:    v_add3_u32 v5, v5, v4, 0x7fff5275; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)5276; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5277; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc_lo5278; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, 16, v45279; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5280; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, v1, v45281; GFX12-FAKE16-NEXT:    v_and_or_b32 v4, v3, v2, v45282; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x05283; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v35284; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x05285; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE5286; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v35287; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v45288; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5289; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s05290; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5291; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05292; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB17_15293; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end5294; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05295; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x05296; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]5297;5298; GFX942-LABEL: local_atomic_fsub_noret_bf16__offset:5299; GFX942:       ; %bb.0:5300; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5301; GFX942-NEXT:    v_add_u32_e32 v1, 0xfffe, v05302; GFX942-NEXT:    v_and_b32_e32 v0, -4, v15303; GFX942-NEXT:    ds_read_b32 v3, v05304; GFX942-NEXT:    v_and_b32_e32 v1, 3, v15305; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 3, v15306; GFX942-NEXT:    s_mov_b32 s0, 0xffff5307; GFX942-NEXT:    v_lshlrev_b32_e64 v2, v1, s05308; GFX942-NEXT:    v_not_b32_e32 v2, v25309; GFX942-NEXT:    s_mov_b64 s[0:1], 05310; GFX942-NEXT:    s_movk_i32 s2, 0x7fff5311; GFX942-NEXT:  .LBB17_1: ; %atomicrmw.start5312; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=15313; GFX942-NEXT:    s_waitcnt lgkmcnt(0)5314; GFX942-NEXT:    v_lshrrev_b32_sdwa v4, v1, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD5315; GFX942-NEXT:    s_nop 05316; GFX942-NEXT:    v_add_f32_e32 v4, -4.0, v45317; GFX942-NEXT:    v_bfe_u32 v5, v4, 16, 15318; GFX942-NEXT:    v_or_b32_e32 v6, 0x400000, v45319; GFX942-NEXT:    v_add3_u32 v5, v5, v4, s25320; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v4, v45321; GFX942-NEXT:    s_nop 15322; GFX942-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc5323; GFX942-NEXT:    v_lshlrev_b32_sdwa v4, v1, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_15324; GFX942-NEXT:    v_and_or_b32 v4, v3, v2, v45325; GFX942-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v45326; GFX942-NEXT:    s_waitcnt lgkmcnt(0)5327; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v35328; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]5329; GFX942-NEXT:    v_mov_b32_e32 v3, v45330; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]5331; GFX942-NEXT:    s_cbranch_execnz .LBB17_15332; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end5333; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]5334; GFX942-NEXT:    s_setpc_b64 s[30:31]5335;5336; GFX11-TRUE16-LABEL: local_atomic_fsub_noret_bf16__offset:5337; GFX11-TRUE16:       ; %bb.0:5338; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5339; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v05340; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 05341; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)5342; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v15343; GFX11-TRUE16-NEXT:    v_and_b32_e32 v1, 3, v15344; GFX11-TRUE16-NEXT:    ds_load_b32 v3, v05345; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v15346; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff5347; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5348; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v25349; GFX11-TRUE16-NEXT:    .p2align 65350; GFX11-TRUE16-NEXT:  .LBB17_1: ; %atomicrmw.start5351; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=15352; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)5353; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v4, v1, v35354; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5355; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v45356; GFX11-TRUE16-NEXT:    v_add_f32_e32 v4, -4.0, v45357; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)5358; GFX11-TRUE16-NEXT:    v_bfe_u32 v5, v4, 16, 15359; GFX11-TRUE16-NEXT:    v_or_b32_e32 v6, 0x400000, v45360; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v45361; GFX11-TRUE16-NEXT:    v_add3_u32 v5, v5, v4, 0x7fff5362; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)5363; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc_lo5364; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 05365; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v4.h5366; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5367; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, v1, v55368; GFX11-TRUE16-NEXT:    v_and_or_b32 v4, v3, v2, v45369; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x05370; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v35371; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)5372; GFX11-TRUE16-NEXT:    buffer_gl0_inv5373; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v35374; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v45375; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s05376; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5377; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05378; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB17_15379; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end5380; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05381; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]5382;5383; GFX11-FAKE16-LABEL: local_atomic_fsub_noret_bf16__offset:5384; GFX11-FAKE16:       ; %bb.0:5385; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5386; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v05387; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 05388; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)5389; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v15390; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 3, v15391; GFX11-FAKE16-NEXT:    ds_load_b32 v3, v05392; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v15393; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff5394; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5395; GFX11-FAKE16-NEXT:    v_not_b32_e32 v2, v25396; GFX11-FAKE16-NEXT:    .p2align 65397; GFX11-FAKE16-NEXT:  .LBB17_1: ; %atomicrmw.start5398; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=15399; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)5400; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, v1, v35401; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5402; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v45403; GFX11-FAKE16-NEXT:    v_add_f32_e32 v4, -4.0, v45404; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)5405; GFX11-FAKE16-NEXT:    v_bfe_u32 v5, v4, 16, 15406; GFX11-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v45407; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v45408; GFX11-FAKE16-NEXT:    v_add3_u32 v5, v5, v4, 0x7fff5409; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5410; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc_lo5411; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, 16, v45412; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5413; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, v1, v45414; GFX11-FAKE16-NEXT:    v_and_or_b32 v4, v3, v2, v45415; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x05416; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v35417; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)5418; GFX11-FAKE16-NEXT:    buffer_gl0_inv5419; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v35420; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v45421; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s05422; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5423; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05424; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB17_15425; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end5426; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05427; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]5428;5429; GFX10-LABEL: local_atomic_fsub_noret_bf16__offset:5430; GFX10:       ; %bb.0:5431; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5432; GFX10-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v05433; GFX10-NEXT:    s_mov_b32 s4, 05434; GFX10-NEXT:    v_and_b32_e32 v0, -4, v15435; GFX10-NEXT:    v_and_b32_e32 v1, 3, v15436; GFX10-NEXT:    ds_read_b32 v3, v05437; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 3, v15438; GFX10-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff5439; GFX10-NEXT:    v_not_b32_e32 v2, v25440; GFX10-NEXT:  .LBB17_1: ; %atomicrmw.start5441; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=15442; GFX10-NEXT:    s_waitcnt lgkmcnt(0)5443; GFX10-NEXT:    v_lshrrev_b32_sdwa v4, v1, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD5444; GFX10-NEXT:    v_add_f32_e32 v4, -4.0, v45445; GFX10-NEXT:    v_bfe_u32 v5, v4, 16, 15446; GFX10-NEXT:    v_or_b32_e32 v6, 0x400000, v45447; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v45448; GFX10-NEXT:    v_add3_u32 v5, v5, v4, 0x7fff5449; GFX10-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc_lo5450; GFX10-NEXT:    v_lshlrev_b32_sdwa v4, v1, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_15451; GFX10-NEXT:    v_and_or_b32 v4, v3, v2, v45452; GFX10-NEXT:    s_waitcnt_vscnt null, 0x05453; GFX10-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v45454; GFX10-NEXT:    s_waitcnt lgkmcnt(0)5455; GFX10-NEXT:    buffer_gl0_inv5456; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v35457; GFX10-NEXT:    v_mov_b32_e32 v3, v45458; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s45459; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s45460; GFX10-NEXT:    s_cbranch_execnz .LBB17_15461; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end5462; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s45463; GFX10-NEXT:    s_setpc_b64 s[30:31]5464;5465; GFX90A-LABEL: local_atomic_fsub_noret_bf16__offset:5466; GFX90A:       ; %bb.0:5467; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5468; GFX90A-NEXT:    v_add_u32_e32 v1, 0xfffe, v05469; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v15470; GFX90A-NEXT:    ds_read_b32 v3, v05471; GFX90A-NEXT:    v_and_b32_e32 v1, 3, v15472; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 3, v15473; GFX90A-NEXT:    s_mov_b32 s4, 0xffff5474; GFX90A-NEXT:    v_lshlrev_b32_e64 v2, v1, s45475; GFX90A-NEXT:    v_not_b32_e32 v2, v25476; GFX90A-NEXT:    s_mov_b64 s[4:5], 05477; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff5478; GFX90A-NEXT:  .LBB17_1: ; %atomicrmw.start5479; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=15480; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)5481; GFX90A-NEXT:    v_lshrrev_b32_sdwa v4, v1, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD5482; GFX90A-NEXT:    v_add_f32_e32 v4, -4.0, v45483; GFX90A-NEXT:    v_bfe_u32 v5, v4, 16, 15484; GFX90A-NEXT:    v_or_b32_e32 v6, 0x400000, v45485; GFX90A-NEXT:    v_add3_u32 v5, v5, v4, s65486; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v4, v45487; GFX90A-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc5488; GFX90A-NEXT:    v_lshlrev_b32_sdwa v4, v1, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_15489; GFX90A-NEXT:    v_and_or_b32 v4, v3, v2, v45490; GFX90A-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v45491; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)5492; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v35493; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5494; GFX90A-NEXT:    v_mov_b32_e32 v3, v45495; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]5496; GFX90A-NEXT:    s_cbranch_execnz .LBB17_15497; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end5498; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]5499; GFX90A-NEXT:    s_setpc_b64 s[30:31]5500;5501; GFX908-LABEL: local_atomic_fsub_noret_bf16__offset:5502; GFX908:       ; %bb.0:5503; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5504; GFX908-NEXT:    v_add_u32_e32 v1, 0xfffe, v05505; GFX908-NEXT:    v_and_b32_e32 v0, -4, v15506; GFX908-NEXT:    ds_read_b32 v3, v05507; GFX908-NEXT:    v_and_b32_e32 v1, 3, v15508; GFX908-NEXT:    v_lshlrev_b32_e32 v1, 3, v15509; GFX908-NEXT:    s_mov_b32 s4, 0xffff5510; GFX908-NEXT:    v_lshlrev_b32_e64 v2, v1, s45511; GFX908-NEXT:    v_not_b32_e32 v2, v25512; GFX908-NEXT:    s_mov_b64 s[4:5], 05513; GFX908-NEXT:    s_movk_i32 s6, 0x7fff5514; GFX908-NEXT:  .LBB17_1: ; %atomicrmw.start5515; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=15516; GFX908-NEXT:    s_waitcnt lgkmcnt(0)5517; GFX908-NEXT:    v_lshrrev_b32_sdwa v4, v1, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD5518; GFX908-NEXT:    v_add_f32_e32 v4, -4.0, v45519; GFX908-NEXT:    v_bfe_u32 v5, v4, 16, 15520; GFX908-NEXT:    v_or_b32_e32 v6, 0x400000, v45521; GFX908-NEXT:    v_add3_u32 v5, v5, v4, s65522; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v4, v45523; GFX908-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc5524; GFX908-NEXT:    v_lshlrev_b32_sdwa v4, v1, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_15525; GFX908-NEXT:    v_and_or_b32 v4, v3, v2, v45526; GFX908-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v45527; GFX908-NEXT:    s_waitcnt lgkmcnt(0)5528; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v35529; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5530; GFX908-NEXT:    v_mov_b32_e32 v3, v45531; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]5532; GFX908-NEXT:    s_cbranch_execnz .LBB17_15533; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end5534; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]5535; GFX908-NEXT:    s_setpc_b64 s[30:31]5536;5537; GFX8-LABEL: local_atomic_fsub_noret_bf16__offset:5538; GFX8:       ; %bb.0:5539; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5540; GFX8-NEXT:    v_add_u32_e32 v1, vcc, 0xfffe, v05541; GFX8-NEXT:    v_and_b32_e32 v0, -4, v15542; GFX8-NEXT:    s_mov_b32 m0, -15543; GFX8-NEXT:    ds_read_b32 v3, v05544; GFX8-NEXT:    v_and_b32_e32 v1, 3, v15545; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 3, v15546; GFX8-NEXT:    s_mov_b32 s4, 0xffff5547; GFX8-NEXT:    v_lshlrev_b32_e64 v2, v1, s45548; GFX8-NEXT:    v_not_b32_e32 v2, v25549; GFX8-NEXT:    s_mov_b64 s[4:5], 05550; GFX8-NEXT:  .LBB17_1: ; %atomicrmw.start5551; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=15552; GFX8-NEXT:    s_waitcnt lgkmcnt(0)5553; GFX8-NEXT:    v_lshrrev_b32_sdwa v4, v1, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD5554; GFX8-NEXT:    v_add_f32_e32 v4, -4.0, v45555; GFX8-NEXT:    v_bfe_u32 v6, v4, 16, 15556; GFX8-NEXT:    v_add_u32_e32 v6, vcc, v6, v45557; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0x7fff, v65558; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v45559; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v4, v45560; GFX8-NEXT:    v_cndmask_b32_e32 v4, v6, v7, vcc5561; GFX8-NEXT:    v_and_b32_e32 v5, v3, v25562; GFX8-NEXT:    v_lshlrev_b32_sdwa v4, v1, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_15563; GFX8-NEXT:    v_or_b32_e32 v4, v5, v45564; GFX8-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v45565; GFX8-NEXT:    s_waitcnt lgkmcnt(0)5566; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v35567; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5568; GFX8-NEXT:    v_mov_b32_e32 v3, v45569; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]5570; GFX8-NEXT:    s_cbranch_execnz .LBB17_15571; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end5572; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]5573; GFX8-NEXT:    s_setpc_b64 s[30:31]5574;5575; GFX7-LABEL: local_atomic_fsub_noret_bf16__offset:5576; GFX7:       ; %bb.0:5577; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5578; GFX7-NEXT:    v_add_i32_e32 v1, vcc, 0xfffe, v05579; GFX7-NEXT:    v_and_b32_e32 v0, -4, v15580; GFX7-NEXT:    s_mov_b32 m0, -15581; GFX7-NEXT:    ds_read_b32 v3, v05582; GFX7-NEXT:    v_and_b32_e32 v1, 3, v15583; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 3, v15584; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v15585; GFX7-NEXT:    v_not_b32_e32 v2, v25586; GFX7-NEXT:    s_mov_b64 s[4:5], 05587; GFX7-NEXT:  .LBB17_1: ; %atomicrmw.start5588; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=15589; GFX7-NEXT:    s_waitcnt lgkmcnt(0)5590; GFX7-NEXT:    v_lshrrev_b32_e32 v4, v1, v35591; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v45592; GFX7-NEXT:    v_add_f32_e32 v4, -4.0, v45593; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v45594; GFX7-NEXT:    v_and_b32_e32 v5, v3, v25595; GFX7-NEXT:    v_lshlrev_b32_e32 v4, v1, v45596; GFX7-NEXT:    v_or_b32_e32 v4, v5, v45597; GFX7-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v45598; GFX7-NEXT:    s_waitcnt lgkmcnt(0)5599; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v35600; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5601; GFX7-NEXT:    v_mov_b32_e32 v3, v45602; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]5603; GFX7-NEXT:    s_cbranch_execnz .LBB17_15604; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end5605; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]5606; GFX7-NEXT:    s_setpc_b64 s[30:31]5607;5608; GFX6-LABEL: local_atomic_fsub_noret_bf16__offset:5609; GFX6:       ; %bb.0:5610; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5611; GFX6-NEXT:    v_add_i32_e32 v1, vcc, 0xfffe, v05612; GFX6-NEXT:    v_and_b32_e32 v0, -4, v15613; GFX6-NEXT:    s_mov_b32 m0, -15614; GFX6-NEXT:    ds_read_b32 v3, v05615; GFX6-NEXT:    v_and_b32_e32 v1, 3, v15616; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 3, v15617; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v15618; GFX6-NEXT:    v_not_b32_e32 v2, v25619; GFX6-NEXT:    s_mov_b64 s[4:5], 05620; GFX6-NEXT:  .LBB17_1: ; %atomicrmw.start5621; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=15622; GFX6-NEXT:    s_waitcnt lgkmcnt(0)5623; GFX6-NEXT:    v_lshrrev_b32_e32 v4, v1, v35624; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v45625; GFX6-NEXT:    v_add_f32_e32 v4, -4.0, v45626; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v45627; GFX6-NEXT:    v_and_b32_e32 v5, v3, v25628; GFX6-NEXT:    v_lshlrev_b32_e32 v4, v1, v45629; GFX6-NEXT:    v_or_b32_e32 v4, v5, v45630; GFX6-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v45631; GFX6-NEXT:    s_waitcnt lgkmcnt(0)5632; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v35633; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5634; GFX6-NEXT:    v_mov_b32_e32 v3, v45635; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]5636; GFX6-NEXT:    s_cbranch_execnz .LBB17_15637; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end5638; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]5639; GFX6-NEXT:    s_setpc_b64 s[30:31]5640  %gep = getelementptr bfloat, ptr addrspace(3) %ptr, i32 327675641  %unused = atomicrmw fsub ptr addrspace(3) %gep, bfloat 4.0 seq_cst5642  ret void5643}5644 5645define bfloat @local_atomic_fsub_ret_bf16__offset__align4(ptr addrspace(3) %ptr) nounwind {5646; GFX12-TRUE16-LABEL: local_atomic_fsub_ret_bf16__offset__align4:5647; GFX12-TRUE16:       ; %bb.0:5648; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x05649; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x05650; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x05651; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x05652; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x05653; GFX12-TRUE16-NEXT:    ds_load_b32 v1, v0 offset:655345654; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 05655; GFX12-TRUE16-NEXT:  .LBB18_1: ; %atomicrmw.start5656; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=15657; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x05658; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v2, v15659; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5660; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v25661; GFX12-TRUE16-NEXT:    v_add_f32_e32 v1, -4.0, v15662; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)5663; GFX12-TRUE16-NEXT:    v_bfe_u32 v3, v1, 16, 15664; GFX12-TRUE16-NEXT:    v_or_b32_e32 v4, 0x400000, v15665; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v1, v15666; GFX12-TRUE16-NEXT:    v_add3_u32 v3, v3, v1, 0x7fff5667; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)5668; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)5669; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc_lo5670; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 05671; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v1.h5672; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5673; GFX12-TRUE16-NEXT:    v_and_or_b32 v1, 0xffff0000, v2, v35674; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x05675; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v2 offset:655345676; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x05677; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE5678; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v25679; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5680; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s05681; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5682; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05683; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB18_15684; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end5685; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05686; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v1.l5687; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x05688; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]5689;5690; GFX12-FAKE16-LABEL: local_atomic_fsub_ret_bf16__offset__align4:5691; GFX12-FAKE16:       ; %bb.0:5692; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x05693; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x05694; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x05695; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x05696; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x05697; GFX12-FAKE16-NEXT:    ds_load_b32 v1, v0 offset:655345698; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 05699; GFX12-FAKE16-NEXT:  .LBB18_1: ; %atomicrmw.start5700; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=15701; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x05702; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v2, v15703; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5704; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v25705; GFX12-FAKE16-NEXT:    v_add_f32_e32 v1, -4.0, v15706; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)5707; GFX12-FAKE16-NEXT:    v_bfe_u32 v3, v1, 16, 15708; GFX12-FAKE16-NEXT:    v_or_b32_e32 v4, 0x400000, v15709; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v1, v15710; GFX12-FAKE16-NEXT:    v_add3_u32 v3, v3, v1, 0x7fff5711; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)5712; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5713; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc_lo5714; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v15715; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5716; GFX12-FAKE16-NEXT:    v_and_or_b32 v1, 0xffff0000, v2, v15717; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x05718; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v2 offset:655345719; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x05720; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE5721; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v25722; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5723; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s05724; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5725; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05726; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB18_15727; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end5728; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05729; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v15730; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x05731; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]5732;5733; GFX942-LABEL: local_atomic_fsub_ret_bf16__offset__align4:5734; GFX942:       ; %bb.0:5735; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5736; GFX942-NEXT:    ds_read_b32 v2, v0 offset:655345737; GFX942-NEXT:    s_mov_b64 s[0:1], 05738; GFX942-NEXT:    s_movk_i32 s2, 0x7fff5739; GFX942-NEXT:    s_mov_b32 s3, 0xffff00005740; GFX942-NEXT:  .LBB18_1: ; %atomicrmw.start5741; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=15742; GFX942-NEXT:    s_waitcnt lgkmcnt(0)5743; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 16, v25744; GFX942-NEXT:    v_add_f32_e32 v1, -4.0, v15745; GFX942-NEXT:    v_bfe_u32 v3, v1, 16, 15746; GFX942-NEXT:    v_or_b32_e32 v4, 0x400000, v15747; GFX942-NEXT:    v_add3_u32 v3, v3, v1, s25748; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v1, v15749; GFX942-NEXT:    s_nop 15750; GFX942-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc5751; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v15752; GFX942-NEXT:    v_and_or_b32 v1, v2, s3, v15753; GFX942-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655345754; GFX942-NEXT:    s_waitcnt lgkmcnt(0)5755; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v25756; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]5757; GFX942-NEXT:    v_mov_b32_e32 v2, v15758; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]5759; GFX942-NEXT:    s_cbranch_execnz .LBB18_15760; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end5761; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]5762; GFX942-NEXT:    v_mov_b32_e32 v0, v15763; GFX942-NEXT:    s_setpc_b64 s[30:31]5764;5765; GFX11-TRUE16-LABEL: local_atomic_fsub_ret_bf16__offset__align4:5766; GFX11-TRUE16:       ; %bb.0:5767; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5768; GFX11-TRUE16-NEXT:    ds_load_b32 v1, v0 offset:655345769; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 05770; GFX11-TRUE16-NEXT:    .p2align 65771; GFX11-TRUE16-NEXT:  .LBB18_1: ; %atomicrmw.start5772; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=15773; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)5774; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, v15775; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5776; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v25777; GFX11-TRUE16-NEXT:    v_add_f32_e32 v1, -4.0, v15778; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)5779; GFX11-TRUE16-NEXT:    v_bfe_u32 v3, v1, 16, 15780; GFX11-TRUE16-NEXT:    v_or_b32_e32 v4, 0x400000, v15781; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v1, v15782; GFX11-TRUE16-NEXT:    v_add3_u32 v3, v3, v1, 0x7fff5783; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)5784; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc_lo5785; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 05786; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v1.h5787; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5788; GFX11-TRUE16-NEXT:    v_and_or_b32 v1, 0xffff0000, v2, v35789; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x05790; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v2 offset:655345791; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)5792; GFX11-TRUE16-NEXT:    buffer_gl0_inv5793; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v25794; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s05795; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5796; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05797; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB18_15798; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end5799; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05800; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v1.l5801; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]5802;5803; GFX11-FAKE16-LABEL: local_atomic_fsub_ret_bf16__offset__align4:5804; GFX11-FAKE16:       ; %bb.0:5805; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5806; GFX11-FAKE16-NEXT:    ds_load_b32 v1, v0 offset:655345807; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 05808; GFX11-FAKE16-NEXT:    .p2align 65809; GFX11-FAKE16-NEXT:  .LBB18_1: ; %atomicrmw.start5810; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=15811; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)5812; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v15813; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5814; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v25815; GFX11-FAKE16-NEXT:    v_add_f32_e32 v1, -4.0, v15816; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)5817; GFX11-FAKE16-NEXT:    v_bfe_u32 v3, v1, 16, 15818; GFX11-FAKE16-NEXT:    v_or_b32_e32 v4, 0x400000, v15819; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v1, v15820; GFX11-FAKE16-NEXT:    v_add3_u32 v3, v3, v1, 0x7fff5821; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5822; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc_lo5823; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v15824; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5825; GFX11-FAKE16-NEXT:    v_and_or_b32 v1, 0xffff0000, v2, v15826; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x05827; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v2 offset:655345828; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)5829; GFX11-FAKE16-NEXT:    buffer_gl0_inv5830; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v25831; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s05832; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5833; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05834; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB18_15835; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end5836; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05837; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v15838; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]5839;5840; GFX10-LABEL: local_atomic_fsub_ret_bf16__offset__align4:5841; GFX10:       ; %bb.0:5842; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5843; GFX10-NEXT:    ds_read_b32 v1, v0 offset:655345844; GFX10-NEXT:    s_mov_b32 s4, 05845; GFX10-NEXT:  .LBB18_1: ; %atomicrmw.start5846; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=15847; GFX10-NEXT:    s_waitcnt lgkmcnt(0)5848; GFX10-NEXT:    v_mov_b32_e32 v2, v15849; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 16, v25850; GFX10-NEXT:    v_add_f32_e32 v1, -4.0, v15851; GFX10-NEXT:    v_bfe_u32 v3, v1, 16, 15852; GFX10-NEXT:    v_or_b32_e32 v4, 0x400000, v15853; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v1, v15854; GFX10-NEXT:    v_add3_u32 v3, v3, v1, 0x7fff5855; GFX10-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc_lo5856; GFX10-NEXT:    v_lshrrev_b32_e32 v1, 16, v15857; GFX10-NEXT:    v_and_or_b32 v1, 0xffff0000, v2, v15858; GFX10-NEXT:    s_waitcnt_vscnt null, 0x05859; GFX10-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655345860; GFX10-NEXT:    s_waitcnt lgkmcnt(0)5861; GFX10-NEXT:    buffer_gl0_inv5862; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v25863; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s45864; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s45865; GFX10-NEXT:    s_cbranch_execnz .LBB18_15866; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end5867; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s45868; GFX10-NEXT:    v_mov_b32_e32 v0, v15869; GFX10-NEXT:    s_setpc_b64 s[30:31]5870;5871; GFX90A-LABEL: local_atomic_fsub_ret_bf16__offset__align4:5872; GFX90A:       ; %bb.0:5873; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5874; GFX90A-NEXT:    ds_read_b32 v2, v0 offset:655345875; GFX90A-NEXT:    s_mov_b64 s[4:5], 05876; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff5877; GFX90A-NEXT:    s_mov_b32 s7, 0xffff00005878; GFX90A-NEXT:  .LBB18_1: ; %atomicrmw.start5879; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=15880; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)5881; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 16, v25882; GFX90A-NEXT:    v_add_f32_e32 v1, -4.0, v15883; GFX90A-NEXT:    v_bfe_u32 v3, v1, 16, 15884; GFX90A-NEXT:    v_or_b32_e32 v4, 0x400000, v15885; GFX90A-NEXT:    v_add3_u32 v3, v3, v1, s65886; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v1, v15887; GFX90A-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc5888; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v15889; GFX90A-NEXT:    v_and_or_b32 v1, v2, s7, v15890; GFX90A-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655345891; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)5892; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v25893; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5894; GFX90A-NEXT:    v_mov_b32_e32 v2, v15895; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]5896; GFX90A-NEXT:    s_cbranch_execnz .LBB18_15897; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end5898; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]5899; GFX90A-NEXT:    v_mov_b32_e32 v0, v15900; GFX90A-NEXT:    s_setpc_b64 s[30:31]5901;5902; GFX908-LABEL: local_atomic_fsub_ret_bf16__offset__align4:5903; GFX908:       ; %bb.0:5904; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5905; GFX908-NEXT:    ds_read_b32 v1, v0 offset:655345906; GFX908-NEXT:    s_mov_b64 s[4:5], 05907; GFX908-NEXT:    s_movk_i32 s6, 0x7fff5908; GFX908-NEXT:    s_mov_b32 s7, 0xffff00005909; GFX908-NEXT:  .LBB18_1: ; %atomicrmw.start5910; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=15911; GFX908-NEXT:    s_waitcnt lgkmcnt(0)5912; GFX908-NEXT:    v_mov_b32_e32 v2, v15913; GFX908-NEXT:    v_lshlrev_b32_e32 v1, 16, v25914; GFX908-NEXT:    v_add_f32_e32 v1, -4.0, v15915; GFX908-NEXT:    v_bfe_u32 v3, v1, 16, 15916; GFX908-NEXT:    v_or_b32_e32 v4, 0x400000, v15917; GFX908-NEXT:    v_add3_u32 v3, v3, v1, s65918; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v1, v15919; GFX908-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc5920; GFX908-NEXT:    v_lshrrev_b32_e32 v1, 16, v15921; GFX908-NEXT:    v_and_or_b32 v1, v2, s7, v15922; GFX908-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655345923; GFX908-NEXT:    s_waitcnt lgkmcnt(0)5924; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v25925; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5926; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]5927; GFX908-NEXT:    s_cbranch_execnz .LBB18_15928; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end5929; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]5930; GFX908-NEXT:    v_mov_b32_e32 v0, v15931; GFX908-NEXT:    s_setpc_b64 s[30:31]5932;5933; GFX8-LABEL: local_atomic_fsub_ret_bf16__offset__align4:5934; GFX8:       ; %bb.0:5935; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5936; GFX8-NEXT:    s_mov_b32 m0, -15937; GFX8-NEXT:    ds_read_b32 v1, v0 offset:655345938; GFX8-NEXT:    s_mov_b64 s[4:5], 05939; GFX8-NEXT:  .LBB18_1: ; %atomicrmw.start5940; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=15941; GFX8-NEXT:    s_waitcnt lgkmcnt(0)5942; GFX8-NEXT:    v_mov_b32_e32 v2, v15943; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 16, v25944; GFX8-NEXT:    v_add_f32_e32 v1, -4.0, v15945; GFX8-NEXT:    v_bfe_u32 v4, v1, 16, 15946; GFX8-NEXT:    v_add_u32_e32 v4, vcc, v4, v15947; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0x7fff, v45948; GFX8-NEXT:    v_or_b32_e32 v5, 0x400000, v15949; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v1, v15950; GFX8-NEXT:    v_and_b32_e32 v3, 0xffff0000, v25951; GFX8-NEXT:    v_cndmask_b32_e32 v1, v4, v5, vcc5952; GFX8-NEXT:    v_or_b32_sdwa v1, v3, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_15953; GFX8-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655345954; GFX8-NEXT:    s_waitcnt lgkmcnt(0)5955; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v25956; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5957; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]5958; GFX8-NEXT:    s_cbranch_execnz .LBB18_15959; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end5960; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]5961; GFX8-NEXT:    v_mov_b32_e32 v0, v15962; GFX8-NEXT:    s_setpc_b64 s[30:31]5963;5964; GFX7-LABEL: local_atomic_fsub_ret_bf16__offset__align4:5965; GFX7:       ; %bb.0:5966; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5967; GFX7-NEXT:    s_mov_b32 m0, -15968; GFX7-NEXT:    ds_read_b32 v1, v0 offset:655345969; GFX7-NEXT:    s_mov_b64 s[4:5], 05970; GFX7-NEXT:  .LBB18_1: ; %atomicrmw.start5971; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=15972; GFX7-NEXT:    s_waitcnt lgkmcnt(0)5973; GFX7-NEXT:    v_mov_b32_e32 v2, v15974; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v25975; GFX7-NEXT:    v_add_f32_e32 v1, -4.0, v15976; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v25977; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v15978; GFX7-NEXT:    v_or_b32_e32 v1, v3, v15979; GFX7-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655345980; GFX7-NEXT:    s_waitcnt lgkmcnt(0)5981; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v25982; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5983; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]5984; GFX7-NEXT:    s_cbranch_execnz .LBB18_15985; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end5986; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]5987; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v15988; GFX7-NEXT:    s_setpc_b64 s[30:31]5989;5990; GFX6-LABEL: local_atomic_fsub_ret_bf16__offset__align4:5991; GFX6:       ; %bb.0:5992; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5993; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffe, v05994; GFX6-NEXT:    s_mov_b32 m0, -15995; GFX6-NEXT:    ds_read_b32 v1, v05996; GFX6-NEXT:    s_mov_b64 s[4:5], 05997; GFX6-NEXT:  .LBB18_1: ; %atomicrmw.start5998; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=15999; GFX6-NEXT:    s_waitcnt lgkmcnt(0)6000; GFX6-NEXT:    v_mov_b32_e32 v2, v16001; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 16, v26002; GFX6-NEXT:    v_add_f32_e32 v1, -4.0, v16003; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v26004; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v16005; GFX6-NEXT:    v_or_b32_e32 v1, v3, v16006; GFX6-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v16007; GFX6-NEXT:    s_waitcnt lgkmcnt(0)6008; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v26009; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6010; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]6011; GFX6-NEXT:    s_cbranch_execnz .LBB18_16012; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end6013; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]6014; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v16015; GFX6-NEXT:    s_setpc_b64 s[30:31]6016  %gep = getelementptr bfloat, ptr addrspace(3) %ptr, i32 327676017  %result = atomicrmw fsub ptr addrspace(3) %gep, bfloat 4.0 seq_cst, align 46018  ret bfloat %result6019}6020 6021define void @local_atomic_fsub_noret_bf16__offset__align4(ptr addrspace(3) %ptr) nounwind {6022; GFX12-TRUE16-LABEL: local_atomic_fsub_noret_bf16__offset__align4:6023; GFX12-TRUE16:       ; %bb.0:6024; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06025; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x06026; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x06027; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x06028; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x06029; GFX12-TRUE16-NEXT:    ds_load_b32 v1, v0 offset:655346030; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 06031; GFX12-TRUE16-NEXT:  .LBB19_1: ; %atomicrmw.start6032; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16033; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x06034; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v16035; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6036; GFX12-TRUE16-NEXT:    v_add_f32_e32 v2, -4.0, v26037; GFX12-TRUE16-NEXT:    v_bfe_u32 v3, v2, 16, 16038; GFX12-TRUE16-NEXT:    v_or_b32_e32 v4, 0x400000, v26039; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v26040; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)6041; GFX12-TRUE16-NEXT:    v_add3_u32 v3, v3, v2, 0x7fff6042; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)6043; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc_lo6044; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 06045; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6046; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v2.h6047; GFX12-TRUE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v1, v36048; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x06049; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v1 offset:655346050; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x06051; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE6052; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v16053; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v1, v26054; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6055; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06056; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6057; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06058; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB19_16059; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6060; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06061; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06062; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]6063;6064; GFX12-FAKE16-LABEL: local_atomic_fsub_noret_bf16__offset__align4:6065; GFX12-FAKE16:       ; %bb.0:6066; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06067; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x06068; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x06069; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x06070; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x06071; GFX12-FAKE16-NEXT:    ds_load_b32 v1, v0 offset:655346072; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 06073; GFX12-FAKE16-NEXT:  .LBB19_1: ; %atomicrmw.start6074; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16075; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x06076; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v16077; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6078; GFX12-FAKE16-NEXT:    v_add_f32_e32 v2, -4.0, v26079; GFX12-FAKE16-NEXT:    v_bfe_u32 v3, v2, 16, 16080; GFX12-FAKE16-NEXT:    v_or_b32_e32 v4, 0x400000, v26081; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v26082; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)6083; GFX12-FAKE16-NEXT:    v_add3_u32 v3, v3, v2, 0x7fff6084; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)6085; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc_lo6086; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6087; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v26088; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v1, v26089; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x06090; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v1 offset:655346091; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x06092; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE6093; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v16094; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v1, v26095; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6096; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06097; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6098; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06099; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB19_16100; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6101; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06102; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06103; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]6104;6105; GFX942-LABEL: local_atomic_fsub_noret_bf16__offset__align4:6106; GFX942:       ; %bb.0:6107; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6108; GFX942-NEXT:    ds_read_b32 v1, v0 offset:655346109; GFX942-NEXT:    s_mov_b64 s[0:1], 06110; GFX942-NEXT:    s_movk_i32 s2, 0x7fff6111; GFX942-NEXT:    s_mov_b32 s3, 0xffff00006112; GFX942-NEXT:  .LBB19_1: ; %atomicrmw.start6113; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=16114; GFX942-NEXT:    s_waitcnt lgkmcnt(0)6115; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v16116; GFX942-NEXT:    v_add_f32_e32 v2, -4.0, v26117; GFX942-NEXT:    v_bfe_u32 v3, v2, 16, 16118; GFX942-NEXT:    v_or_b32_e32 v4, 0x400000, v26119; GFX942-NEXT:    v_add3_u32 v3, v3, v2, s26120; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v26121; GFX942-NEXT:    s_nop 16122; GFX942-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc6123; GFX942-NEXT:    v_lshrrev_b32_e32 v2, 16, v26124; GFX942-NEXT:    v_and_or_b32 v2, v1, s3, v26125; GFX942-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655346126; GFX942-NEXT:    s_waitcnt lgkmcnt(0)6127; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v16128; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]6129; GFX942-NEXT:    v_mov_b32_e32 v1, v26130; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]6131; GFX942-NEXT:    s_cbranch_execnz .LBB19_16132; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end6133; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]6134; GFX942-NEXT:    s_setpc_b64 s[30:31]6135;6136; GFX11-TRUE16-LABEL: local_atomic_fsub_noret_bf16__offset__align4:6137; GFX11-TRUE16:       ; %bb.0:6138; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6139; GFX11-TRUE16-NEXT:    ds_load_b32 v1, v0 offset:655346140; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 06141; GFX11-TRUE16-NEXT:    .p2align 66142; GFX11-TRUE16-NEXT:  .LBB19_1: ; %atomicrmw.start6143; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16144; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)6145; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v16146; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6147; GFX11-TRUE16-NEXT:    v_add_f32_e32 v2, -4.0, v26148; GFX11-TRUE16-NEXT:    v_bfe_u32 v3, v2, 16, 16149; GFX11-TRUE16-NEXT:    v_or_b32_e32 v4, 0x400000, v26150; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v26151; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)6152; GFX11-TRUE16-NEXT:    v_add3_u32 v3, v3, v2, 0x7fff6153; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc_lo6154; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 06155; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6156; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v2.h6157; GFX11-TRUE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v1, v36158; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x06159; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v1 offset:655346160; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)6161; GFX11-TRUE16-NEXT:    buffer_gl0_inv6162; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v16163; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, v26164; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06165; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6166; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06167; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB19_16168; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6169; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06170; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]6171;6172; GFX11-FAKE16-LABEL: local_atomic_fsub_noret_bf16__offset__align4:6173; GFX11-FAKE16:       ; %bb.0:6174; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6175; GFX11-FAKE16-NEXT:    ds_load_b32 v1, v0 offset:655346176; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 06177; GFX11-FAKE16-NEXT:    .p2align 66178; GFX11-FAKE16-NEXT:  .LBB19_1: ; %atomicrmw.start6179; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16180; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)6181; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v16182; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6183; GFX11-FAKE16-NEXT:    v_add_f32_e32 v2, -4.0, v26184; GFX11-FAKE16-NEXT:    v_bfe_u32 v3, v2, 16, 16185; GFX11-FAKE16-NEXT:    v_or_b32_e32 v4, 0x400000, v26186; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v26187; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)6188; GFX11-FAKE16-NEXT:    v_add3_u32 v3, v3, v2, 0x7fff6189; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc_lo6190; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6191; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v26192; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v1, v26193; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x06194; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v1 offset:655346195; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)6196; GFX11-FAKE16-NEXT:    buffer_gl0_inv6197; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v16198; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v26199; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06200; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6201; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06202; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB19_16203; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6204; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06205; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]6206;6207; GFX10-LABEL: local_atomic_fsub_noret_bf16__offset__align4:6208; GFX10:       ; %bb.0:6209; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6210; GFX10-NEXT:    ds_read_b32 v1, v0 offset:655346211; GFX10-NEXT:    s_mov_b32 s4, 06212; GFX10-NEXT:  .LBB19_1: ; %atomicrmw.start6213; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=16214; GFX10-NEXT:    s_waitcnt lgkmcnt(0)6215; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v16216; GFX10-NEXT:    v_add_f32_e32 v2, -4.0, v26217; GFX10-NEXT:    v_bfe_u32 v3, v2, 16, 16218; GFX10-NEXT:    v_or_b32_e32 v4, 0x400000, v26219; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v26220; GFX10-NEXT:    v_add3_u32 v3, v3, v2, 0x7fff6221; GFX10-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc_lo6222; GFX10-NEXT:    v_lshrrev_b32_e32 v2, 16, v26223; GFX10-NEXT:    v_and_or_b32 v2, 0xffff0000, v1, v26224; GFX10-NEXT:    s_waitcnt_vscnt null, 0x06225; GFX10-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655346226; GFX10-NEXT:    s_waitcnt lgkmcnt(0)6227; GFX10-NEXT:    buffer_gl0_inv6228; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v16229; GFX10-NEXT:    v_mov_b32_e32 v1, v26230; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s46231; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s46232; GFX10-NEXT:    s_cbranch_execnz .LBB19_16233; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end6234; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s46235; GFX10-NEXT:    s_setpc_b64 s[30:31]6236;6237; GFX90A-LABEL: local_atomic_fsub_noret_bf16__offset__align4:6238; GFX90A:       ; %bb.0:6239; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6240; GFX90A-NEXT:    ds_read_b32 v1, v0 offset:655346241; GFX90A-NEXT:    s_mov_b64 s[4:5], 06242; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff6243; GFX90A-NEXT:    s_mov_b32 s7, 0xffff00006244; GFX90A-NEXT:  .LBB19_1: ; %atomicrmw.start6245; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=16246; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)6247; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v16248; GFX90A-NEXT:    v_add_f32_e32 v2, -4.0, v26249; GFX90A-NEXT:    v_bfe_u32 v3, v2, 16, 16250; GFX90A-NEXT:    v_or_b32_e32 v4, 0x400000, v26251; GFX90A-NEXT:    v_add3_u32 v3, v3, v2, s66252; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v26253; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc6254; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, 16, v26255; GFX90A-NEXT:    v_and_or_b32 v2, v1, s7, v26256; GFX90A-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655346257; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)6258; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v16259; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6260; GFX90A-NEXT:    v_mov_b32_e32 v1, v26261; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]6262; GFX90A-NEXT:    s_cbranch_execnz .LBB19_16263; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end6264; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]6265; GFX90A-NEXT:    s_setpc_b64 s[30:31]6266;6267; GFX908-LABEL: local_atomic_fsub_noret_bf16__offset__align4:6268; GFX908:       ; %bb.0:6269; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6270; GFX908-NEXT:    ds_read_b32 v1, v0 offset:655346271; GFX908-NEXT:    s_mov_b64 s[4:5], 06272; GFX908-NEXT:    s_movk_i32 s6, 0x7fff6273; GFX908-NEXT:    s_mov_b32 s7, 0xffff00006274; GFX908-NEXT:  .LBB19_1: ; %atomicrmw.start6275; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=16276; GFX908-NEXT:    s_waitcnt lgkmcnt(0)6277; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v16278; GFX908-NEXT:    v_add_f32_e32 v2, -4.0, v26279; GFX908-NEXT:    v_bfe_u32 v3, v2, 16, 16280; GFX908-NEXT:    v_or_b32_e32 v4, 0x400000, v26281; GFX908-NEXT:    v_add3_u32 v3, v3, v2, s66282; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v2, v26283; GFX908-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc6284; GFX908-NEXT:    v_lshrrev_b32_e32 v2, 16, v26285; GFX908-NEXT:    v_and_or_b32 v2, v1, s7, v26286; GFX908-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655346287; GFX908-NEXT:    s_waitcnt lgkmcnt(0)6288; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v16289; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6290; GFX908-NEXT:    v_mov_b32_e32 v1, v26291; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]6292; GFX908-NEXT:    s_cbranch_execnz .LBB19_16293; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end6294; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]6295; GFX908-NEXT:    s_setpc_b64 s[30:31]6296;6297; GFX8-LABEL: local_atomic_fsub_noret_bf16__offset__align4:6298; GFX8:       ; %bb.0:6299; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6300; GFX8-NEXT:    s_mov_b32 m0, -16301; GFX8-NEXT:    ds_read_b32 v1, v0 offset:655346302; GFX8-NEXT:    s_mov_b64 s[4:5], 06303; GFX8-NEXT:  .LBB19_1: ; %atomicrmw.start6304; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=16305; GFX8-NEXT:    s_waitcnt lgkmcnt(0)6306; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v16307; GFX8-NEXT:    v_add_f32_e32 v2, -4.0, v26308; GFX8-NEXT:    v_bfe_u32 v4, v2, 16, 16309; GFX8-NEXT:    v_add_u32_e32 v4, vcc, v4, v26310; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0x7fff, v46311; GFX8-NEXT:    v_or_b32_e32 v5, 0x400000, v26312; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v2, v26313; GFX8-NEXT:    v_and_b32_e32 v3, 0xffff0000, v16314; GFX8-NEXT:    v_cndmask_b32_e32 v2, v4, v5, vcc6315; GFX8-NEXT:    v_or_b32_sdwa v2, v3, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_16316; GFX8-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655346317; GFX8-NEXT:    s_waitcnt lgkmcnt(0)6318; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v16319; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6320; GFX8-NEXT:    v_mov_b32_e32 v1, v26321; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]6322; GFX8-NEXT:    s_cbranch_execnz .LBB19_16323; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end6324; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]6325; GFX8-NEXT:    s_setpc_b64 s[30:31]6326;6327; GFX7-LABEL: local_atomic_fsub_noret_bf16__offset__align4:6328; GFX7:       ; %bb.0:6329; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6330; GFX7-NEXT:    s_mov_b32 m0, -16331; GFX7-NEXT:    ds_read_b32 v1, v0 offset:655346332; GFX7-NEXT:    s_mov_b64 s[4:5], 06333; GFX7-NEXT:  .LBB19_1: ; %atomicrmw.start6334; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=16335; GFX7-NEXT:    s_waitcnt lgkmcnt(0)6336; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v16337; GFX7-NEXT:    v_add_f32_e32 v2, -4.0, v26338; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v16339; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v26340; GFX7-NEXT:    v_or_b32_e32 v2, v3, v26341; GFX7-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655346342; GFX7-NEXT:    s_waitcnt lgkmcnt(0)6343; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v16344; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6345; GFX7-NEXT:    v_mov_b32_e32 v1, v26346; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]6347; GFX7-NEXT:    s_cbranch_execnz .LBB19_16348; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end6349; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]6350; GFX7-NEXT:    s_setpc_b64 s[30:31]6351;6352; GFX6-LABEL: local_atomic_fsub_noret_bf16__offset__align4:6353; GFX6:       ; %bb.0:6354; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6355; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffe, v06356; GFX6-NEXT:    s_mov_b32 m0, -16357; GFX6-NEXT:    ds_read_b32 v1, v06358; GFX6-NEXT:    s_mov_b64 s[4:5], 06359; GFX6-NEXT:  .LBB19_1: ; %atomicrmw.start6360; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=16361; GFX6-NEXT:    s_waitcnt lgkmcnt(0)6362; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v16363; GFX6-NEXT:    v_add_f32_e32 v2, -4.0, v26364; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v16365; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v26366; GFX6-NEXT:    v_or_b32_e32 v2, v3, v26367; GFX6-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v26368; GFX6-NEXT:    s_waitcnt lgkmcnt(0)6369; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v16370; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6371; GFX6-NEXT:    v_mov_b32_e32 v1, v26372; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]6373; GFX6-NEXT:    s_cbranch_execnz .LBB19_16374; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end6375; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]6376; GFX6-NEXT:    s_setpc_b64 s[30:31]6377  %gep = getelementptr bfloat, ptr addrspace(3) %ptr, i32 327676378  %unused = atomicrmw fsub ptr addrspace(3) %gep, bfloat 4.0 seq_cst, align 46379  ret void6380}6381 6382; --------------------------------------------------------------------6383; <2 x half>6384; --------------------------------------------------------------------6385 6386define <2 x half> @local_atomic_fsub_ret_v2f16(ptr addrspace(3) %ptr, <2 x half> %val) {6387; GFX12-LABEL: local_atomic_fsub_ret_v2f16:6388; GFX12:       ; %bb.0:6389; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x06390; GFX12-NEXT:    s_wait_expcnt 0x06391; GFX12-NEXT:    s_wait_samplecnt 0x06392; GFX12-NEXT:    s_wait_bvhcnt 0x06393; GFX12-NEXT:    s_wait_kmcnt 0x06394; GFX12-NEXT:    ds_load_b32 v2, v06395; GFX12-NEXT:    s_mov_b32 s0, 06396; GFX12-NEXT:  .LBB20_1: ; %atomicrmw.start6397; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=16398; GFX12-NEXT:    s_wait_dscnt 0x06399; GFX12-NEXT:    v_mov_b32_e32 v3, v26400; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)6401; GFX12-NEXT:    v_pk_add_f16 v2, v3, v1 neg_lo:[0,1] neg_hi:[0,1]6402; GFX12-NEXT:    s_wait_storecnt 0x06403; GFX12-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v36404; GFX12-NEXT:    s_wait_dscnt 0x06405; GFX12-NEXT:    global_inv scope:SCOPE_SE6406; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v36407; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)6408; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s06409; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)6410; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06411; GFX12-NEXT:    s_cbranch_execnz .LBB20_16412; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end6413; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s06414; GFX12-NEXT:    v_mov_b32_e32 v0, v26415; GFX12-NEXT:    s_wait_loadcnt 0x06416; GFX12-NEXT:    s_setpc_b64 s[30:31]6417;6418; GFX942-LABEL: local_atomic_fsub_ret_v2f16:6419; GFX942:       ; %bb.0:6420; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6421; GFX942-NEXT:    ds_read_b32 v3, v06422; GFX942-NEXT:    s_mov_b64 s[0:1], 06423; GFX942-NEXT:  .LBB20_1: ; %atomicrmw.start6424; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=16425; GFX942-NEXT:    s_waitcnt lgkmcnt(0)6426; GFX942-NEXT:    v_pk_add_f16 v2, v3, v1 neg_lo:[0,1] neg_hi:[0,1]6427; GFX942-NEXT:    ds_cmpst_rtn_b32 v2, v0, v3, v26428; GFX942-NEXT:    s_waitcnt lgkmcnt(0)6429; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v36430; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]6431; GFX942-NEXT:    v_mov_b32_e32 v3, v26432; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]6433; GFX942-NEXT:    s_cbranch_execnz .LBB20_16434; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end6435; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]6436; GFX942-NEXT:    v_mov_b32_e32 v0, v26437; GFX942-NEXT:    s_setpc_b64 s[30:31]6438;6439; GFX11-LABEL: local_atomic_fsub_ret_v2f16:6440; GFX11:       ; %bb.0:6441; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6442; GFX11-NEXT:    ds_load_b32 v2, v06443; GFX11-NEXT:    s_mov_b32 s0, 06444; GFX11-NEXT:  .LBB20_1: ; %atomicrmw.start6445; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=16446; GFX11-NEXT:    s_waitcnt lgkmcnt(0)6447; GFX11-NEXT:    v_mov_b32_e32 v3, v26448; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)6449; GFX11-NEXT:    v_pk_add_f16 v2, v3, v1 neg_lo:[0,1] neg_hi:[0,1]6450; GFX11-NEXT:    s_waitcnt_vscnt null, 0x06451; GFX11-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v36452; GFX11-NEXT:    s_waitcnt lgkmcnt(0)6453; GFX11-NEXT:    buffer_gl0_inv6454; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v36455; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s06456; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6457; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06458; GFX11-NEXT:    s_cbranch_execnz .LBB20_16459; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end6460; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s06461; GFX11-NEXT:    v_mov_b32_e32 v0, v26462; GFX11-NEXT:    s_setpc_b64 s[30:31]6463;6464; GFX10-LABEL: local_atomic_fsub_ret_v2f16:6465; GFX10:       ; %bb.0:6466; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6467; GFX10-NEXT:    ds_read_b32 v2, v06468; GFX10-NEXT:    s_mov_b32 s4, 06469; GFX10-NEXT:  .LBB20_1: ; %atomicrmw.start6470; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=16471; GFX10-NEXT:    s_waitcnt lgkmcnt(0)6472; GFX10-NEXT:    v_mov_b32_e32 v3, v26473; GFX10-NEXT:    v_pk_add_f16 v2, v3, v1 neg_lo:[0,1] neg_hi:[0,1]6474; GFX10-NEXT:    s_waitcnt_vscnt null, 0x06475; GFX10-NEXT:    ds_cmpst_rtn_b32 v2, v0, v3, v26476; GFX10-NEXT:    s_waitcnt lgkmcnt(0)6477; GFX10-NEXT:    buffer_gl0_inv6478; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v36479; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s46480; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s46481; GFX10-NEXT:    s_cbranch_execnz .LBB20_16482; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end6483; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s46484; GFX10-NEXT:    v_mov_b32_e32 v0, v26485; GFX10-NEXT:    s_setpc_b64 s[30:31]6486;6487; GFX90A-LABEL: local_atomic_fsub_ret_v2f16:6488; GFX90A:       ; %bb.0:6489; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6490; GFX90A-NEXT:    ds_read_b32 v3, v06491; GFX90A-NEXT:    s_mov_b64 s[4:5], 06492; GFX90A-NEXT:  .LBB20_1: ; %atomicrmw.start6493; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=16494; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)6495; GFX90A-NEXT:    v_pk_add_f16 v2, v3, v1 neg_lo:[0,1] neg_hi:[0,1]6496; GFX90A-NEXT:    ds_cmpst_rtn_b32 v2, v0, v3, v26497; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)6498; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v36499; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6500; GFX90A-NEXT:    v_mov_b32_e32 v3, v26501; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]6502; GFX90A-NEXT:    s_cbranch_execnz .LBB20_16503; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end6504; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]6505; GFX90A-NEXT:    v_mov_b32_e32 v0, v26506; GFX90A-NEXT:    s_setpc_b64 s[30:31]6507;6508; GFX908-LABEL: local_atomic_fsub_ret_v2f16:6509; GFX908:       ; %bb.0:6510; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6511; GFX908-NEXT:    ds_read_b32 v2, v06512; GFX908-NEXT:    s_mov_b64 s[4:5], 06513; GFX908-NEXT:  .LBB20_1: ; %atomicrmw.start6514; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=16515; GFX908-NEXT:    s_waitcnt lgkmcnt(0)6516; GFX908-NEXT:    v_mov_b32_e32 v3, v26517; GFX908-NEXT:    v_pk_add_f16 v2, v3, v1 neg_lo:[0,1] neg_hi:[0,1]6518; GFX908-NEXT:    ds_cmpst_rtn_b32 v2, v0, v3, v26519; GFX908-NEXT:    s_waitcnt lgkmcnt(0)6520; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v36521; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6522; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]6523; GFX908-NEXT:    s_cbranch_execnz .LBB20_16524; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end6525; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]6526; GFX908-NEXT:    v_mov_b32_e32 v0, v26527; GFX908-NEXT:    s_setpc_b64 s[30:31]6528;6529; GFX8-LABEL: local_atomic_fsub_ret_v2f16:6530; GFX8:       ; %bb.0:6531; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6532; GFX8-NEXT:    s_mov_b32 m0, -16533; GFX8-NEXT:    ds_read_b32 v2, v06534; GFX8-NEXT:    s_mov_b64 s[4:5], 06535; GFX8-NEXT:  .LBB20_1: ; %atomicrmw.start6536; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=16537; GFX8-NEXT:    s_waitcnt lgkmcnt(0)6538; GFX8-NEXT:    v_mov_b32_e32 v3, v26539; GFX8-NEXT:    v_sub_f16_sdwa v2, v3, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_16540; GFX8-NEXT:    v_sub_f16_e32 v4, v3, v16541; GFX8-NEXT:    v_or_b32_e32 v2, v4, v26542; GFX8-NEXT:    ds_cmpst_rtn_b32 v2, v0, v3, v26543; GFX8-NEXT:    s_waitcnt lgkmcnt(0)6544; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v36545; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6546; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]6547; GFX8-NEXT:    s_cbranch_execnz .LBB20_16548; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end6549; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]6550; GFX8-NEXT:    v_mov_b32_e32 v0, v26551; GFX8-NEXT:    s_setpc_b64 s[30:31]6552;6553; GFX7-LABEL: local_atomic_fsub_ret_v2f16:6554; GFX7:       ; %bb.0:6555; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6556; GFX7-NEXT:    s_mov_b32 m0, -16557; GFX7-NEXT:    ds_read_b32 v3, v06558; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v26559; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v16560; GFX7-NEXT:    s_mov_b64 s[4:5], 06561; GFX7-NEXT:    s_waitcnt lgkmcnt(0)6562; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v36563; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v26564; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v36565; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v46566; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v56567; GFX7-NEXT:  .LBB20_1: ; %atomicrmw.start6568; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=16569; GFX7-NEXT:    v_cvt_f16_f32_e32 v1, v16570; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v26571; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v16572; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v26573; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v16574; GFX7-NEXT:    v_or_b32_e32 v7, v2, v16575; GFX7-NEXT:    v_sub_f32_e32 v5, v5, v36576; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v46577; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v56578; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v66579; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v56580; GFX7-NEXT:    v_or_b32_e32 v1, v6, v16581; GFX7-NEXT:    ds_cmpst_rtn_b32 v5, v0, v7, v16582; GFX7-NEXT:    s_waitcnt lgkmcnt(0)6583; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v56584; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v56585; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v16586; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v76587; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6588; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]6589; GFX7-NEXT:    s_cbranch_execnz .LBB20_16590; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end6591; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]6592; GFX7-NEXT:    v_mov_b32_e32 v0, v26593; GFX7-NEXT:    s_setpc_b64 s[30:31]6594;6595; GFX6-LABEL: local_atomic_fsub_ret_v2f16:6596; GFX6:       ; %bb.0:6597; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6598; GFX6-NEXT:    s_mov_b32 m0, -16599; GFX6-NEXT:    ds_read_b32 v3, v06600; GFX6-NEXT:    v_cvt_f16_f32_e32 v4, v26601; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v16602; GFX6-NEXT:    s_mov_b64 s[4:5], 06603; GFX6-NEXT:    s_waitcnt lgkmcnt(0)6604; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v36605; GFX6-NEXT:    v_cvt_f32_f16_e32 v1, v26606; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v36607; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v46608; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v56609; GFX6-NEXT:  .LBB20_1: ; %atomicrmw.start6610; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=16611; GFX6-NEXT:    v_cvt_f16_f32_e32 v1, v16612; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v26613; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v16614; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v26615; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 16, v16616; GFX6-NEXT:    v_or_b32_e32 v7, v2, v16617; GFX6-NEXT:    v_sub_f32_e32 v5, v5, v36618; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v46619; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v56620; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v66621; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 16, v56622; GFX6-NEXT:    v_or_b32_e32 v1, v6, v16623; GFX6-NEXT:    ds_cmpst_rtn_b32 v5, v0, v7, v16624; GFX6-NEXT:    s_waitcnt lgkmcnt(0)6625; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v56626; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v56627; GFX6-NEXT:    v_cvt_f32_f16_e32 v1, v16628; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v76629; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6630; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]6631; GFX6-NEXT:    s_cbranch_execnz .LBB20_16632; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end6633; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]6634; GFX6-NEXT:    v_mov_b32_e32 v0, v26635; GFX6-NEXT:    s_setpc_b64 s[30:31]6636  %gep = getelementptr <2 x half>, ptr addrspace(3) %ptr, i32 163836637  %result = atomicrmw fsub ptr addrspace(3) %ptr, <2 x half> %val seq_cst6638  ret <2 x half> %result6639}6640 6641define <2 x half> @local_atomic_fsub_ret_v2f16__offset(ptr addrspace(3) %ptr, <2 x half> %val) {6642; GFX12-LABEL: local_atomic_fsub_ret_v2f16__offset:6643; GFX12:       ; %bb.0:6644; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x06645; GFX12-NEXT:    s_wait_expcnt 0x06646; GFX12-NEXT:    s_wait_samplecnt 0x06647; GFX12-NEXT:    s_wait_bvhcnt 0x06648; GFX12-NEXT:    s_wait_kmcnt 0x06649; GFX12-NEXT:    ds_load_b32 v2, v0 offset:655326650; GFX12-NEXT:    s_mov_b32 s0, 06651; GFX12-NEXT:  .LBB21_1: ; %atomicrmw.start6652; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=16653; GFX12-NEXT:    s_wait_dscnt 0x06654; GFX12-NEXT:    v_mov_b32_e32 v3, v26655; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)6656; GFX12-NEXT:    v_pk_add_f16 v2, v3, v1 neg_lo:[0,1] neg_hi:[0,1]6657; GFX12-NEXT:    s_wait_storecnt 0x06658; GFX12-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v3 offset:655326659; GFX12-NEXT:    s_wait_dscnt 0x06660; GFX12-NEXT:    global_inv scope:SCOPE_SE6661; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v36662; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)6663; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s06664; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)6665; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06666; GFX12-NEXT:    s_cbranch_execnz .LBB21_16667; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end6668; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s06669; GFX12-NEXT:    v_mov_b32_e32 v0, v26670; GFX12-NEXT:    s_wait_loadcnt 0x06671; GFX12-NEXT:    s_setpc_b64 s[30:31]6672;6673; GFX942-LABEL: local_atomic_fsub_ret_v2f16__offset:6674; GFX942:       ; %bb.0:6675; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6676; GFX942-NEXT:    ds_read_b32 v3, v0 offset:655326677; GFX942-NEXT:    s_mov_b64 s[0:1], 06678; GFX942-NEXT:  .LBB21_1: ; %atomicrmw.start6679; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=16680; GFX942-NEXT:    s_waitcnt lgkmcnt(0)6681; GFX942-NEXT:    v_pk_add_f16 v2, v3, v1 neg_lo:[0,1] neg_hi:[0,1]6682; GFX942-NEXT:    ds_cmpst_rtn_b32 v2, v0, v3, v2 offset:655326683; GFX942-NEXT:    s_waitcnt lgkmcnt(0)6684; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v36685; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]6686; GFX942-NEXT:    v_mov_b32_e32 v3, v26687; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]6688; GFX942-NEXT:    s_cbranch_execnz .LBB21_16689; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end6690; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]6691; GFX942-NEXT:    v_mov_b32_e32 v0, v26692; GFX942-NEXT:    s_setpc_b64 s[30:31]6693;6694; GFX11-LABEL: local_atomic_fsub_ret_v2f16__offset:6695; GFX11:       ; %bb.0:6696; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6697; GFX11-NEXT:    ds_load_b32 v2, v0 offset:655326698; GFX11-NEXT:    s_mov_b32 s0, 06699; GFX11-NEXT:  .LBB21_1: ; %atomicrmw.start6700; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=16701; GFX11-NEXT:    s_waitcnt lgkmcnt(0)6702; GFX11-NEXT:    v_mov_b32_e32 v3, v26703; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)6704; GFX11-NEXT:    v_pk_add_f16 v2, v3, v1 neg_lo:[0,1] neg_hi:[0,1]6705; GFX11-NEXT:    s_waitcnt_vscnt null, 0x06706; GFX11-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v3 offset:655326707; GFX11-NEXT:    s_waitcnt lgkmcnt(0)6708; GFX11-NEXT:    buffer_gl0_inv6709; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v36710; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s06711; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6712; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06713; GFX11-NEXT:    s_cbranch_execnz .LBB21_16714; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end6715; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s06716; GFX11-NEXT:    v_mov_b32_e32 v0, v26717; GFX11-NEXT:    s_setpc_b64 s[30:31]6718;6719; GFX10-LABEL: local_atomic_fsub_ret_v2f16__offset:6720; GFX10:       ; %bb.0:6721; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6722; GFX10-NEXT:    ds_read_b32 v2, v0 offset:655326723; GFX10-NEXT:    s_mov_b32 s4, 06724; GFX10-NEXT:  .LBB21_1: ; %atomicrmw.start6725; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=16726; GFX10-NEXT:    s_waitcnt lgkmcnt(0)6727; GFX10-NEXT:    v_mov_b32_e32 v3, v26728; GFX10-NEXT:    v_pk_add_f16 v2, v3, v1 neg_lo:[0,1] neg_hi:[0,1]6729; GFX10-NEXT:    s_waitcnt_vscnt null, 0x06730; GFX10-NEXT:    ds_cmpst_rtn_b32 v2, v0, v3, v2 offset:655326731; GFX10-NEXT:    s_waitcnt lgkmcnt(0)6732; GFX10-NEXT:    buffer_gl0_inv6733; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v36734; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s46735; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s46736; GFX10-NEXT:    s_cbranch_execnz .LBB21_16737; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end6738; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s46739; GFX10-NEXT:    v_mov_b32_e32 v0, v26740; GFX10-NEXT:    s_setpc_b64 s[30:31]6741;6742; GFX90A-LABEL: local_atomic_fsub_ret_v2f16__offset:6743; GFX90A:       ; %bb.0:6744; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6745; GFX90A-NEXT:    ds_read_b32 v3, v0 offset:655326746; GFX90A-NEXT:    s_mov_b64 s[4:5], 06747; GFX90A-NEXT:  .LBB21_1: ; %atomicrmw.start6748; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=16749; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)6750; GFX90A-NEXT:    v_pk_add_f16 v2, v3, v1 neg_lo:[0,1] neg_hi:[0,1]6751; GFX90A-NEXT:    ds_cmpst_rtn_b32 v2, v0, v3, v2 offset:655326752; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)6753; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v36754; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6755; GFX90A-NEXT:    v_mov_b32_e32 v3, v26756; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]6757; GFX90A-NEXT:    s_cbranch_execnz .LBB21_16758; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end6759; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]6760; GFX90A-NEXT:    v_mov_b32_e32 v0, v26761; GFX90A-NEXT:    s_setpc_b64 s[30:31]6762;6763; GFX908-LABEL: local_atomic_fsub_ret_v2f16__offset:6764; GFX908:       ; %bb.0:6765; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6766; GFX908-NEXT:    ds_read_b32 v2, v0 offset:655326767; GFX908-NEXT:    s_mov_b64 s[4:5], 06768; GFX908-NEXT:  .LBB21_1: ; %atomicrmw.start6769; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=16770; GFX908-NEXT:    s_waitcnt lgkmcnt(0)6771; GFX908-NEXT:    v_mov_b32_e32 v3, v26772; GFX908-NEXT:    v_pk_add_f16 v2, v3, v1 neg_lo:[0,1] neg_hi:[0,1]6773; GFX908-NEXT:    ds_cmpst_rtn_b32 v2, v0, v3, v2 offset:655326774; GFX908-NEXT:    s_waitcnt lgkmcnt(0)6775; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v36776; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6777; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]6778; GFX908-NEXT:    s_cbranch_execnz .LBB21_16779; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end6780; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]6781; GFX908-NEXT:    v_mov_b32_e32 v0, v26782; GFX908-NEXT:    s_setpc_b64 s[30:31]6783;6784; GFX8-LABEL: local_atomic_fsub_ret_v2f16__offset:6785; GFX8:       ; %bb.0:6786; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6787; GFX8-NEXT:    s_mov_b32 m0, -16788; GFX8-NEXT:    ds_read_b32 v2, v0 offset:655326789; GFX8-NEXT:    s_mov_b64 s[4:5], 06790; GFX8-NEXT:  .LBB21_1: ; %atomicrmw.start6791; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=16792; GFX8-NEXT:    s_waitcnt lgkmcnt(0)6793; GFX8-NEXT:    v_mov_b32_e32 v3, v26794; GFX8-NEXT:    v_sub_f16_sdwa v2, v3, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_16795; GFX8-NEXT:    v_sub_f16_e32 v4, v3, v16796; GFX8-NEXT:    v_or_b32_e32 v2, v4, v26797; GFX8-NEXT:    ds_cmpst_rtn_b32 v2, v0, v3, v2 offset:655326798; GFX8-NEXT:    s_waitcnt lgkmcnt(0)6799; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v36800; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6801; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]6802; GFX8-NEXT:    s_cbranch_execnz .LBB21_16803; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end6804; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]6805; GFX8-NEXT:    v_mov_b32_e32 v0, v26806; GFX8-NEXT:    s_setpc_b64 s[30:31]6807;6808; GFX7-LABEL: local_atomic_fsub_ret_v2f16__offset:6809; GFX7:       ; %bb.0:6810; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6811; GFX7-NEXT:    s_mov_b32 m0, -16812; GFX7-NEXT:    ds_read_b32 v3, v0 offset:655326813; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v26814; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v16815; GFX7-NEXT:    s_mov_b64 s[4:5], 06816; GFX7-NEXT:    s_waitcnt lgkmcnt(0)6817; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v36818; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v26819; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v36820; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v46821; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v56822; GFX7-NEXT:  .LBB21_1: ; %atomicrmw.start6823; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=16824; GFX7-NEXT:    v_cvt_f16_f32_e32 v1, v16825; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v26826; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v16827; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v26828; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v16829; GFX7-NEXT:    v_or_b32_e32 v7, v2, v16830; GFX7-NEXT:    v_sub_f32_e32 v5, v5, v36831; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v46832; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v56833; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v66834; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v56835; GFX7-NEXT:    v_or_b32_e32 v1, v6, v16836; GFX7-NEXT:    ds_cmpst_rtn_b32 v5, v0, v7, v1 offset:655326837; GFX7-NEXT:    s_waitcnt lgkmcnt(0)6838; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v56839; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v56840; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v16841; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v76842; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6843; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]6844; GFX7-NEXT:    s_cbranch_execnz .LBB21_16845; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end6846; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]6847; GFX7-NEXT:    v_mov_b32_e32 v0, v26848; GFX7-NEXT:    s_setpc_b64 s[30:31]6849;6850; GFX6-LABEL: local_atomic_fsub_ret_v2f16__offset:6851; GFX6:       ; %bb.0:6852; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6853; GFX6-NEXT:    v_add_i32_e32 v3, vcc, 0xfffc, v06854; GFX6-NEXT:    s_mov_b32 m0, -16855; GFX6-NEXT:    ds_read_b32 v4, v36856; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v26857; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v16858; GFX6-NEXT:    s_mov_b64 s[4:5], 06859; GFX6-NEXT:    s_waitcnt lgkmcnt(0)6860; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v46861; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v46862; GFX6-NEXT:    v_cvt_f32_f16_e32 v1, v16863; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v26864; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v56865; GFX6-NEXT:  .LBB21_1: ; %atomicrmw.start6866; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=16867; GFX6-NEXT:    v_cvt_f16_f32_e32 v1, v16868; GFX6-NEXT:    v_cvt_f16_f32_e32 v0, v06869; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v16870; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v06871; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 16, v16872; GFX6-NEXT:    v_or_b32_e32 v7, v0, v16873; GFX6-NEXT:    v_sub_f32_e32 v5, v5, v26874; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v46875; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v56876; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v66877; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v56878; GFX6-NEXT:    v_or_b32_e32 v0, v6, v06879; GFX6-NEXT:    ds_cmpst_rtn_b32 v5, v3, v7, v06880; GFX6-NEXT:    s_waitcnt lgkmcnt(0)6881; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v56882; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v56883; GFX6-NEXT:    v_cvt_f32_f16_e32 v1, v16884; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v76885; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6886; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]6887; GFX6-NEXT:    s_cbranch_execnz .LBB21_16888; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end6889; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]6890; GFX6-NEXT:    s_setpc_b64 s[30:31]6891  %gep = getelementptr <2 x half>, ptr addrspace(3) %ptr, i32 163836892  %result = atomicrmw fsub ptr addrspace(3) %gep, <2 x half> %val seq_cst6893  ret <2 x half> %result6894}6895 6896define void @local_atomic_fsub_noret_v2f16(ptr addrspace(3) %ptr, <2 x half> %val) {6897; GFX12-LABEL: local_atomic_fsub_noret_v2f16:6898; GFX12:       ; %bb.0:6899; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x06900; GFX12-NEXT:    s_wait_expcnt 0x06901; GFX12-NEXT:    s_wait_samplecnt 0x06902; GFX12-NEXT:    s_wait_bvhcnt 0x06903; GFX12-NEXT:    s_wait_kmcnt 0x06904; GFX12-NEXT:    ds_load_b32 v2, v06905; GFX12-NEXT:    s_mov_b32 s0, 06906; GFX12-NEXT:  .LBB22_1: ; %atomicrmw.start6907; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=16908; GFX12-NEXT:    s_wait_dscnt 0x06909; GFX12-NEXT:    v_pk_add_f16 v3, v2, v1 neg_lo:[0,1] neg_hi:[0,1]6910; GFX12-NEXT:    s_wait_storecnt 0x06911; GFX12-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v26912; GFX12-NEXT:    s_wait_dscnt 0x06913; GFX12-NEXT:    global_inv scope:SCOPE_SE6914; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v26915; GFX12-NEXT:    v_mov_b32_e32 v2, v36916; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)6917; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s06918; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)6919; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06920; GFX12-NEXT:    s_cbranch_execnz .LBB22_16921; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end6922; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s06923; GFX12-NEXT:    s_wait_loadcnt 0x06924; GFX12-NEXT:    s_setpc_b64 s[30:31]6925;6926; GFX942-LABEL: local_atomic_fsub_noret_v2f16:6927; GFX942:       ; %bb.0:6928; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6929; GFX942-NEXT:    ds_read_b32 v2, v06930; GFX942-NEXT:    s_mov_b64 s[0:1], 06931; GFX942-NEXT:  .LBB22_1: ; %atomicrmw.start6932; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=16933; GFX942-NEXT:    s_waitcnt lgkmcnt(0)6934; GFX942-NEXT:    v_pk_add_f16 v3, v2, v1 neg_lo:[0,1] neg_hi:[0,1]6935; GFX942-NEXT:    ds_cmpst_rtn_b32 v3, v0, v2, v36936; GFX942-NEXT:    s_waitcnt lgkmcnt(0)6937; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v26938; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]6939; GFX942-NEXT:    v_mov_b32_e32 v2, v36940; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]6941; GFX942-NEXT:    s_cbranch_execnz .LBB22_16942; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end6943; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]6944; GFX942-NEXT:    s_setpc_b64 s[30:31]6945;6946; GFX11-LABEL: local_atomic_fsub_noret_v2f16:6947; GFX11:       ; %bb.0:6948; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6949; GFX11-NEXT:    ds_load_b32 v2, v06950; GFX11-NEXT:    s_mov_b32 s0, 06951; GFX11-NEXT:  .LBB22_1: ; %atomicrmw.start6952; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=16953; GFX11-NEXT:    s_waitcnt lgkmcnt(0)6954; GFX11-NEXT:    v_pk_add_f16 v3, v2, v1 neg_lo:[0,1] neg_hi:[0,1]6955; GFX11-NEXT:    s_waitcnt_vscnt null, 0x06956; GFX11-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v26957; GFX11-NEXT:    s_waitcnt lgkmcnt(0)6958; GFX11-NEXT:    buffer_gl0_inv6959; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v26960; GFX11-NEXT:    v_mov_b32_e32 v2, v36961; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s06962; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6963; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06964; GFX11-NEXT:    s_cbranch_execnz .LBB22_16965; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end6966; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s06967; GFX11-NEXT:    s_setpc_b64 s[30:31]6968;6969; GFX10-LABEL: local_atomic_fsub_noret_v2f16:6970; GFX10:       ; %bb.0:6971; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6972; GFX10-NEXT:    ds_read_b32 v2, v06973; GFX10-NEXT:    s_mov_b32 s4, 06974; GFX10-NEXT:  .LBB22_1: ; %atomicrmw.start6975; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=16976; GFX10-NEXT:    s_waitcnt lgkmcnt(0)6977; GFX10-NEXT:    v_pk_add_f16 v3, v2, v1 neg_lo:[0,1] neg_hi:[0,1]6978; GFX10-NEXT:    s_waitcnt_vscnt null, 0x06979; GFX10-NEXT:    ds_cmpst_rtn_b32 v3, v0, v2, v36980; GFX10-NEXT:    s_waitcnt lgkmcnt(0)6981; GFX10-NEXT:    buffer_gl0_inv6982; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v26983; GFX10-NEXT:    v_mov_b32_e32 v2, v36984; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s46985; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s46986; GFX10-NEXT:    s_cbranch_execnz .LBB22_16987; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end6988; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s46989; GFX10-NEXT:    s_setpc_b64 s[30:31]6990;6991; GFX90A-LABEL: local_atomic_fsub_noret_v2f16:6992; GFX90A:       ; %bb.0:6993; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6994; GFX90A-NEXT:    ds_read_b32 v2, v06995; GFX90A-NEXT:    s_mov_b64 s[4:5], 06996; GFX90A-NEXT:  .LBB22_1: ; %atomicrmw.start6997; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=16998; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)6999; GFX90A-NEXT:    v_pk_add_f16 v3, v2, v1 neg_lo:[0,1] neg_hi:[0,1]7000; GFX90A-NEXT:    ds_cmpst_rtn_b32 v3, v0, v2, v37001; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)7002; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v27003; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7004; GFX90A-NEXT:    v_mov_b32_e32 v2, v37005; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]7006; GFX90A-NEXT:    s_cbranch_execnz .LBB22_17007; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end7008; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]7009; GFX90A-NEXT:    s_setpc_b64 s[30:31]7010;7011; GFX908-LABEL: local_atomic_fsub_noret_v2f16:7012; GFX908:       ; %bb.0:7013; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7014; GFX908-NEXT:    ds_read_b32 v2, v07015; GFX908-NEXT:    s_mov_b64 s[4:5], 07016; GFX908-NEXT:  .LBB22_1: ; %atomicrmw.start7017; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=17018; GFX908-NEXT:    s_waitcnt lgkmcnt(0)7019; GFX908-NEXT:    v_pk_add_f16 v3, v2, v1 neg_lo:[0,1] neg_hi:[0,1]7020; GFX908-NEXT:    ds_cmpst_rtn_b32 v3, v0, v2, v37021; GFX908-NEXT:    s_waitcnt lgkmcnt(0)7022; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v27023; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7024; GFX908-NEXT:    v_mov_b32_e32 v2, v37025; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]7026; GFX908-NEXT:    s_cbranch_execnz .LBB22_17027; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end7028; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]7029; GFX908-NEXT:    s_setpc_b64 s[30:31]7030;7031; GFX8-LABEL: local_atomic_fsub_noret_v2f16:7032; GFX8:       ; %bb.0:7033; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7034; GFX8-NEXT:    s_mov_b32 m0, -17035; GFX8-NEXT:    ds_read_b32 v2, v07036; GFX8-NEXT:    s_mov_b64 s[4:5], 07037; GFX8-NEXT:  .LBB22_1: ; %atomicrmw.start7038; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=17039; GFX8-NEXT:    s_waitcnt lgkmcnt(0)7040; GFX8-NEXT:    v_sub_f16_sdwa v3, v2, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_17041; GFX8-NEXT:    v_sub_f16_e32 v4, v2, v17042; GFX8-NEXT:    v_or_b32_e32 v3, v4, v37043; GFX8-NEXT:    ds_cmpst_rtn_b32 v3, v0, v2, v37044; GFX8-NEXT:    s_waitcnt lgkmcnt(0)7045; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v27046; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7047; GFX8-NEXT:    v_mov_b32_e32 v2, v37048; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]7049; GFX8-NEXT:    s_cbranch_execnz .LBB22_17050; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end7051; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]7052; GFX8-NEXT:    s_setpc_b64 s[30:31]7053;7054; GFX7-LABEL: local_atomic_fsub_noret_v2f16:7055; GFX7:       ; %bb.0:7056; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7057; GFX7-NEXT:    s_mov_b32 m0, -17058; GFX7-NEXT:    ds_read_b32 v3, v07059; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v27060; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v17061; GFX7-NEXT:    s_mov_b64 s[4:5], 07062; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v27063; GFX7-NEXT:    s_waitcnt lgkmcnt(0)7064; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v37065; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v47066; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v37067; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v57068; GFX7-NEXT:  .LBB22_1: ; %atomicrmw.start7069; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=17070; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v47071; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v37072; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v47073; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v37074; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v47075; GFX7-NEXT:    v_or_b32_e32 v7, v3, v47076; GFX7-NEXT:    v_sub_f32_e32 v5, v5, v17077; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v27078; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v57079; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v67080; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v57081; GFX7-NEXT:    v_or_b32_e32 v3, v6, v37082; GFX7-NEXT:    ds_cmpst_rtn_b32 v5, v0, v7, v37083; GFX7-NEXT:    s_waitcnt lgkmcnt(0)7084; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v57085; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v57086; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v47087; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v77088; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7089; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]7090; GFX7-NEXT:    s_cbranch_execnz .LBB22_17091; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end7092; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]7093; GFX7-NEXT:    s_setpc_b64 s[30:31]7094;7095; GFX6-LABEL: local_atomic_fsub_noret_v2f16:7096; GFX6:       ; %bb.0:7097; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7098; GFX6-NEXT:    s_mov_b32 m0, -17099; GFX6-NEXT:    ds_read_b32 v3, v07100; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v27101; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v17102; GFX6-NEXT:    s_mov_b64 s[4:5], 07103; GFX6-NEXT:    v_cvt_f32_f16_e32 v1, v27104; GFX6-NEXT:    s_waitcnt lgkmcnt(0)7105; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v37106; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v47107; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v37108; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v57109; GFX6-NEXT:  .LBB22_1: ; %atomicrmw.start7110; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=17111; GFX6-NEXT:    v_cvt_f16_f32_e32 v4, v47112; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v37113; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v47114; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v37115; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v47116; GFX6-NEXT:    v_or_b32_e32 v7, v3, v47117; GFX6-NEXT:    v_sub_f32_e32 v5, v5, v17118; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v27119; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v57120; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v67121; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v57122; GFX6-NEXT:    v_or_b32_e32 v3, v6, v37123; GFX6-NEXT:    ds_cmpst_rtn_b32 v5, v0, v7, v37124; GFX6-NEXT:    s_waitcnt lgkmcnt(0)7125; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v57126; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v57127; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v47128; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v77129; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7130; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]7131; GFX6-NEXT:    s_cbranch_execnz .LBB22_17132; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end7133; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]7134; GFX6-NEXT:    s_setpc_b64 s[30:31]7135  %result = atomicrmw fsub ptr addrspace(3) %ptr, <2 x half> %val seq_cst7136  ret void7137}7138 7139define void @local_atomic_fsub_noret_v2f16__offset(ptr addrspace(3) %ptr, <2 x half> %val) {7140; GFX12-LABEL: local_atomic_fsub_noret_v2f16__offset:7141; GFX12:       ; %bb.0:7142; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x07143; GFX12-NEXT:    s_wait_expcnt 0x07144; GFX12-NEXT:    s_wait_samplecnt 0x07145; GFX12-NEXT:    s_wait_bvhcnt 0x07146; GFX12-NEXT:    s_wait_kmcnt 0x07147; GFX12-NEXT:    ds_load_b32 v2, v0 offset:655327148; GFX12-NEXT:    s_mov_b32 s0, 07149; GFX12-NEXT:  .LBB23_1: ; %atomicrmw.start7150; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=17151; GFX12-NEXT:    s_wait_dscnt 0x07152; GFX12-NEXT:    v_pk_add_f16 v3, v2, v1 neg_lo:[0,1] neg_hi:[0,1]7153; GFX12-NEXT:    s_wait_storecnt 0x07154; GFX12-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v2 offset:655327155; GFX12-NEXT:    s_wait_dscnt 0x07156; GFX12-NEXT:    global_inv scope:SCOPE_SE7157; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v27158; GFX12-NEXT:    v_mov_b32_e32 v2, v37159; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)7160; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s07161; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)7162; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07163; GFX12-NEXT:    s_cbranch_execnz .LBB23_17164; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end7165; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s07166; GFX12-NEXT:    s_wait_loadcnt 0x07167; GFX12-NEXT:    s_setpc_b64 s[30:31]7168;7169; GFX942-LABEL: local_atomic_fsub_noret_v2f16__offset:7170; GFX942:       ; %bb.0:7171; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7172; GFX942-NEXT:    ds_read_b32 v2, v0 offset:655327173; GFX942-NEXT:    s_mov_b64 s[0:1], 07174; GFX942-NEXT:  .LBB23_1: ; %atomicrmw.start7175; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=17176; GFX942-NEXT:    s_waitcnt lgkmcnt(0)7177; GFX942-NEXT:    v_pk_add_f16 v3, v2, v1 neg_lo:[0,1] neg_hi:[0,1]7178; GFX942-NEXT:    ds_cmpst_rtn_b32 v3, v0, v2, v3 offset:655327179; GFX942-NEXT:    s_waitcnt lgkmcnt(0)7180; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v27181; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]7182; GFX942-NEXT:    v_mov_b32_e32 v2, v37183; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]7184; GFX942-NEXT:    s_cbranch_execnz .LBB23_17185; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end7186; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]7187; GFX942-NEXT:    s_setpc_b64 s[30:31]7188;7189; GFX11-LABEL: local_atomic_fsub_noret_v2f16__offset:7190; GFX11:       ; %bb.0:7191; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7192; GFX11-NEXT:    ds_load_b32 v2, v0 offset:655327193; GFX11-NEXT:    s_mov_b32 s0, 07194; GFX11-NEXT:  .LBB23_1: ; %atomicrmw.start7195; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=17196; GFX11-NEXT:    s_waitcnt lgkmcnt(0)7197; GFX11-NEXT:    v_pk_add_f16 v3, v2, v1 neg_lo:[0,1] neg_hi:[0,1]7198; GFX11-NEXT:    s_waitcnt_vscnt null, 0x07199; GFX11-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v2 offset:655327200; GFX11-NEXT:    s_waitcnt lgkmcnt(0)7201; GFX11-NEXT:    buffer_gl0_inv7202; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v27203; GFX11-NEXT:    v_mov_b32_e32 v2, v37204; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s07205; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7206; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07207; GFX11-NEXT:    s_cbranch_execnz .LBB23_17208; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end7209; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s07210; GFX11-NEXT:    s_setpc_b64 s[30:31]7211;7212; GFX10-LABEL: local_atomic_fsub_noret_v2f16__offset:7213; GFX10:       ; %bb.0:7214; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7215; GFX10-NEXT:    ds_read_b32 v2, v0 offset:655327216; GFX10-NEXT:    s_mov_b32 s4, 07217; GFX10-NEXT:  .LBB23_1: ; %atomicrmw.start7218; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=17219; GFX10-NEXT:    s_waitcnt lgkmcnt(0)7220; GFX10-NEXT:    v_pk_add_f16 v3, v2, v1 neg_lo:[0,1] neg_hi:[0,1]7221; GFX10-NEXT:    s_waitcnt_vscnt null, 0x07222; GFX10-NEXT:    ds_cmpst_rtn_b32 v3, v0, v2, v3 offset:655327223; GFX10-NEXT:    s_waitcnt lgkmcnt(0)7224; GFX10-NEXT:    buffer_gl0_inv7225; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v27226; GFX10-NEXT:    v_mov_b32_e32 v2, v37227; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s47228; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s47229; GFX10-NEXT:    s_cbranch_execnz .LBB23_17230; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end7231; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s47232; GFX10-NEXT:    s_setpc_b64 s[30:31]7233;7234; GFX90A-LABEL: local_atomic_fsub_noret_v2f16__offset:7235; GFX90A:       ; %bb.0:7236; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7237; GFX90A-NEXT:    ds_read_b32 v2, v0 offset:655327238; GFX90A-NEXT:    s_mov_b64 s[4:5], 07239; GFX90A-NEXT:  .LBB23_1: ; %atomicrmw.start7240; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=17241; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)7242; GFX90A-NEXT:    v_pk_add_f16 v3, v2, v1 neg_lo:[0,1] neg_hi:[0,1]7243; GFX90A-NEXT:    ds_cmpst_rtn_b32 v3, v0, v2, v3 offset:655327244; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)7245; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v27246; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7247; GFX90A-NEXT:    v_mov_b32_e32 v2, v37248; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]7249; GFX90A-NEXT:    s_cbranch_execnz .LBB23_17250; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end7251; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]7252; GFX90A-NEXT:    s_setpc_b64 s[30:31]7253;7254; GFX908-LABEL: local_atomic_fsub_noret_v2f16__offset:7255; GFX908:       ; %bb.0:7256; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7257; GFX908-NEXT:    ds_read_b32 v2, v0 offset:655327258; GFX908-NEXT:    s_mov_b64 s[4:5], 07259; GFX908-NEXT:  .LBB23_1: ; %atomicrmw.start7260; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=17261; GFX908-NEXT:    s_waitcnt lgkmcnt(0)7262; GFX908-NEXT:    v_pk_add_f16 v3, v2, v1 neg_lo:[0,1] neg_hi:[0,1]7263; GFX908-NEXT:    ds_cmpst_rtn_b32 v3, v0, v2, v3 offset:655327264; GFX908-NEXT:    s_waitcnt lgkmcnt(0)7265; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v27266; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7267; GFX908-NEXT:    v_mov_b32_e32 v2, v37268; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]7269; GFX908-NEXT:    s_cbranch_execnz .LBB23_17270; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end7271; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]7272; GFX908-NEXT:    s_setpc_b64 s[30:31]7273;7274; GFX8-LABEL: local_atomic_fsub_noret_v2f16__offset:7275; GFX8:       ; %bb.0:7276; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7277; GFX8-NEXT:    s_mov_b32 m0, -17278; GFX8-NEXT:    ds_read_b32 v2, v0 offset:655327279; GFX8-NEXT:    s_mov_b64 s[4:5], 07280; GFX8-NEXT:  .LBB23_1: ; %atomicrmw.start7281; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=17282; GFX8-NEXT:    s_waitcnt lgkmcnt(0)7283; GFX8-NEXT:    v_sub_f16_sdwa v3, v2, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_17284; GFX8-NEXT:    v_sub_f16_e32 v4, v2, v17285; GFX8-NEXT:    v_or_b32_e32 v3, v4, v37286; GFX8-NEXT:    ds_cmpst_rtn_b32 v3, v0, v2, v3 offset:655327287; GFX8-NEXT:    s_waitcnt lgkmcnt(0)7288; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v27289; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7290; GFX8-NEXT:    v_mov_b32_e32 v2, v37291; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]7292; GFX8-NEXT:    s_cbranch_execnz .LBB23_17293; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end7294; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]7295; GFX8-NEXT:    s_setpc_b64 s[30:31]7296;7297; GFX7-LABEL: local_atomic_fsub_noret_v2f16__offset:7298; GFX7:       ; %bb.0:7299; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7300; GFX7-NEXT:    s_mov_b32 m0, -17301; GFX7-NEXT:    ds_read_b32 v3, v0 offset:655327302; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v27303; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v17304; GFX7-NEXT:    s_mov_b64 s[4:5], 07305; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v27306; GFX7-NEXT:    s_waitcnt lgkmcnt(0)7307; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v37308; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v47309; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v37310; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v57311; GFX7-NEXT:  .LBB23_1: ; %atomicrmw.start7312; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=17313; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v47314; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v37315; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v47316; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v37317; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v47318; GFX7-NEXT:    v_or_b32_e32 v7, v3, v47319; GFX7-NEXT:    v_sub_f32_e32 v5, v5, v17320; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v27321; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v57322; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v67323; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v57324; GFX7-NEXT:    v_or_b32_e32 v3, v6, v37325; GFX7-NEXT:    ds_cmpst_rtn_b32 v5, v0, v7, v3 offset:655327326; GFX7-NEXT:    s_waitcnt lgkmcnt(0)7327; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v57328; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v57329; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v47330; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v77331; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7332; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]7333; GFX7-NEXT:    s_cbranch_execnz .LBB23_17334; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end7335; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]7336; GFX7-NEXT:    s_setpc_b64 s[30:31]7337;7338; GFX6-LABEL: local_atomic_fsub_noret_v2f16__offset:7339; GFX6:       ; %bb.0:7340; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7341; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffc, v07342; GFX6-NEXT:    s_mov_b32 m0, -17343; GFX6-NEXT:    ds_read_b32 v4, v07344; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v27345; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v17346; GFX6-NEXT:    s_mov_b64 s[4:5], 07347; GFX6-NEXT:    s_waitcnt lgkmcnt(0)7348; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v47349; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v47350; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v17351; GFX6-NEXT:    v_cvt_f32_f16_e32 v1, v27352; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v57353; GFX6-NEXT:  .LBB23_1: ; %atomicrmw.start7354; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=17355; GFX6-NEXT:    v_cvt_f16_f32_e32 v4, v47356; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v37357; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v47358; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v37359; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v47360; GFX6-NEXT:    v_or_b32_e32 v7, v3, v47361; GFX6-NEXT:    v_sub_f32_e32 v5, v5, v17362; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v27363; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v57364; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v67365; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v57366; GFX6-NEXT:    v_or_b32_e32 v3, v6, v37367; GFX6-NEXT:    ds_cmpst_rtn_b32 v5, v0, v7, v37368; GFX6-NEXT:    s_waitcnt lgkmcnt(0)7369; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v57370; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v57371; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v47372; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v77373; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7374; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]7375; GFX6-NEXT:    s_cbranch_execnz .LBB23_17376; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end7377; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]7378; GFX6-NEXT:    s_setpc_b64 s[30:31]7379  %gep = getelementptr <2 x half>, ptr addrspace(3) %ptr, i32 163837380  %result = atomicrmw fsub ptr addrspace(3) %gep, <2 x half> %val seq_cst7381  ret void7382}7383 7384; --------------------------------------------------------------------7385; <2 x bfloat>7386; --------------------------------------------------------------------7387 7388define <2 x bfloat> @local_atomic_fsub_ret_v2bf16(ptr addrspace(3) %ptr, <2 x bfloat> %val) {7389; GFX12-TRUE16-LABEL: local_atomic_fsub_ret_v2bf16:7390; GFX12-TRUE16:       ; %bb.0:7391; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x07392; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x07393; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x07394; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x07395; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x07396; GFX12-TRUE16-NEXT:    ds_load_b32 v2, v07397; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 0xffff0000, v17398; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v17399; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 07400; GFX12-TRUE16-NEXT:  .LBB24_1: ; %atomicrmw.start7401; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17402; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x07403; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v27404; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7405; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47406; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v37407; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)7408; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v5, 16, 17409; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v57410; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff7411; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v47412; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7413; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v2, v2, v17414; GFX12-TRUE16-NEXT:    v_bfe_u32 v6, v2, 16, 17415; GFX12-TRUE16-NEXT:    v_or_b32_e32 v8, 0x400000, v27416; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v27417; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)7418; GFX12-TRUE16-NEXT:    v_add3_u32 v6, v6, v2, 0x7fff7419; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)7420; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v6, v8, vcc_lo7421; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v57422; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)7423; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo7424; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)7425; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v2.h7426; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x07427; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v5, v47428; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x07429; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE7430; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v47431; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7432; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07433; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7434; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07435; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB24_17436; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7437; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07438; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v27439; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07440; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]7441;7442; GFX12-FAKE16-LABEL: local_atomic_fsub_ret_v2bf16:7443; GFX12-FAKE16:       ; %bb.0:7444; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07445; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x07446; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x07447; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x07448; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x07449; GFX12-FAKE16-NEXT:    ds_load_b32 v2, v07450; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v17451; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff0000, v17452; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 07453; GFX12-FAKE16-NEXT:  .LBB24_1: ; %atomicrmw.start7454; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17455; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x07456; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v27457; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7458; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47459; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v17460; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)7461; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 17462; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v57463; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v57464; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff7465; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)7466; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7467; GFX12-FAKE16-NEXT:    v_dual_cndmask_b32 v5, v7, v9 :: v_dual_lshlrev_b32 v2, 16, v47468; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v37469; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)7470; GFX12-FAKE16-NEXT:    v_bfe_u32 v6, v2, 16, 17471; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v27472; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v27473; GFX12-FAKE16-NEXT:    v_add3_u32 v6, v6, v2, 0x7fff7474; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)7475; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7476; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v6, v8, s07477; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v5, v2, 0x70603027478; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x07479; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v47480; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x07481; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE7482; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v47483; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7484; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s17485; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7486; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s17487; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB24_17488; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7489; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s17490; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v27491; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07492; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]7493;7494; GFX942-LABEL: local_atomic_fsub_ret_v2bf16:7495; GFX942:       ; %bb.0:7496; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7497; GFX942-NEXT:    ds_read_b32 v4, v07498; GFX942-NEXT:    s_mov_b64 s[2:3], 07499; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v17500; GFX942-NEXT:    s_movk_i32 s4, 0x7fff7501; GFX942-NEXT:    v_and_b32_e32 v3, 0xffff0000, v17502; GFX942-NEXT:    s_mov_b32 s5, 0x70603027503; GFX942-NEXT:  .LBB24_1: ; %atomicrmw.start7504; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=17505; GFX942-NEXT:    s_waitcnt lgkmcnt(0)7506; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 16, v47507; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47508; GFX942-NEXT:    v_sub_f32_e32 v1, v1, v27509; GFX942-NEXT:    v_sub_f32_e32 v5, v5, v37510; GFX942-NEXT:    v_bfe_u32 v6, v1, 16, 17511; GFX942-NEXT:    v_bfe_u32 v8, v5, 16, 17512; GFX942-NEXT:    v_or_b32_e32 v7, 0x400000, v17513; GFX942-NEXT:    v_or_b32_e32 v9, 0x400000, v57514; GFX942-NEXT:    v_add3_u32 v6, v6, v1, s47515; GFX942-NEXT:    v_add3_u32 v8, v8, v5, s47516; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v5, v57517; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v1, v17518; GFX942-NEXT:    s_nop 07519; GFX942-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc7520; GFX942-NEXT:    v_cndmask_b32_e64 v1, v6, v7, s[0:1]7521; GFX942-NEXT:    v_perm_b32 v1, v5, v1, s57522; GFX942-NEXT:    ds_cmpst_rtn_b32 v1, v0, v4, v17523; GFX942-NEXT:    s_waitcnt lgkmcnt(0)7524; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v47525; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]7526; GFX942-NEXT:    v_mov_b32_e32 v4, v17527; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]7528; GFX942-NEXT:    s_cbranch_execnz .LBB24_17529; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end7530; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]7531; GFX942-NEXT:    v_mov_b32_e32 v0, v17532; GFX942-NEXT:    s_setpc_b64 s[30:31]7533;7534; GFX11-TRUE16-LABEL: local_atomic_fsub_ret_v2bf16:7535; GFX11-TRUE16:       ; %bb.0:7536; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7537; GFX11-TRUE16-NEXT:    ds_load_b32 v2, v07538; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 0xffff0000, v17539; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v17540; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 07541; GFX11-TRUE16-NEXT:    .p2align 67542; GFX11-TRUE16-NEXT:  .LBB24_1: ; %atomicrmw.start7543; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17544; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)7545; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v27546; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7547; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47548; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v37549; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)7550; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v5, 16, 17551; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v57552; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff7553; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v47554; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7555; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v2, v2, v17556; GFX11-TRUE16-NEXT:    v_bfe_u32 v6, v2, 16, 17557; GFX11-TRUE16-NEXT:    v_or_b32_e32 v8, 0x400000, v27558; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v27559; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)7560; GFX11-TRUE16-NEXT:    v_add3_u32 v6, v6, v2, 0x7fff7561; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v6, v8, vcc_lo7562; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v57563; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo7564; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)7565; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v2.h7566; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x07567; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v5, v47568; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)7569; GFX11-TRUE16-NEXT:    buffer_gl0_inv7570; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v47571; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07572; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7573; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07574; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB24_17575; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7576; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07577; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, v27578; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]7579;7580; GFX11-FAKE16-LABEL: local_atomic_fsub_ret_v2bf16:7581; GFX11-FAKE16:       ; %bb.0:7582; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7583; GFX11-FAKE16-NEXT:    ds_load_b32 v2, v07584; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v17585; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff0000, v17586; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 07587; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x17588; GFX11-FAKE16-NEXT:    .p2align 67589; GFX11-FAKE16-NEXT:  .LBB24_1: ; %atomicrmw.start7590; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17591; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)7592; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v27593; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7594; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47595; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v17596; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)7597; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 17598; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v57599; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v57600; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff7601; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7602; GFX11-FAKE16-NEXT:    v_dual_cndmask_b32 v5, v7, v9 :: v_dual_lshlrev_b32 v2, 16, v47603; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v37604; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)7605; GFX11-FAKE16-NEXT:    v_bfe_u32 v6, v2, 16, 17606; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v27607; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v27608; GFX11-FAKE16-NEXT:    v_add3_u32 v6, v6, v2, 0x7fff7609; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7610; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v6, v8, s07611; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v5, v2, 0x70603027612; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x07613; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v47614; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)7615; GFX11-FAKE16-NEXT:    buffer_gl0_inv7616; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v47617; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s17618; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7619; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s17620; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB24_17621; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7622; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x27623; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s17624; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v27625; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]7626;7627; GFX10-LABEL: local_atomic_fsub_ret_v2bf16:7628; GFX10:       ; %bb.0:7629; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7630; GFX10-NEXT:    ds_read_b32 v2, v07631; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 16, v17632; GFX10-NEXT:    v_and_b32_e32 v1, 0xffff0000, v17633; GFX10-NEXT:    s_mov_b32 s5, 07634; GFX10-NEXT:  .LBB24_1: ; %atomicrmw.start7635; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=17636; GFX10-NEXT:    s_waitcnt lgkmcnt(0)7637; GFX10-NEXT:    v_mov_b32_e32 v4, v27638; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v47639; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47640; GFX10-NEXT:    v_sub_f32_e32 v2, v2, v37641; GFX10-NEXT:    v_sub_f32_e32 v5, v5, v17642; GFX10-NEXT:    v_bfe_u32 v6, v2, 16, 17643; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 17644; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v27645; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v57646; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v57647; GFX10-NEXT:    v_add3_u32 v6, v6, v2, 0x7fff7648; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff7649; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v2, v27650; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo7651; GFX10-NEXT:    v_cndmask_b32_e64 v2, v6, v8, s47652; GFX10-NEXT:    v_perm_b32 v2, v5, v2, 0x70603027653; GFX10-NEXT:    s_waitcnt_vscnt null, 0x07654; GFX10-NEXT:    ds_cmpst_rtn_b32 v2, v0, v4, v27655; GFX10-NEXT:    s_waitcnt lgkmcnt(0)7656; GFX10-NEXT:    buffer_gl0_inv7657; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v47658; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s57659; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s57660; GFX10-NEXT:    s_cbranch_execnz .LBB24_17661; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end7662; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s57663; GFX10-NEXT:    v_mov_b32_e32 v0, v27664; GFX10-NEXT:    s_setpc_b64 s[30:31]7665;7666; GFX90A-LABEL: local_atomic_fsub_ret_v2bf16:7667; GFX90A:       ; %bb.0:7668; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7669; GFX90A-NEXT:    ds_read_b32 v4, v07670; GFX90A-NEXT:    s_mov_b64 s[6:7], 07671; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v17672; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff7673; GFX90A-NEXT:    v_and_b32_e32 v3, 0xffff0000, v17674; GFX90A-NEXT:    s_mov_b32 s9, 0x70603027675; GFX90A-NEXT:  .LBB24_1: ; %atomicrmw.start7676; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=17677; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)7678; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 16, v47679; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47680; GFX90A-NEXT:    v_sub_f32_e32 v1, v1, v27681; GFX90A-NEXT:    v_sub_f32_e32 v5, v5, v37682; GFX90A-NEXT:    v_bfe_u32 v6, v1, 16, 17683; GFX90A-NEXT:    v_bfe_u32 v8, v5, 16, 17684; GFX90A-NEXT:    v_or_b32_e32 v7, 0x400000, v17685; GFX90A-NEXT:    v_or_b32_e32 v9, 0x400000, v57686; GFX90A-NEXT:    v_add3_u32 v6, v6, v1, s87687; GFX90A-NEXT:    v_add3_u32 v8, v8, v5, s87688; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v5, v57689; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v1, v17690; GFX90A-NEXT:    v_cndmask_b32_e64 v1, v6, v7, s[4:5]7691; GFX90A-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc7692; GFX90A-NEXT:    v_perm_b32 v1, v5, v1, s97693; GFX90A-NEXT:    ds_cmpst_rtn_b32 v1, v0, v4, v17694; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)7695; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v47696; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]7697; GFX90A-NEXT:    v_mov_b32_e32 v4, v17698; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]7699; GFX90A-NEXT:    s_cbranch_execnz .LBB24_17700; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end7701; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]7702; GFX90A-NEXT:    v_mov_b32_e32 v0, v17703; GFX90A-NEXT:    s_setpc_b64 s[30:31]7704;7705; GFX908-LABEL: local_atomic_fsub_ret_v2bf16:7706; GFX908:       ; %bb.0:7707; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7708; GFX908-NEXT:    ds_read_b32 v2, v07709; GFX908-NEXT:    s_mov_b64 s[6:7], 07710; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v17711; GFX908-NEXT:    s_movk_i32 s8, 0x7fff7712; GFX908-NEXT:    v_and_b32_e32 v1, 0xffff0000, v17713; GFX908-NEXT:    s_mov_b32 s9, 0x70603027714; GFX908-NEXT:  .LBB24_1: ; %atomicrmw.start7715; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=17716; GFX908-NEXT:    s_waitcnt lgkmcnt(0)7717; GFX908-NEXT:    v_mov_b32_e32 v4, v27718; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v47719; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47720; GFX908-NEXT:    v_sub_f32_e32 v2, v2, v37721; GFX908-NEXT:    v_sub_f32_e32 v5, v5, v17722; GFX908-NEXT:    v_bfe_u32 v6, v2, 16, 17723; GFX908-NEXT:    v_bfe_u32 v8, v5, 16, 17724; GFX908-NEXT:    v_or_b32_e32 v7, 0x400000, v27725; GFX908-NEXT:    v_or_b32_e32 v9, 0x400000, v57726; GFX908-NEXT:    v_add3_u32 v6, v6, v2, s87727; GFX908-NEXT:    v_add3_u32 v8, v8, v5, s87728; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v57729; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v27730; GFX908-NEXT:    v_cndmask_b32_e64 v2, v6, v7, s[4:5]7731; GFX908-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc7732; GFX908-NEXT:    v_perm_b32 v2, v5, v2, s97733; GFX908-NEXT:    ds_cmpst_rtn_b32 v2, v0, v4, v27734; GFX908-NEXT:    s_waitcnt lgkmcnt(0)7735; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v47736; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]7737; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]7738; GFX908-NEXT:    s_cbranch_execnz .LBB24_17739; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end7740; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]7741; GFX908-NEXT:    v_mov_b32_e32 v0, v27742; GFX908-NEXT:    s_setpc_b64 s[30:31]7743;7744; GFX8-LABEL: local_atomic_fsub_ret_v2bf16:7745; GFX8:       ; %bb.0:7746; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7747; GFX8-NEXT:    s_mov_b32 m0, -17748; GFX8-NEXT:    ds_read_b32 v2, v07749; GFX8-NEXT:    s_mov_b64 s[6:7], 07750; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 16, v17751; GFX8-NEXT:    v_and_b32_e32 v1, 0xffff0000, v17752; GFX8-NEXT:  .LBB24_1: ; %atomicrmw.start7753; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=17754; GFX8-NEXT:    s_waitcnt lgkmcnt(0)7755; GFX8-NEXT:    v_mov_b32_e32 v4, v27756; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v47757; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47758; GFX8-NEXT:    v_sub_f32_e32 v2, v2, v37759; GFX8-NEXT:    v_sub_f32_e32 v5, v5, v17760; GFX8-NEXT:    v_bfe_u32 v6, v2, 16, 17761; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 17762; GFX8-NEXT:    v_add_u32_e32 v6, vcc, v6, v27763; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v57764; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0x7fff, v67765; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v87766; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v57767; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v57768; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v27769; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v27770; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc7771; GFX8-NEXT:    v_cndmask_b32_e64 v2, v6, v7, s[4:5]7772; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v57773; GFX8-NEXT:    v_alignbit_b32 v2, v5, v2, 167774; GFX8-NEXT:    ds_cmpst_rtn_b32 v2, v0, v4, v27775; GFX8-NEXT:    s_waitcnt lgkmcnt(0)7776; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v47777; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]7778; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]7779; GFX8-NEXT:    s_cbranch_execnz .LBB24_17780; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end7781; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]7782; GFX8-NEXT:    v_mov_b32_e32 v0, v27783; GFX8-NEXT:    s_setpc_b64 s[30:31]7784;7785; GFX7-LABEL: local_atomic_fsub_ret_v2bf16:7786; GFX7:       ; %bb.0:7787; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7788; GFX7-NEXT:    s_mov_b32 m0, -17789; GFX7-NEXT:    ds_read_b32 v3, v07790; GFX7-NEXT:    v_mov_b32_e32 v4, v17791; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v47792; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v27793; GFX7-NEXT:    s_mov_b64 s[4:5], 07794; GFX7-NEXT:    s_waitcnt lgkmcnt(0)7795; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v37796; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v37797; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v47798; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v27799; GFX7-NEXT:  .LBB24_1: ; %atomicrmw.start7800; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=17801; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v17802; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v37803; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v17804; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v37805; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v17806; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v27807; GFX7-NEXT:    v_sub_f32_e32 v5, v5, v47808; GFX7-NEXT:    v_alignbit_b32 v1, v1, v3, 167809; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v67810; GFX7-NEXT:    v_alignbit_b32 v3, v3, v5, 167811; GFX7-NEXT:    ds_cmpst_rtn_b32 v3, v0, v1, v37812; GFX7-NEXT:    s_waitcnt lgkmcnt(0)7813; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v17814; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v37815; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7816; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v37817; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]7818; GFX7-NEXT:    s_cbranch_execnz .LBB24_17819; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end7820; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]7821; GFX7-NEXT:    v_mov_b32_e32 v0, v37822; GFX7-NEXT:    s_setpc_b64 s[30:31]7823;7824; GFX6-LABEL: local_atomic_fsub_ret_v2bf16:7825; GFX6:       ; %bb.0:7826; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7827; GFX6-NEXT:    s_mov_b32 m0, -17828; GFX6-NEXT:    ds_read_b32 v3, v07829; GFX6-NEXT:    v_mov_b32_e32 v4, v17830; GFX6-NEXT:    v_mul_f32_e32 v4, 1.0, v47831; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v27832; GFX6-NEXT:    s_mov_b64 s[4:5], 07833; GFX6-NEXT:    s_waitcnt lgkmcnt(0)7834; GFX6-NEXT:    v_and_b32_e32 v1, 0xffff0000, v37835; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v37836; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v47837; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v27838; GFX6-NEXT:  .LBB24_1: ; %atomicrmw.start7839; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=17840; GFX6-NEXT:    v_mul_f32_e32 v1, 1.0, v17841; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v37842; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v17843; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v37844; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v17845; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v27846; GFX6-NEXT:    v_sub_f32_e32 v5, v5, v47847; GFX6-NEXT:    v_alignbit_b32 v1, v1, v3, 167848; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v67849; GFX6-NEXT:    v_alignbit_b32 v3, v3, v5, 167850; GFX6-NEXT:    ds_cmpst_rtn_b32 v3, v0, v1, v37851; GFX6-NEXT:    s_waitcnt lgkmcnt(0)7852; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v17853; GFX6-NEXT:    v_and_b32_e32 v1, 0xffff0000, v37854; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7855; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v37856; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]7857; GFX6-NEXT:    s_cbranch_execnz .LBB24_17858; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end7859; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]7860; GFX6-NEXT:    v_mov_b32_e32 v0, v37861; GFX6-NEXT:    s_setpc_b64 s[30:31]7862  %result = atomicrmw fsub ptr addrspace(3) %ptr, <2 x bfloat> %val seq_cst7863  ret <2 x bfloat> %result7864}7865 7866define <2 x bfloat> @local_atomic_fsub_ret_v2bf16__offset(ptr addrspace(3) %ptr, <2 x bfloat> %val) {7867; GFX12-TRUE16-LABEL: local_atomic_fsub_ret_v2bf16__offset:7868; GFX12-TRUE16:       ; %bb.0:7869; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x07870; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x07871; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x07872; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x07873; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x07874; GFX12-TRUE16-NEXT:    ds_load_b32 v2, v0 offset:655327875; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 0xffff0000, v17876; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v17877; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 07878; GFX12-TRUE16-NEXT:  .LBB25_1: ; %atomicrmw.start7879; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17880; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x07881; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v27882; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7883; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47884; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v37885; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)7886; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v5, 16, 17887; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v57888; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff7889; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v47890; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7891; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v2, v2, v17892; GFX12-TRUE16-NEXT:    v_bfe_u32 v6, v2, 16, 17893; GFX12-TRUE16-NEXT:    v_or_b32_e32 v8, 0x400000, v27894; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v27895; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)7896; GFX12-TRUE16-NEXT:    v_add3_u32 v6, v6, v2, 0x7fff7897; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)7898; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v6, v8, vcc_lo7899; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v57900; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)7901; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo7902; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)7903; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v2.h7904; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x07905; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v5, v4 offset:655327906; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x07907; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE7908; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v47909; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7910; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07911; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7912; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07913; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB25_17914; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7915; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07916; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v27917; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07918; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]7919;7920; GFX12-FAKE16-LABEL: local_atomic_fsub_ret_v2bf16__offset:7921; GFX12-FAKE16:       ; %bb.0:7922; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07923; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x07924; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x07925; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x07926; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x07927; GFX12-FAKE16-NEXT:    ds_load_b32 v2, v0 offset:655327928; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v17929; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff0000, v17930; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 07931; GFX12-FAKE16-NEXT:  .LBB25_1: ; %atomicrmw.start7932; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17933; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x07934; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v27935; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7936; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47937; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v17938; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)7939; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 17940; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v57941; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v57942; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff7943; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)7944; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7945; GFX12-FAKE16-NEXT:    v_dual_cndmask_b32 v5, v7, v9 :: v_dual_lshlrev_b32 v2, 16, v47946; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v37947; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)7948; GFX12-FAKE16-NEXT:    v_bfe_u32 v6, v2, 16, 17949; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v27950; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v27951; GFX12-FAKE16-NEXT:    v_add3_u32 v6, v6, v2, 0x7fff7952; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)7953; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7954; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v6, v8, s07955; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v5, v2, 0x70603027956; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x07957; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v4 offset:655327958; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x07959; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE7960; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v47961; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7962; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s17963; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7964; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s17965; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB25_17966; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7967; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s17968; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v27969; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07970; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]7971;7972; GFX942-LABEL: local_atomic_fsub_ret_v2bf16__offset:7973; GFX942:       ; %bb.0:7974; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7975; GFX942-NEXT:    ds_read_b32 v4, v0 offset:655327976; GFX942-NEXT:    s_mov_b64 s[2:3], 07977; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v17978; GFX942-NEXT:    s_movk_i32 s4, 0x7fff7979; GFX942-NEXT:    v_and_b32_e32 v3, 0xffff0000, v17980; GFX942-NEXT:    s_mov_b32 s5, 0x70603027981; GFX942-NEXT:  .LBB25_1: ; %atomicrmw.start7982; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=17983; GFX942-NEXT:    s_waitcnt lgkmcnt(0)7984; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 16, v47985; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47986; GFX942-NEXT:    v_sub_f32_e32 v1, v1, v27987; GFX942-NEXT:    v_sub_f32_e32 v5, v5, v37988; GFX942-NEXT:    v_bfe_u32 v6, v1, 16, 17989; GFX942-NEXT:    v_bfe_u32 v8, v5, 16, 17990; GFX942-NEXT:    v_or_b32_e32 v7, 0x400000, v17991; GFX942-NEXT:    v_or_b32_e32 v9, 0x400000, v57992; GFX942-NEXT:    v_add3_u32 v6, v6, v1, s47993; GFX942-NEXT:    v_add3_u32 v8, v8, v5, s47994; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v5, v57995; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v1, v17996; GFX942-NEXT:    s_nop 07997; GFX942-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc7998; GFX942-NEXT:    v_cndmask_b32_e64 v1, v6, v7, s[0:1]7999; GFX942-NEXT:    v_perm_b32 v1, v5, v1, s58000; GFX942-NEXT:    ds_cmpst_rtn_b32 v1, v0, v4, v1 offset:655328001; GFX942-NEXT:    s_waitcnt lgkmcnt(0)8002; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v48003; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]8004; GFX942-NEXT:    v_mov_b32_e32 v4, v18005; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]8006; GFX942-NEXT:    s_cbranch_execnz .LBB25_18007; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end8008; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]8009; GFX942-NEXT:    v_mov_b32_e32 v0, v18010; GFX942-NEXT:    s_setpc_b64 s[30:31]8011;8012; GFX11-TRUE16-LABEL: local_atomic_fsub_ret_v2bf16__offset:8013; GFX11-TRUE16:       ; %bb.0:8014; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8015; GFX11-TRUE16-NEXT:    ds_load_b32 v2, v0 offset:655328016; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 0xffff0000, v18017; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v18018; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 08019; GFX11-TRUE16-NEXT:    .p2align 68020; GFX11-TRUE16-NEXT:  .LBB25_1: ; %atomicrmw.start8021; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18022; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)8023; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v28024; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8025; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v48026; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v5, v5, v38027; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)8028; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v5, 16, 18029; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v58030; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff8031; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v48032; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8033; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v2, v2, v18034; GFX11-TRUE16-NEXT:    v_bfe_u32 v6, v2, 16, 18035; GFX11-TRUE16-NEXT:    v_or_b32_e32 v8, 0x400000, v28036; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v28037; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)8038; GFX11-TRUE16-NEXT:    v_add3_u32 v6, v6, v2, 0x7fff8039; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v6, v8, vcc_lo8040; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v58041; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo8042; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)8043; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v2.h8044; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x08045; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v5, v4 offset:655328046; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)8047; GFX11-TRUE16-NEXT:    buffer_gl0_inv8048; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v48049; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08050; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8051; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08052; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB25_18053; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8054; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08055; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, v28056; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]8057;8058; GFX11-FAKE16-LABEL: local_atomic_fsub_ret_v2bf16__offset:8059; GFX11-FAKE16:       ; %bb.0:8060; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8061; GFX11-FAKE16-NEXT:    ds_load_b32 v2, v0 offset:655328062; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v18063; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18064; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 08065; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x18066; GFX11-FAKE16-NEXT:    .p2align 68067; GFX11-FAKE16-NEXT:  .LBB25_1: ; %atomicrmw.start8068; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18069; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)8070; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v28071; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8072; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v48073; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v5, v5, v18074; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)8075; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 18076; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v58077; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v58078; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff8079; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8080; GFX11-FAKE16-NEXT:    v_dual_cndmask_b32 v5, v7, v9 :: v_dual_lshlrev_b32 v2, 16, v48081; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v2, v2, v38082; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)8083; GFX11-FAKE16-NEXT:    v_bfe_u32 v6, v2, 16, 18084; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v28085; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v28086; GFX11-FAKE16-NEXT:    v_add3_u32 v6, v6, v2, 0x7fff8087; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8088; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v6, v8, s08089; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v5, v2, 0x70603028090; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x08091; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v4 offset:655328092; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)8093; GFX11-FAKE16-NEXT:    buffer_gl0_inv8094; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v48095; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s18096; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8097; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s18098; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB25_18099; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8100; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x28101; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s18102; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v28103; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]8104;8105; GFX10-LABEL: local_atomic_fsub_ret_v2bf16__offset:8106; GFX10:       ; %bb.0:8107; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8108; GFX10-NEXT:    ds_read_b32 v2, v0 offset:655328109; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 16, v18110; GFX10-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18111; GFX10-NEXT:    s_mov_b32 s5, 08112; GFX10-NEXT:  .LBB25_1: ; %atomicrmw.start8113; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=18114; GFX10-NEXT:    s_waitcnt lgkmcnt(0)8115; GFX10-NEXT:    v_mov_b32_e32 v4, v28116; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v48117; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v48118; GFX10-NEXT:    v_sub_f32_e32 v2, v2, v38119; GFX10-NEXT:    v_sub_f32_e32 v5, v5, v18120; GFX10-NEXT:    v_bfe_u32 v6, v2, 16, 18121; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 18122; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v28123; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v58124; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v58125; GFX10-NEXT:    v_add3_u32 v6, v6, v2, 0x7fff8126; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff8127; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v2, v28128; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo8129; GFX10-NEXT:    v_cndmask_b32_e64 v2, v6, v8, s48130; GFX10-NEXT:    v_perm_b32 v2, v5, v2, 0x70603028131; GFX10-NEXT:    s_waitcnt_vscnt null, 0x08132; GFX10-NEXT:    ds_cmpst_rtn_b32 v2, v0, v4, v2 offset:655328133; GFX10-NEXT:    s_waitcnt lgkmcnt(0)8134; GFX10-NEXT:    buffer_gl0_inv8135; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v48136; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s58137; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s58138; GFX10-NEXT:    s_cbranch_execnz .LBB25_18139; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end8140; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s58141; GFX10-NEXT:    v_mov_b32_e32 v0, v28142; GFX10-NEXT:    s_setpc_b64 s[30:31]8143;8144; GFX90A-LABEL: local_atomic_fsub_ret_v2bf16__offset:8145; GFX90A:       ; %bb.0:8146; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8147; GFX90A-NEXT:    ds_read_b32 v4, v0 offset:655328148; GFX90A-NEXT:    s_mov_b64 s[6:7], 08149; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v18150; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff8151; GFX90A-NEXT:    v_and_b32_e32 v3, 0xffff0000, v18152; GFX90A-NEXT:    s_mov_b32 s9, 0x70603028153; GFX90A-NEXT:  .LBB25_1: ; %atomicrmw.start8154; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=18155; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)8156; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 16, v48157; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v48158; GFX90A-NEXT:    v_sub_f32_e32 v1, v1, v28159; GFX90A-NEXT:    v_sub_f32_e32 v5, v5, v38160; GFX90A-NEXT:    v_bfe_u32 v6, v1, 16, 18161; GFX90A-NEXT:    v_bfe_u32 v8, v5, 16, 18162; GFX90A-NEXT:    v_or_b32_e32 v7, 0x400000, v18163; GFX90A-NEXT:    v_or_b32_e32 v9, 0x400000, v58164; GFX90A-NEXT:    v_add3_u32 v6, v6, v1, s88165; GFX90A-NEXT:    v_add3_u32 v8, v8, v5, s88166; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v5, v58167; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v1, v18168; GFX90A-NEXT:    v_cndmask_b32_e64 v1, v6, v7, s[4:5]8169; GFX90A-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc8170; GFX90A-NEXT:    v_perm_b32 v1, v5, v1, s98171; GFX90A-NEXT:    ds_cmpst_rtn_b32 v1, v0, v4, v1 offset:655328172; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)8173; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v48174; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]8175; GFX90A-NEXT:    v_mov_b32_e32 v4, v18176; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]8177; GFX90A-NEXT:    s_cbranch_execnz .LBB25_18178; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end8179; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]8180; GFX90A-NEXT:    v_mov_b32_e32 v0, v18181; GFX90A-NEXT:    s_setpc_b64 s[30:31]8182;8183; GFX908-LABEL: local_atomic_fsub_ret_v2bf16__offset:8184; GFX908:       ; %bb.0:8185; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8186; GFX908-NEXT:    ds_read_b32 v2, v0 offset:655328187; GFX908-NEXT:    s_mov_b64 s[6:7], 08188; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v18189; GFX908-NEXT:    s_movk_i32 s8, 0x7fff8190; GFX908-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18191; GFX908-NEXT:    s_mov_b32 s9, 0x70603028192; GFX908-NEXT:  .LBB25_1: ; %atomicrmw.start8193; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=18194; GFX908-NEXT:    s_waitcnt lgkmcnt(0)8195; GFX908-NEXT:    v_mov_b32_e32 v4, v28196; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v48197; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v48198; GFX908-NEXT:    v_sub_f32_e32 v2, v2, v38199; GFX908-NEXT:    v_sub_f32_e32 v5, v5, v18200; GFX908-NEXT:    v_bfe_u32 v6, v2, 16, 18201; GFX908-NEXT:    v_bfe_u32 v8, v5, 16, 18202; GFX908-NEXT:    v_or_b32_e32 v7, 0x400000, v28203; GFX908-NEXT:    v_or_b32_e32 v9, 0x400000, v58204; GFX908-NEXT:    v_add3_u32 v6, v6, v2, s88205; GFX908-NEXT:    v_add3_u32 v8, v8, v5, s88206; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v58207; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v28208; GFX908-NEXT:    v_cndmask_b32_e64 v2, v6, v7, s[4:5]8209; GFX908-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc8210; GFX908-NEXT:    v_perm_b32 v2, v5, v2, s98211; GFX908-NEXT:    ds_cmpst_rtn_b32 v2, v0, v4, v2 offset:655328212; GFX908-NEXT:    s_waitcnt lgkmcnt(0)8213; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v48214; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]8215; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]8216; GFX908-NEXT:    s_cbranch_execnz .LBB25_18217; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end8218; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]8219; GFX908-NEXT:    v_mov_b32_e32 v0, v28220; GFX908-NEXT:    s_setpc_b64 s[30:31]8221;8222; GFX8-LABEL: local_atomic_fsub_ret_v2bf16__offset:8223; GFX8:       ; %bb.0:8224; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8225; GFX8-NEXT:    s_mov_b32 m0, -18226; GFX8-NEXT:    ds_read_b32 v2, v0 offset:655328227; GFX8-NEXT:    s_mov_b64 s[6:7], 08228; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 16, v18229; GFX8-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18230; GFX8-NEXT:  .LBB25_1: ; %atomicrmw.start8231; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=18232; GFX8-NEXT:    s_waitcnt lgkmcnt(0)8233; GFX8-NEXT:    v_mov_b32_e32 v4, v28234; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v48235; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v48236; GFX8-NEXT:    v_sub_f32_e32 v2, v2, v38237; GFX8-NEXT:    v_sub_f32_e32 v5, v5, v18238; GFX8-NEXT:    v_bfe_u32 v6, v2, 16, 18239; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 18240; GFX8-NEXT:    v_add_u32_e32 v6, vcc, v6, v28241; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v58242; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0x7fff, v68243; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v88244; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v58245; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v58246; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v28247; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v28248; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc8249; GFX8-NEXT:    v_cndmask_b32_e64 v2, v6, v7, s[4:5]8250; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v58251; GFX8-NEXT:    v_alignbit_b32 v2, v5, v2, 168252; GFX8-NEXT:    ds_cmpst_rtn_b32 v2, v0, v4, v2 offset:655328253; GFX8-NEXT:    s_waitcnt lgkmcnt(0)8254; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v48255; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]8256; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]8257; GFX8-NEXT:    s_cbranch_execnz .LBB25_18258; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end8259; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]8260; GFX8-NEXT:    v_mov_b32_e32 v0, v28261; GFX8-NEXT:    s_setpc_b64 s[30:31]8262;8263; GFX7-LABEL: local_atomic_fsub_ret_v2bf16__offset:8264; GFX7:       ; %bb.0:8265; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8266; GFX7-NEXT:    s_mov_b32 m0, -18267; GFX7-NEXT:    ds_read_b32 v3, v0 offset:655328268; GFX7-NEXT:    v_mov_b32_e32 v4, v18269; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v48270; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v28271; GFX7-NEXT:    s_mov_b64 s[4:5], 08272; GFX7-NEXT:    s_waitcnt lgkmcnt(0)8273; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v38274; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v38275; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v48276; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v28277; GFX7-NEXT:  .LBB25_1: ; %atomicrmw.start8278; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=18279; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v18280; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v38281; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v18282; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38283; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v18284; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v28285; GFX7-NEXT:    v_sub_f32_e32 v5, v5, v48286; GFX7-NEXT:    v_alignbit_b32 v1, v1, v3, 168287; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v68288; GFX7-NEXT:    v_alignbit_b32 v3, v3, v5, 168289; GFX7-NEXT:    ds_cmpst_rtn_b32 v3, v0, v1, v3 offset:655328290; GFX7-NEXT:    s_waitcnt lgkmcnt(0)8291; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v18292; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v38293; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8294; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v38295; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]8296; GFX7-NEXT:    s_cbranch_execnz .LBB25_18297; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end8298; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]8299; GFX7-NEXT:    v_mov_b32_e32 v0, v38300; GFX7-NEXT:    s_setpc_b64 s[30:31]8301;8302; GFX6-LABEL: local_atomic_fsub_ret_v2bf16__offset:8303; GFX6:       ; %bb.0:8304; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8305; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0xfffc, v08306; GFX6-NEXT:    s_mov_b32 m0, -18307; GFX6-NEXT:    ds_read_b32 v0, v48308; GFX6-NEXT:    v_mov_b32_e32 v3, v18309; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v38310; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v28311; GFX6-NEXT:    s_mov_b64 s[4:5], 08312; GFX6-NEXT:    s_waitcnt lgkmcnt(0)8313; GFX6-NEXT:    v_and_b32_e32 v1, 0xffff0000, v08314; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v08315; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v38316; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v28317; GFX6-NEXT:  .LBB25_1: ; %atomicrmw.start8318; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=18319; GFX6-NEXT:    v_mul_f32_e32 v1, 1.0, v18320; GFX6-NEXT:    v_mul_f32_e32 v0, 1.0, v08321; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v18322; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v08323; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v18324; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v28325; GFX6-NEXT:    v_sub_f32_e32 v5, v5, v38326; GFX6-NEXT:    v_alignbit_b32 v0, v1, v0, 168327; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v68328; GFX6-NEXT:    v_alignbit_b32 v1, v1, v5, 168329; GFX6-NEXT:    ds_cmpst_rtn_b32 v5, v4, v0, v18330; GFX6-NEXT:    s_waitcnt lgkmcnt(0)8331; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v08332; GFX6-NEXT:    v_and_b32_e32 v1, 0xffff0000, v58333; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8334; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v58335; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]8336; GFX6-NEXT:    s_cbranch_execnz .LBB25_18337; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end8338; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]8339; GFX6-NEXT:    s_setpc_b64 s[30:31]8340  %gep = getelementptr <2 x bfloat>, ptr addrspace(3) %ptr, i32 163838341  %result = atomicrmw fsub ptr addrspace(3) %gep, <2 x bfloat> %val seq_cst8342  ret <2 x bfloat> %result8343}8344 8345define void @local_atomic_fsub_noret_v2bf16(ptr addrspace(3) %ptr, <2 x bfloat> %val) {8346; GFX12-TRUE16-LABEL: local_atomic_fsub_noret_v2bf16:8347; GFX12-TRUE16:       ; %bb.0:8348; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08349; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x08350; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x08351; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x08352; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x08353; GFX12-TRUE16-NEXT:    ds_load_b32 v3, v08354; GFX12-TRUE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v18355; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v18356; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 08357; GFX12-TRUE16-NEXT:  .LBB26_1: ; %atomicrmw.start8358; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18359; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x08360; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38361; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8362; GFX12-TRUE16-NEXT:    v_dual_sub_f32 v5, v5, v2 :: v_dual_lshlrev_b32 v4, 16, v38363; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v4, v4, v18364; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8365; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v5, 16, 18366; GFX12-TRUE16-NEXT:    v_bfe_u32 v6, v4, 16, 18367; GFX12-TRUE16-NEXT:    v_or_b32_e32 v8, 0x400000, v48368; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v48369; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v58370; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff8371; GFX12-TRUE16-NEXT:    v_add3_u32 v6, v6, v4, 0x7fff8372; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)8373; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_3)8374; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v6, v8, vcc_lo8375; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v58376; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)8377; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo8378; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v4.h8379; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x08380; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v5, v38381; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x08382; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE8383; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v38384; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v48385; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8386; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08387; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8388; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08389; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB26_18390; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8391; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08392; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08393; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]8394;8395; GFX12-FAKE16-LABEL: local_atomic_fsub_noret_v2bf16:8396; GFX12-FAKE16:       ; %bb.0:8397; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08398; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x08399; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x08400; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x08401; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x08402; GFX12-FAKE16-NEXT:    ds_load_b32 v3, v08403; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v18404; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18405; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 08406; GFX12-FAKE16-NEXT:  .LBB26_1: ; %atomicrmw.start8407; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18408; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x08409; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38410; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8411; GFX12-FAKE16-NEXT:    v_dual_sub_f32 v5, v5, v1 :: v_dual_lshlrev_b32 v4, 16, v38412; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v4, v4, v28413; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8414; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 18415; GFX12-FAKE16-NEXT:    v_bfe_u32 v6, v4, 16, 18416; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v48417; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v58418; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v58419; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff8420; GFX12-FAKE16-NEXT:    v_add3_u32 v6, v6, v4, 0x7fff8421; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v4, v48422; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)8423; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)8424; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo8425; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)8426; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v4, v6, v8, s08427; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8428; GFX12-FAKE16-NEXT:    v_perm_b32 v4, v5, v4, 0x70603028429; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x08430; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v38431; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x08432; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE8433; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v38434; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v48435; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8436; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s18437; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8438; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s18439; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB26_18440; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8441; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s18442; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08443; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]8444;8445; GFX942-LABEL: local_atomic_fsub_noret_v2bf16:8446; GFX942:       ; %bb.0:8447; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8448; GFX942-NEXT:    ds_read_b32 v3, v08449; GFX942-NEXT:    s_mov_b64 s[2:3], 08450; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v18451; GFX942-NEXT:    s_movk_i32 s4, 0x7fff8452; GFX942-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18453; GFX942-NEXT:    s_mov_b32 s5, 0x70603028454; GFX942-NEXT:  .LBB26_1: ; %atomicrmw.start8455; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=18456; GFX942-NEXT:    s_waitcnt lgkmcnt(0)8457; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v38458; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38459; GFX942-NEXT:    v_sub_f32_e32 v4, v4, v28460; GFX942-NEXT:    v_sub_f32_e32 v5, v5, v18461; GFX942-NEXT:    v_bfe_u32 v6, v4, 16, 18462; GFX942-NEXT:    v_bfe_u32 v8, v5, 16, 18463; GFX942-NEXT:    v_or_b32_e32 v7, 0x400000, v48464; GFX942-NEXT:    v_or_b32_e32 v9, 0x400000, v58465; GFX942-NEXT:    v_add3_u32 v6, v6, v4, s48466; GFX942-NEXT:    v_add3_u32 v8, v8, v5, s48467; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v5, v58468; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v4, v48469; GFX942-NEXT:    s_nop 08470; GFX942-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc8471; GFX942-NEXT:    v_cndmask_b32_e64 v4, v6, v7, s[0:1]8472; GFX942-NEXT:    v_perm_b32 v4, v5, v4, s58473; GFX942-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v48474; GFX942-NEXT:    s_waitcnt lgkmcnt(0)8475; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v38476; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]8477; GFX942-NEXT:    v_mov_b32_e32 v3, v48478; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]8479; GFX942-NEXT:    s_cbranch_execnz .LBB26_18480; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end8481; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]8482; GFX942-NEXT:    s_setpc_b64 s[30:31]8483;8484; GFX11-TRUE16-LABEL: local_atomic_fsub_noret_v2bf16:8485; GFX11-TRUE16:       ; %bb.0:8486; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8487; GFX11-TRUE16-NEXT:    ds_load_b32 v3, v08488; GFX11-TRUE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v18489; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v18490; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 08491; GFX11-TRUE16-NEXT:    .p2align 68492; GFX11-TRUE16-NEXT:  .LBB26_1: ; %atomicrmw.start8493; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18494; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)8495; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38496; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8497; GFX11-TRUE16-NEXT:    v_dual_sub_f32 v5, v5, v2 :: v_dual_lshlrev_b32 v4, 16, v38498; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v4, v4, v18499; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8500; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v5, 16, 18501; GFX11-TRUE16-NEXT:    v_bfe_u32 v6, v4, 16, 18502; GFX11-TRUE16-NEXT:    v_or_b32_e32 v8, 0x400000, v48503; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v48504; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v58505; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff8506; GFX11-TRUE16-NEXT:    v_add3_u32 v6, v6, v4, 0x7fff8507; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_4)8508; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v6, v8, vcc_lo8509; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v58510; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo8511; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)8512; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v4.h8513; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x08514; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v5, v38515; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)8516; GFX11-TRUE16-NEXT:    buffer_gl0_inv8517; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v38518; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v48519; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08520; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8521; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08522; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB26_18523; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8524; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08525; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]8526;8527; GFX11-FAKE16-LABEL: local_atomic_fsub_noret_v2bf16:8528; GFX11-FAKE16:       ; %bb.0:8529; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8530; GFX11-FAKE16-NEXT:    ds_load_b32 v3, v08531; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v18532; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18533; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 08534; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x18535; GFX11-FAKE16-NEXT:    .p2align 68536; GFX11-FAKE16-NEXT:  .LBB26_1: ; %atomicrmw.start8537; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18538; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)8539; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38540; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8541; GFX11-FAKE16-NEXT:    v_dual_sub_f32 v5, v5, v1 :: v_dual_lshlrev_b32 v4, 16, v38542; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v4, v4, v28543; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8544; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 18545; GFX11-FAKE16-NEXT:    v_bfe_u32 v6, v4, 16, 18546; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v48547; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v58548; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v58549; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff8550; GFX11-FAKE16-NEXT:    v_add3_u32 v6, v6, v4, 0x7fff8551; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v4, v48552; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)8553; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo8554; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v4, v6, v8, s08555; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8556; GFX11-FAKE16-NEXT:    v_perm_b32 v4, v5, v4, 0x70603028557; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x08558; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v38559; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)8560; GFX11-FAKE16-NEXT:    buffer_gl0_inv8561; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v38562; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v48563; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s18564; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8565; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s18566; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB26_18567; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8568; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x28569; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s18570; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]8571;8572; GFX10-LABEL: local_atomic_fsub_noret_v2bf16:8573; GFX10:       ; %bb.0:8574; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8575; GFX10-NEXT:    ds_read_b32 v3, v08576; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v18577; GFX10-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18578; GFX10-NEXT:    s_mov_b32 s5, 08579; GFX10-NEXT:  .LBB26_1: ; %atomicrmw.start8580; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=18581; GFX10-NEXT:    s_waitcnt lgkmcnt(0)8582; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v38583; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38584; GFX10-NEXT:    v_sub_f32_e32 v4, v4, v28585; GFX10-NEXT:    v_sub_f32_e32 v5, v5, v18586; GFX10-NEXT:    v_bfe_u32 v6, v4, 16, 18587; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 18588; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v48589; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v58590; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v58591; GFX10-NEXT:    v_add3_u32 v6, v6, v4, 0x7fff8592; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff8593; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v4, v48594; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo8595; GFX10-NEXT:    v_cndmask_b32_e64 v4, v6, v8, s48596; GFX10-NEXT:    v_perm_b32 v4, v5, v4, 0x70603028597; GFX10-NEXT:    s_waitcnt_vscnt null, 0x08598; GFX10-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v48599; GFX10-NEXT:    s_waitcnt lgkmcnt(0)8600; GFX10-NEXT:    buffer_gl0_inv8601; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v38602; GFX10-NEXT:    v_mov_b32_e32 v3, v48603; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s58604; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s58605; GFX10-NEXT:    s_cbranch_execnz .LBB26_18606; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end8607; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s58608; GFX10-NEXT:    s_setpc_b64 s[30:31]8609;8610; GFX90A-LABEL: local_atomic_fsub_noret_v2bf16:8611; GFX90A:       ; %bb.0:8612; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8613; GFX90A-NEXT:    ds_read_b32 v3, v08614; GFX90A-NEXT:    s_mov_b64 s[6:7], 08615; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v18616; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff8617; GFX90A-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18618; GFX90A-NEXT:    s_mov_b32 s9, 0x70603028619; GFX90A-NEXT:  .LBB26_1: ; %atomicrmw.start8620; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=18621; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)8622; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v38623; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38624; GFX90A-NEXT:    v_sub_f32_e32 v4, v4, v28625; GFX90A-NEXT:    v_sub_f32_e32 v5, v5, v18626; GFX90A-NEXT:    v_bfe_u32 v6, v4, 16, 18627; GFX90A-NEXT:    v_bfe_u32 v8, v5, 16, 18628; GFX90A-NEXT:    v_or_b32_e32 v7, 0x400000, v48629; GFX90A-NEXT:    v_or_b32_e32 v9, 0x400000, v58630; GFX90A-NEXT:    v_add3_u32 v6, v6, v4, s88631; GFX90A-NEXT:    v_add3_u32 v8, v8, v5, s88632; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v5, v58633; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v4, v48634; GFX90A-NEXT:    v_cndmask_b32_e64 v4, v6, v7, s[4:5]8635; GFX90A-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc8636; GFX90A-NEXT:    v_perm_b32 v4, v5, v4, s98637; GFX90A-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v48638; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)8639; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v38640; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]8641; GFX90A-NEXT:    v_mov_b32_e32 v3, v48642; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]8643; GFX90A-NEXT:    s_cbranch_execnz .LBB26_18644; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end8645; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]8646; GFX90A-NEXT:    s_setpc_b64 s[30:31]8647;8648; GFX908-LABEL: local_atomic_fsub_noret_v2bf16:8649; GFX908:       ; %bb.0:8650; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8651; GFX908-NEXT:    ds_read_b32 v3, v08652; GFX908-NEXT:    s_mov_b64 s[6:7], 08653; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v18654; GFX908-NEXT:    s_movk_i32 s8, 0x7fff8655; GFX908-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18656; GFX908-NEXT:    s_mov_b32 s9, 0x70603028657; GFX908-NEXT:  .LBB26_1: ; %atomicrmw.start8658; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=18659; GFX908-NEXT:    s_waitcnt lgkmcnt(0)8660; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v38661; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38662; GFX908-NEXT:    v_sub_f32_e32 v4, v4, v28663; GFX908-NEXT:    v_sub_f32_e32 v5, v5, v18664; GFX908-NEXT:    v_bfe_u32 v6, v4, 16, 18665; GFX908-NEXT:    v_bfe_u32 v8, v5, 16, 18666; GFX908-NEXT:    v_or_b32_e32 v7, 0x400000, v48667; GFX908-NEXT:    v_or_b32_e32 v9, 0x400000, v58668; GFX908-NEXT:    v_add3_u32 v6, v6, v4, s88669; GFX908-NEXT:    v_add3_u32 v8, v8, v5, s88670; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v58671; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v4, v48672; GFX908-NEXT:    v_cndmask_b32_e64 v4, v6, v7, s[4:5]8673; GFX908-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc8674; GFX908-NEXT:    v_perm_b32 v4, v5, v4, s98675; GFX908-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v48676; GFX908-NEXT:    s_waitcnt lgkmcnt(0)8677; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v38678; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]8679; GFX908-NEXT:    v_mov_b32_e32 v3, v48680; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]8681; GFX908-NEXT:    s_cbranch_execnz .LBB26_18682; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end8683; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]8684; GFX908-NEXT:    s_setpc_b64 s[30:31]8685;8686; GFX8-LABEL: local_atomic_fsub_noret_v2bf16:8687; GFX8:       ; %bb.0:8688; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8689; GFX8-NEXT:    s_mov_b32 m0, -18690; GFX8-NEXT:    ds_read_b32 v3, v08691; GFX8-NEXT:    s_mov_b64 s[6:7], 08692; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v18693; GFX8-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18694; GFX8-NEXT:  .LBB26_1: ; %atomicrmw.start8695; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=18696; GFX8-NEXT:    s_waitcnt lgkmcnt(0)8697; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v38698; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38699; GFX8-NEXT:    v_sub_f32_e32 v4, v4, v28700; GFX8-NEXT:    v_sub_f32_e32 v5, v5, v18701; GFX8-NEXT:    v_bfe_u32 v6, v4, 16, 18702; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 18703; GFX8-NEXT:    v_add_u32_e32 v6, vcc, v6, v48704; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v58705; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0x7fff, v68706; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v88707; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v58708; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v58709; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v48710; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v4, v48711; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc8712; GFX8-NEXT:    v_cndmask_b32_e64 v4, v6, v7, s[4:5]8713; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v58714; GFX8-NEXT:    v_alignbit_b32 v4, v5, v4, 168715; GFX8-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v48716; GFX8-NEXT:    s_waitcnt lgkmcnt(0)8717; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v38718; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]8719; GFX8-NEXT:    v_mov_b32_e32 v3, v48720; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]8721; GFX8-NEXT:    s_cbranch_execnz .LBB26_18722; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end8723; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]8724; GFX8-NEXT:    s_setpc_b64 s[30:31]8725;8726; GFX7-LABEL: local_atomic_fsub_noret_v2bf16:8727; GFX7:       ; %bb.0:8728; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8729; GFX7-NEXT:    s_mov_b32 m0, -18730; GFX7-NEXT:    ds_read_b32 v4, v08731; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v18732; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v28733; GFX7-NEXT:    s_mov_b64 s[4:5], 08734; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18735; GFX7-NEXT:    s_waitcnt lgkmcnt(0)8736; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v48737; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v48738; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v28739; GFX7-NEXT:  .LBB26_1: ; %atomicrmw.start8740; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=18741; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v38742; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v48743; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v38744; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v48745; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v38746; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v28747; GFX7-NEXT:    v_sub_f32_e32 v5, v5, v18748; GFX7-NEXT:    v_alignbit_b32 v3, v3, v4, 168749; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v68750; GFX7-NEXT:    v_alignbit_b32 v4, v4, v5, 168751; GFX7-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v48752; GFX7-NEXT:    s_waitcnt lgkmcnt(0)8753; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v38754; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v48755; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8756; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v48757; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]8758; GFX7-NEXT:    s_cbranch_execnz .LBB26_18759; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end8760; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]8761; GFX7-NEXT:    s_setpc_b64 s[30:31]8762;8763; GFX6-LABEL: local_atomic_fsub_noret_v2bf16:8764; GFX6:       ; %bb.0:8765; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8766; GFX6-NEXT:    s_mov_b32 m0, -18767; GFX6-NEXT:    ds_read_b32 v4, v08768; GFX6-NEXT:    v_mul_f32_e32 v1, 1.0, v18769; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v28770; GFX6-NEXT:    s_mov_b64 s[4:5], 08771; GFX6-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18772; GFX6-NEXT:    s_waitcnt lgkmcnt(0)8773; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v48774; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v48775; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v28776; GFX6-NEXT:  .LBB26_1: ; %atomicrmw.start8777; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=18778; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v38779; GFX6-NEXT:    v_mul_f32_e32 v4, 1.0, v48780; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v38781; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v48782; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v38783; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v28784; GFX6-NEXT:    v_sub_f32_e32 v5, v5, v18785; GFX6-NEXT:    v_alignbit_b32 v3, v3, v4, 168786; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v68787; GFX6-NEXT:    v_alignbit_b32 v4, v4, v5, 168788; GFX6-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v48789; GFX6-NEXT:    s_waitcnt lgkmcnt(0)8790; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v38791; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v48792; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8793; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v48794; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]8795; GFX6-NEXT:    s_cbranch_execnz .LBB26_18796; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end8797; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]8798; GFX6-NEXT:    s_setpc_b64 s[30:31]8799  %result = atomicrmw fsub ptr addrspace(3) %ptr, <2 x bfloat> %val seq_cst8800  ret void8801}8802 8803define void @local_atomic_fsub_noret_v2bf16__ofset(ptr addrspace(3) %ptr, <2 x bfloat> %val) {8804; GFX12-TRUE16-LABEL: local_atomic_fsub_noret_v2bf16__ofset:8805; GFX12-TRUE16:       ; %bb.0:8806; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08807; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x08808; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x08809; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x08810; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x08811; GFX12-TRUE16-NEXT:    ds_load_b32 v3, v0 offset:655328812; GFX12-TRUE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v18813; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v18814; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 08815; GFX12-TRUE16-NEXT:  .LBB27_1: ; %atomicrmw.start8816; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18817; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x08818; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38819; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8820; GFX12-TRUE16-NEXT:    v_dual_sub_f32 v5, v5, v2 :: v_dual_lshlrev_b32 v4, 16, v38821; GFX12-TRUE16-NEXT:    v_sub_f32_e32 v4, v4, v18822; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8823; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v5, 16, 18824; GFX12-TRUE16-NEXT:    v_bfe_u32 v6, v4, 16, 18825; GFX12-TRUE16-NEXT:    v_or_b32_e32 v8, 0x400000, v48826; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v48827; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v58828; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff8829; GFX12-TRUE16-NEXT:    v_add3_u32 v6, v6, v4, 0x7fff8830; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)8831; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_3)8832; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v6, v8, vcc_lo8833; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v58834; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)8835; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo8836; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v4.h8837; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x08838; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v5, v3 offset:655328839; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x08840; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE8841; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v38842; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v48843; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8844; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08845; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8846; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08847; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB27_18848; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8849; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08850; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08851; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]8852;8853; GFX12-FAKE16-LABEL: local_atomic_fsub_noret_v2bf16__ofset:8854; GFX12-FAKE16:       ; %bb.0:8855; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08856; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x08857; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x08858; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x08859; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x08860; GFX12-FAKE16-NEXT:    ds_load_b32 v3, v0 offset:655328861; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v18862; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18863; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 08864; GFX12-FAKE16-NEXT:  .LBB27_1: ; %atomicrmw.start8865; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18866; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x08867; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38868; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8869; GFX12-FAKE16-NEXT:    v_dual_sub_f32 v5, v5, v1 :: v_dual_lshlrev_b32 v4, 16, v38870; GFX12-FAKE16-NEXT:    v_sub_f32_e32 v4, v4, v28871; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8872; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 18873; GFX12-FAKE16-NEXT:    v_bfe_u32 v6, v4, 16, 18874; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v48875; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v58876; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v58877; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff8878; GFX12-FAKE16-NEXT:    v_add3_u32 v6, v6, v4, 0x7fff8879; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v4, v48880; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)8881; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)8882; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo8883; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)8884; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v4, v6, v8, s08885; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8886; GFX12-FAKE16-NEXT:    v_perm_b32 v4, v5, v4, 0x70603028887; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x08888; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v3 offset:655328889; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x08890; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE8891; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v38892; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v48893; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8894; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s18895; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8896; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s18897; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB27_18898; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8899; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s18900; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08901; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]8902;8903; GFX942-LABEL: local_atomic_fsub_noret_v2bf16__ofset:8904; GFX942:       ; %bb.0:8905; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8906; GFX942-NEXT:    ds_read_b32 v3, v0 offset:655328907; GFX942-NEXT:    s_mov_b64 s[2:3], 08908; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v18909; GFX942-NEXT:    s_movk_i32 s4, 0x7fff8910; GFX942-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18911; GFX942-NEXT:    s_mov_b32 s5, 0x70603028912; GFX942-NEXT:  .LBB27_1: ; %atomicrmw.start8913; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=18914; GFX942-NEXT:    s_waitcnt lgkmcnt(0)8915; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v38916; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38917; GFX942-NEXT:    v_sub_f32_e32 v4, v4, v28918; GFX942-NEXT:    v_sub_f32_e32 v5, v5, v18919; GFX942-NEXT:    v_bfe_u32 v6, v4, 16, 18920; GFX942-NEXT:    v_bfe_u32 v8, v5, 16, 18921; GFX942-NEXT:    v_or_b32_e32 v7, 0x400000, v48922; GFX942-NEXT:    v_or_b32_e32 v9, 0x400000, v58923; GFX942-NEXT:    v_add3_u32 v6, v6, v4, s48924; GFX942-NEXT:    v_add3_u32 v8, v8, v5, s48925; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v5, v58926; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v4, v48927; GFX942-NEXT:    s_nop 08928; GFX942-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc8929; GFX942-NEXT:    v_cndmask_b32_e64 v4, v6, v7, s[0:1]8930; GFX942-NEXT:    v_perm_b32 v4, v5, v4, s58931; GFX942-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v4 offset:655328932; GFX942-NEXT:    s_waitcnt lgkmcnt(0)8933; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v38934; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]8935; GFX942-NEXT:    v_mov_b32_e32 v3, v48936; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]8937; GFX942-NEXT:    s_cbranch_execnz .LBB27_18938; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end8939; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]8940; GFX942-NEXT:    s_setpc_b64 s[30:31]8941;8942; GFX11-TRUE16-LABEL: local_atomic_fsub_noret_v2bf16__ofset:8943; GFX11-TRUE16:       ; %bb.0:8944; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8945; GFX11-TRUE16-NEXT:    ds_load_b32 v3, v0 offset:655328946; GFX11-TRUE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v18947; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v18948; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 08949; GFX11-TRUE16-NEXT:    .p2align 68950; GFX11-TRUE16-NEXT:  .LBB27_1: ; %atomicrmw.start8951; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18952; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)8953; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38954; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8955; GFX11-TRUE16-NEXT:    v_dual_sub_f32 v5, v5, v2 :: v_dual_lshlrev_b32 v4, 16, v38956; GFX11-TRUE16-NEXT:    v_sub_f32_e32 v4, v4, v18957; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8958; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v5, 16, 18959; GFX11-TRUE16-NEXT:    v_bfe_u32 v6, v4, 16, 18960; GFX11-TRUE16-NEXT:    v_or_b32_e32 v8, 0x400000, v48961; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v48962; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v58963; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff8964; GFX11-TRUE16-NEXT:    v_add3_u32 v6, v6, v4, 0x7fff8965; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_4)8966; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v6, v8, vcc_lo8967; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v58968; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo8969; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)8970; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v4.h8971; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x08972; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v5, v3 offset:655328973; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)8974; GFX11-TRUE16-NEXT:    buffer_gl0_inv8975; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v38976; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v48977; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08978; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8979; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08980; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB27_18981; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8982; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08983; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]8984;8985; GFX11-FAKE16-LABEL: local_atomic_fsub_noret_v2bf16__ofset:8986; GFX11-FAKE16:       ; %bb.0:8987; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8988; GFX11-FAKE16-NEXT:    ds_load_b32 v3, v0 offset:655328989; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v18990; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18991; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 08992; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x18993; GFX11-FAKE16-NEXT:    .p2align 68994; GFX11-FAKE16-NEXT:  .LBB27_1: ; %atomicrmw.start8995; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18996; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)8997; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38998; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8999; GFX11-FAKE16-NEXT:    v_dual_sub_f32 v5, v5, v1 :: v_dual_lshlrev_b32 v4, 16, v39000; GFX11-FAKE16-NEXT:    v_sub_f32_e32 v4, v4, v29001; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)9002; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 19003; GFX11-FAKE16-NEXT:    v_bfe_u32 v6, v4, 16, 19004; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v49005; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v59006; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59007; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff9008; GFX11-FAKE16-NEXT:    v_add3_u32 v6, v6, v4, 0x7fff9009; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v4, v49010; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)9011; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo9012; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v4, v6, v8, s09013; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9014; GFX11-FAKE16-NEXT:    v_perm_b32 v4, v5, v4, 0x70603029015; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x09016; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v3 offset:655329017; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)9018; GFX11-FAKE16-NEXT:    buffer_gl0_inv9019; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v39020; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v49021; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s19022; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9023; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s19024; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB27_19025; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end9026; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x29027; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s19028; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]9029;9030; GFX10-LABEL: local_atomic_fsub_noret_v2bf16__ofset:9031; GFX10:       ; %bb.0:9032; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9033; GFX10-NEXT:    ds_read_b32 v3, v0 offset:655329034; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v19035; GFX10-NEXT:    v_and_b32_e32 v1, 0xffff0000, v19036; GFX10-NEXT:    s_mov_b32 s5, 09037; GFX10-NEXT:  .LBB27_1: ; %atomicrmw.start9038; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=19039; GFX10-NEXT:    s_waitcnt lgkmcnt(0)9040; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v39041; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v39042; GFX10-NEXT:    v_sub_f32_e32 v4, v4, v29043; GFX10-NEXT:    v_sub_f32_e32 v5, v5, v19044; GFX10-NEXT:    v_bfe_u32 v6, v4, 16, 19045; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 19046; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v49047; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v59048; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59049; GFX10-NEXT:    v_add3_u32 v6, v6, v4, 0x7fff9050; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff9051; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v4, v49052; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo9053; GFX10-NEXT:    v_cndmask_b32_e64 v4, v6, v8, s49054; GFX10-NEXT:    v_perm_b32 v4, v5, v4, 0x70603029055; GFX10-NEXT:    s_waitcnt_vscnt null, 0x09056; GFX10-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v4 offset:655329057; GFX10-NEXT:    s_waitcnt lgkmcnt(0)9058; GFX10-NEXT:    buffer_gl0_inv9059; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v39060; GFX10-NEXT:    v_mov_b32_e32 v3, v49061; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s59062; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s59063; GFX10-NEXT:    s_cbranch_execnz .LBB27_19064; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end9065; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s59066; GFX10-NEXT:    s_setpc_b64 s[30:31]9067;9068; GFX90A-LABEL: local_atomic_fsub_noret_v2bf16__ofset:9069; GFX90A:       ; %bb.0:9070; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9071; GFX90A-NEXT:    ds_read_b32 v3, v0 offset:655329072; GFX90A-NEXT:    s_mov_b64 s[6:7], 09073; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v19074; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff9075; GFX90A-NEXT:    v_and_b32_e32 v1, 0xffff0000, v19076; GFX90A-NEXT:    s_mov_b32 s9, 0x70603029077; GFX90A-NEXT:  .LBB27_1: ; %atomicrmw.start9078; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=19079; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)9080; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v39081; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v39082; GFX90A-NEXT:    v_sub_f32_e32 v4, v4, v29083; GFX90A-NEXT:    v_sub_f32_e32 v5, v5, v19084; GFX90A-NEXT:    v_bfe_u32 v6, v4, 16, 19085; GFX90A-NEXT:    v_bfe_u32 v8, v5, 16, 19086; GFX90A-NEXT:    v_or_b32_e32 v7, 0x400000, v49087; GFX90A-NEXT:    v_or_b32_e32 v9, 0x400000, v59088; GFX90A-NEXT:    v_add3_u32 v6, v6, v4, s89089; GFX90A-NEXT:    v_add3_u32 v8, v8, v5, s89090; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v5, v59091; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v4, v49092; GFX90A-NEXT:    v_cndmask_b32_e64 v4, v6, v7, s[4:5]9093; GFX90A-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc9094; GFX90A-NEXT:    v_perm_b32 v4, v5, v4, s99095; GFX90A-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v4 offset:655329096; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)9097; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v39098; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]9099; GFX90A-NEXT:    v_mov_b32_e32 v3, v49100; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]9101; GFX90A-NEXT:    s_cbranch_execnz .LBB27_19102; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end9103; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]9104; GFX90A-NEXT:    s_setpc_b64 s[30:31]9105;9106; GFX908-LABEL: local_atomic_fsub_noret_v2bf16__ofset:9107; GFX908:       ; %bb.0:9108; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9109; GFX908-NEXT:    ds_read_b32 v3, v0 offset:655329110; GFX908-NEXT:    s_mov_b64 s[6:7], 09111; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v19112; GFX908-NEXT:    s_movk_i32 s8, 0x7fff9113; GFX908-NEXT:    v_and_b32_e32 v1, 0xffff0000, v19114; GFX908-NEXT:    s_mov_b32 s9, 0x70603029115; GFX908-NEXT:  .LBB27_1: ; %atomicrmw.start9116; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=19117; GFX908-NEXT:    s_waitcnt lgkmcnt(0)9118; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v39119; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v39120; GFX908-NEXT:    v_sub_f32_e32 v4, v4, v29121; GFX908-NEXT:    v_sub_f32_e32 v5, v5, v19122; GFX908-NEXT:    v_bfe_u32 v6, v4, 16, 19123; GFX908-NEXT:    v_bfe_u32 v8, v5, 16, 19124; GFX908-NEXT:    v_or_b32_e32 v7, 0x400000, v49125; GFX908-NEXT:    v_or_b32_e32 v9, 0x400000, v59126; GFX908-NEXT:    v_add3_u32 v6, v6, v4, s89127; GFX908-NEXT:    v_add3_u32 v8, v8, v5, s89128; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v59129; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v4, v49130; GFX908-NEXT:    v_cndmask_b32_e64 v4, v6, v7, s[4:5]9131; GFX908-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc9132; GFX908-NEXT:    v_perm_b32 v4, v5, v4, s99133; GFX908-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v4 offset:655329134; GFX908-NEXT:    s_waitcnt lgkmcnt(0)9135; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v39136; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]9137; GFX908-NEXT:    v_mov_b32_e32 v3, v49138; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]9139; GFX908-NEXT:    s_cbranch_execnz .LBB27_19140; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end9141; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]9142; GFX908-NEXT:    s_setpc_b64 s[30:31]9143;9144; GFX8-LABEL: local_atomic_fsub_noret_v2bf16__ofset:9145; GFX8:       ; %bb.0:9146; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9147; GFX8-NEXT:    s_mov_b32 m0, -19148; GFX8-NEXT:    ds_read_b32 v3, v0 offset:655329149; GFX8-NEXT:    s_mov_b64 s[6:7], 09150; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v19151; GFX8-NEXT:    v_and_b32_e32 v1, 0xffff0000, v19152; GFX8-NEXT:  .LBB27_1: ; %atomicrmw.start9153; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=19154; GFX8-NEXT:    s_waitcnt lgkmcnt(0)9155; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v39156; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v39157; GFX8-NEXT:    v_sub_f32_e32 v4, v4, v29158; GFX8-NEXT:    v_sub_f32_e32 v5, v5, v19159; GFX8-NEXT:    v_bfe_u32 v6, v4, 16, 19160; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 19161; GFX8-NEXT:    v_add_u32_e32 v6, vcc, v6, v49162; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v59163; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0x7fff, v69164; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v89165; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v59166; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v59167; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v49168; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v4, v49169; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc9170; GFX8-NEXT:    v_cndmask_b32_e64 v4, v6, v7, s[4:5]9171; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v59172; GFX8-NEXT:    v_alignbit_b32 v4, v5, v4, 169173; GFX8-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v4 offset:655329174; GFX8-NEXT:    s_waitcnt lgkmcnt(0)9175; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v39176; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]9177; GFX8-NEXT:    v_mov_b32_e32 v3, v49178; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]9179; GFX8-NEXT:    s_cbranch_execnz .LBB27_19180; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end9181; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]9182; GFX8-NEXT:    s_setpc_b64 s[30:31]9183;9184; GFX7-LABEL: local_atomic_fsub_noret_v2bf16__ofset:9185; GFX7:       ; %bb.0:9186; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9187; GFX7-NEXT:    s_mov_b32 m0, -19188; GFX7-NEXT:    ds_read_b32 v4, v0 offset:655329189; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v19190; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v29191; GFX7-NEXT:    s_mov_b64 s[4:5], 09192; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v19193; GFX7-NEXT:    s_waitcnt lgkmcnt(0)9194; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v49195; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v49196; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v29197; GFX7-NEXT:  .LBB27_1: ; %atomicrmw.start9198; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=19199; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v39200; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v49201; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v39202; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v49203; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v39204; GFX7-NEXT:    v_sub_f32_e32 v6, v6, v29205; GFX7-NEXT:    v_sub_f32_e32 v5, v5, v19206; GFX7-NEXT:    v_alignbit_b32 v3, v3, v4, 169207; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v69208; GFX7-NEXT:    v_alignbit_b32 v4, v4, v5, 169209; GFX7-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v4 offset:655329210; GFX7-NEXT:    s_waitcnt lgkmcnt(0)9211; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v39212; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v49213; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9214; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v49215; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]9216; GFX7-NEXT:    s_cbranch_execnz .LBB27_19217; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end9218; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]9219; GFX7-NEXT:    s_setpc_b64 s[30:31]9220;9221; GFX6-LABEL: local_atomic_fsub_noret_v2bf16__ofset:9222; GFX6:       ; %bb.0:9223; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9224; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffc, v09225; GFX6-NEXT:    s_mov_b32 m0, -19226; GFX6-NEXT:    ds_read_b32 v4, v09227; GFX6-NEXT:    v_mul_f32_e32 v1, 1.0, v19228; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v29229; GFX6-NEXT:    s_mov_b64 s[4:5], 09230; GFX6-NEXT:    v_and_b32_e32 v1, 0xffff0000, v19231; GFX6-NEXT:    s_waitcnt lgkmcnt(0)9232; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v49233; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v49234; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v29235; GFX6-NEXT:  .LBB27_1: ; %atomicrmw.start9236; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=19237; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v39238; GFX6-NEXT:    v_mul_f32_e32 v4, 1.0, v49239; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v39240; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v49241; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v39242; GFX6-NEXT:    v_sub_f32_e32 v6, v6, v29243; GFX6-NEXT:    v_sub_f32_e32 v5, v5, v19244; GFX6-NEXT:    v_alignbit_b32 v3, v3, v4, 169245; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v69246; GFX6-NEXT:    v_alignbit_b32 v4, v4, v5, 169247; GFX6-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v49248; GFX6-NEXT:    s_waitcnt lgkmcnt(0)9249; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v39250; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v49251; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9252; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v49253; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]9254; GFX6-NEXT:    s_cbranch_execnz .LBB27_19255; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end9256; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]9257; GFX6-NEXT:    s_setpc_b64 s[30:31]9258  %gep = getelementptr <2 x bfloat>, ptr addrspace(3) %ptr, i32 163839259  %result = atomicrmw fsub ptr addrspace(3) %gep, <2 x bfloat> %val seq_cst9260  ret void9261}9262 9263; --------------------------------------------------------------------9264; misc9265; --------------------------------------------------------------------9266 9267define float @local_atomic_fsub_ret_f32__amdgpu_ignore_denormal_mode(ptr addrspace(3) %ptr) {9268; GFX12-LABEL: local_atomic_fsub_ret_f32__amdgpu_ignore_denormal_mode:9269; GFX12:       ; %bb.0:9270; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x09271; GFX12-NEXT:    s_wait_expcnt 0x09272; GFX12-NEXT:    s_wait_samplecnt 0x09273; GFX12-NEXT:    s_wait_bvhcnt 0x09274; GFX12-NEXT:    s_wait_kmcnt 0x09275; GFX12-NEXT:    ds_load_b32 v1, v09276; GFX12-NEXT:    s_mov_b32 s0, 09277; GFX12-NEXT:  .LBB28_1: ; %atomicrmw.start9278; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=19279; GFX12-NEXT:    s_wait_dscnt 0x09280; GFX12-NEXT:    v_mov_b32_e32 v2, v19281; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)9282; GFX12-NEXT:    v_add_f32_e32 v1, -4.0, v29283; GFX12-NEXT:    s_wait_storecnt 0x09284; GFX12-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v29285; GFX12-NEXT:    s_wait_dscnt 0x09286; GFX12-NEXT:    global_inv scope:SCOPE_SE9287; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v29288; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)9289; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s09290; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)9291; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09292; GFX12-NEXT:    s_cbranch_execnz .LBB28_19293; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end9294; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s09295; GFX12-NEXT:    v_mov_b32_e32 v0, v19296; GFX12-NEXT:    s_wait_loadcnt 0x09297; GFX12-NEXT:    s_setpc_b64 s[30:31]9298;9299; GFX942-LABEL: local_atomic_fsub_ret_f32__amdgpu_ignore_denormal_mode:9300; GFX942:       ; %bb.0:9301; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9302; GFX942-NEXT:    ds_read_b32 v2, v09303; GFX942-NEXT:    s_mov_b64 s[0:1], 09304; GFX942-NEXT:  .LBB28_1: ; %atomicrmw.start9305; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=19306; GFX942-NEXT:    s_waitcnt lgkmcnt(0)9307; GFX942-NEXT:    v_add_f32_e32 v1, -4.0, v29308; GFX942-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v19309; GFX942-NEXT:    s_waitcnt lgkmcnt(0)9310; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v29311; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]9312; GFX942-NEXT:    v_mov_b32_e32 v2, v19313; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]9314; GFX942-NEXT:    s_cbranch_execnz .LBB28_19315; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end9316; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]9317; GFX942-NEXT:    v_mov_b32_e32 v0, v19318; GFX942-NEXT:    s_setpc_b64 s[30:31]9319;9320; GFX11-LABEL: local_atomic_fsub_ret_f32__amdgpu_ignore_denormal_mode:9321; GFX11:       ; %bb.0:9322; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9323; GFX11-NEXT:    ds_load_b32 v1, v09324; GFX11-NEXT:    s_mov_b32 s0, 09325; GFX11-NEXT:  .LBB28_1: ; %atomicrmw.start9326; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=19327; GFX11-NEXT:    s_waitcnt lgkmcnt(0)9328; GFX11-NEXT:    v_mov_b32_e32 v2, v19329; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)9330; GFX11-NEXT:    v_add_f32_e32 v1, -4.0, v29331; GFX11-NEXT:    s_waitcnt_vscnt null, 0x09332; GFX11-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v29333; GFX11-NEXT:    s_waitcnt lgkmcnt(0)9334; GFX11-NEXT:    buffer_gl0_inv9335; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v29336; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s09337; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9338; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09339; GFX11-NEXT:    s_cbranch_execnz .LBB28_19340; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end9341; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s09342; GFX11-NEXT:    v_mov_b32_e32 v0, v19343; GFX11-NEXT:    s_setpc_b64 s[30:31]9344;9345; GFX10-LABEL: local_atomic_fsub_ret_f32__amdgpu_ignore_denormal_mode:9346; GFX10:       ; %bb.0:9347; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9348; GFX10-NEXT:    ds_read_b32 v1, v09349; GFX10-NEXT:    s_mov_b32 s4, 09350; GFX10-NEXT:  .LBB28_1: ; %atomicrmw.start9351; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=19352; GFX10-NEXT:    s_waitcnt lgkmcnt(0)9353; GFX10-NEXT:    v_mov_b32_e32 v2, v19354; GFX10-NEXT:    v_add_f32_e32 v1, -4.0, v29355; GFX10-NEXT:    s_waitcnt_vscnt null, 0x09356; GFX10-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v19357; GFX10-NEXT:    s_waitcnt lgkmcnt(0)9358; GFX10-NEXT:    buffer_gl0_inv9359; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v29360; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s49361; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s49362; GFX10-NEXT:    s_cbranch_execnz .LBB28_19363; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end9364; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s49365; GFX10-NEXT:    v_mov_b32_e32 v0, v19366; GFX10-NEXT:    s_setpc_b64 s[30:31]9367;9368; GFX90A-LABEL: local_atomic_fsub_ret_f32__amdgpu_ignore_denormal_mode:9369; GFX90A:       ; %bb.0:9370; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9371; GFX90A-NEXT:    ds_read_b32 v2, v09372; GFX90A-NEXT:    s_mov_b64 s[4:5], 09373; GFX90A-NEXT:  .LBB28_1: ; %atomicrmw.start9374; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=19375; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)9376; GFX90A-NEXT:    v_add_f32_e32 v1, -4.0, v29377; GFX90A-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v19378; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)9379; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v29380; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9381; GFX90A-NEXT:    v_mov_b32_e32 v2, v19382; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]9383; GFX90A-NEXT:    s_cbranch_execnz .LBB28_19384; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end9385; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]9386; GFX90A-NEXT:    v_mov_b32_e32 v0, v19387; GFX90A-NEXT:    s_setpc_b64 s[30:31]9388;9389; GFX908-LABEL: local_atomic_fsub_ret_f32__amdgpu_ignore_denormal_mode:9390; GFX908:       ; %bb.0:9391; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9392; GFX908-NEXT:    ds_read_b32 v1, v09393; GFX908-NEXT:    s_mov_b64 s[4:5], 09394; GFX908-NEXT:  .LBB28_1: ; %atomicrmw.start9395; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=19396; GFX908-NEXT:    s_waitcnt lgkmcnt(0)9397; GFX908-NEXT:    v_mov_b32_e32 v2, v19398; GFX908-NEXT:    v_add_f32_e32 v1, -4.0, v29399; GFX908-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v19400; GFX908-NEXT:    s_waitcnt lgkmcnt(0)9401; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v29402; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9403; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]9404; GFX908-NEXT:    s_cbranch_execnz .LBB28_19405; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end9406; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]9407; GFX908-NEXT:    v_mov_b32_e32 v0, v19408; GFX908-NEXT:    s_setpc_b64 s[30:31]9409;9410; GFX8-LABEL: local_atomic_fsub_ret_f32__amdgpu_ignore_denormal_mode:9411; GFX8:       ; %bb.0:9412; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9413; GFX8-NEXT:    s_mov_b32 m0, -19414; GFX8-NEXT:    ds_read_b32 v1, v09415; GFX8-NEXT:    s_mov_b64 s[4:5], 09416; GFX8-NEXT:  .LBB28_1: ; %atomicrmw.start9417; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=19418; GFX8-NEXT:    s_waitcnt lgkmcnt(0)9419; GFX8-NEXT:    v_mov_b32_e32 v2, v19420; GFX8-NEXT:    v_add_f32_e32 v1, -4.0, v29421; GFX8-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v19422; GFX8-NEXT:    s_waitcnt lgkmcnt(0)9423; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v29424; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9425; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]9426; GFX8-NEXT:    s_cbranch_execnz .LBB28_19427; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end9428; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]9429; GFX8-NEXT:    v_mov_b32_e32 v0, v19430; GFX8-NEXT:    s_setpc_b64 s[30:31]9431;9432; GFX7-LABEL: local_atomic_fsub_ret_f32__amdgpu_ignore_denormal_mode:9433; GFX7:       ; %bb.0:9434; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9435; GFX7-NEXT:    s_mov_b32 m0, -19436; GFX7-NEXT:    ds_read_b32 v1, v09437; GFX7-NEXT:    s_mov_b64 s[4:5], 09438; GFX7-NEXT:  .LBB28_1: ; %atomicrmw.start9439; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=19440; GFX7-NEXT:    s_waitcnt lgkmcnt(0)9441; GFX7-NEXT:    v_mov_b32_e32 v2, v19442; GFX7-NEXT:    v_add_f32_e32 v1, -4.0, v29443; GFX7-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v19444; GFX7-NEXT:    s_waitcnt lgkmcnt(0)9445; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v29446; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9447; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]9448; GFX7-NEXT:    s_cbranch_execnz .LBB28_19449; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end9450; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]9451; GFX7-NEXT:    v_mov_b32_e32 v0, v19452; GFX7-NEXT:    s_setpc_b64 s[30:31]9453;9454; GFX6-LABEL: local_atomic_fsub_ret_f32__amdgpu_ignore_denormal_mode:9455; GFX6:       ; %bb.0:9456; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9457; GFX6-NEXT:    s_mov_b32 m0, -19458; GFX6-NEXT:    ds_read_b32 v1, v09459; GFX6-NEXT:    s_mov_b64 s[4:5], 09460; GFX6-NEXT:  .LBB28_1: ; %atomicrmw.start9461; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=19462; GFX6-NEXT:    s_waitcnt lgkmcnt(0)9463; GFX6-NEXT:    v_mov_b32_e32 v2, v19464; GFX6-NEXT:    v_add_f32_e32 v1, -4.0, v29465; GFX6-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v19466; GFX6-NEXT:    s_waitcnt lgkmcnt(0)9467; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v29468; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9469; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]9470; GFX6-NEXT:    s_cbranch_execnz .LBB28_19471; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end9472; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]9473; GFX6-NEXT:    v_mov_b32_e32 v0, v19474; GFX6-NEXT:    s_setpc_b64 s[30:31]9475  %result = atomicrmw fsub ptr addrspace(3) %ptr, float 4.0 seq_cst, !amdgpu.ignore.denormal.mode !09476  ret float %result9477}9478 9479define void @local_atomic_fsub_noret_f32__amdgpu_ignore_denormal_mode(ptr addrspace(3) %ptr) {9480; GFX12-LABEL: local_atomic_fsub_noret_f32__amdgpu_ignore_denormal_mode:9481; GFX12:       ; %bb.0:9482; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x09483; GFX12-NEXT:    s_wait_expcnt 0x09484; GFX12-NEXT:    s_wait_samplecnt 0x09485; GFX12-NEXT:    s_wait_bvhcnt 0x09486; GFX12-NEXT:    s_wait_kmcnt 0x09487; GFX12-NEXT:    ds_load_b32 v1, v09488; GFX12-NEXT:    s_mov_b32 s0, 09489; GFX12-NEXT:  .LBB29_1: ; %atomicrmw.start9490; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=19491; GFX12-NEXT:    s_wait_dscnt 0x09492; GFX12-NEXT:    v_add_f32_e32 v2, -4.0, v19493; GFX12-NEXT:    s_wait_storecnt 0x09494; GFX12-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v19495; GFX12-NEXT:    s_wait_dscnt 0x09496; GFX12-NEXT:    global_inv scope:SCOPE_SE9497; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v19498; GFX12-NEXT:    v_mov_b32_e32 v1, v29499; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)9500; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s09501; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)9502; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09503; GFX12-NEXT:    s_cbranch_execnz .LBB29_19504; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end9505; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s09506; GFX12-NEXT:    s_wait_loadcnt 0x09507; GFX12-NEXT:    s_setpc_b64 s[30:31]9508;9509; GFX942-LABEL: local_atomic_fsub_noret_f32__amdgpu_ignore_denormal_mode:9510; GFX942:       ; %bb.0:9511; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9512; GFX942-NEXT:    ds_read_b32 v1, v09513; GFX942-NEXT:    s_mov_b64 s[0:1], 09514; GFX942-NEXT:  .LBB29_1: ; %atomicrmw.start9515; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=19516; GFX942-NEXT:    s_waitcnt lgkmcnt(0)9517; GFX942-NEXT:    v_add_f32_e32 v2, -4.0, v19518; GFX942-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v29519; GFX942-NEXT:    s_waitcnt lgkmcnt(0)9520; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v19521; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]9522; GFX942-NEXT:    v_mov_b32_e32 v1, v29523; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]9524; GFX942-NEXT:    s_cbranch_execnz .LBB29_19525; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end9526; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]9527; GFX942-NEXT:    s_setpc_b64 s[30:31]9528;9529; GFX11-LABEL: local_atomic_fsub_noret_f32__amdgpu_ignore_denormal_mode:9530; GFX11:       ; %bb.0:9531; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9532; GFX11-NEXT:    ds_load_b32 v1, v09533; GFX11-NEXT:    s_mov_b32 s0, 09534; GFX11-NEXT:  .LBB29_1: ; %atomicrmw.start9535; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=19536; GFX11-NEXT:    s_waitcnt lgkmcnt(0)9537; GFX11-NEXT:    v_add_f32_e32 v2, -4.0, v19538; GFX11-NEXT:    s_waitcnt_vscnt null, 0x09539; GFX11-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v19540; GFX11-NEXT:    s_waitcnt lgkmcnt(0)9541; GFX11-NEXT:    buffer_gl0_inv9542; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v19543; GFX11-NEXT:    v_mov_b32_e32 v1, v29544; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s09545; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9546; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09547; GFX11-NEXT:    s_cbranch_execnz .LBB29_19548; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end9549; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s09550; GFX11-NEXT:    s_setpc_b64 s[30:31]9551;9552; GFX10-LABEL: local_atomic_fsub_noret_f32__amdgpu_ignore_denormal_mode:9553; GFX10:       ; %bb.0:9554; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9555; GFX10-NEXT:    ds_read_b32 v1, v09556; GFX10-NEXT:    s_mov_b32 s4, 09557; GFX10-NEXT:  .LBB29_1: ; %atomicrmw.start9558; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=19559; GFX10-NEXT:    s_waitcnt lgkmcnt(0)9560; GFX10-NEXT:    v_add_f32_e32 v2, -4.0, v19561; GFX10-NEXT:    s_waitcnt_vscnt null, 0x09562; GFX10-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v29563; GFX10-NEXT:    s_waitcnt lgkmcnt(0)9564; GFX10-NEXT:    buffer_gl0_inv9565; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v19566; GFX10-NEXT:    v_mov_b32_e32 v1, v29567; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s49568; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s49569; GFX10-NEXT:    s_cbranch_execnz .LBB29_19570; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end9571; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s49572; GFX10-NEXT:    s_setpc_b64 s[30:31]9573;9574; GFX90A-LABEL: local_atomic_fsub_noret_f32__amdgpu_ignore_denormal_mode:9575; GFX90A:       ; %bb.0:9576; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9577; GFX90A-NEXT:    ds_read_b32 v1, v09578; GFX90A-NEXT:    s_mov_b64 s[4:5], 09579; GFX90A-NEXT:  .LBB29_1: ; %atomicrmw.start9580; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=19581; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)9582; GFX90A-NEXT:    v_add_f32_e32 v2, -4.0, v19583; GFX90A-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v29584; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)9585; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v19586; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9587; GFX90A-NEXT:    v_mov_b32_e32 v1, v29588; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]9589; GFX90A-NEXT:    s_cbranch_execnz .LBB29_19590; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end9591; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]9592; GFX90A-NEXT:    s_setpc_b64 s[30:31]9593;9594; GFX908-LABEL: local_atomic_fsub_noret_f32__amdgpu_ignore_denormal_mode:9595; GFX908:       ; %bb.0:9596; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9597; GFX908-NEXT:    ds_read_b32 v1, v09598; GFX908-NEXT:    s_mov_b64 s[4:5], 09599; GFX908-NEXT:  .LBB29_1: ; %atomicrmw.start9600; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=19601; GFX908-NEXT:    s_waitcnt lgkmcnt(0)9602; GFX908-NEXT:    v_add_f32_e32 v2, -4.0, v19603; GFX908-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v29604; GFX908-NEXT:    s_waitcnt lgkmcnt(0)9605; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v19606; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9607; GFX908-NEXT:    v_mov_b32_e32 v1, v29608; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]9609; GFX908-NEXT:    s_cbranch_execnz .LBB29_19610; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end9611; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]9612; GFX908-NEXT:    s_setpc_b64 s[30:31]9613;9614; GFX8-LABEL: local_atomic_fsub_noret_f32__amdgpu_ignore_denormal_mode:9615; GFX8:       ; %bb.0:9616; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9617; GFX8-NEXT:    s_mov_b32 m0, -19618; GFX8-NEXT:    ds_read_b32 v1, v09619; GFX8-NEXT:    s_mov_b64 s[4:5], 09620; GFX8-NEXT:  .LBB29_1: ; %atomicrmw.start9621; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=19622; GFX8-NEXT:    s_waitcnt lgkmcnt(0)9623; GFX8-NEXT:    v_add_f32_e32 v2, -4.0, v19624; GFX8-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v29625; GFX8-NEXT:    s_waitcnt lgkmcnt(0)9626; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v19627; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9628; GFX8-NEXT:    v_mov_b32_e32 v1, v29629; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]9630; GFX8-NEXT:    s_cbranch_execnz .LBB29_19631; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end9632; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]9633; GFX8-NEXT:    s_setpc_b64 s[30:31]9634;9635; GFX7-LABEL: local_atomic_fsub_noret_f32__amdgpu_ignore_denormal_mode:9636; GFX7:       ; %bb.0:9637; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9638; GFX7-NEXT:    s_mov_b32 m0, -19639; GFX7-NEXT:    ds_read_b32 v1, v09640; GFX7-NEXT:    s_mov_b64 s[4:5], 09641; GFX7-NEXT:  .LBB29_1: ; %atomicrmw.start9642; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=19643; GFX7-NEXT:    s_waitcnt lgkmcnt(0)9644; GFX7-NEXT:    v_add_f32_e32 v2, -4.0, v19645; GFX7-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v29646; GFX7-NEXT:    s_waitcnt lgkmcnt(0)9647; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v19648; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9649; GFX7-NEXT:    v_mov_b32_e32 v1, v29650; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]9651; GFX7-NEXT:    s_cbranch_execnz .LBB29_19652; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end9653; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]9654; GFX7-NEXT:    s_setpc_b64 s[30:31]9655;9656; GFX6-LABEL: local_atomic_fsub_noret_f32__amdgpu_ignore_denormal_mode:9657; GFX6:       ; %bb.0:9658; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9659; GFX6-NEXT:    s_mov_b32 m0, -19660; GFX6-NEXT:    ds_read_b32 v1, v09661; GFX6-NEXT:    s_mov_b64 s[4:5], 09662; GFX6-NEXT:  .LBB29_1: ; %atomicrmw.start9663; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=19664; GFX6-NEXT:    s_waitcnt lgkmcnt(0)9665; GFX6-NEXT:    v_add_f32_e32 v2, -4.0, v19666; GFX6-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v29667; GFX6-NEXT:    s_waitcnt lgkmcnt(0)9668; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v19669; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9670; GFX6-NEXT:    v_mov_b32_e32 v1, v29671; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]9672; GFX6-NEXT:    s_cbranch_execnz .LBB29_19673; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end9674; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]9675; GFX6-NEXT:    s_setpc_b64 s[30:31]9676  %result = atomicrmw fsub ptr addrspace(3) %ptr, float 4.0 seq_cst, !amdgpu.ignore.denormal.mode !09677  ret void9678}9679 9680!0 = !{}9681