brintos

brintos / llvm-project-archived public Read only

0
0
Text · 927.6 KiB · dbd48d2 Raw
19928 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1200 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-TRUE16 %s3; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1200 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-FAKE16 %s4; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx942 < %s | FileCheck -check-prefix=GFX942 %s5; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-TRUE16 %s6; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1100 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-FAKE16 %s7; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1010 < %s | FileCheck -check-prefix=GFX10 %s8; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx90a < %s | FileCheck -check-prefix=GFX90A %s9; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx908 < %s | FileCheck -check-prefix=GFX908 %s10; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=tonga < %s | FileCheck -check-prefix=GFX8 %s11; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=hawaii < %s | FileCheck -check-prefix=GFX7 %s12; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=tahiti < %s | FileCheck -check-prefix=GFX6 %s13 14; --------------------------------------------------------------------15; float16; --------------------------------------------------------------------17 18define float @global_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, float %val) #0 {19; GFX12-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory: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:    s_wait_storecnt 0x027; GFX12-NEXT:    global_atomic_max_num_f32 v0, v[0:1], v2, off th:TH_ATOMIC_RETURN scope:SCOPE_DEV28; GFX12-NEXT:    s_wait_loadcnt 0x029; GFX12-NEXT:    global_inv scope:SCOPE_DEV30; GFX12-NEXT:    s_wait_loadcnt 0x031; GFX12-NEXT:    s_setpc_b64 s[30:31]32;33; GFX942-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory:34; GFX942:       ; %bb.0:35; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)36; GFX942-NEXT:    global_load_dword v3, v[0:1], off37; GFX942-NEXT:    s_mov_b64 s[0:1], 038; GFX942-NEXT:    v_max_f32_e32 v4, v2, v239; GFX942-NEXT:  .LBB0_1: ; %atomicrmw.start40; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=141; GFX942-NEXT:    s_waitcnt vmcnt(0)42; GFX942-NEXT:    v_max_f32_e32 v2, v3, v343; GFX942-NEXT:    v_max_f32_e32 v2, v2, v444; GFX942-NEXT:    buffer_wbl2 sc145; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc046; GFX942-NEXT:    s_waitcnt vmcnt(0)47; GFX942-NEXT:    buffer_inv sc148; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v349; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]50; GFX942-NEXT:    v_mov_b32_e32 v3, v251; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]52; GFX942-NEXT:    s_cbranch_execnz .LBB0_153; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end54; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]55; GFX942-NEXT:    v_mov_b32_e32 v0, v256; GFX942-NEXT:    s_setpc_b64 s[30:31]57;58; GFX11-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory:59; GFX11:       ; %bb.0:60; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)61; GFX11-NEXT:    s_waitcnt_vscnt null, 0x062; GFX11-NEXT:    global_atomic_max_f32 v0, v[0:1], v2, off glc63; GFX11-NEXT:    s_waitcnt vmcnt(0)64; GFX11-NEXT:    buffer_gl1_inv65; GFX11-NEXT:    buffer_gl0_inv66; GFX11-NEXT:    s_setpc_b64 s[30:31]67;68; GFX10-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory:69; GFX10:       ; %bb.0:70; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)71; GFX10-NEXT:    s_waitcnt_vscnt null, 0x072; GFX10-NEXT:    global_atomic_fmax v0, v[0:1], v2, off glc73; GFX10-NEXT:    s_waitcnt vmcnt(0)74; GFX10-NEXT:    buffer_gl1_inv75; GFX10-NEXT:    buffer_gl0_inv76; GFX10-NEXT:    s_setpc_b64 s[30:31]77;78; GFX90A-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory:79; GFX90A:       ; %bb.0:80; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)81; GFX90A-NEXT:    global_load_dword v3, v[0:1], off82; GFX90A-NEXT:    s_mov_b64 s[4:5], 083; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v284; GFX90A-NEXT:  .LBB0_1: ; %atomicrmw.start85; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=186; GFX90A-NEXT:    s_waitcnt vmcnt(0)87; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v388; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v489; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc90; GFX90A-NEXT:    s_waitcnt vmcnt(0)91; GFX90A-NEXT:    buffer_wbinvl192; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v393; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]94; GFX90A-NEXT:    v_mov_b32_e32 v3, v295; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]96; GFX90A-NEXT:    s_cbranch_execnz .LBB0_197; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end98; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]99; GFX90A-NEXT:    v_mov_b32_e32 v0, v2100; GFX90A-NEXT:    s_setpc_b64 s[30:31]101;102; GFX908-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory:103; GFX908:       ; %bb.0:104; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)105; GFX908-NEXT:    global_load_dword v3, v[0:1], off106; GFX908-NEXT:    s_mov_b64 s[4:5], 0107; GFX908-NEXT:    v_max_f32_e32 v2, v2, v2108; GFX908-NEXT:  .LBB0_1: ; %atomicrmw.start109; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1110; GFX908-NEXT:    s_waitcnt vmcnt(0)111; GFX908-NEXT:    v_mov_b32_e32 v4, v3112; GFX908-NEXT:    v_max_f32_e32 v3, v4, v4113; GFX908-NEXT:    v_max_f32_e32 v3, v3, v2114; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc115; GFX908-NEXT:    s_waitcnt vmcnt(0)116; GFX908-NEXT:    buffer_wbinvl1117; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4118; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]119; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]120; GFX908-NEXT:    s_cbranch_execnz .LBB0_1121; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end122; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]123; GFX908-NEXT:    v_mov_b32_e32 v0, v3124; GFX908-NEXT:    s_setpc_b64 s[30:31]125;126; GFX8-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory:127; GFX8:       ; %bb.0:128; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)129; GFX8-NEXT:    flat_load_dword v3, v[0:1]130; GFX8-NEXT:    s_mov_b64 s[4:5], 0131; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v2132; GFX8-NEXT:  .LBB0_1: ; %atomicrmw.start133; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1134; GFX8-NEXT:    s_waitcnt vmcnt(0)135; GFX8-NEXT:    v_mov_b32_e32 v4, v3136; GFX8-NEXT:    v_mul_f32_e32 v3, 1.0, v4137; GFX8-NEXT:    v_max_f32_e32 v3, v3, v2138; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc139; GFX8-NEXT:    s_waitcnt vmcnt(0)140; GFX8-NEXT:    buffer_wbinvl1141; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4142; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]143; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]144; GFX8-NEXT:    s_cbranch_execnz .LBB0_1145; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end146; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]147; GFX8-NEXT:    v_mov_b32_e32 v0, v3148; GFX8-NEXT:    s_setpc_b64 s[30:31]149;150; GFX7-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory:151; GFX7:       ; %bb.0:152; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)153; GFX7-NEXT:    s_mov_b32 s6, 0154; GFX7-NEXT:    s_mov_b32 s7, 0xf000155; GFX7-NEXT:    s_mov_b32 s4, s6156; GFX7-NEXT:    s_mov_b32 s5, s6157; GFX7-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 glc158; GFX7-NEXT:    s_waitcnt vmcnt(0)159; GFX7-NEXT:    buffer_wbinvl1160; GFX7-NEXT:    v_mov_b32_e32 v0, v2161; GFX7-NEXT:    s_setpc_b64 s[30:31]162;163; GFX6-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory:164; GFX6:       ; %bb.0:165; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)166; GFX6-NEXT:    s_mov_b32 s6, 0167; GFX6-NEXT:    s_mov_b32 s7, 0xf000168; GFX6-NEXT:    s_mov_b32 s4, s6169; GFX6-NEXT:    s_mov_b32 s5, s6170; GFX6-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 glc171; GFX6-NEXT:    s_waitcnt vmcnt(0)172; GFX6-NEXT:    buffer_wbinvl1173; GFX6-NEXT:    v_mov_b32_e32 v0, v2174; GFX6-NEXT:    s_waitcnt expcnt(0)175; GFX6-NEXT:    s_setpc_b64 s[30:31]176  %result = atomicrmw fmax ptr addrspace(1) %ptr, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0177  ret float %result178}179 180define float @global_agent_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, float %val) #0 {181; GFX12-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:182; GFX12:       ; %bb.0:183; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0184; GFX12-NEXT:    s_wait_expcnt 0x0185; GFX12-NEXT:    s_wait_samplecnt 0x0186; GFX12-NEXT:    s_wait_bvhcnt 0x0187; GFX12-NEXT:    s_wait_kmcnt 0x0188; GFX12-NEXT:    s_wait_storecnt 0x0189; GFX12-NEXT:    global_atomic_max_num_f32 v0, v[0:1], v2, off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV190; GFX12-NEXT:    s_wait_loadcnt 0x0191; GFX12-NEXT:    global_inv scope:SCOPE_DEV192; GFX12-NEXT:    s_wait_loadcnt 0x0193; GFX12-NEXT:    s_setpc_b64 s[30:31]194;195; GFX942-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:196; GFX942:       ; %bb.0:197; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)198; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:2044199; GFX942-NEXT:    s_mov_b64 s[0:1], 0200; GFX942-NEXT:    v_max_f32_e32 v4, v2, v2201; GFX942-NEXT:  .LBB1_1: ; %atomicrmw.start202; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1203; GFX942-NEXT:    s_waitcnt vmcnt(0)204; GFX942-NEXT:    v_max_f32_e32 v2, v3, v3205; GFX942-NEXT:    v_max_f32_e32 v2, v2, v4206; GFX942-NEXT:    buffer_wbl2 sc1207; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 sc0208; GFX942-NEXT:    s_waitcnt vmcnt(0)209; GFX942-NEXT:    buffer_inv sc1210; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3211; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]212; GFX942-NEXT:    v_mov_b32_e32 v3, v2213; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]214; GFX942-NEXT:    s_cbranch_execnz .LBB1_1215; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end216; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]217; GFX942-NEXT:    v_mov_b32_e32 v0, v2218; GFX942-NEXT:    s_setpc_b64 s[30:31]219;220; GFX11-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:221; GFX11:       ; %bb.0:222; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)223; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0224; GFX11-NEXT:    global_atomic_max_f32 v0, v[0:1], v2, off offset:2044 glc225; GFX11-NEXT:    s_waitcnt vmcnt(0)226; GFX11-NEXT:    buffer_gl1_inv227; GFX11-NEXT:    buffer_gl0_inv228; GFX11-NEXT:    s_setpc_b64 s[30:31]229;230; GFX10-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:231; GFX10:       ; %bb.0:232; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)233; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0234; GFX10-NEXT:    global_atomic_fmax v0, v[0:1], v2, off offset:2044 glc235; GFX10-NEXT:    s_waitcnt vmcnt(0)236; GFX10-NEXT:    buffer_gl1_inv237; GFX10-NEXT:    buffer_gl0_inv238; GFX10-NEXT:    s_setpc_b64 s[30:31]239;240; GFX90A-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:241; GFX90A:       ; %bb.0:242; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)243; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:2044244; GFX90A-NEXT:    s_mov_b64 s[4:5], 0245; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v2246; GFX90A-NEXT:  .LBB1_1: ; %atomicrmw.start247; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1248; GFX90A-NEXT:    s_waitcnt vmcnt(0)249; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v3250; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v4251; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc252; GFX90A-NEXT:    s_waitcnt vmcnt(0)253; GFX90A-NEXT:    buffer_wbinvl1254; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3255; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]256; GFX90A-NEXT:    v_mov_b32_e32 v3, v2257; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]258; GFX90A-NEXT:    s_cbranch_execnz .LBB1_1259; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end260; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]261; GFX90A-NEXT:    v_mov_b32_e32 v0, v2262; GFX90A-NEXT:    s_setpc_b64 s[30:31]263;264; GFX908-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:265; GFX908:       ; %bb.0:266; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)267; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:2044268; GFX908-NEXT:    s_mov_b64 s[4:5], 0269; GFX908-NEXT:    v_max_f32_e32 v2, v2, v2270; GFX908-NEXT:  .LBB1_1: ; %atomicrmw.start271; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1272; GFX908-NEXT:    s_waitcnt vmcnt(0)273; GFX908-NEXT:    v_mov_b32_e32 v4, v3274; GFX908-NEXT:    v_max_f32_e32 v3, v4, v4275; GFX908-NEXT:    v_max_f32_e32 v3, v3, v2276; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc277; GFX908-NEXT:    s_waitcnt vmcnt(0)278; GFX908-NEXT:    buffer_wbinvl1279; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4280; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]281; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]282; GFX908-NEXT:    s_cbranch_execnz .LBB1_1283; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end284; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]285; GFX908-NEXT:    v_mov_b32_e32 v0, v3286; GFX908-NEXT:    s_setpc_b64 s[30:31]287;288; GFX8-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:289; GFX8:       ; %bb.0:290; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)291; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v0292; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc293; GFX8-NEXT:    flat_load_dword v0, v[3:4]294; GFX8-NEXT:    s_mov_b64 s[4:5], 0295; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v2296; GFX8-NEXT:  .LBB1_1: ; %atomicrmw.start297; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1298; GFX8-NEXT:    s_waitcnt vmcnt(0)299; GFX8-NEXT:    v_mov_b32_e32 v6, v0300; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v6301; GFX8-NEXT:    v_max_f32_e32 v5, v0, v1302; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc303; GFX8-NEXT:    s_waitcnt vmcnt(0)304; GFX8-NEXT:    buffer_wbinvl1305; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v6306; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]307; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]308; GFX8-NEXT:    s_cbranch_execnz .LBB1_1309; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end310; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]311; GFX8-NEXT:    s_setpc_b64 s[30:31]312;313; GFX7-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:314; GFX7:       ; %bb.0:315; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)316; GFX7-NEXT:    s_mov_b32 s6, 0317; GFX7-NEXT:    s_mov_b32 s7, 0xf000318; GFX7-NEXT:    s_mov_b32 s4, s6319; GFX7-NEXT:    s_mov_b32 s5, s6320; GFX7-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 offset:2044 glc321; GFX7-NEXT:    s_waitcnt vmcnt(0)322; GFX7-NEXT:    buffer_wbinvl1323; GFX7-NEXT:    v_mov_b32_e32 v0, v2324; GFX7-NEXT:    s_setpc_b64 s[30:31]325;326; GFX6-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:327; GFX6:       ; %bb.0:328; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)329; GFX6-NEXT:    s_mov_b32 s6, 0330; GFX6-NEXT:    s_mov_b32 s7, 0xf000331; GFX6-NEXT:    s_mov_b32 s4, s6332; GFX6-NEXT:    s_mov_b32 s5, s6333; GFX6-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 offset:2044 glc334; GFX6-NEXT:    s_waitcnt vmcnt(0)335; GFX6-NEXT:    buffer_wbinvl1336; GFX6-NEXT:    v_mov_b32_e32 v0, v2337; GFX6-NEXT:    s_waitcnt expcnt(0)338; GFX6-NEXT:    s_setpc_b64 s[30:31]339  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 511340  %result = atomicrmw fmax ptr addrspace(1) %gep, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0341  ret float %result342}343 344define float @global_agent_atomic_fmax_ret_f32__offset12b_neg__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, float %val) #0 {345; GFX12-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:346; GFX12:       ; %bb.0:347; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0348; GFX12-NEXT:    s_wait_expcnt 0x0349; GFX12-NEXT:    s_wait_samplecnt 0x0350; GFX12-NEXT:    s_wait_bvhcnt 0x0351; GFX12-NEXT:    s_wait_kmcnt 0x0352; GFX12-NEXT:    s_wait_storecnt 0x0353; GFX12-NEXT:    global_atomic_max_num_f32 v0, v[0:1], v2, off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV354; GFX12-NEXT:    s_wait_loadcnt 0x0355; GFX12-NEXT:    global_inv scope:SCOPE_DEV356; GFX12-NEXT:    s_wait_loadcnt 0x0357; GFX12-NEXT:    s_setpc_b64 s[30:31]358;359; GFX942-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:360; GFX942:       ; %bb.0:361; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)362; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:-2048363; GFX942-NEXT:    s_mov_b64 s[0:1], 0364; GFX942-NEXT:    v_max_f32_e32 v4, v2, v2365; GFX942-NEXT:  .LBB2_1: ; %atomicrmw.start366; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1367; GFX942-NEXT:    s_waitcnt vmcnt(0)368; GFX942-NEXT:    v_max_f32_e32 v2, v3, v3369; GFX942-NEXT:    v_max_f32_e32 v2, v2, v4370; GFX942-NEXT:    buffer_wbl2 sc1371; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 sc0372; GFX942-NEXT:    s_waitcnt vmcnt(0)373; GFX942-NEXT:    buffer_inv sc1374; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3375; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]376; GFX942-NEXT:    v_mov_b32_e32 v3, v2377; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]378; GFX942-NEXT:    s_cbranch_execnz .LBB2_1379; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end380; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]381; GFX942-NEXT:    v_mov_b32_e32 v0, v2382; GFX942-NEXT:    s_setpc_b64 s[30:31]383;384; GFX11-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:385; GFX11:       ; %bb.0:386; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)387; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0388; GFX11-NEXT:    global_atomic_max_f32 v0, v[0:1], v2, off offset:-2048 glc389; GFX11-NEXT:    s_waitcnt vmcnt(0)390; GFX11-NEXT:    buffer_gl1_inv391; GFX11-NEXT:    buffer_gl0_inv392; GFX11-NEXT:    s_setpc_b64 s[30:31]393;394; GFX10-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:395; GFX10:       ; %bb.0:396; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)397; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0398; GFX10-NEXT:    global_atomic_fmax v0, v[0:1], v2, off offset:-2048 glc399; GFX10-NEXT:    s_waitcnt vmcnt(0)400; GFX10-NEXT:    buffer_gl1_inv401; GFX10-NEXT:    buffer_gl0_inv402; GFX10-NEXT:    s_setpc_b64 s[30:31]403;404; GFX90A-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:405; GFX90A:       ; %bb.0:406; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)407; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:-2048408; GFX90A-NEXT:    s_mov_b64 s[4:5], 0409; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v2410; GFX90A-NEXT:  .LBB2_1: ; %atomicrmw.start411; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1412; GFX90A-NEXT:    s_waitcnt vmcnt(0)413; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v3414; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v4415; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 glc416; GFX90A-NEXT:    s_waitcnt vmcnt(0)417; GFX90A-NEXT:    buffer_wbinvl1418; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3419; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]420; GFX90A-NEXT:    v_mov_b32_e32 v3, v2421; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]422; GFX90A-NEXT:    s_cbranch_execnz .LBB2_1423; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end424; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]425; GFX90A-NEXT:    v_mov_b32_e32 v0, v2426; GFX90A-NEXT:    s_setpc_b64 s[30:31]427;428; GFX908-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:429; GFX908:       ; %bb.0:430; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)431; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:-2048432; GFX908-NEXT:    s_mov_b64 s[4:5], 0433; GFX908-NEXT:    v_max_f32_e32 v2, v2, v2434; GFX908-NEXT:  .LBB2_1: ; %atomicrmw.start435; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1436; GFX908-NEXT:    s_waitcnt vmcnt(0)437; GFX908-NEXT:    v_mov_b32_e32 v4, v3438; GFX908-NEXT:    v_max_f32_e32 v3, v4, v4439; GFX908-NEXT:    v_max_f32_e32 v3, v3, v2440; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:-2048 glc441; GFX908-NEXT:    s_waitcnt vmcnt(0)442; GFX908-NEXT:    buffer_wbinvl1443; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4444; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]445; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]446; GFX908-NEXT:    s_cbranch_execnz .LBB2_1447; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end448; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]449; GFX908-NEXT:    v_mov_b32_e32 v0, v3450; GFX908-NEXT:    s_setpc_b64 s[30:31]451;452; GFX8-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:453; GFX8:       ; %bb.0:454; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)455; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v0456; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, -1, v1, vcc457; GFX8-NEXT:    flat_load_dword v0, v[3:4]458; GFX8-NEXT:    s_mov_b64 s[4:5], 0459; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v2460; GFX8-NEXT:  .LBB2_1: ; %atomicrmw.start461; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1462; GFX8-NEXT:    s_waitcnt vmcnt(0)463; GFX8-NEXT:    v_mov_b32_e32 v6, v0464; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v6465; GFX8-NEXT:    v_max_f32_e32 v5, v0, v1466; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc467; GFX8-NEXT:    s_waitcnt vmcnt(0)468; GFX8-NEXT:    buffer_wbinvl1469; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v6470; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]471; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]472; GFX8-NEXT:    s_cbranch_execnz .LBB2_1473; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end474; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]475; GFX8-NEXT:    s_setpc_b64 s[30:31]476;477; GFX7-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:478; GFX7:       ; %bb.0:479; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)480; GFX7-NEXT:    s_movk_i32 s4, 0xf800481; GFX7-NEXT:    s_mov_b32 s7, 0xf000482; GFX7-NEXT:    s_mov_b32 s6, 0483; GFX7-NEXT:    s_mov_b32 s5, -1484; GFX7-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 glc485; GFX7-NEXT:    s_waitcnt vmcnt(0)486; GFX7-NEXT:    buffer_wbinvl1487; GFX7-NEXT:    v_mov_b32_e32 v0, v2488; GFX7-NEXT:    s_setpc_b64 s[30:31]489;490; GFX6-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:491; GFX6:       ; %bb.0:492; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)493; GFX6-NEXT:    s_movk_i32 s4, 0xf800494; GFX6-NEXT:    s_mov_b32 s7, 0xf000495; GFX6-NEXT:    s_mov_b32 s6, 0496; GFX6-NEXT:    s_mov_b32 s5, -1497; GFX6-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 glc498; GFX6-NEXT:    s_waitcnt vmcnt(0)499; GFX6-NEXT:    buffer_wbinvl1500; GFX6-NEXT:    v_mov_b32_e32 v0, v2501; GFX6-NEXT:    s_waitcnt expcnt(0)502; GFX6-NEXT:    s_setpc_b64 s[30:31]503  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 -512504  %result = atomicrmw fmax ptr addrspace(1) %gep, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0505  ret float %result506}507 508define void @global_agent_atomic_fmax_noret_f32__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, float %val) #0 {509; GFX12-LABEL: global_agent_atomic_fmax_noret_f32__amdgpu_no_fine_grained_memory:510; GFX12:       ; %bb.0:511; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0512; GFX12-NEXT:    s_wait_expcnt 0x0513; GFX12-NEXT:    s_wait_samplecnt 0x0514; GFX12-NEXT:    s_wait_bvhcnt 0x0515; GFX12-NEXT:    s_wait_kmcnt 0x0516; GFX12-NEXT:    s_wait_storecnt 0x0517; GFX12-NEXT:    global_atomic_max_num_f32 v[0:1], v2, off scope:SCOPE_DEV518; GFX12-NEXT:    s_wait_storecnt 0x0519; GFX12-NEXT:    global_inv scope:SCOPE_DEV520; GFX12-NEXT:    s_wait_loadcnt 0x0521; GFX12-NEXT:    s_setpc_b64 s[30:31]522;523; GFX942-LABEL: global_agent_atomic_fmax_noret_f32__amdgpu_no_fine_grained_memory:524; GFX942:       ; %bb.0:525; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)526; GFX942-NEXT:    global_load_dword v3, v[0:1], off527; GFX942-NEXT:    s_mov_b64 s[0:1], 0528; GFX942-NEXT:    v_max_f32_e32 v4, v2, v2529; GFX942-NEXT:  .LBB3_1: ; %atomicrmw.start530; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1531; GFX942-NEXT:    s_waitcnt vmcnt(0)532; GFX942-NEXT:    v_max_f32_e32 v2, v3, v3533; GFX942-NEXT:    v_max_f32_e32 v2, v2, v4534; GFX942-NEXT:    buffer_wbl2 sc1535; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc0536; GFX942-NEXT:    s_waitcnt vmcnt(0)537; GFX942-NEXT:    buffer_inv sc1538; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3539; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]540; GFX942-NEXT:    v_mov_b32_e32 v3, v2541; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]542; GFX942-NEXT:    s_cbranch_execnz .LBB3_1543; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end544; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]545; GFX942-NEXT:    s_setpc_b64 s[30:31]546;547; GFX11-LABEL: global_agent_atomic_fmax_noret_f32__amdgpu_no_fine_grained_memory:548; GFX11:       ; %bb.0:549; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)550; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0551; GFX11-NEXT:    global_atomic_max_f32 v[0:1], v2, off552; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0553; GFX11-NEXT:    buffer_gl1_inv554; GFX11-NEXT:    buffer_gl0_inv555; GFX11-NEXT:    s_setpc_b64 s[30:31]556;557; GFX10-LABEL: global_agent_atomic_fmax_noret_f32__amdgpu_no_fine_grained_memory:558; GFX10:       ; %bb.0:559; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)560; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0561; GFX10-NEXT:    global_atomic_fmax v[0:1], v2, off562; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0563; GFX10-NEXT:    buffer_gl1_inv564; GFX10-NEXT:    buffer_gl0_inv565; GFX10-NEXT:    s_setpc_b64 s[30:31]566;567; GFX90A-LABEL: global_agent_atomic_fmax_noret_f32__amdgpu_no_fine_grained_memory:568; GFX90A:       ; %bb.0:569; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)570; GFX90A-NEXT:    global_load_dword v3, v[0:1], off571; GFX90A-NEXT:    s_mov_b64 s[4:5], 0572; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v2573; GFX90A-NEXT:  .LBB3_1: ; %atomicrmw.start574; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1575; GFX90A-NEXT:    s_waitcnt vmcnt(0)576; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v3577; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v4578; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc579; GFX90A-NEXT:    s_waitcnt vmcnt(0)580; GFX90A-NEXT:    buffer_wbinvl1581; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3582; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]583; GFX90A-NEXT:    v_mov_b32_e32 v3, v2584; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]585; GFX90A-NEXT:    s_cbranch_execnz .LBB3_1586; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end587; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]588; GFX90A-NEXT:    s_setpc_b64 s[30:31]589;590; GFX908-LABEL: global_agent_atomic_fmax_noret_f32__amdgpu_no_fine_grained_memory:591; GFX908:       ; %bb.0:592; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)593; GFX908-NEXT:    global_load_dword v3, v[0:1], off594; GFX908-NEXT:    s_mov_b64 s[4:5], 0595; GFX908-NEXT:    v_max_f32_e32 v4, v2, v2596; GFX908-NEXT:  .LBB3_1: ; %atomicrmw.start597; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1598; GFX908-NEXT:    s_waitcnt vmcnt(0)599; GFX908-NEXT:    v_max_f32_e32 v2, v3, v3600; GFX908-NEXT:    v_max_f32_e32 v2, v2, v4601; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc602; GFX908-NEXT:    s_waitcnt vmcnt(0)603; GFX908-NEXT:    buffer_wbinvl1604; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3605; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]606; GFX908-NEXT:    v_mov_b32_e32 v3, v2607; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]608; GFX908-NEXT:    s_cbranch_execnz .LBB3_1609; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end610; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]611; GFX908-NEXT:    s_setpc_b64 s[30:31]612;613; GFX8-LABEL: global_agent_atomic_fmax_noret_f32__amdgpu_no_fine_grained_memory:614; GFX8:       ; %bb.0:615; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)616; GFX8-NEXT:    flat_load_dword v3, v[0:1]617; GFX8-NEXT:    s_mov_b64 s[4:5], 0618; GFX8-NEXT:    v_mul_f32_e32 v4, 1.0, v2619; GFX8-NEXT:  .LBB3_1: ; %atomicrmw.start620; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1621; GFX8-NEXT:    s_waitcnt vmcnt(0)622; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v3623; GFX8-NEXT:    v_max_f32_e32 v2, v2, v4624; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc625; GFX8-NEXT:    s_waitcnt vmcnt(0)626; GFX8-NEXT:    buffer_wbinvl1627; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3628; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]629; GFX8-NEXT:    v_mov_b32_e32 v3, v2630; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]631; GFX8-NEXT:    s_cbranch_execnz .LBB3_1632; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end633; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]634; GFX8-NEXT:    s_setpc_b64 s[30:31]635;636; GFX7-LABEL: global_agent_atomic_fmax_noret_f32__amdgpu_no_fine_grained_memory:637; GFX7:       ; %bb.0:638; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)639; GFX7-NEXT:    s_mov_b32 s6, 0640; GFX7-NEXT:    s_mov_b32 s7, 0xf000641; GFX7-NEXT:    s_mov_b32 s4, s6642; GFX7-NEXT:    s_mov_b32 s5, s6643; GFX7-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64644; GFX7-NEXT:    s_waitcnt vmcnt(0)645; GFX7-NEXT:    buffer_wbinvl1646; GFX7-NEXT:    s_setpc_b64 s[30:31]647;648; GFX6-LABEL: global_agent_atomic_fmax_noret_f32__amdgpu_no_fine_grained_memory:649; GFX6:       ; %bb.0:650; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)651; GFX6-NEXT:    s_mov_b32 s6, 0652; GFX6-NEXT:    s_mov_b32 s7, 0xf000653; GFX6-NEXT:    s_mov_b32 s4, s6654; GFX6-NEXT:    s_mov_b32 s5, s6655; GFX6-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64656; GFX6-NEXT:    s_waitcnt vmcnt(0)657; GFX6-NEXT:    buffer_wbinvl1658; GFX6-NEXT:    s_waitcnt expcnt(0)659; GFX6-NEXT:    s_setpc_b64 s[30:31]660  %unused = atomicrmw fmax ptr addrspace(1) %ptr, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0661  ret void662}663 664define void @global_agent_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, float %val) #0 {665; GFX12-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:666; GFX12:       ; %bb.0:667; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0668; GFX12-NEXT:    s_wait_expcnt 0x0669; GFX12-NEXT:    s_wait_samplecnt 0x0670; GFX12-NEXT:    s_wait_bvhcnt 0x0671; GFX12-NEXT:    s_wait_kmcnt 0x0672; GFX12-NEXT:    s_wait_storecnt 0x0673; GFX12-NEXT:    global_atomic_max_num_f32 v[0:1], v2, off offset:2044 scope:SCOPE_DEV674; GFX12-NEXT:    s_wait_storecnt 0x0675; GFX12-NEXT:    global_inv scope:SCOPE_DEV676; GFX12-NEXT:    s_wait_loadcnt 0x0677; GFX12-NEXT:    s_setpc_b64 s[30:31]678;679; GFX942-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:680; GFX942:       ; %bb.0:681; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)682; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:2044683; GFX942-NEXT:    s_mov_b64 s[0:1], 0684; GFX942-NEXT:    v_max_f32_e32 v4, v2, v2685; GFX942-NEXT:  .LBB4_1: ; %atomicrmw.start686; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1687; GFX942-NEXT:    s_waitcnt vmcnt(0)688; GFX942-NEXT:    v_max_f32_e32 v2, v3, v3689; GFX942-NEXT:    v_max_f32_e32 v2, v2, v4690; GFX942-NEXT:    buffer_wbl2 sc1691; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 sc0692; GFX942-NEXT:    s_waitcnt vmcnt(0)693; GFX942-NEXT:    buffer_inv sc1694; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3695; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]696; GFX942-NEXT:    v_mov_b32_e32 v3, v2697; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]698; GFX942-NEXT:    s_cbranch_execnz .LBB4_1699; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end700; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]701; GFX942-NEXT:    s_setpc_b64 s[30:31]702;703; GFX11-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:704; GFX11:       ; %bb.0:705; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)706; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0707; GFX11-NEXT:    global_atomic_max_f32 v[0:1], v2, off offset:2044708; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0709; GFX11-NEXT:    buffer_gl1_inv710; GFX11-NEXT:    buffer_gl0_inv711; GFX11-NEXT:    s_setpc_b64 s[30:31]712;713; GFX10-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:714; GFX10:       ; %bb.0:715; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)716; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0717; GFX10-NEXT:    global_atomic_fmax v[0:1], v2, off offset:2044718; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0719; GFX10-NEXT:    buffer_gl1_inv720; GFX10-NEXT:    buffer_gl0_inv721; GFX10-NEXT:    s_setpc_b64 s[30:31]722;723; GFX90A-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:724; GFX90A:       ; %bb.0:725; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)726; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:2044727; GFX90A-NEXT:    s_mov_b64 s[4:5], 0728; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v2729; GFX90A-NEXT:  .LBB4_1: ; %atomicrmw.start730; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1731; GFX90A-NEXT:    s_waitcnt vmcnt(0)732; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v3733; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v4734; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc735; GFX90A-NEXT:    s_waitcnt vmcnt(0)736; GFX90A-NEXT:    buffer_wbinvl1737; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3738; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]739; GFX90A-NEXT:    v_mov_b32_e32 v3, v2740; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]741; GFX90A-NEXT:    s_cbranch_execnz .LBB4_1742; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end743; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]744; GFX90A-NEXT:    s_setpc_b64 s[30:31]745;746; GFX908-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:747; GFX908:       ; %bb.0:748; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)749; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:2044750; GFX908-NEXT:    s_mov_b64 s[4:5], 0751; GFX908-NEXT:    v_max_f32_e32 v4, v2, v2752; GFX908-NEXT:  .LBB4_1: ; %atomicrmw.start753; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1754; GFX908-NEXT:    s_waitcnt vmcnt(0)755; GFX908-NEXT:    v_max_f32_e32 v2, v3, v3756; GFX908-NEXT:    v_max_f32_e32 v2, v2, v4757; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc758; GFX908-NEXT:    s_waitcnt vmcnt(0)759; GFX908-NEXT:    buffer_wbinvl1760; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3761; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]762; GFX908-NEXT:    v_mov_b32_e32 v3, v2763; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]764; GFX908-NEXT:    s_cbranch_execnz .LBB4_1765; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end766; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]767; GFX908-NEXT:    s_setpc_b64 s[30:31]768;769; GFX8-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:770; GFX8:       ; %bb.0:771; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)772; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v0773; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc774; GFX8-NEXT:    flat_load_dword v3, v[0:1]775; GFX8-NEXT:    s_mov_b64 s[4:5], 0776; GFX8-NEXT:    v_mul_f32_e32 v4, 1.0, v2777; GFX8-NEXT:  .LBB4_1: ; %atomicrmw.start778; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1779; GFX8-NEXT:    s_waitcnt vmcnt(0)780; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v3781; GFX8-NEXT:    v_max_f32_e32 v2, v2, v4782; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc783; GFX8-NEXT:    s_waitcnt vmcnt(0)784; GFX8-NEXT:    buffer_wbinvl1785; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3786; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]787; GFX8-NEXT:    v_mov_b32_e32 v3, v2788; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]789; GFX8-NEXT:    s_cbranch_execnz .LBB4_1790; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end791; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]792; GFX8-NEXT:    s_setpc_b64 s[30:31]793;794; GFX7-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:795; GFX7:       ; %bb.0:796; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)797; GFX7-NEXT:    s_mov_b32 s6, 0798; GFX7-NEXT:    s_mov_b32 s7, 0xf000799; GFX7-NEXT:    s_mov_b32 s4, s6800; GFX7-NEXT:    s_mov_b32 s5, s6801; GFX7-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 offset:2044802; GFX7-NEXT:    s_waitcnt vmcnt(0)803; GFX7-NEXT:    buffer_wbinvl1804; GFX7-NEXT:    s_setpc_b64 s[30:31]805;806; GFX6-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:807; GFX6:       ; %bb.0:808; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)809; GFX6-NEXT:    s_mov_b32 s6, 0810; GFX6-NEXT:    s_mov_b32 s7, 0xf000811; GFX6-NEXT:    s_mov_b32 s4, s6812; GFX6-NEXT:    s_mov_b32 s5, s6813; GFX6-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 offset:2044814; GFX6-NEXT:    s_waitcnt vmcnt(0)815; GFX6-NEXT:    buffer_wbinvl1816; GFX6-NEXT:    s_waitcnt expcnt(0)817; GFX6-NEXT:    s_setpc_b64 s[30:31]818  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 511819  %unused = atomicrmw fmax ptr addrspace(1) %gep, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0820  ret void821}822 823define void @global_agent_atomic_fmax_noret_f32__offset12b_neg__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, float %val) #0 {824; GFX12-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:825; GFX12:       ; %bb.0:826; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0827; GFX12-NEXT:    s_wait_expcnt 0x0828; GFX12-NEXT:    s_wait_samplecnt 0x0829; GFX12-NEXT:    s_wait_bvhcnt 0x0830; GFX12-NEXT:    s_wait_kmcnt 0x0831; GFX12-NEXT:    s_wait_storecnt 0x0832; GFX12-NEXT:    global_atomic_max_num_f32 v[0:1], v2, off offset:-2048 scope:SCOPE_DEV833; GFX12-NEXT:    s_wait_storecnt 0x0834; GFX12-NEXT:    global_inv scope:SCOPE_DEV835; GFX12-NEXT:    s_wait_loadcnt 0x0836; GFX12-NEXT:    s_setpc_b64 s[30:31]837;838; GFX942-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:839; GFX942:       ; %bb.0:840; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)841; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:-2048842; GFX942-NEXT:    s_mov_b64 s[0:1], 0843; GFX942-NEXT:    v_max_f32_e32 v4, v2, v2844; GFX942-NEXT:  .LBB5_1: ; %atomicrmw.start845; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1846; GFX942-NEXT:    s_waitcnt vmcnt(0)847; GFX942-NEXT:    v_max_f32_e32 v2, v3, v3848; GFX942-NEXT:    v_max_f32_e32 v2, v2, v4849; GFX942-NEXT:    buffer_wbl2 sc1850; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 sc0851; GFX942-NEXT:    s_waitcnt vmcnt(0)852; GFX942-NEXT:    buffer_inv sc1853; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3854; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]855; GFX942-NEXT:    v_mov_b32_e32 v3, v2856; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]857; GFX942-NEXT:    s_cbranch_execnz .LBB5_1858; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end859; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]860; GFX942-NEXT:    s_setpc_b64 s[30:31]861;862; GFX11-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:863; GFX11:       ; %bb.0:864; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)865; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0866; GFX11-NEXT:    global_atomic_max_f32 v[0:1], v2, off offset:-2048867; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0868; GFX11-NEXT:    buffer_gl1_inv869; GFX11-NEXT:    buffer_gl0_inv870; GFX11-NEXT:    s_setpc_b64 s[30:31]871;872; GFX10-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:873; GFX10:       ; %bb.0:874; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)875; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0876; GFX10-NEXT:    global_atomic_fmax v[0:1], v2, off offset:-2048877; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0878; GFX10-NEXT:    buffer_gl1_inv879; GFX10-NEXT:    buffer_gl0_inv880; GFX10-NEXT:    s_setpc_b64 s[30:31]881;882; GFX90A-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:883; GFX90A:       ; %bb.0:884; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)885; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:-2048886; GFX90A-NEXT:    s_mov_b64 s[4:5], 0887; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v2888; GFX90A-NEXT:  .LBB5_1: ; %atomicrmw.start889; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1890; GFX90A-NEXT:    s_waitcnt vmcnt(0)891; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v3892; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v4893; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 glc894; GFX90A-NEXT:    s_waitcnt vmcnt(0)895; GFX90A-NEXT:    buffer_wbinvl1896; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3897; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]898; GFX90A-NEXT:    v_mov_b32_e32 v3, v2899; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]900; GFX90A-NEXT:    s_cbranch_execnz .LBB5_1901; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end902; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]903; GFX90A-NEXT:    s_setpc_b64 s[30:31]904;905; GFX908-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:906; GFX908:       ; %bb.0:907; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)908; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:-2048909; GFX908-NEXT:    s_mov_b64 s[4:5], 0910; GFX908-NEXT:    v_max_f32_e32 v4, v2, v2911; GFX908-NEXT:  .LBB5_1: ; %atomicrmw.start912; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1913; GFX908-NEXT:    s_waitcnt vmcnt(0)914; GFX908-NEXT:    v_max_f32_e32 v2, v3, v3915; GFX908-NEXT:    v_max_f32_e32 v2, v2, v4916; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 glc917; GFX908-NEXT:    s_waitcnt vmcnt(0)918; GFX908-NEXT:    buffer_wbinvl1919; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3920; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]921; GFX908-NEXT:    v_mov_b32_e32 v3, v2922; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]923; GFX908-NEXT:    s_cbranch_execnz .LBB5_1924; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end925; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]926; GFX908-NEXT:    s_setpc_b64 s[30:31]927;928; GFX8-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:929; GFX8:       ; %bb.0:930; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)931; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffff800, v0932; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc933; GFX8-NEXT:    flat_load_dword v3, v[0:1]934; GFX8-NEXT:    s_mov_b64 s[4:5], 0935; GFX8-NEXT:    v_mul_f32_e32 v4, 1.0, v2936; GFX8-NEXT:  .LBB5_1: ; %atomicrmw.start937; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1938; GFX8-NEXT:    s_waitcnt vmcnt(0)939; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v3940; GFX8-NEXT:    v_max_f32_e32 v2, v2, v4941; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc942; GFX8-NEXT:    s_waitcnt vmcnt(0)943; GFX8-NEXT:    buffer_wbinvl1944; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3945; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]946; GFX8-NEXT:    v_mov_b32_e32 v3, v2947; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]948; GFX8-NEXT:    s_cbranch_execnz .LBB5_1949; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end950; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]951; GFX8-NEXT:    s_setpc_b64 s[30:31]952;953; GFX7-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:954; GFX7:       ; %bb.0:955; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)956; GFX7-NEXT:    s_movk_i32 s4, 0xf800957; GFX7-NEXT:    s_mov_b32 s7, 0xf000958; GFX7-NEXT:    s_mov_b32 s6, 0959; GFX7-NEXT:    s_mov_b32 s5, -1960; GFX7-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64961; GFX7-NEXT:    s_waitcnt vmcnt(0)962; GFX7-NEXT:    buffer_wbinvl1963; GFX7-NEXT:    s_setpc_b64 s[30:31]964;965; GFX6-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:966; GFX6:       ; %bb.0:967; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)968; GFX6-NEXT:    s_movk_i32 s4, 0xf800969; GFX6-NEXT:    s_mov_b32 s7, 0xf000970; GFX6-NEXT:    s_mov_b32 s6, 0971; GFX6-NEXT:    s_mov_b32 s5, -1972; GFX6-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64973; GFX6-NEXT:    s_waitcnt vmcnt(0)974; GFX6-NEXT:    buffer_wbinvl1975; GFX6-NEXT:    s_waitcnt expcnt(0)976; GFX6-NEXT:    s_setpc_b64 s[30:31]977  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 -512978  %unused = atomicrmw fmax ptr addrspace(1) %gep, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0979  ret void980}981 982define float @global_system_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, float %val) #0 {983; GFX12-LABEL: global_system_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:984; GFX12:       ; %bb.0:985; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0986; GFX12-NEXT:    s_wait_expcnt 0x0987; GFX12-NEXT:    s_wait_samplecnt 0x0988; GFX12-NEXT:    s_wait_bvhcnt 0x0989; GFX12-NEXT:    s_wait_kmcnt 0x0990; GFX12-NEXT:    global_wb scope:SCOPE_SYS991; GFX12-NEXT:    s_wait_storecnt 0x0992; GFX12-NEXT:    global_atomic_max_num_f32 v0, v[0:1], v2, off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS993; GFX12-NEXT:    s_wait_loadcnt 0x0994; GFX12-NEXT:    global_inv scope:SCOPE_SYS995; GFX12-NEXT:    s_wait_loadcnt 0x0996; GFX12-NEXT:    s_setpc_b64 s[30:31]997;998; GFX942-LABEL: global_system_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:999; GFX942:       ; %bb.0:1000; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1001; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:20441002; GFX942-NEXT:    s_mov_b64 s[0:1], 01003; GFX942-NEXT:    v_max_f32_e32 v4, v2, v21004; GFX942-NEXT:  .LBB6_1: ; %atomicrmw.start1005; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11006; GFX942-NEXT:    s_waitcnt vmcnt(0)1007; GFX942-NEXT:    v_max_f32_e32 v2, v3, v31008; GFX942-NEXT:    v_max_f32_e32 v2, v2, v41009; GFX942-NEXT:    buffer_wbl2 sc0 sc11010; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 sc0 sc11011; GFX942-NEXT:    s_waitcnt vmcnt(0)1012; GFX942-NEXT:    buffer_inv sc0 sc11013; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31014; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1015; GFX942-NEXT:    v_mov_b32_e32 v3, v21016; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1017; GFX942-NEXT:    s_cbranch_execnz .LBB6_11018; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1019; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1020; GFX942-NEXT:    v_mov_b32_e32 v0, v21021; GFX942-NEXT:    s_setpc_b64 s[30:31]1022;1023; GFX11-LABEL: global_system_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1024; GFX11:       ; %bb.0:1025; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1026; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01027; GFX11-NEXT:    global_atomic_max_f32 v0, v[0:1], v2, off offset:2044 glc1028; GFX11-NEXT:    s_waitcnt vmcnt(0)1029; GFX11-NEXT:    buffer_gl1_inv1030; GFX11-NEXT:    buffer_gl0_inv1031; GFX11-NEXT:    s_setpc_b64 s[30:31]1032;1033; GFX10-LABEL: global_system_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1034; GFX10:       ; %bb.0:1035; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1036; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01037; GFX10-NEXT:    global_atomic_fmax v0, v[0:1], v2, off offset:2044 glc1038; GFX10-NEXT:    s_waitcnt vmcnt(0)1039; GFX10-NEXT:    buffer_gl1_inv1040; GFX10-NEXT:    buffer_gl0_inv1041; GFX10-NEXT:    s_setpc_b64 s[30:31]1042;1043; GFX90A-LABEL: global_system_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1044; GFX90A:       ; %bb.0:1045; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1046; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:20441047; GFX90A-NEXT:    s_mov_b64 s[4:5], 01048; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v21049; GFX90A-NEXT:  .LBB6_1: ; %atomicrmw.start1050; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11051; GFX90A-NEXT:    s_waitcnt vmcnt(0)1052; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v31053; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v41054; GFX90A-NEXT:    buffer_wbl21055; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc1056; GFX90A-NEXT:    s_waitcnt vmcnt(0)1057; GFX90A-NEXT:    buffer_invl21058; GFX90A-NEXT:    buffer_wbinvl11059; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31060; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1061; GFX90A-NEXT:    v_mov_b32_e32 v3, v21062; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1063; GFX90A-NEXT:    s_cbranch_execnz .LBB6_11064; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1065; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1066; GFX90A-NEXT:    v_mov_b32_e32 v0, v21067; GFX90A-NEXT:    s_setpc_b64 s[30:31]1068;1069; GFX908-LABEL: global_system_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1070; GFX908:       ; %bb.0:1071; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1072; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:20441073; GFX908-NEXT:    s_mov_b64 s[4:5], 01074; GFX908-NEXT:    v_max_f32_e32 v2, v2, v21075; GFX908-NEXT:  .LBB6_1: ; %atomicrmw.start1076; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11077; GFX908-NEXT:    s_waitcnt vmcnt(0)1078; GFX908-NEXT:    v_mov_b32_e32 v4, v31079; GFX908-NEXT:    v_max_f32_e32 v3, v4, v41080; GFX908-NEXT:    v_max_f32_e32 v3, v3, v21081; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc1082; GFX908-NEXT:    s_waitcnt vmcnt(0)1083; GFX908-NEXT:    buffer_wbinvl11084; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41085; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1086; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1087; GFX908-NEXT:    s_cbranch_execnz .LBB6_11088; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1089; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1090; GFX908-NEXT:    v_mov_b32_e32 v0, v31091; GFX908-NEXT:    s_setpc_b64 s[30:31]1092;1093; GFX8-LABEL: global_system_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1094; GFX8:       ; %bb.0:1095; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1096; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v01097; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc1098; GFX8-NEXT:    flat_load_dword v0, v[3:4]1099; GFX8-NEXT:    s_mov_b64 s[4:5], 01100; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v21101; GFX8-NEXT:  .LBB6_1: ; %atomicrmw.start1102; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11103; GFX8-NEXT:    s_waitcnt vmcnt(0)1104; GFX8-NEXT:    v_mov_b32_e32 v6, v01105; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v61106; GFX8-NEXT:    v_max_f32_e32 v5, v0, v11107; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc1108; GFX8-NEXT:    s_waitcnt vmcnt(0)1109; GFX8-NEXT:    buffer_wbinvl11110; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v61111; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1112; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1113; GFX8-NEXT:    s_cbranch_execnz .LBB6_11114; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1115; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1116; GFX8-NEXT:    s_setpc_b64 s[30:31]1117;1118; GFX7-LABEL: global_system_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1119; GFX7:       ; %bb.0:1120; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1121; GFX7-NEXT:    s_mov_b32 s6, 01122; GFX7-NEXT:    s_mov_b32 s7, 0xf0001123; GFX7-NEXT:    s_mov_b32 s4, s61124; GFX7-NEXT:    s_mov_b32 s5, s61125; GFX7-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 offset:2044 glc1126; GFX7-NEXT:    s_waitcnt vmcnt(0)1127; GFX7-NEXT:    buffer_wbinvl11128; GFX7-NEXT:    v_mov_b32_e32 v0, v21129; GFX7-NEXT:    s_setpc_b64 s[30:31]1130;1131; GFX6-LABEL: global_system_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1132; GFX6:       ; %bb.0:1133; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1134; GFX6-NEXT:    s_mov_b32 s6, 01135; GFX6-NEXT:    s_mov_b32 s7, 0xf0001136; GFX6-NEXT:    s_mov_b32 s4, s61137; GFX6-NEXT:    s_mov_b32 s5, s61138; GFX6-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 offset:2044 glc1139; GFX6-NEXT:    s_waitcnt vmcnt(0)1140; GFX6-NEXT:    buffer_wbinvl11141; GFX6-NEXT:    v_mov_b32_e32 v0, v21142; GFX6-NEXT:    s_waitcnt expcnt(0)1143; GFX6-NEXT:    s_setpc_b64 s[30:31]1144  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 5111145  %result = atomicrmw fmax ptr addrspace(1) %gep, float %val seq_cst, !amdgpu.no.fine.grained.memory !01146  ret float %result1147}1148 1149define void @global_system_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, float %val) #0 {1150; GFX12-LABEL: global_system_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1151; GFX12:       ; %bb.0:1152; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01153; GFX12-NEXT:    s_wait_expcnt 0x01154; GFX12-NEXT:    s_wait_samplecnt 0x01155; GFX12-NEXT:    s_wait_bvhcnt 0x01156; GFX12-NEXT:    s_wait_kmcnt 0x01157; GFX12-NEXT:    global_wb scope:SCOPE_SYS1158; GFX12-NEXT:    s_wait_storecnt 0x01159; GFX12-NEXT:    global_atomic_max_num_f32 v[0:1], v2, off offset:2044 scope:SCOPE_SYS1160; GFX12-NEXT:    s_wait_storecnt 0x01161; GFX12-NEXT:    global_inv scope:SCOPE_SYS1162; GFX12-NEXT:    s_wait_loadcnt 0x01163; GFX12-NEXT:    s_setpc_b64 s[30:31]1164;1165; GFX942-LABEL: global_system_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1166; GFX942:       ; %bb.0:1167; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1168; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:20441169; GFX942-NEXT:    s_mov_b64 s[0:1], 01170; GFX942-NEXT:    v_max_f32_e32 v4, v2, v21171; GFX942-NEXT:  .LBB7_1: ; %atomicrmw.start1172; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11173; GFX942-NEXT:    s_waitcnt vmcnt(0)1174; GFX942-NEXT:    v_max_f32_e32 v2, v3, v31175; GFX942-NEXT:    v_max_f32_e32 v2, v2, v41176; GFX942-NEXT:    buffer_wbl2 sc0 sc11177; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 sc0 sc11178; GFX942-NEXT:    s_waitcnt vmcnt(0)1179; GFX942-NEXT:    buffer_inv sc0 sc11180; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31181; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1182; GFX942-NEXT:    v_mov_b32_e32 v3, v21183; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1184; GFX942-NEXT:    s_cbranch_execnz .LBB7_11185; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1186; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1187; GFX942-NEXT:    s_setpc_b64 s[30:31]1188;1189; GFX11-LABEL: global_system_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1190; GFX11:       ; %bb.0:1191; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1192; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01193; GFX11-NEXT:    global_atomic_max_f32 v[0:1], v2, off offset:20441194; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01195; GFX11-NEXT:    buffer_gl1_inv1196; GFX11-NEXT:    buffer_gl0_inv1197; GFX11-NEXT:    s_setpc_b64 s[30:31]1198;1199; GFX10-LABEL: global_system_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1200; GFX10:       ; %bb.0:1201; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1202; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01203; GFX10-NEXT:    global_atomic_fmax v[0:1], v2, off offset:20441204; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01205; GFX10-NEXT:    buffer_gl1_inv1206; GFX10-NEXT:    buffer_gl0_inv1207; GFX10-NEXT:    s_setpc_b64 s[30:31]1208;1209; GFX90A-LABEL: global_system_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1210; GFX90A:       ; %bb.0:1211; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1212; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:20441213; GFX90A-NEXT:    s_mov_b64 s[4:5], 01214; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v21215; GFX90A-NEXT:  .LBB7_1: ; %atomicrmw.start1216; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11217; GFX90A-NEXT:    s_waitcnt vmcnt(0)1218; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v31219; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v41220; GFX90A-NEXT:    buffer_wbl21221; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc1222; GFX90A-NEXT:    s_waitcnt vmcnt(0)1223; GFX90A-NEXT:    buffer_invl21224; GFX90A-NEXT:    buffer_wbinvl11225; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31226; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1227; GFX90A-NEXT:    v_mov_b32_e32 v3, v21228; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1229; GFX90A-NEXT:    s_cbranch_execnz .LBB7_11230; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1231; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1232; GFX90A-NEXT:    s_setpc_b64 s[30:31]1233;1234; GFX908-LABEL: global_system_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1235; GFX908:       ; %bb.0:1236; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1237; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:20441238; GFX908-NEXT:    s_mov_b64 s[4:5], 01239; GFX908-NEXT:    v_max_f32_e32 v4, v2, v21240; GFX908-NEXT:  .LBB7_1: ; %atomicrmw.start1241; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11242; GFX908-NEXT:    s_waitcnt vmcnt(0)1243; GFX908-NEXT:    v_max_f32_e32 v2, v3, v31244; GFX908-NEXT:    v_max_f32_e32 v2, v2, v41245; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc1246; GFX908-NEXT:    s_waitcnt vmcnt(0)1247; GFX908-NEXT:    buffer_wbinvl11248; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31249; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1250; GFX908-NEXT:    v_mov_b32_e32 v3, v21251; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1252; GFX908-NEXT:    s_cbranch_execnz .LBB7_11253; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1254; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1255; GFX908-NEXT:    s_setpc_b64 s[30:31]1256;1257; GFX8-LABEL: global_system_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1258; GFX8:       ; %bb.0:1259; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1260; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v01261; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc1262; GFX8-NEXT:    flat_load_dword v3, v[0:1]1263; GFX8-NEXT:    s_mov_b64 s[4:5], 01264; GFX8-NEXT:    v_mul_f32_e32 v4, 1.0, v21265; GFX8-NEXT:  .LBB7_1: ; %atomicrmw.start1266; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11267; GFX8-NEXT:    s_waitcnt vmcnt(0)1268; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v31269; GFX8-NEXT:    v_max_f32_e32 v2, v2, v41270; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc1271; GFX8-NEXT:    s_waitcnt vmcnt(0)1272; GFX8-NEXT:    buffer_wbinvl11273; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31274; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1275; GFX8-NEXT:    v_mov_b32_e32 v3, v21276; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1277; GFX8-NEXT:    s_cbranch_execnz .LBB7_11278; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1279; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1280; GFX8-NEXT:    s_setpc_b64 s[30:31]1281;1282; GFX7-LABEL: global_system_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1283; GFX7:       ; %bb.0:1284; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1285; GFX7-NEXT:    s_mov_b32 s6, 01286; GFX7-NEXT:    s_mov_b32 s7, 0xf0001287; GFX7-NEXT:    s_mov_b32 s4, s61288; GFX7-NEXT:    s_mov_b32 s5, s61289; GFX7-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 offset:20441290; GFX7-NEXT:    s_waitcnt vmcnt(0)1291; GFX7-NEXT:    buffer_wbinvl11292; GFX7-NEXT:    s_setpc_b64 s[30:31]1293;1294; GFX6-LABEL: global_system_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1295; GFX6:       ; %bb.0:1296; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1297; GFX6-NEXT:    s_mov_b32 s6, 01298; GFX6-NEXT:    s_mov_b32 s7, 0xf0001299; GFX6-NEXT:    s_mov_b32 s4, s61300; GFX6-NEXT:    s_mov_b32 s5, s61301; GFX6-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 offset:20441302; GFX6-NEXT:    s_waitcnt vmcnt(0)1303; GFX6-NEXT:    buffer_wbinvl11304; GFX6-NEXT:    s_waitcnt expcnt(0)1305; GFX6-NEXT:    s_setpc_b64 s[30:31]1306  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 5111307  %unused = atomicrmw fmax ptr addrspace(1) %gep, float %val seq_cst, !amdgpu.no.fine.grained.memory !01308  ret void1309}1310 1311define float @global_agent_atomic_fmax_ret_f32__amdgpu_no_remote_memory(ptr addrspace(1) %ptr, float %val) #0 {1312; GFX12-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_remote_memory:1313; GFX12:       ; %bb.0:1314; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01315; GFX12-NEXT:    s_wait_expcnt 0x01316; GFX12-NEXT:    s_wait_samplecnt 0x01317; GFX12-NEXT:    s_wait_bvhcnt 0x01318; GFX12-NEXT:    s_wait_kmcnt 0x01319; GFX12-NEXT:    s_wait_storecnt 0x01320; GFX12-NEXT:    global_atomic_max_num_f32 v0, v[0:1], v2, off th:TH_ATOMIC_RETURN scope:SCOPE_DEV1321; GFX12-NEXT:    s_wait_loadcnt 0x01322; GFX12-NEXT:    global_inv scope:SCOPE_DEV1323; GFX12-NEXT:    s_wait_loadcnt 0x01324; GFX12-NEXT:    s_setpc_b64 s[30:31]1325;1326; GFX942-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_remote_memory:1327; GFX942:       ; %bb.0:1328; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1329; GFX942-NEXT:    global_load_dword v3, v[0:1], off1330; GFX942-NEXT:    s_mov_b64 s[0:1], 01331; GFX942-NEXT:    v_max_f32_e32 v4, v2, v21332; GFX942-NEXT:  .LBB8_1: ; %atomicrmw.start1333; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11334; GFX942-NEXT:    s_waitcnt vmcnt(0)1335; GFX942-NEXT:    v_max_f32_e32 v2, v3, v31336; GFX942-NEXT:    v_max_f32_e32 v2, v2, v41337; GFX942-NEXT:    buffer_wbl2 sc11338; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc01339; GFX942-NEXT:    s_waitcnt vmcnt(0)1340; GFX942-NEXT:    buffer_inv sc11341; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31342; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1343; GFX942-NEXT:    v_mov_b32_e32 v3, v21344; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1345; GFX942-NEXT:    s_cbranch_execnz .LBB8_11346; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1347; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1348; GFX942-NEXT:    v_mov_b32_e32 v0, v21349; GFX942-NEXT:    s_setpc_b64 s[30:31]1350;1351; GFX11-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_remote_memory:1352; GFX11:       ; %bb.0:1353; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1354; GFX11-NEXT:    global_load_b32 v3, v[0:1], off1355; GFX11-NEXT:    v_max_f32_e32 v2, v2, v21356; GFX11-NEXT:    s_mov_b32 s0, 01357; GFX11-NEXT:  .LBB8_1: ; %atomicrmw.start1358; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=11359; GFX11-NEXT:    s_waitcnt vmcnt(0)1360; GFX11-NEXT:    v_mov_b32_e32 v4, v31361; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1362; GFX11-NEXT:    v_max_f32_e32 v3, v4, v41363; GFX11-NEXT:    v_max_f32_e32 v3, v3, v21364; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01365; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc1366; GFX11-NEXT:    s_waitcnt vmcnt(0)1367; GFX11-NEXT:    buffer_gl1_inv1368; GFX11-NEXT:    buffer_gl0_inv1369; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41370; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s01371; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1372; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01373; GFX11-NEXT:    s_cbranch_execnz .LBB8_11374; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end1375; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s01376; GFX11-NEXT:    v_mov_b32_e32 v0, v31377; GFX11-NEXT:    s_setpc_b64 s[30:31]1378;1379; GFX10-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_remote_memory:1380; GFX10:       ; %bb.0:1381; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1382; GFX10-NEXT:    global_load_dword v3, v[0:1], off1383; GFX10-NEXT:    v_max_f32_e32 v2, v2, v21384; GFX10-NEXT:    s_mov_b32 s4, 01385; GFX10-NEXT:  .LBB8_1: ; %atomicrmw.start1386; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=11387; GFX10-NEXT:    s_waitcnt vmcnt(0)1388; GFX10-NEXT:    v_mov_b32_e32 v4, v31389; GFX10-NEXT:    v_max_f32_e32 v3, v4, v41390; GFX10-NEXT:    v_max_f32_e32 v3, v3, v21391; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01392; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc1393; GFX10-NEXT:    s_waitcnt vmcnt(0)1394; GFX10-NEXT:    buffer_gl1_inv1395; GFX10-NEXT:    buffer_gl0_inv1396; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41397; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s41398; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s41399; GFX10-NEXT:    s_cbranch_execnz .LBB8_11400; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end1401; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s41402; GFX10-NEXT:    v_mov_b32_e32 v0, v31403; GFX10-NEXT:    s_setpc_b64 s[30:31]1404;1405; GFX90A-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_remote_memory:1406; GFX90A:       ; %bb.0:1407; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1408; GFX90A-NEXT:    global_load_dword v3, v[0:1], off1409; GFX90A-NEXT:    s_mov_b64 s[4:5], 01410; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v21411; GFX90A-NEXT:  .LBB8_1: ; %atomicrmw.start1412; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11413; GFX90A-NEXT:    s_waitcnt vmcnt(0)1414; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v31415; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v41416; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc1417; GFX90A-NEXT:    s_waitcnt vmcnt(0)1418; GFX90A-NEXT:    buffer_wbinvl11419; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31420; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1421; GFX90A-NEXT:    v_mov_b32_e32 v3, v21422; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1423; GFX90A-NEXT:    s_cbranch_execnz .LBB8_11424; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1425; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1426; GFX90A-NEXT:    v_mov_b32_e32 v0, v21427; GFX90A-NEXT:    s_setpc_b64 s[30:31]1428;1429; GFX908-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_remote_memory:1430; GFX908:       ; %bb.0:1431; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1432; GFX908-NEXT:    global_load_dword v3, v[0:1], off1433; GFX908-NEXT:    s_mov_b64 s[4:5], 01434; GFX908-NEXT:    v_max_f32_e32 v2, v2, v21435; GFX908-NEXT:  .LBB8_1: ; %atomicrmw.start1436; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11437; GFX908-NEXT:    s_waitcnt vmcnt(0)1438; GFX908-NEXT:    v_mov_b32_e32 v4, v31439; GFX908-NEXT:    v_max_f32_e32 v3, v4, v41440; GFX908-NEXT:    v_max_f32_e32 v3, v3, v21441; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc1442; GFX908-NEXT:    s_waitcnt vmcnt(0)1443; GFX908-NEXT:    buffer_wbinvl11444; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41445; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1446; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1447; GFX908-NEXT:    s_cbranch_execnz .LBB8_11448; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1449; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1450; GFX908-NEXT:    v_mov_b32_e32 v0, v31451; GFX908-NEXT:    s_setpc_b64 s[30:31]1452;1453; GFX8-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_remote_memory:1454; GFX8:       ; %bb.0:1455; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1456; GFX8-NEXT:    flat_load_dword v3, v[0:1]1457; GFX8-NEXT:    s_mov_b64 s[4:5], 01458; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v21459; GFX8-NEXT:  .LBB8_1: ; %atomicrmw.start1460; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11461; GFX8-NEXT:    s_waitcnt vmcnt(0)1462; GFX8-NEXT:    v_mov_b32_e32 v4, v31463; GFX8-NEXT:    v_mul_f32_e32 v3, 1.0, v41464; GFX8-NEXT:    v_max_f32_e32 v3, v3, v21465; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1466; GFX8-NEXT:    s_waitcnt vmcnt(0)1467; GFX8-NEXT:    buffer_wbinvl11468; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41469; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1470; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1471; GFX8-NEXT:    s_cbranch_execnz .LBB8_11472; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1473; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1474; GFX8-NEXT:    v_mov_b32_e32 v0, v31475; GFX8-NEXT:    s_setpc_b64 s[30:31]1476;1477; GFX7-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_remote_memory:1478; GFX7:       ; %bb.0:1479; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1480; GFX7-NEXT:    s_mov_b32 s6, 01481; GFX7-NEXT:    s_mov_b32 s7, 0xf0001482; GFX7-NEXT:    s_mov_b32 s4, s61483; GFX7-NEXT:    s_mov_b32 s5, s61484; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr641485; GFX7-NEXT:    s_mov_b64 s[8:9], 01486; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v21487; GFX7-NEXT:  .LBB8_1: ; %atomicrmw.start1488; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=11489; GFX7-NEXT:    s_waitcnt vmcnt(0)1490; GFX7-NEXT:    v_mov_b32_e32 v5, v31491; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v51492; GFX7-NEXT:    v_max_f32_e32 v4, v3, v21493; GFX7-NEXT:    v_mov_b32_e32 v3, v41494; GFX7-NEXT:    v_mov_b32_e32 v4, v51495; GFX7-NEXT:    buffer_atomic_cmpswap v[3:4], v[0:1], s[4:7], 0 addr64 glc1496; GFX7-NEXT:    s_waitcnt vmcnt(0)1497; GFX7-NEXT:    buffer_wbinvl11498; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51499; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]1500; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]1501; GFX7-NEXT:    s_cbranch_execnz .LBB8_11502; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end1503; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]1504; GFX7-NEXT:    v_mov_b32_e32 v0, v31505; GFX7-NEXT:    s_setpc_b64 s[30:31]1506;1507; GFX6-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_remote_memory:1508; GFX6:       ; %bb.0:1509; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1510; GFX6-NEXT:    s_mov_b32 s6, 01511; GFX6-NEXT:    s_mov_b32 s7, 0xf0001512; GFX6-NEXT:    s_mov_b32 s4, s61513; GFX6-NEXT:    s_mov_b32 s5, s61514; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr641515; GFX6-NEXT:    s_mov_b64 s[8:9], 01516; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v21517; GFX6-NEXT:  .LBB8_1: ; %atomicrmw.start1518; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=11519; GFX6-NEXT:    s_waitcnt vmcnt(0)1520; GFX6-NEXT:    v_mov_b32_e32 v5, v31521; GFX6-NEXT:    s_waitcnt expcnt(0)1522; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v51523; GFX6-NEXT:    v_max_f32_e32 v4, v3, v21524; GFX6-NEXT:    v_mov_b32_e32 v3, v41525; GFX6-NEXT:    v_mov_b32_e32 v4, v51526; GFX6-NEXT:    buffer_atomic_cmpswap v[3:4], v[0:1], s[4:7], 0 addr64 glc1527; GFX6-NEXT:    s_waitcnt vmcnt(0)1528; GFX6-NEXT:    buffer_wbinvl11529; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51530; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]1531; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]1532; GFX6-NEXT:    s_cbranch_execnz .LBB8_11533; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end1534; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]1535; GFX6-NEXT:    v_mov_b32_e32 v0, v31536; GFX6-NEXT:    s_waitcnt expcnt(0)1537; GFX6-NEXT:    s_setpc_b64 s[30:31]1538  %result = atomicrmw fmax ptr addrspace(1) %ptr, float %val syncscope("agent") seq_cst, !amdgpu.no.remote.memory !01539  ret float %result1540}1541 1542define float @global_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory(ptr addrspace(1) %ptr, float %val) #0 {1543; GFX12-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:1544; GFX12:       ; %bb.0:1545; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01546; GFX12-NEXT:    s_wait_expcnt 0x01547; GFX12-NEXT:    s_wait_samplecnt 0x01548; GFX12-NEXT:    s_wait_bvhcnt 0x01549; GFX12-NEXT:    s_wait_kmcnt 0x01550; GFX12-NEXT:    s_wait_storecnt 0x01551; GFX12-NEXT:    global_atomic_max_num_f32 v0, v[0:1], v2, off th:TH_ATOMIC_RETURN scope:SCOPE_DEV1552; GFX12-NEXT:    s_wait_loadcnt 0x01553; GFX12-NEXT:    global_inv scope:SCOPE_DEV1554; GFX12-NEXT:    s_wait_loadcnt 0x01555; GFX12-NEXT:    s_setpc_b64 s[30:31]1556;1557; GFX942-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:1558; GFX942:       ; %bb.0:1559; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1560; GFX942-NEXT:    global_load_dword v3, v[0:1], off1561; GFX942-NEXT:    s_mov_b64 s[0:1], 01562; GFX942-NEXT:    v_max_f32_e32 v4, v2, v21563; GFX942-NEXT:  .LBB9_1: ; %atomicrmw.start1564; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11565; GFX942-NEXT:    s_waitcnt vmcnt(0)1566; GFX942-NEXT:    v_max_f32_e32 v2, v3, v31567; GFX942-NEXT:    v_max_f32_e32 v2, v2, v41568; GFX942-NEXT:    buffer_wbl2 sc11569; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc01570; GFX942-NEXT:    s_waitcnt vmcnt(0)1571; GFX942-NEXT:    buffer_inv sc11572; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31573; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1574; GFX942-NEXT:    v_mov_b32_e32 v3, v21575; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1576; GFX942-NEXT:    s_cbranch_execnz .LBB9_11577; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1578; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1579; GFX942-NEXT:    v_mov_b32_e32 v0, v21580; GFX942-NEXT:    s_setpc_b64 s[30:31]1581;1582; GFX11-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:1583; GFX11:       ; %bb.0:1584; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1585; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01586; GFX11-NEXT:    global_atomic_max_f32 v0, v[0:1], v2, off glc1587; GFX11-NEXT:    s_waitcnt vmcnt(0)1588; GFX11-NEXT:    buffer_gl1_inv1589; GFX11-NEXT:    buffer_gl0_inv1590; GFX11-NEXT:    s_setpc_b64 s[30:31]1591;1592; GFX10-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:1593; GFX10:       ; %bb.0:1594; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1595; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01596; GFX10-NEXT:    global_atomic_fmax v0, v[0:1], v2, off glc1597; GFX10-NEXT:    s_waitcnt vmcnt(0)1598; GFX10-NEXT:    buffer_gl1_inv1599; GFX10-NEXT:    buffer_gl0_inv1600; GFX10-NEXT:    s_setpc_b64 s[30:31]1601;1602; GFX90A-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:1603; GFX90A:       ; %bb.0:1604; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1605; GFX90A-NEXT:    global_load_dword v3, v[0:1], off1606; GFX90A-NEXT:    s_mov_b64 s[4:5], 01607; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v21608; GFX90A-NEXT:  .LBB9_1: ; %atomicrmw.start1609; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11610; GFX90A-NEXT:    s_waitcnt vmcnt(0)1611; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v31612; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v41613; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc1614; GFX90A-NEXT:    s_waitcnt vmcnt(0)1615; GFX90A-NEXT:    buffer_wbinvl11616; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31617; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1618; GFX90A-NEXT:    v_mov_b32_e32 v3, v21619; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1620; GFX90A-NEXT:    s_cbranch_execnz .LBB9_11621; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1622; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1623; GFX90A-NEXT:    v_mov_b32_e32 v0, v21624; GFX90A-NEXT:    s_setpc_b64 s[30:31]1625;1626; GFX908-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:1627; GFX908:       ; %bb.0:1628; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1629; GFX908-NEXT:    global_load_dword v3, v[0:1], off1630; GFX908-NEXT:    s_mov_b64 s[4:5], 01631; GFX908-NEXT:    v_max_f32_e32 v2, v2, v21632; GFX908-NEXT:  .LBB9_1: ; %atomicrmw.start1633; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11634; GFX908-NEXT:    s_waitcnt vmcnt(0)1635; GFX908-NEXT:    v_mov_b32_e32 v4, v31636; GFX908-NEXT:    v_max_f32_e32 v3, v4, v41637; GFX908-NEXT:    v_max_f32_e32 v3, v3, v21638; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc1639; GFX908-NEXT:    s_waitcnt vmcnt(0)1640; GFX908-NEXT:    buffer_wbinvl11641; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41642; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1643; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1644; GFX908-NEXT:    s_cbranch_execnz .LBB9_11645; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1646; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1647; GFX908-NEXT:    v_mov_b32_e32 v0, v31648; GFX908-NEXT:    s_setpc_b64 s[30:31]1649;1650; GFX8-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:1651; GFX8:       ; %bb.0:1652; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1653; GFX8-NEXT:    flat_load_dword v3, v[0:1]1654; GFX8-NEXT:    s_mov_b64 s[4:5], 01655; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v21656; GFX8-NEXT:  .LBB9_1: ; %atomicrmw.start1657; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11658; GFX8-NEXT:    s_waitcnt vmcnt(0)1659; GFX8-NEXT:    v_mov_b32_e32 v4, v31660; GFX8-NEXT:    v_mul_f32_e32 v3, 1.0, v41661; GFX8-NEXT:    v_max_f32_e32 v3, v3, v21662; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1663; GFX8-NEXT:    s_waitcnt vmcnt(0)1664; GFX8-NEXT:    buffer_wbinvl11665; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41666; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1667; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1668; GFX8-NEXT:    s_cbranch_execnz .LBB9_11669; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1670; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1671; GFX8-NEXT:    v_mov_b32_e32 v0, v31672; GFX8-NEXT:    s_setpc_b64 s[30:31]1673;1674; GFX7-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:1675; GFX7:       ; %bb.0:1676; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1677; GFX7-NEXT:    s_mov_b32 s6, 01678; GFX7-NEXT:    s_mov_b32 s7, 0xf0001679; GFX7-NEXT:    s_mov_b32 s4, s61680; GFX7-NEXT:    s_mov_b32 s5, s61681; GFX7-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 glc1682; GFX7-NEXT:    s_waitcnt vmcnt(0)1683; GFX7-NEXT:    buffer_wbinvl11684; GFX7-NEXT:    v_mov_b32_e32 v0, v21685; GFX7-NEXT:    s_setpc_b64 s[30:31]1686;1687; GFX6-LABEL: global_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:1688; GFX6:       ; %bb.0:1689; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1690; GFX6-NEXT:    s_mov_b32 s6, 01691; GFX6-NEXT:    s_mov_b32 s7, 0xf0001692; GFX6-NEXT:    s_mov_b32 s4, s61693; GFX6-NEXT:    s_mov_b32 s5, s61694; GFX6-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 glc1695; GFX6-NEXT:    s_waitcnt vmcnt(0)1696; GFX6-NEXT:    buffer_wbinvl11697; GFX6-NEXT:    v_mov_b32_e32 v0, v21698; GFX6-NEXT:    s_waitcnt expcnt(0)1699; GFX6-NEXT:    s_setpc_b64 s[30:31]1700  %result = atomicrmw fmax ptr addrspace(1) %ptr, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0, !amdgpu.no.remote.memory !01701  ret float %result1702}1703 1704; --------------------------------------------------------------------1705; float with ftz/daz1706; --------------------------------------------------------------------1707 1708define float @global_agent_atomic_fmax_ret_f32__ftz__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, float %val) #1 {1709; GFX12-LABEL: global_agent_atomic_fmax_ret_f32__ftz__amdgpu_no_fine_grained_memory:1710; GFX12:       ; %bb.0:1711; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01712; GFX12-NEXT:    s_wait_expcnt 0x01713; GFX12-NEXT:    s_wait_samplecnt 0x01714; GFX12-NEXT:    s_wait_bvhcnt 0x01715; GFX12-NEXT:    s_wait_kmcnt 0x01716; GFX12-NEXT:    s_wait_storecnt 0x01717; GFX12-NEXT:    global_atomic_max_num_f32 v0, v[0:1], v2, off th:TH_ATOMIC_RETURN scope:SCOPE_DEV1718; GFX12-NEXT:    s_wait_loadcnt 0x01719; GFX12-NEXT:    global_inv scope:SCOPE_DEV1720; GFX12-NEXT:    s_wait_loadcnt 0x01721; GFX12-NEXT:    s_setpc_b64 s[30:31]1722;1723; GFX942-LABEL: global_agent_atomic_fmax_ret_f32__ftz__amdgpu_no_fine_grained_memory:1724; GFX942:       ; %bb.0:1725; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1726; GFX942-NEXT:    global_load_dword v3, v[0:1], off1727; GFX942-NEXT:    s_mov_b64 s[0:1], 01728; GFX942-NEXT:    v_max_f32_e32 v4, v2, v21729; GFX942-NEXT:  .LBB10_1: ; %atomicrmw.start1730; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11731; GFX942-NEXT:    s_waitcnt vmcnt(0)1732; GFX942-NEXT:    v_max_f32_e32 v2, v3, v31733; GFX942-NEXT:    v_max_f32_e32 v2, v2, v41734; GFX942-NEXT:    buffer_wbl2 sc11735; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc01736; GFX942-NEXT:    s_waitcnt vmcnt(0)1737; GFX942-NEXT:    buffer_inv sc11738; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31739; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1740; GFX942-NEXT:    v_mov_b32_e32 v3, v21741; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1742; GFX942-NEXT:    s_cbranch_execnz .LBB10_11743; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1744; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1745; GFX942-NEXT:    v_mov_b32_e32 v0, v21746; GFX942-NEXT:    s_setpc_b64 s[30:31]1747;1748; GFX11-LABEL: global_agent_atomic_fmax_ret_f32__ftz__amdgpu_no_fine_grained_memory:1749; GFX11:       ; %bb.0:1750; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1751; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01752; GFX11-NEXT:    global_atomic_max_f32 v0, v[0:1], v2, off glc1753; GFX11-NEXT:    s_waitcnt vmcnt(0)1754; GFX11-NEXT:    buffer_gl1_inv1755; GFX11-NEXT:    buffer_gl0_inv1756; GFX11-NEXT:    s_setpc_b64 s[30:31]1757;1758; GFX10-LABEL: global_agent_atomic_fmax_ret_f32__ftz__amdgpu_no_fine_grained_memory:1759; GFX10:       ; %bb.0:1760; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1761; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01762; GFX10-NEXT:    global_atomic_fmax v0, v[0:1], v2, off glc1763; GFX10-NEXT:    s_waitcnt vmcnt(0)1764; GFX10-NEXT:    buffer_gl1_inv1765; GFX10-NEXT:    buffer_gl0_inv1766; GFX10-NEXT:    s_setpc_b64 s[30:31]1767;1768; GFX90A-LABEL: global_agent_atomic_fmax_ret_f32__ftz__amdgpu_no_fine_grained_memory:1769; GFX90A:       ; %bb.0:1770; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1771; GFX90A-NEXT:    global_load_dword v3, v[0:1], off1772; GFX90A-NEXT:    s_mov_b64 s[4:5], 01773; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v21774; GFX90A-NEXT:  .LBB10_1: ; %atomicrmw.start1775; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11776; GFX90A-NEXT:    s_waitcnt vmcnt(0)1777; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v31778; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v41779; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc1780; GFX90A-NEXT:    s_waitcnt vmcnt(0)1781; GFX90A-NEXT:    buffer_wbinvl11782; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31783; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1784; GFX90A-NEXT:    v_mov_b32_e32 v3, v21785; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1786; GFX90A-NEXT:    s_cbranch_execnz .LBB10_11787; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1788; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1789; GFX90A-NEXT:    v_mov_b32_e32 v0, v21790; GFX90A-NEXT:    s_setpc_b64 s[30:31]1791;1792; GFX908-LABEL: global_agent_atomic_fmax_ret_f32__ftz__amdgpu_no_fine_grained_memory:1793; GFX908:       ; %bb.0:1794; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1795; GFX908-NEXT:    global_load_dword v3, v[0:1], off1796; GFX908-NEXT:    s_mov_b64 s[4:5], 01797; GFX908-NEXT:    v_max_f32_e32 v2, v2, v21798; GFX908-NEXT:  .LBB10_1: ; %atomicrmw.start1799; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11800; GFX908-NEXT:    s_waitcnt vmcnt(0)1801; GFX908-NEXT:    v_mov_b32_e32 v4, v31802; GFX908-NEXT:    v_max_f32_e32 v3, v4, v41803; GFX908-NEXT:    v_max_f32_e32 v3, v3, v21804; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc1805; GFX908-NEXT:    s_waitcnt vmcnt(0)1806; GFX908-NEXT:    buffer_wbinvl11807; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41808; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1809; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1810; GFX908-NEXT:    s_cbranch_execnz .LBB10_11811; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1812; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1813; GFX908-NEXT:    v_mov_b32_e32 v0, v31814; GFX908-NEXT:    s_setpc_b64 s[30:31]1815;1816; GFX8-LABEL: global_agent_atomic_fmax_ret_f32__ftz__amdgpu_no_fine_grained_memory:1817; GFX8:       ; %bb.0:1818; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1819; GFX8-NEXT:    flat_load_dword v3, v[0:1]1820; GFX8-NEXT:    s_mov_b64 s[4:5], 01821; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v21822; GFX8-NEXT:  .LBB10_1: ; %atomicrmw.start1823; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11824; GFX8-NEXT:    s_waitcnt vmcnt(0)1825; GFX8-NEXT:    v_mov_b32_e32 v4, v31826; GFX8-NEXT:    v_mul_f32_e32 v3, 1.0, v41827; GFX8-NEXT:    v_max_f32_e32 v3, v3, v21828; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1829; GFX8-NEXT:    s_waitcnt vmcnt(0)1830; GFX8-NEXT:    buffer_wbinvl11831; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41832; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1833; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1834; GFX8-NEXT:    s_cbranch_execnz .LBB10_11835; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1836; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1837; GFX8-NEXT:    v_mov_b32_e32 v0, v31838; GFX8-NEXT:    s_setpc_b64 s[30:31]1839;1840; GFX7-LABEL: global_agent_atomic_fmax_ret_f32__ftz__amdgpu_no_fine_grained_memory:1841; GFX7:       ; %bb.0:1842; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1843; GFX7-NEXT:    s_mov_b32 s6, 01844; GFX7-NEXT:    s_mov_b32 s7, 0xf0001845; GFX7-NEXT:    s_mov_b32 s4, s61846; GFX7-NEXT:    s_mov_b32 s5, s61847; GFX7-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 glc1848; GFX7-NEXT:    s_waitcnt vmcnt(0)1849; GFX7-NEXT:    buffer_wbinvl11850; GFX7-NEXT:    v_mov_b32_e32 v0, v21851; GFX7-NEXT:    s_setpc_b64 s[30:31]1852;1853; GFX6-LABEL: global_agent_atomic_fmax_ret_f32__ftz__amdgpu_no_fine_grained_memory:1854; GFX6:       ; %bb.0:1855; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1856; GFX6-NEXT:    s_mov_b32 s6, 01857; GFX6-NEXT:    s_mov_b32 s7, 0xf0001858; GFX6-NEXT:    s_mov_b32 s4, s61859; GFX6-NEXT:    s_mov_b32 s5, s61860; GFX6-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 glc1861; GFX6-NEXT:    s_waitcnt vmcnt(0)1862; GFX6-NEXT:    buffer_wbinvl11863; GFX6-NEXT:    v_mov_b32_e32 v0, v21864; GFX6-NEXT:    s_waitcnt expcnt(0)1865; GFX6-NEXT:    s_setpc_b64 s[30:31]1866  %result = atomicrmw fmax ptr addrspace(1) %ptr, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !01867  ret float %result1868}1869 1870define float @global_agent_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, float %val) #1 {1871; GFX12-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:1872; GFX12:       ; %bb.0:1873; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01874; GFX12-NEXT:    s_wait_expcnt 0x01875; GFX12-NEXT:    s_wait_samplecnt 0x01876; GFX12-NEXT:    s_wait_bvhcnt 0x01877; GFX12-NEXT:    s_wait_kmcnt 0x01878; GFX12-NEXT:    s_wait_storecnt 0x01879; GFX12-NEXT:    global_atomic_max_num_f32 v0, v[0:1], v2, off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV1880; GFX12-NEXT:    s_wait_loadcnt 0x01881; GFX12-NEXT:    global_inv scope:SCOPE_DEV1882; GFX12-NEXT:    s_wait_loadcnt 0x01883; GFX12-NEXT:    s_setpc_b64 s[30:31]1884;1885; GFX942-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:1886; GFX942:       ; %bb.0:1887; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1888; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:20441889; GFX942-NEXT:    s_mov_b64 s[0:1], 01890; GFX942-NEXT:    v_max_f32_e32 v4, v2, v21891; GFX942-NEXT:  .LBB11_1: ; %atomicrmw.start1892; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11893; GFX942-NEXT:    s_waitcnt vmcnt(0)1894; GFX942-NEXT:    v_max_f32_e32 v2, v3, v31895; GFX942-NEXT:    v_max_f32_e32 v2, v2, v41896; GFX942-NEXT:    buffer_wbl2 sc11897; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 sc01898; GFX942-NEXT:    s_waitcnt vmcnt(0)1899; GFX942-NEXT:    buffer_inv sc11900; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31901; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1902; GFX942-NEXT:    v_mov_b32_e32 v3, v21903; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1904; GFX942-NEXT:    s_cbranch_execnz .LBB11_11905; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1906; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1907; GFX942-NEXT:    v_mov_b32_e32 v0, v21908; GFX942-NEXT:    s_setpc_b64 s[30:31]1909;1910; GFX11-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:1911; GFX11:       ; %bb.0:1912; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1913; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01914; GFX11-NEXT:    global_atomic_max_f32 v0, v[0:1], v2, off offset:2044 glc1915; GFX11-NEXT:    s_waitcnt vmcnt(0)1916; GFX11-NEXT:    buffer_gl1_inv1917; GFX11-NEXT:    buffer_gl0_inv1918; GFX11-NEXT:    s_setpc_b64 s[30:31]1919;1920; GFX10-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:1921; GFX10:       ; %bb.0:1922; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1923; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01924; GFX10-NEXT:    global_atomic_fmax v0, v[0:1], v2, off offset:2044 glc1925; GFX10-NEXT:    s_waitcnt vmcnt(0)1926; GFX10-NEXT:    buffer_gl1_inv1927; GFX10-NEXT:    buffer_gl0_inv1928; GFX10-NEXT:    s_setpc_b64 s[30:31]1929;1930; GFX90A-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:1931; GFX90A:       ; %bb.0:1932; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1933; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:20441934; GFX90A-NEXT:    s_mov_b64 s[4:5], 01935; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v21936; GFX90A-NEXT:  .LBB11_1: ; %atomicrmw.start1937; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11938; GFX90A-NEXT:    s_waitcnt vmcnt(0)1939; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v31940; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v41941; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc1942; GFX90A-NEXT:    s_waitcnt vmcnt(0)1943; GFX90A-NEXT:    buffer_wbinvl11944; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31945; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1946; GFX90A-NEXT:    v_mov_b32_e32 v3, v21947; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1948; GFX90A-NEXT:    s_cbranch_execnz .LBB11_11949; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1950; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1951; GFX90A-NEXT:    v_mov_b32_e32 v0, v21952; GFX90A-NEXT:    s_setpc_b64 s[30:31]1953;1954; GFX908-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:1955; GFX908:       ; %bb.0:1956; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1957; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:20441958; GFX908-NEXT:    s_mov_b64 s[4:5], 01959; GFX908-NEXT:    v_max_f32_e32 v2, v2, v21960; GFX908-NEXT:  .LBB11_1: ; %atomicrmw.start1961; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11962; GFX908-NEXT:    s_waitcnt vmcnt(0)1963; GFX908-NEXT:    v_mov_b32_e32 v4, v31964; GFX908-NEXT:    v_max_f32_e32 v3, v4, v41965; GFX908-NEXT:    v_max_f32_e32 v3, v3, v21966; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc1967; GFX908-NEXT:    s_waitcnt vmcnt(0)1968; GFX908-NEXT:    buffer_wbinvl11969; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41970; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1971; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1972; GFX908-NEXT:    s_cbranch_execnz .LBB11_11973; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1974; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1975; GFX908-NEXT:    v_mov_b32_e32 v0, v31976; GFX908-NEXT:    s_setpc_b64 s[30:31]1977;1978; GFX8-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:1979; GFX8:       ; %bb.0:1980; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1981; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v01982; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc1983; GFX8-NEXT:    flat_load_dword v0, v[3:4]1984; GFX8-NEXT:    s_mov_b64 s[4:5], 01985; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v21986; GFX8-NEXT:  .LBB11_1: ; %atomicrmw.start1987; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11988; GFX8-NEXT:    s_waitcnt vmcnt(0)1989; GFX8-NEXT:    v_mov_b32_e32 v6, v01990; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v61991; GFX8-NEXT:    v_max_f32_e32 v5, v0, v11992; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc1993; GFX8-NEXT:    s_waitcnt vmcnt(0)1994; GFX8-NEXT:    buffer_wbinvl11995; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v61996; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1997; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1998; GFX8-NEXT:    s_cbranch_execnz .LBB11_11999; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2000; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2001; GFX8-NEXT:    s_setpc_b64 s[30:31]2002;2003; GFX7-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2004; GFX7:       ; %bb.0:2005; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2006; GFX7-NEXT:    s_mov_b32 s6, 02007; GFX7-NEXT:    s_mov_b32 s7, 0xf0002008; GFX7-NEXT:    s_mov_b32 s4, s62009; GFX7-NEXT:    s_mov_b32 s5, s62010; GFX7-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 offset:2044 glc2011; GFX7-NEXT:    s_waitcnt vmcnt(0)2012; GFX7-NEXT:    buffer_wbinvl12013; GFX7-NEXT:    v_mov_b32_e32 v0, v22014; GFX7-NEXT:    s_setpc_b64 s[30:31]2015;2016; GFX6-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2017; GFX6:       ; %bb.0:2018; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2019; GFX6-NEXT:    s_mov_b32 s6, 02020; GFX6-NEXT:    s_mov_b32 s7, 0xf0002021; GFX6-NEXT:    s_mov_b32 s4, s62022; GFX6-NEXT:    s_mov_b32 s5, s62023; GFX6-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 offset:2044 glc2024; GFX6-NEXT:    s_waitcnt vmcnt(0)2025; GFX6-NEXT:    buffer_wbinvl12026; GFX6-NEXT:    v_mov_b32_e32 v0, v22027; GFX6-NEXT:    s_waitcnt expcnt(0)2028; GFX6-NEXT:    s_setpc_b64 s[30:31]2029  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 5112030  %result = atomicrmw fmax ptr addrspace(1) %gep, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !02031  ret float %result2032}2033 2034define float @global_agent_atomic_fmax_ret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, float %val) #1 {2035; GFX12-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2036; GFX12:       ; %bb.0:2037; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02038; GFX12-NEXT:    s_wait_expcnt 0x02039; GFX12-NEXT:    s_wait_samplecnt 0x02040; GFX12-NEXT:    s_wait_bvhcnt 0x02041; GFX12-NEXT:    s_wait_kmcnt 0x02042; GFX12-NEXT:    s_wait_storecnt 0x02043; GFX12-NEXT:    global_atomic_max_num_f32 v0, v[0:1], v2, off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV2044; GFX12-NEXT:    s_wait_loadcnt 0x02045; GFX12-NEXT:    global_inv scope:SCOPE_DEV2046; GFX12-NEXT:    s_wait_loadcnt 0x02047; GFX12-NEXT:    s_setpc_b64 s[30:31]2048;2049; GFX942-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2050; GFX942:       ; %bb.0:2051; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2052; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:-20482053; GFX942-NEXT:    s_mov_b64 s[0:1], 02054; GFX942-NEXT:    v_max_f32_e32 v4, v2, v22055; GFX942-NEXT:  .LBB12_1: ; %atomicrmw.start2056; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12057; GFX942-NEXT:    s_waitcnt vmcnt(0)2058; GFX942-NEXT:    v_max_f32_e32 v2, v3, v32059; GFX942-NEXT:    v_max_f32_e32 v2, v2, v42060; GFX942-NEXT:    buffer_wbl2 sc12061; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 sc02062; GFX942-NEXT:    s_waitcnt vmcnt(0)2063; GFX942-NEXT:    buffer_inv sc12064; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32065; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2066; GFX942-NEXT:    v_mov_b32_e32 v3, v22067; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2068; GFX942-NEXT:    s_cbranch_execnz .LBB12_12069; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2070; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2071; GFX942-NEXT:    v_mov_b32_e32 v0, v22072; GFX942-NEXT:    s_setpc_b64 s[30:31]2073;2074; GFX11-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2075; GFX11:       ; %bb.0:2076; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2077; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02078; GFX11-NEXT:    global_atomic_max_f32 v0, v[0:1], v2, off offset:-2048 glc2079; GFX11-NEXT:    s_waitcnt vmcnt(0)2080; GFX11-NEXT:    buffer_gl1_inv2081; GFX11-NEXT:    buffer_gl0_inv2082; GFX11-NEXT:    s_setpc_b64 s[30:31]2083;2084; GFX10-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2085; GFX10:       ; %bb.0:2086; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2087; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02088; GFX10-NEXT:    global_atomic_fmax v0, v[0:1], v2, off offset:-2048 glc2089; GFX10-NEXT:    s_waitcnt vmcnt(0)2090; GFX10-NEXT:    buffer_gl1_inv2091; GFX10-NEXT:    buffer_gl0_inv2092; GFX10-NEXT:    s_setpc_b64 s[30:31]2093;2094; GFX90A-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2095; GFX90A:       ; %bb.0:2096; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2097; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:-20482098; GFX90A-NEXT:    s_mov_b64 s[4:5], 02099; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v22100; GFX90A-NEXT:  .LBB12_1: ; %atomicrmw.start2101; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12102; GFX90A-NEXT:    s_waitcnt vmcnt(0)2103; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v32104; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v42105; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 glc2106; GFX90A-NEXT:    s_waitcnt vmcnt(0)2107; GFX90A-NEXT:    buffer_wbinvl12108; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32109; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2110; GFX90A-NEXT:    v_mov_b32_e32 v3, v22111; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2112; GFX90A-NEXT:    s_cbranch_execnz .LBB12_12113; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2114; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2115; GFX90A-NEXT:    v_mov_b32_e32 v0, v22116; GFX90A-NEXT:    s_setpc_b64 s[30:31]2117;2118; GFX908-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2119; GFX908:       ; %bb.0:2120; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2121; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:-20482122; GFX908-NEXT:    s_mov_b64 s[4:5], 02123; GFX908-NEXT:    v_max_f32_e32 v2, v2, v22124; GFX908-NEXT:  .LBB12_1: ; %atomicrmw.start2125; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12126; GFX908-NEXT:    s_waitcnt vmcnt(0)2127; GFX908-NEXT:    v_mov_b32_e32 v4, v32128; GFX908-NEXT:    v_max_f32_e32 v3, v4, v42129; GFX908-NEXT:    v_max_f32_e32 v3, v3, v22130; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:-2048 glc2131; GFX908-NEXT:    s_waitcnt vmcnt(0)2132; GFX908-NEXT:    buffer_wbinvl12133; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42134; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2135; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2136; GFX908-NEXT:    s_cbranch_execnz .LBB12_12137; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2138; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2139; GFX908-NEXT:    v_mov_b32_e32 v0, v32140; GFX908-NEXT:    s_setpc_b64 s[30:31]2141;2142; GFX8-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2143; GFX8:       ; %bb.0:2144; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2145; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v02146; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, -1, v1, vcc2147; GFX8-NEXT:    flat_load_dword v0, v[3:4]2148; GFX8-NEXT:    s_mov_b64 s[4:5], 02149; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v22150; GFX8-NEXT:  .LBB12_1: ; %atomicrmw.start2151; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12152; GFX8-NEXT:    s_waitcnt vmcnt(0)2153; GFX8-NEXT:    v_mov_b32_e32 v6, v02154; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v62155; GFX8-NEXT:    v_max_f32_e32 v5, v0, v12156; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc2157; GFX8-NEXT:    s_waitcnt vmcnt(0)2158; GFX8-NEXT:    buffer_wbinvl12159; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v62160; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2161; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2162; GFX8-NEXT:    s_cbranch_execnz .LBB12_12163; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2164; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2165; GFX8-NEXT:    s_setpc_b64 s[30:31]2166;2167; GFX7-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2168; GFX7:       ; %bb.0:2169; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2170; GFX7-NEXT:    s_movk_i32 s4, 0xf8002171; GFX7-NEXT:    s_mov_b32 s7, 0xf0002172; GFX7-NEXT:    s_mov_b32 s6, 02173; GFX7-NEXT:    s_mov_b32 s5, -12174; GFX7-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 glc2175; GFX7-NEXT:    s_waitcnt vmcnt(0)2176; GFX7-NEXT:    buffer_wbinvl12177; GFX7-NEXT:    v_mov_b32_e32 v0, v22178; GFX7-NEXT:    s_setpc_b64 s[30:31]2179;2180; GFX6-LABEL: global_agent_atomic_fmax_ret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2181; GFX6:       ; %bb.0:2182; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2183; GFX6-NEXT:    s_movk_i32 s4, 0xf8002184; GFX6-NEXT:    s_mov_b32 s7, 0xf0002185; GFX6-NEXT:    s_mov_b32 s6, 02186; GFX6-NEXT:    s_mov_b32 s5, -12187; GFX6-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 glc2188; GFX6-NEXT:    s_waitcnt vmcnt(0)2189; GFX6-NEXT:    buffer_wbinvl12190; GFX6-NEXT:    v_mov_b32_e32 v0, v22191; GFX6-NEXT:    s_waitcnt expcnt(0)2192; GFX6-NEXT:    s_setpc_b64 s[30:31]2193  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 -5122194  %result = atomicrmw fmax ptr addrspace(1) %gep, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !02195  ret float %result2196}2197 2198define void @global_agent_atomic_fmax_noret_f32__ftz__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, float %val) #1 {2199; GFX12-LABEL: global_agent_atomic_fmax_noret_f32__ftz__amdgpu_no_fine_grained_memory:2200; GFX12:       ; %bb.0:2201; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02202; GFX12-NEXT:    s_wait_expcnt 0x02203; GFX12-NEXT:    s_wait_samplecnt 0x02204; GFX12-NEXT:    s_wait_bvhcnt 0x02205; GFX12-NEXT:    s_wait_kmcnt 0x02206; GFX12-NEXT:    s_wait_storecnt 0x02207; GFX12-NEXT:    global_atomic_max_num_f32 v[0:1], v2, off scope:SCOPE_DEV2208; GFX12-NEXT:    s_wait_storecnt 0x02209; GFX12-NEXT:    global_inv scope:SCOPE_DEV2210; GFX12-NEXT:    s_wait_loadcnt 0x02211; GFX12-NEXT:    s_setpc_b64 s[30:31]2212;2213; GFX942-LABEL: global_agent_atomic_fmax_noret_f32__ftz__amdgpu_no_fine_grained_memory:2214; GFX942:       ; %bb.0:2215; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2216; GFX942-NEXT:    global_load_dword v3, v[0:1], off2217; GFX942-NEXT:    s_mov_b64 s[0:1], 02218; GFX942-NEXT:    v_max_f32_e32 v4, v2, v22219; GFX942-NEXT:  .LBB13_1: ; %atomicrmw.start2220; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12221; GFX942-NEXT:    s_waitcnt vmcnt(0)2222; GFX942-NEXT:    v_max_f32_e32 v2, v3, v32223; GFX942-NEXT:    v_max_f32_e32 v2, v2, v42224; GFX942-NEXT:    buffer_wbl2 sc12225; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc02226; GFX942-NEXT:    s_waitcnt vmcnt(0)2227; GFX942-NEXT:    buffer_inv sc12228; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32229; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2230; GFX942-NEXT:    v_mov_b32_e32 v3, v22231; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2232; GFX942-NEXT:    s_cbranch_execnz .LBB13_12233; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2234; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2235; GFX942-NEXT:    s_setpc_b64 s[30:31]2236;2237; GFX11-LABEL: global_agent_atomic_fmax_noret_f32__ftz__amdgpu_no_fine_grained_memory:2238; GFX11:       ; %bb.0:2239; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2240; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02241; GFX11-NEXT:    global_atomic_max_f32 v[0:1], v2, off2242; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02243; GFX11-NEXT:    buffer_gl1_inv2244; GFX11-NEXT:    buffer_gl0_inv2245; GFX11-NEXT:    s_setpc_b64 s[30:31]2246;2247; GFX10-LABEL: global_agent_atomic_fmax_noret_f32__ftz__amdgpu_no_fine_grained_memory:2248; GFX10:       ; %bb.0:2249; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2250; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02251; GFX10-NEXT:    global_atomic_fmax v[0:1], v2, off2252; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02253; GFX10-NEXT:    buffer_gl1_inv2254; GFX10-NEXT:    buffer_gl0_inv2255; GFX10-NEXT:    s_setpc_b64 s[30:31]2256;2257; GFX90A-LABEL: global_agent_atomic_fmax_noret_f32__ftz__amdgpu_no_fine_grained_memory:2258; GFX90A:       ; %bb.0:2259; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2260; GFX90A-NEXT:    global_load_dword v3, v[0:1], off2261; GFX90A-NEXT:    s_mov_b64 s[4:5], 02262; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v22263; GFX90A-NEXT:  .LBB13_1: ; %atomicrmw.start2264; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12265; GFX90A-NEXT:    s_waitcnt vmcnt(0)2266; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v32267; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v42268; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc2269; GFX90A-NEXT:    s_waitcnt vmcnt(0)2270; GFX90A-NEXT:    buffer_wbinvl12271; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32272; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2273; GFX90A-NEXT:    v_mov_b32_e32 v3, v22274; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2275; GFX90A-NEXT:    s_cbranch_execnz .LBB13_12276; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2277; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2278; GFX90A-NEXT:    s_setpc_b64 s[30:31]2279;2280; GFX908-LABEL: global_agent_atomic_fmax_noret_f32__ftz__amdgpu_no_fine_grained_memory:2281; GFX908:       ; %bb.0:2282; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2283; GFX908-NEXT:    global_load_dword v3, v[0:1], off2284; GFX908-NEXT:    s_mov_b64 s[4:5], 02285; GFX908-NEXT:    v_max_f32_e32 v4, v2, v22286; GFX908-NEXT:  .LBB13_1: ; %atomicrmw.start2287; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12288; GFX908-NEXT:    s_waitcnt vmcnt(0)2289; GFX908-NEXT:    v_max_f32_e32 v2, v3, v32290; GFX908-NEXT:    v_max_f32_e32 v2, v2, v42291; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc2292; GFX908-NEXT:    s_waitcnt vmcnt(0)2293; GFX908-NEXT:    buffer_wbinvl12294; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32295; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2296; GFX908-NEXT:    v_mov_b32_e32 v3, v22297; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2298; GFX908-NEXT:    s_cbranch_execnz .LBB13_12299; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2300; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2301; GFX908-NEXT:    s_setpc_b64 s[30:31]2302;2303; GFX8-LABEL: global_agent_atomic_fmax_noret_f32__ftz__amdgpu_no_fine_grained_memory:2304; GFX8:       ; %bb.0:2305; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2306; GFX8-NEXT:    flat_load_dword v3, v[0:1]2307; GFX8-NEXT:    s_mov_b64 s[4:5], 02308; GFX8-NEXT:    v_mul_f32_e32 v4, 1.0, v22309; GFX8-NEXT:  .LBB13_1: ; %atomicrmw.start2310; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12311; GFX8-NEXT:    s_waitcnt vmcnt(0)2312; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v32313; GFX8-NEXT:    v_max_f32_e32 v2, v2, v42314; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc2315; GFX8-NEXT:    s_waitcnt vmcnt(0)2316; GFX8-NEXT:    buffer_wbinvl12317; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32318; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2319; GFX8-NEXT:    v_mov_b32_e32 v3, v22320; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2321; GFX8-NEXT:    s_cbranch_execnz .LBB13_12322; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2323; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2324; GFX8-NEXT:    s_setpc_b64 s[30:31]2325;2326; GFX7-LABEL: global_agent_atomic_fmax_noret_f32__ftz__amdgpu_no_fine_grained_memory:2327; GFX7:       ; %bb.0:2328; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2329; GFX7-NEXT:    s_mov_b32 s6, 02330; GFX7-NEXT:    s_mov_b32 s7, 0xf0002331; GFX7-NEXT:    s_mov_b32 s4, s62332; GFX7-NEXT:    s_mov_b32 s5, s62333; GFX7-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr642334; GFX7-NEXT:    s_waitcnt vmcnt(0)2335; GFX7-NEXT:    buffer_wbinvl12336; GFX7-NEXT:    s_setpc_b64 s[30:31]2337;2338; GFX6-LABEL: global_agent_atomic_fmax_noret_f32__ftz__amdgpu_no_fine_grained_memory:2339; GFX6:       ; %bb.0:2340; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2341; GFX6-NEXT:    s_mov_b32 s6, 02342; GFX6-NEXT:    s_mov_b32 s7, 0xf0002343; GFX6-NEXT:    s_mov_b32 s4, s62344; GFX6-NEXT:    s_mov_b32 s5, s62345; GFX6-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr642346; GFX6-NEXT:    s_waitcnt vmcnt(0)2347; GFX6-NEXT:    buffer_wbinvl12348; GFX6-NEXT:    s_waitcnt expcnt(0)2349; GFX6-NEXT:    s_setpc_b64 s[30:31]2350  %unused = atomicrmw fmax ptr addrspace(1) %ptr, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !02351  ret void2352}2353 2354define void @global_agent_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, float %val) #1 {2355; GFX12-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2356; GFX12:       ; %bb.0:2357; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02358; GFX12-NEXT:    s_wait_expcnt 0x02359; GFX12-NEXT:    s_wait_samplecnt 0x02360; GFX12-NEXT:    s_wait_bvhcnt 0x02361; GFX12-NEXT:    s_wait_kmcnt 0x02362; GFX12-NEXT:    s_wait_storecnt 0x02363; GFX12-NEXT:    global_atomic_max_num_f32 v[0:1], v2, off offset:2044 scope:SCOPE_DEV2364; GFX12-NEXT:    s_wait_storecnt 0x02365; GFX12-NEXT:    global_inv scope:SCOPE_DEV2366; GFX12-NEXT:    s_wait_loadcnt 0x02367; GFX12-NEXT:    s_setpc_b64 s[30:31]2368;2369; GFX942-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2370; GFX942:       ; %bb.0:2371; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2372; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:20442373; GFX942-NEXT:    s_mov_b64 s[0:1], 02374; GFX942-NEXT:    v_max_f32_e32 v4, v2, v22375; GFX942-NEXT:  .LBB14_1: ; %atomicrmw.start2376; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12377; GFX942-NEXT:    s_waitcnt vmcnt(0)2378; GFX942-NEXT:    v_max_f32_e32 v2, v3, v32379; GFX942-NEXT:    v_max_f32_e32 v2, v2, v42380; GFX942-NEXT:    buffer_wbl2 sc12381; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 sc02382; GFX942-NEXT:    s_waitcnt vmcnt(0)2383; GFX942-NEXT:    buffer_inv sc12384; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32385; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2386; GFX942-NEXT:    v_mov_b32_e32 v3, v22387; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2388; GFX942-NEXT:    s_cbranch_execnz .LBB14_12389; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2390; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2391; GFX942-NEXT:    s_setpc_b64 s[30:31]2392;2393; GFX11-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2394; GFX11:       ; %bb.0:2395; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2396; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02397; GFX11-NEXT:    global_atomic_max_f32 v[0:1], v2, off offset:20442398; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02399; GFX11-NEXT:    buffer_gl1_inv2400; GFX11-NEXT:    buffer_gl0_inv2401; GFX11-NEXT:    s_setpc_b64 s[30:31]2402;2403; GFX10-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2404; GFX10:       ; %bb.0:2405; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2406; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02407; GFX10-NEXT:    global_atomic_fmax v[0:1], v2, off offset:20442408; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02409; GFX10-NEXT:    buffer_gl1_inv2410; GFX10-NEXT:    buffer_gl0_inv2411; GFX10-NEXT:    s_setpc_b64 s[30:31]2412;2413; GFX90A-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2414; GFX90A:       ; %bb.0:2415; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2416; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:20442417; GFX90A-NEXT:    s_mov_b64 s[4:5], 02418; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v22419; GFX90A-NEXT:  .LBB14_1: ; %atomicrmw.start2420; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12421; GFX90A-NEXT:    s_waitcnt vmcnt(0)2422; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v32423; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v42424; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc2425; GFX90A-NEXT:    s_waitcnt vmcnt(0)2426; GFX90A-NEXT:    buffer_wbinvl12427; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32428; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2429; GFX90A-NEXT:    v_mov_b32_e32 v3, v22430; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2431; GFX90A-NEXT:    s_cbranch_execnz .LBB14_12432; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2433; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2434; GFX90A-NEXT:    s_setpc_b64 s[30:31]2435;2436; GFX908-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2437; GFX908:       ; %bb.0:2438; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2439; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:20442440; GFX908-NEXT:    s_mov_b64 s[4:5], 02441; GFX908-NEXT:    v_max_f32_e32 v4, v2, v22442; GFX908-NEXT:  .LBB14_1: ; %atomicrmw.start2443; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12444; GFX908-NEXT:    s_waitcnt vmcnt(0)2445; GFX908-NEXT:    v_max_f32_e32 v2, v3, v32446; GFX908-NEXT:    v_max_f32_e32 v2, v2, v42447; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc2448; GFX908-NEXT:    s_waitcnt vmcnt(0)2449; GFX908-NEXT:    buffer_wbinvl12450; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32451; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2452; GFX908-NEXT:    v_mov_b32_e32 v3, v22453; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2454; GFX908-NEXT:    s_cbranch_execnz .LBB14_12455; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2456; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2457; GFX908-NEXT:    s_setpc_b64 s[30:31]2458;2459; GFX8-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2460; GFX8:       ; %bb.0:2461; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2462; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v02463; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2464; GFX8-NEXT:    flat_load_dword v3, v[0:1]2465; GFX8-NEXT:    s_mov_b64 s[4:5], 02466; GFX8-NEXT:    v_mul_f32_e32 v4, 1.0, v22467; GFX8-NEXT:  .LBB14_1: ; %atomicrmw.start2468; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12469; GFX8-NEXT:    s_waitcnt vmcnt(0)2470; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v32471; GFX8-NEXT:    v_max_f32_e32 v2, v2, v42472; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc2473; GFX8-NEXT:    s_waitcnt vmcnt(0)2474; GFX8-NEXT:    buffer_wbinvl12475; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32476; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2477; GFX8-NEXT:    v_mov_b32_e32 v3, v22478; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2479; GFX8-NEXT:    s_cbranch_execnz .LBB14_12480; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2481; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2482; GFX8-NEXT:    s_setpc_b64 s[30:31]2483;2484; GFX7-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2485; GFX7:       ; %bb.0:2486; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2487; GFX7-NEXT:    s_mov_b32 s6, 02488; GFX7-NEXT:    s_mov_b32 s7, 0xf0002489; GFX7-NEXT:    s_mov_b32 s4, s62490; GFX7-NEXT:    s_mov_b32 s5, s62491; GFX7-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 offset:20442492; GFX7-NEXT:    s_waitcnt vmcnt(0)2493; GFX7-NEXT:    buffer_wbinvl12494; GFX7-NEXT:    s_setpc_b64 s[30:31]2495;2496; GFX6-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2497; GFX6:       ; %bb.0:2498; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2499; GFX6-NEXT:    s_mov_b32 s6, 02500; GFX6-NEXT:    s_mov_b32 s7, 0xf0002501; GFX6-NEXT:    s_mov_b32 s4, s62502; GFX6-NEXT:    s_mov_b32 s5, s62503; GFX6-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 offset:20442504; GFX6-NEXT:    s_waitcnt vmcnt(0)2505; GFX6-NEXT:    buffer_wbinvl12506; GFX6-NEXT:    s_waitcnt expcnt(0)2507; GFX6-NEXT:    s_setpc_b64 s[30:31]2508  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 5112509  %unused = atomicrmw fmax ptr addrspace(1) %gep, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !02510  ret void2511}2512 2513define void @global_agent_atomic_fmax_noret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, float %val) #1 {2514; GFX12-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2515; GFX12:       ; %bb.0:2516; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02517; GFX12-NEXT:    s_wait_expcnt 0x02518; GFX12-NEXT:    s_wait_samplecnt 0x02519; GFX12-NEXT:    s_wait_bvhcnt 0x02520; GFX12-NEXT:    s_wait_kmcnt 0x02521; GFX12-NEXT:    s_wait_storecnt 0x02522; GFX12-NEXT:    global_atomic_max_num_f32 v[0:1], v2, off offset:-2048 scope:SCOPE_DEV2523; GFX12-NEXT:    s_wait_storecnt 0x02524; GFX12-NEXT:    global_inv scope:SCOPE_DEV2525; GFX12-NEXT:    s_wait_loadcnt 0x02526; GFX12-NEXT:    s_setpc_b64 s[30:31]2527;2528; GFX942-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2529; GFX942:       ; %bb.0:2530; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2531; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:-20482532; GFX942-NEXT:    s_mov_b64 s[0:1], 02533; GFX942-NEXT:    v_max_f32_e32 v4, v2, v22534; GFX942-NEXT:  .LBB15_1: ; %atomicrmw.start2535; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12536; GFX942-NEXT:    s_waitcnt vmcnt(0)2537; GFX942-NEXT:    v_max_f32_e32 v2, v3, v32538; GFX942-NEXT:    v_max_f32_e32 v2, v2, v42539; GFX942-NEXT:    buffer_wbl2 sc12540; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 sc02541; GFX942-NEXT:    s_waitcnt vmcnt(0)2542; GFX942-NEXT:    buffer_inv sc12543; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32544; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2545; GFX942-NEXT:    v_mov_b32_e32 v3, v22546; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2547; GFX942-NEXT:    s_cbranch_execnz .LBB15_12548; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2549; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2550; GFX942-NEXT:    s_setpc_b64 s[30:31]2551;2552; GFX11-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2553; GFX11:       ; %bb.0:2554; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2555; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02556; GFX11-NEXT:    global_atomic_max_f32 v[0:1], v2, off offset:-20482557; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02558; GFX11-NEXT:    buffer_gl1_inv2559; GFX11-NEXT:    buffer_gl0_inv2560; GFX11-NEXT:    s_setpc_b64 s[30:31]2561;2562; GFX10-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2563; GFX10:       ; %bb.0:2564; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2565; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02566; GFX10-NEXT:    global_atomic_fmax v[0:1], v2, off offset:-20482567; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02568; GFX10-NEXT:    buffer_gl1_inv2569; GFX10-NEXT:    buffer_gl0_inv2570; GFX10-NEXT:    s_setpc_b64 s[30:31]2571;2572; GFX90A-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2573; GFX90A:       ; %bb.0:2574; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2575; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:-20482576; GFX90A-NEXT:    s_mov_b64 s[4:5], 02577; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v22578; GFX90A-NEXT:  .LBB15_1: ; %atomicrmw.start2579; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12580; GFX90A-NEXT:    s_waitcnt vmcnt(0)2581; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v32582; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v42583; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 glc2584; GFX90A-NEXT:    s_waitcnt vmcnt(0)2585; GFX90A-NEXT:    buffer_wbinvl12586; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32587; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2588; GFX90A-NEXT:    v_mov_b32_e32 v3, v22589; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2590; GFX90A-NEXT:    s_cbranch_execnz .LBB15_12591; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2592; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2593; GFX90A-NEXT:    s_setpc_b64 s[30:31]2594;2595; GFX908-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2596; GFX908:       ; %bb.0:2597; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2598; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:-20482599; GFX908-NEXT:    s_mov_b64 s[4:5], 02600; GFX908-NEXT:    v_max_f32_e32 v4, v2, v22601; GFX908-NEXT:  .LBB15_1: ; %atomicrmw.start2602; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12603; GFX908-NEXT:    s_waitcnt vmcnt(0)2604; GFX908-NEXT:    v_max_f32_e32 v2, v3, v32605; GFX908-NEXT:    v_max_f32_e32 v2, v2, v42606; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 glc2607; GFX908-NEXT:    s_waitcnt vmcnt(0)2608; GFX908-NEXT:    buffer_wbinvl12609; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32610; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2611; GFX908-NEXT:    v_mov_b32_e32 v3, v22612; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2613; GFX908-NEXT:    s_cbranch_execnz .LBB15_12614; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2615; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2616; GFX908-NEXT:    s_setpc_b64 s[30:31]2617;2618; GFX8-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2619; GFX8:       ; %bb.0:2620; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2621; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffff800, v02622; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc2623; GFX8-NEXT:    flat_load_dword v3, v[0:1]2624; GFX8-NEXT:    s_mov_b64 s[4:5], 02625; GFX8-NEXT:    v_mul_f32_e32 v4, 1.0, v22626; GFX8-NEXT:  .LBB15_1: ; %atomicrmw.start2627; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12628; GFX8-NEXT:    s_waitcnt vmcnt(0)2629; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v32630; GFX8-NEXT:    v_max_f32_e32 v2, v2, v42631; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc2632; GFX8-NEXT:    s_waitcnt vmcnt(0)2633; GFX8-NEXT:    buffer_wbinvl12634; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32635; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2636; GFX8-NEXT:    v_mov_b32_e32 v3, v22637; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2638; GFX8-NEXT:    s_cbranch_execnz .LBB15_12639; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2640; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2641; GFX8-NEXT:    s_setpc_b64 s[30:31]2642;2643; GFX7-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2644; GFX7:       ; %bb.0:2645; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2646; GFX7-NEXT:    s_movk_i32 s4, 0xf8002647; GFX7-NEXT:    s_mov_b32 s7, 0xf0002648; GFX7-NEXT:    s_mov_b32 s6, 02649; GFX7-NEXT:    s_mov_b32 s5, -12650; GFX7-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr642651; GFX7-NEXT:    s_waitcnt vmcnt(0)2652; GFX7-NEXT:    buffer_wbinvl12653; GFX7-NEXT:    s_setpc_b64 s[30:31]2654;2655; GFX6-LABEL: global_agent_atomic_fmax_noret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2656; GFX6:       ; %bb.0:2657; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2658; GFX6-NEXT:    s_movk_i32 s4, 0xf8002659; GFX6-NEXT:    s_mov_b32 s7, 0xf0002660; GFX6-NEXT:    s_mov_b32 s6, 02661; GFX6-NEXT:    s_mov_b32 s5, -12662; GFX6-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr642663; GFX6-NEXT:    s_waitcnt vmcnt(0)2664; GFX6-NEXT:    buffer_wbinvl12665; GFX6-NEXT:    s_waitcnt expcnt(0)2666; GFX6-NEXT:    s_setpc_b64 s[30:31]2667  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 -5122668  %unused = atomicrmw fmax ptr addrspace(1) %gep, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !02669  ret void2670}2671 2672define float @global_system_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, float %val) #1 {2673; GFX12-LABEL: global_system_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2674; GFX12:       ; %bb.0:2675; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02676; GFX12-NEXT:    s_wait_expcnt 0x02677; GFX12-NEXT:    s_wait_samplecnt 0x02678; GFX12-NEXT:    s_wait_bvhcnt 0x02679; GFX12-NEXT:    s_wait_kmcnt 0x02680; GFX12-NEXT:    global_wb scope:SCOPE_SYS2681; GFX12-NEXT:    s_wait_storecnt 0x02682; GFX12-NEXT:    global_atomic_max_num_f32 v0, v[0:1], v2, off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS2683; GFX12-NEXT:    s_wait_loadcnt 0x02684; GFX12-NEXT:    global_inv scope:SCOPE_SYS2685; GFX12-NEXT:    s_wait_loadcnt 0x02686; GFX12-NEXT:    s_setpc_b64 s[30:31]2687;2688; GFX942-LABEL: global_system_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2689; GFX942:       ; %bb.0:2690; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2691; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:20442692; GFX942-NEXT:    s_mov_b64 s[0:1], 02693; GFX942-NEXT:    v_max_f32_e32 v4, v2, v22694; GFX942-NEXT:  .LBB16_1: ; %atomicrmw.start2695; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12696; GFX942-NEXT:    s_waitcnt vmcnt(0)2697; GFX942-NEXT:    v_max_f32_e32 v2, v3, v32698; GFX942-NEXT:    v_max_f32_e32 v2, v2, v42699; GFX942-NEXT:    buffer_wbl2 sc0 sc12700; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 sc0 sc12701; GFX942-NEXT:    s_waitcnt vmcnt(0)2702; GFX942-NEXT:    buffer_inv sc0 sc12703; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32704; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2705; GFX942-NEXT:    v_mov_b32_e32 v3, v22706; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2707; GFX942-NEXT:    s_cbranch_execnz .LBB16_12708; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2709; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2710; GFX942-NEXT:    v_mov_b32_e32 v0, v22711; GFX942-NEXT:    s_setpc_b64 s[30:31]2712;2713; GFX11-LABEL: global_system_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2714; GFX11:       ; %bb.0:2715; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2716; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02717; GFX11-NEXT:    global_atomic_max_f32 v0, v[0:1], v2, off offset:2044 glc2718; GFX11-NEXT:    s_waitcnt vmcnt(0)2719; GFX11-NEXT:    buffer_gl1_inv2720; GFX11-NEXT:    buffer_gl0_inv2721; GFX11-NEXT:    s_setpc_b64 s[30:31]2722;2723; GFX10-LABEL: global_system_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2724; GFX10:       ; %bb.0:2725; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2726; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02727; GFX10-NEXT:    global_atomic_fmax v0, v[0:1], v2, off offset:2044 glc2728; GFX10-NEXT:    s_waitcnt vmcnt(0)2729; GFX10-NEXT:    buffer_gl1_inv2730; GFX10-NEXT:    buffer_gl0_inv2731; GFX10-NEXT:    s_setpc_b64 s[30:31]2732;2733; GFX90A-LABEL: global_system_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2734; GFX90A:       ; %bb.0:2735; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2736; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:20442737; GFX90A-NEXT:    s_mov_b64 s[4:5], 02738; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v22739; GFX90A-NEXT:  .LBB16_1: ; %atomicrmw.start2740; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12741; GFX90A-NEXT:    s_waitcnt vmcnt(0)2742; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v32743; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v42744; GFX90A-NEXT:    buffer_wbl22745; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc2746; GFX90A-NEXT:    s_waitcnt vmcnt(0)2747; GFX90A-NEXT:    buffer_invl22748; GFX90A-NEXT:    buffer_wbinvl12749; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32750; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2751; GFX90A-NEXT:    v_mov_b32_e32 v3, v22752; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2753; GFX90A-NEXT:    s_cbranch_execnz .LBB16_12754; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2755; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2756; GFX90A-NEXT:    v_mov_b32_e32 v0, v22757; GFX90A-NEXT:    s_setpc_b64 s[30:31]2758;2759; GFX908-LABEL: global_system_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2760; GFX908:       ; %bb.0:2761; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2762; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:20442763; GFX908-NEXT:    s_mov_b64 s[4:5], 02764; GFX908-NEXT:    v_max_f32_e32 v2, v2, v22765; GFX908-NEXT:  .LBB16_1: ; %atomicrmw.start2766; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12767; GFX908-NEXT:    s_waitcnt vmcnt(0)2768; GFX908-NEXT:    v_mov_b32_e32 v4, v32769; GFX908-NEXT:    v_max_f32_e32 v3, v4, v42770; GFX908-NEXT:    v_max_f32_e32 v3, v3, v22771; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc2772; GFX908-NEXT:    s_waitcnt vmcnt(0)2773; GFX908-NEXT:    buffer_wbinvl12774; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42775; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2776; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2777; GFX908-NEXT:    s_cbranch_execnz .LBB16_12778; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2779; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2780; GFX908-NEXT:    v_mov_b32_e32 v0, v32781; GFX908-NEXT:    s_setpc_b64 s[30:31]2782;2783; GFX8-LABEL: global_system_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2784; GFX8:       ; %bb.0:2785; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2786; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v02787; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc2788; GFX8-NEXT:    flat_load_dword v0, v[3:4]2789; GFX8-NEXT:    s_mov_b64 s[4:5], 02790; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v22791; GFX8-NEXT:  .LBB16_1: ; %atomicrmw.start2792; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12793; GFX8-NEXT:    s_waitcnt vmcnt(0)2794; GFX8-NEXT:    v_mov_b32_e32 v6, v02795; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v62796; GFX8-NEXT:    v_max_f32_e32 v5, v0, v12797; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc2798; GFX8-NEXT:    s_waitcnt vmcnt(0)2799; GFX8-NEXT:    buffer_wbinvl12800; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v62801; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2802; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2803; GFX8-NEXT:    s_cbranch_execnz .LBB16_12804; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2805; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2806; GFX8-NEXT:    s_setpc_b64 s[30:31]2807;2808; GFX7-LABEL: global_system_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2809; GFX7:       ; %bb.0:2810; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2811; GFX7-NEXT:    s_mov_b32 s6, 02812; GFX7-NEXT:    s_mov_b32 s7, 0xf0002813; GFX7-NEXT:    s_mov_b32 s4, s62814; GFX7-NEXT:    s_mov_b32 s5, s62815; GFX7-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 offset:2044 glc2816; GFX7-NEXT:    s_waitcnt vmcnt(0)2817; GFX7-NEXT:    buffer_wbinvl12818; GFX7-NEXT:    v_mov_b32_e32 v0, v22819; GFX7-NEXT:    s_setpc_b64 s[30:31]2820;2821; GFX6-LABEL: global_system_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2822; GFX6:       ; %bb.0:2823; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2824; GFX6-NEXT:    s_mov_b32 s6, 02825; GFX6-NEXT:    s_mov_b32 s7, 0xf0002826; GFX6-NEXT:    s_mov_b32 s4, s62827; GFX6-NEXT:    s_mov_b32 s5, s62828; GFX6-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 offset:2044 glc2829; GFX6-NEXT:    s_waitcnt vmcnt(0)2830; GFX6-NEXT:    buffer_wbinvl12831; GFX6-NEXT:    v_mov_b32_e32 v0, v22832; GFX6-NEXT:    s_waitcnt expcnt(0)2833; GFX6-NEXT:    s_setpc_b64 s[30:31]2834  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 5112835  %result = atomicrmw fmax ptr addrspace(1) %gep, float %val seq_cst, !amdgpu.no.fine.grained.memory !02836  ret float %result2837}2838 2839define void @global_system_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, float %val) #1 {2840; GFX12-LABEL: global_system_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2841; GFX12:       ; %bb.0:2842; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02843; GFX12-NEXT:    s_wait_expcnt 0x02844; GFX12-NEXT:    s_wait_samplecnt 0x02845; GFX12-NEXT:    s_wait_bvhcnt 0x02846; GFX12-NEXT:    s_wait_kmcnt 0x02847; GFX12-NEXT:    global_wb scope:SCOPE_SYS2848; GFX12-NEXT:    s_wait_storecnt 0x02849; GFX12-NEXT:    global_atomic_max_num_f32 v[0:1], v2, off offset:2044 scope:SCOPE_SYS2850; GFX12-NEXT:    s_wait_storecnt 0x02851; GFX12-NEXT:    global_inv scope:SCOPE_SYS2852; GFX12-NEXT:    s_wait_loadcnt 0x02853; GFX12-NEXT:    s_setpc_b64 s[30:31]2854;2855; GFX942-LABEL: global_system_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2856; GFX942:       ; %bb.0:2857; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2858; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:20442859; GFX942-NEXT:    s_mov_b64 s[0:1], 02860; GFX942-NEXT:    v_max_f32_e32 v4, v2, v22861; GFX942-NEXT:  .LBB17_1: ; %atomicrmw.start2862; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12863; GFX942-NEXT:    s_waitcnt vmcnt(0)2864; GFX942-NEXT:    v_max_f32_e32 v2, v3, v32865; GFX942-NEXT:    v_max_f32_e32 v2, v2, v42866; GFX942-NEXT:    buffer_wbl2 sc0 sc12867; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 sc0 sc12868; GFX942-NEXT:    s_waitcnt vmcnt(0)2869; GFX942-NEXT:    buffer_inv sc0 sc12870; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32871; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2872; GFX942-NEXT:    v_mov_b32_e32 v3, v22873; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2874; GFX942-NEXT:    s_cbranch_execnz .LBB17_12875; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2876; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2877; GFX942-NEXT:    s_setpc_b64 s[30:31]2878;2879; GFX11-LABEL: global_system_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2880; GFX11:       ; %bb.0:2881; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2882; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02883; GFX11-NEXT:    global_atomic_max_f32 v[0:1], v2, off offset:20442884; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02885; GFX11-NEXT:    buffer_gl1_inv2886; GFX11-NEXT:    buffer_gl0_inv2887; GFX11-NEXT:    s_setpc_b64 s[30:31]2888;2889; GFX10-LABEL: global_system_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2890; GFX10:       ; %bb.0:2891; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2892; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02893; GFX10-NEXT:    global_atomic_fmax v[0:1], v2, off offset:20442894; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02895; GFX10-NEXT:    buffer_gl1_inv2896; GFX10-NEXT:    buffer_gl0_inv2897; GFX10-NEXT:    s_setpc_b64 s[30:31]2898;2899; GFX90A-LABEL: global_system_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2900; GFX90A:       ; %bb.0:2901; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2902; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:20442903; GFX90A-NEXT:    s_mov_b64 s[4:5], 02904; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v22905; GFX90A-NEXT:  .LBB17_1: ; %atomicrmw.start2906; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12907; GFX90A-NEXT:    s_waitcnt vmcnt(0)2908; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v32909; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v42910; GFX90A-NEXT:    buffer_wbl22911; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc2912; GFX90A-NEXT:    s_waitcnt vmcnt(0)2913; GFX90A-NEXT:    buffer_invl22914; GFX90A-NEXT:    buffer_wbinvl12915; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32916; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2917; GFX90A-NEXT:    v_mov_b32_e32 v3, v22918; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2919; GFX90A-NEXT:    s_cbranch_execnz .LBB17_12920; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2921; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2922; GFX90A-NEXT:    s_setpc_b64 s[30:31]2923;2924; GFX908-LABEL: global_system_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2925; GFX908:       ; %bb.0:2926; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2927; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:20442928; GFX908-NEXT:    s_mov_b64 s[4:5], 02929; GFX908-NEXT:    v_max_f32_e32 v4, v2, v22930; GFX908-NEXT:  .LBB17_1: ; %atomicrmw.start2931; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12932; GFX908-NEXT:    s_waitcnt vmcnt(0)2933; GFX908-NEXT:    v_max_f32_e32 v2, v3, v32934; GFX908-NEXT:    v_max_f32_e32 v2, v2, v42935; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc2936; GFX908-NEXT:    s_waitcnt vmcnt(0)2937; GFX908-NEXT:    buffer_wbinvl12938; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32939; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2940; GFX908-NEXT:    v_mov_b32_e32 v3, v22941; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2942; GFX908-NEXT:    s_cbranch_execnz .LBB17_12943; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2944; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2945; GFX908-NEXT:    s_setpc_b64 s[30:31]2946;2947; GFX8-LABEL: global_system_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2948; GFX8:       ; %bb.0:2949; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2950; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v02951; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2952; GFX8-NEXT:    flat_load_dword v3, v[0:1]2953; GFX8-NEXT:    s_mov_b64 s[4:5], 02954; GFX8-NEXT:    v_mul_f32_e32 v4, 1.0, v22955; GFX8-NEXT:  .LBB17_1: ; %atomicrmw.start2956; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12957; GFX8-NEXT:    s_waitcnt vmcnt(0)2958; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v32959; GFX8-NEXT:    v_max_f32_e32 v2, v2, v42960; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc2961; GFX8-NEXT:    s_waitcnt vmcnt(0)2962; GFX8-NEXT:    buffer_wbinvl12963; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32964; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2965; GFX8-NEXT:    v_mov_b32_e32 v3, v22966; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2967; GFX8-NEXT:    s_cbranch_execnz .LBB17_12968; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2969; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2970; GFX8-NEXT:    s_setpc_b64 s[30:31]2971;2972; GFX7-LABEL: global_system_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2973; GFX7:       ; %bb.0:2974; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2975; GFX7-NEXT:    s_mov_b32 s6, 02976; GFX7-NEXT:    s_mov_b32 s7, 0xf0002977; GFX7-NEXT:    s_mov_b32 s4, s62978; GFX7-NEXT:    s_mov_b32 s5, s62979; GFX7-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 offset:20442980; GFX7-NEXT:    s_waitcnt vmcnt(0)2981; GFX7-NEXT:    buffer_wbinvl12982; GFX7-NEXT:    s_setpc_b64 s[30:31]2983;2984; GFX6-LABEL: global_system_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2985; GFX6:       ; %bb.0:2986; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2987; GFX6-NEXT:    s_mov_b32 s6, 02988; GFX6-NEXT:    s_mov_b32 s7, 0xf0002989; GFX6-NEXT:    s_mov_b32 s4, s62990; GFX6-NEXT:    s_mov_b32 s5, s62991; GFX6-NEXT:    buffer_atomic_fmax v2, v[0:1], s[4:7], 0 addr64 offset:20442992; GFX6-NEXT:    s_waitcnt vmcnt(0)2993; GFX6-NEXT:    buffer_wbinvl12994; GFX6-NEXT:    s_waitcnt expcnt(0)2995; GFX6-NEXT:    s_setpc_b64 s[30:31]2996  %gep = getelementptr float, ptr addrspace(1) %ptr, i64 5112997  %unused = atomicrmw fmax ptr addrspace(1) %gep, float %val seq_cst, !amdgpu.no.fine.grained.memory !02998  ret void2999}3000 3001; --------------------------------------------------------------------3002; double3003; --------------------------------------------------------------------3004 3005define double @global_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, double %val) #0 {3006; GFX12-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory:3007; GFX12:       ; %bb.0:3008; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03009; GFX12-NEXT:    s_wait_expcnt 0x03010; GFX12-NEXT:    s_wait_samplecnt 0x03011; GFX12-NEXT:    s_wait_bvhcnt 0x03012; GFX12-NEXT:    s_wait_kmcnt 0x03013; GFX12-NEXT:    global_load_b64 v[4:5], v[0:1], off3014; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[2:3]3015; GFX12-NEXT:    s_mov_b32 s0, 03016; GFX12-NEXT:  .LBB18_1: ; %atomicrmw.start3017; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=13018; GFX12-NEXT:    s_wait_loadcnt 0x03019; GFX12-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v43020; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3021; GFX12-NEXT:    v_max_num_f64_e32 v[4:5], v[6:7], v[6:7]3022; GFX12-NEXT:    v_max_num_f64_e32 v[4:5], v[4:5], v[2:3]3023; GFX12-NEXT:    s_wait_storecnt 0x03024; GFX12-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV3025; GFX12-NEXT:    s_wait_loadcnt 0x03026; GFX12-NEXT:    global_inv scope:SCOPE_DEV3027; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]3028; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3029; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s03030; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3031; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03032; GFX12-NEXT:    s_cbranch_execnz .LBB18_13033; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end3034; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s03035; GFX12-NEXT:    v_dual_mov_b32 v0, v4 :: v_dual_mov_b32 v1, v53036; GFX12-NEXT:    s_wait_loadcnt 0x03037; GFX12-NEXT:    s_setpc_b64 s[30:31]3038;3039; GFX942-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory:3040; GFX942:       ; %bb.0:3041; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3042; GFX942-NEXT:    buffer_wbl2 sc13043; GFX942-NEXT:    global_atomic_max_f64 v[0:1], v[0:1], v[2:3], off sc03044; GFX942-NEXT:    s_waitcnt vmcnt(0)3045; GFX942-NEXT:    buffer_inv sc13046; GFX942-NEXT:    s_setpc_b64 s[30:31]3047;3048; GFX11-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory:3049; GFX11:       ; %bb.0:3050; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3051; GFX11-NEXT:    global_load_b64 v[4:5], v[0:1], off3052; GFX11-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3053; GFX11-NEXT:    s_mov_b32 s0, 03054; GFX11-NEXT:  .LBB18_1: ; %atomicrmw.start3055; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=13056; GFX11-NEXT:    s_waitcnt vmcnt(0)3057; GFX11-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v43058; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3059; GFX11-NEXT:    v_max_f64 v[4:5], v[6:7], v[6:7]3060; GFX11-NEXT:    v_max_f64 v[4:5], v[4:5], v[2:3]3061; GFX11-NEXT:    s_waitcnt_vscnt null, 0x03062; GFX11-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off glc3063; GFX11-NEXT:    s_waitcnt vmcnt(0)3064; GFX11-NEXT:    buffer_gl1_inv3065; GFX11-NEXT:    buffer_gl0_inv3066; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]3067; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s03068; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3069; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03070; GFX11-NEXT:    s_cbranch_execnz .LBB18_13071; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end3072; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s03073; GFX11-NEXT:    v_dual_mov_b32 v0, v4 :: v_dual_mov_b32 v1, v53074; GFX11-NEXT:    s_setpc_b64 s[30:31]3075;3076; GFX10-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory:3077; GFX10:       ; %bb.0:3078; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3079; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03080; GFX10-NEXT:    global_atomic_fmax_x2 v[0:1], v[0:1], v[2:3], off glc3081; GFX10-NEXT:    s_waitcnt vmcnt(0)3082; GFX10-NEXT:    buffer_gl1_inv3083; GFX10-NEXT:    buffer_gl0_inv3084; GFX10-NEXT:    s_setpc_b64 s[30:31]3085;3086; GFX90A-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory:3087; GFX90A:       ; %bb.0:3088; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3089; GFX90A-NEXT:    global_atomic_max_f64 v[0:1], v[0:1], v[2:3], off glc3090; GFX90A-NEXT:    s_waitcnt vmcnt(0)3091; GFX90A-NEXT:    buffer_wbinvl13092; GFX90A-NEXT:    s_setpc_b64 s[30:31]3093;3094; GFX908-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory:3095; GFX908:       ; %bb.0:3096; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3097; GFX908-NEXT:    global_load_dwordx2 v[4:5], v[0:1], off3098; GFX908-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3099; GFX908-NEXT:    s_mov_b64 s[4:5], 03100; GFX908-NEXT:  .LBB18_1: ; %atomicrmw.start3101; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=13102; GFX908-NEXT:    s_waitcnt vmcnt(0)3103; GFX908-NEXT:    v_mov_b32_e32 v7, v53104; GFX908-NEXT:    v_mov_b32_e32 v6, v43105; GFX908-NEXT:    v_max_f64 v[4:5], v[6:7], v[6:7]3106; GFX908-NEXT:    v_max_f64 v[4:5], v[4:5], v[2:3]3107; GFX908-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off glc3108; GFX908-NEXT:    s_waitcnt vmcnt(0)3109; GFX908-NEXT:    buffer_wbinvl13110; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]3111; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3112; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]3113; GFX908-NEXT:    s_cbranch_execnz .LBB18_13114; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end3115; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3116; GFX908-NEXT:    v_mov_b32_e32 v0, v43117; GFX908-NEXT:    v_mov_b32_e32 v1, v53118; GFX908-NEXT:    s_setpc_b64 s[30:31]3119;3120; GFX8-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory:3121; GFX8:       ; %bb.0:3122; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3123; GFX8-NEXT:    flat_load_dwordx2 v[4:5], v[0:1]3124; GFX8-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3125; GFX8-NEXT:    s_mov_b64 s[4:5], 03126; GFX8-NEXT:  .LBB18_1: ; %atomicrmw.start3127; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=13128; GFX8-NEXT:    s_waitcnt vmcnt(0)3129; GFX8-NEXT:    v_mov_b32_e32 v7, v53130; GFX8-NEXT:    v_mov_b32_e32 v6, v43131; GFX8-NEXT:    v_max_f64 v[4:5], v[6:7], v[6:7]3132; GFX8-NEXT:    v_max_f64 v[4:5], v[4:5], v[2:3]3133; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc3134; GFX8-NEXT:    s_waitcnt vmcnt(0)3135; GFX8-NEXT:    buffer_wbinvl13136; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]3137; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3138; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]3139; GFX8-NEXT:    s_cbranch_execnz .LBB18_13140; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end3141; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3142; GFX8-NEXT:    v_mov_b32_e32 v0, v43143; GFX8-NEXT:    v_mov_b32_e32 v1, v53144; GFX8-NEXT:    s_setpc_b64 s[30:31]3145;3146; GFX7-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory:3147; GFX7:       ; %bb.0:3148; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3149; GFX7-NEXT:    s_mov_b32 s6, 03150; GFX7-NEXT:    s_mov_b32 s7, 0xf0003151; GFX7-NEXT:    s_mov_b32 s4, s63152; GFX7-NEXT:    s_mov_b32 s5, s63153; GFX7-NEXT:    buffer_atomic_fmax_x2 v[2:3], v[0:1], s[4:7], 0 addr64 glc3154; GFX7-NEXT:    s_waitcnt vmcnt(0)3155; GFX7-NEXT:    buffer_wbinvl13156; GFX7-NEXT:    v_mov_b32_e32 v0, v23157; GFX7-NEXT:    v_mov_b32_e32 v1, v33158; GFX7-NEXT:    s_setpc_b64 s[30:31]3159;3160; GFX6-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory:3161; GFX6:       ; %bb.0:3162; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3163; GFX6-NEXT:    s_mov_b32 s6, 03164; GFX6-NEXT:    s_mov_b32 s7, 0xf0003165; GFX6-NEXT:    s_mov_b32 s4, s63166; GFX6-NEXT:    s_mov_b32 s5, s63167; GFX6-NEXT:    buffer_atomic_fmax_x2 v[2:3], v[0:1], s[4:7], 0 addr64 glc3168; GFX6-NEXT:    s_waitcnt vmcnt(0)3169; GFX6-NEXT:    buffer_wbinvl13170; GFX6-NEXT:    v_mov_b32_e32 v0, v23171; GFX6-NEXT:    v_mov_b32_e32 v1, v33172; GFX6-NEXT:    s_waitcnt expcnt(0)3173; GFX6-NEXT:    s_setpc_b64 s[30:31]3174  %result = atomicrmw fmax ptr addrspace(1) %ptr, double %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !03175  ret double %result3176}3177 3178define double @global_agent_atomic_fmax_ret_f64__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, double %val) #0 {3179; GFX12-LABEL: global_agent_atomic_fmax_ret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3180; GFX12:       ; %bb.0:3181; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03182; GFX12-NEXT:    s_wait_expcnt 0x03183; GFX12-NEXT:    s_wait_samplecnt 0x03184; GFX12-NEXT:    s_wait_bvhcnt 0x03185; GFX12-NEXT:    s_wait_kmcnt 0x03186; GFX12-NEXT:    global_load_b64 v[4:5], v[0:1], off offset:20403187; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[2:3]3188; GFX12-NEXT:    s_mov_b32 s0, 03189; GFX12-NEXT:  .LBB19_1: ; %atomicrmw.start3190; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=13191; GFX12-NEXT:    s_wait_loadcnt 0x03192; GFX12-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v43193; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3194; GFX12-NEXT:    v_max_num_f64_e32 v[4:5], v[6:7], v[6:7]3195; GFX12-NEXT:    v_max_num_f64_e32 v[4:5], v[4:5], v[2:3]3196; GFX12-NEXT:    s_wait_storecnt 0x03197; GFX12-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off offset:2040 th:TH_ATOMIC_RETURN scope:SCOPE_DEV3198; GFX12-NEXT:    s_wait_loadcnt 0x03199; GFX12-NEXT:    global_inv scope:SCOPE_DEV3200; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]3201; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3202; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s03203; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3204; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03205; GFX12-NEXT:    s_cbranch_execnz .LBB19_13206; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end3207; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s03208; GFX12-NEXT:    v_dual_mov_b32 v0, v4 :: v_dual_mov_b32 v1, v53209; GFX12-NEXT:    s_wait_loadcnt 0x03210; GFX12-NEXT:    s_setpc_b64 s[30:31]3211;3212; GFX942-LABEL: global_agent_atomic_fmax_ret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3213; GFX942:       ; %bb.0:3214; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3215; GFX942-NEXT:    buffer_wbl2 sc13216; GFX942-NEXT:    global_atomic_max_f64 v[0:1], v[0:1], v[2:3], off offset:2040 sc03217; GFX942-NEXT:    s_waitcnt vmcnt(0)3218; GFX942-NEXT:    buffer_inv sc13219; GFX942-NEXT:    s_setpc_b64 s[30:31]3220;3221; GFX11-LABEL: global_agent_atomic_fmax_ret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3222; GFX11:       ; %bb.0:3223; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3224; GFX11-NEXT:    global_load_b64 v[4:5], v[0:1], off offset:20403225; GFX11-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3226; GFX11-NEXT:    s_mov_b32 s0, 03227; GFX11-NEXT:  .LBB19_1: ; %atomicrmw.start3228; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=13229; GFX11-NEXT:    s_waitcnt vmcnt(0)3230; GFX11-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v43231; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3232; GFX11-NEXT:    v_max_f64 v[4:5], v[6:7], v[6:7]3233; GFX11-NEXT:    v_max_f64 v[4:5], v[4:5], v[2:3]3234; GFX11-NEXT:    s_waitcnt_vscnt null, 0x03235; GFX11-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off offset:2040 glc3236; GFX11-NEXT:    s_waitcnt vmcnt(0)3237; GFX11-NEXT:    buffer_gl1_inv3238; GFX11-NEXT:    buffer_gl0_inv3239; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]3240; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s03241; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3242; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03243; GFX11-NEXT:    s_cbranch_execnz .LBB19_13244; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end3245; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s03246; GFX11-NEXT:    v_dual_mov_b32 v0, v4 :: v_dual_mov_b32 v1, v53247; GFX11-NEXT:    s_setpc_b64 s[30:31]3248;3249; GFX10-LABEL: global_agent_atomic_fmax_ret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3250; GFX10:       ; %bb.0:3251; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3252; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03253; GFX10-NEXT:    global_atomic_fmax_x2 v[0:1], v[0:1], v[2:3], off offset:2040 glc3254; GFX10-NEXT:    s_waitcnt vmcnt(0)3255; GFX10-NEXT:    buffer_gl1_inv3256; GFX10-NEXT:    buffer_gl0_inv3257; GFX10-NEXT:    s_setpc_b64 s[30:31]3258;3259; GFX90A-LABEL: global_agent_atomic_fmax_ret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3260; GFX90A:       ; %bb.0:3261; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3262; GFX90A-NEXT:    global_atomic_max_f64 v[0:1], v[0:1], v[2:3], off offset:2040 glc3263; GFX90A-NEXT:    s_waitcnt vmcnt(0)3264; GFX90A-NEXT:    buffer_wbinvl13265; GFX90A-NEXT:    s_setpc_b64 s[30:31]3266;3267; GFX908-LABEL: global_agent_atomic_fmax_ret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3268; GFX908:       ; %bb.0:3269; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3270; GFX908-NEXT:    global_load_dwordx2 v[4:5], v[0:1], off offset:20403271; GFX908-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3272; GFX908-NEXT:    s_mov_b64 s[4:5], 03273; GFX908-NEXT:  .LBB19_1: ; %atomicrmw.start3274; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=13275; GFX908-NEXT:    s_waitcnt vmcnt(0)3276; GFX908-NEXT:    v_mov_b32_e32 v7, v53277; GFX908-NEXT:    v_mov_b32_e32 v6, v43278; GFX908-NEXT:    v_max_f64 v[4:5], v[6:7], v[6:7]3279; GFX908-NEXT:    v_max_f64 v[4:5], v[4:5], v[2:3]3280; GFX908-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off offset:2040 glc3281; GFX908-NEXT:    s_waitcnt vmcnt(0)3282; GFX908-NEXT:    buffer_wbinvl13283; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]3284; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3285; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]3286; GFX908-NEXT:    s_cbranch_execnz .LBB19_13287; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end3288; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3289; GFX908-NEXT:    v_mov_b32_e32 v0, v43290; GFX908-NEXT:    v_mov_b32_e32 v1, v53291; GFX908-NEXT:    s_setpc_b64 s[30:31]3292;3293; GFX8-LABEL: global_agent_atomic_fmax_ret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3294; GFX8:       ; %bb.0:3295; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3296; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0x7f8, v03297; GFX8-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc3298; GFX8-NEXT:    flat_load_dwordx2 v[0:1], v[4:5]3299; GFX8-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3300; GFX8-NEXT:    s_mov_b64 s[4:5], 03301; GFX8-NEXT:  .LBB19_1: ; %atomicrmw.start3302; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=13303; GFX8-NEXT:    s_waitcnt vmcnt(0)3304; GFX8-NEXT:    v_mov_b32_e32 v9, v13305; GFX8-NEXT:    v_mov_b32_e32 v8, v03306; GFX8-NEXT:    v_max_f64 v[0:1], v[8:9], v[8:9]3307; GFX8-NEXT:    v_max_f64 v[6:7], v[0:1], v[2:3]3308; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[6:9] glc3309; GFX8-NEXT:    s_waitcnt vmcnt(0)3310; GFX8-NEXT:    buffer_wbinvl13311; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[8:9]3312; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3313; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]3314; GFX8-NEXT:    s_cbranch_execnz .LBB19_13315; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end3316; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3317; GFX8-NEXT:    s_setpc_b64 s[30:31]3318;3319; GFX7-LABEL: global_agent_atomic_fmax_ret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3320; GFX7:       ; %bb.0:3321; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3322; GFX7-NEXT:    s_mov_b32 s6, 03323; GFX7-NEXT:    s_mov_b32 s7, 0xf0003324; GFX7-NEXT:    s_mov_b32 s4, s63325; GFX7-NEXT:    s_mov_b32 s5, s63326; GFX7-NEXT:    buffer_atomic_fmax_x2 v[2:3], v[0:1], s[4:7], 0 addr64 offset:2040 glc3327; GFX7-NEXT:    s_waitcnt vmcnt(0)3328; GFX7-NEXT:    buffer_wbinvl13329; GFX7-NEXT:    v_mov_b32_e32 v0, v23330; GFX7-NEXT:    v_mov_b32_e32 v1, v33331; GFX7-NEXT:    s_setpc_b64 s[30:31]3332;3333; GFX6-LABEL: global_agent_atomic_fmax_ret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3334; GFX6:       ; %bb.0:3335; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3336; GFX6-NEXT:    s_mov_b32 s6, 03337; GFX6-NEXT:    s_mov_b32 s7, 0xf0003338; GFX6-NEXT:    s_mov_b32 s4, s63339; GFX6-NEXT:    s_mov_b32 s5, s63340; GFX6-NEXT:    buffer_atomic_fmax_x2 v[2:3], v[0:1], s[4:7], 0 addr64 offset:2040 glc3341; GFX6-NEXT:    s_waitcnt vmcnt(0)3342; GFX6-NEXT:    buffer_wbinvl13343; GFX6-NEXT:    v_mov_b32_e32 v0, v23344; GFX6-NEXT:    v_mov_b32_e32 v1, v33345; GFX6-NEXT:    s_waitcnt expcnt(0)3346; GFX6-NEXT:    s_setpc_b64 s[30:31]3347  %gep = getelementptr double, ptr addrspace(1) %ptr, i64 2553348  %result = atomicrmw fmax ptr addrspace(1) %gep, double %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !03349  ret double %result3350}3351 3352define double @global_agent_atomic_fmax_ret_f64__offset12b_neg__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, double %val) #0 {3353; GFX12-LABEL: global_agent_atomic_fmax_ret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3354; GFX12:       ; %bb.0:3355; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03356; GFX12-NEXT:    s_wait_expcnt 0x03357; GFX12-NEXT:    s_wait_samplecnt 0x03358; GFX12-NEXT:    s_wait_bvhcnt 0x03359; GFX12-NEXT:    s_wait_kmcnt 0x03360; GFX12-NEXT:    global_load_b64 v[4:5], v[0:1], off offset:-20483361; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[2:3]3362; GFX12-NEXT:    s_mov_b32 s0, 03363; GFX12-NEXT:  .LBB20_1: ; %atomicrmw.start3364; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=13365; GFX12-NEXT:    s_wait_loadcnt 0x03366; GFX12-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v43367; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3368; GFX12-NEXT:    v_max_num_f64_e32 v[4:5], v[6:7], v[6:7]3369; GFX12-NEXT:    v_max_num_f64_e32 v[4:5], v[4:5], v[2:3]3370; GFX12-NEXT:    s_wait_storecnt 0x03371; GFX12-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV3372; GFX12-NEXT:    s_wait_loadcnt 0x03373; GFX12-NEXT:    global_inv scope:SCOPE_DEV3374; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]3375; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3376; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s03377; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3378; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03379; GFX12-NEXT:    s_cbranch_execnz .LBB20_13380; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end3381; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s03382; GFX12-NEXT:    v_dual_mov_b32 v0, v4 :: v_dual_mov_b32 v1, v53383; GFX12-NEXT:    s_wait_loadcnt 0x03384; GFX12-NEXT:    s_setpc_b64 s[30:31]3385;3386; GFX942-LABEL: global_agent_atomic_fmax_ret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3387; GFX942:       ; %bb.0:3388; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3389; GFX942-NEXT:    buffer_wbl2 sc13390; GFX942-NEXT:    global_atomic_max_f64 v[0:1], v[0:1], v[2:3], off offset:-2048 sc03391; GFX942-NEXT:    s_waitcnt vmcnt(0)3392; GFX942-NEXT:    buffer_inv sc13393; GFX942-NEXT:    s_setpc_b64 s[30:31]3394;3395; GFX11-LABEL: global_agent_atomic_fmax_ret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3396; GFX11:       ; %bb.0:3397; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3398; GFX11-NEXT:    global_load_b64 v[4:5], v[0:1], off offset:-20483399; GFX11-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3400; GFX11-NEXT:    s_mov_b32 s0, 03401; GFX11-NEXT:  .LBB20_1: ; %atomicrmw.start3402; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=13403; GFX11-NEXT:    s_waitcnt vmcnt(0)3404; GFX11-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v43405; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3406; GFX11-NEXT:    v_max_f64 v[4:5], v[6:7], v[6:7]3407; GFX11-NEXT:    v_max_f64 v[4:5], v[4:5], v[2:3]3408; GFX11-NEXT:    s_waitcnt_vscnt null, 0x03409; GFX11-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off offset:-2048 glc3410; GFX11-NEXT:    s_waitcnt vmcnt(0)3411; GFX11-NEXT:    buffer_gl1_inv3412; GFX11-NEXT:    buffer_gl0_inv3413; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]3414; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s03415; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3416; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03417; GFX11-NEXT:    s_cbranch_execnz .LBB20_13418; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end3419; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s03420; GFX11-NEXT:    v_dual_mov_b32 v0, v4 :: v_dual_mov_b32 v1, v53421; GFX11-NEXT:    s_setpc_b64 s[30:31]3422;3423; GFX10-LABEL: global_agent_atomic_fmax_ret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3424; GFX10:       ; %bb.0:3425; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3426; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03427; GFX10-NEXT:    global_atomic_fmax_x2 v[0:1], v[0:1], v[2:3], off offset:-2048 glc3428; GFX10-NEXT:    s_waitcnt vmcnt(0)3429; GFX10-NEXT:    buffer_gl1_inv3430; GFX10-NEXT:    buffer_gl0_inv3431; GFX10-NEXT:    s_setpc_b64 s[30:31]3432;3433; GFX90A-LABEL: global_agent_atomic_fmax_ret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3434; GFX90A:       ; %bb.0:3435; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3436; GFX90A-NEXT:    global_atomic_max_f64 v[0:1], v[0:1], v[2:3], off offset:-2048 glc3437; GFX90A-NEXT:    s_waitcnt vmcnt(0)3438; GFX90A-NEXT:    buffer_wbinvl13439; GFX90A-NEXT:    s_setpc_b64 s[30:31]3440;3441; GFX908-LABEL: global_agent_atomic_fmax_ret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3442; GFX908:       ; %bb.0:3443; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3444; GFX908-NEXT:    global_load_dwordx2 v[4:5], v[0:1], off offset:-20483445; GFX908-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3446; GFX908-NEXT:    s_mov_b64 s[4:5], 03447; GFX908-NEXT:  .LBB20_1: ; %atomicrmw.start3448; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=13449; GFX908-NEXT:    s_waitcnt vmcnt(0)3450; GFX908-NEXT:    v_mov_b32_e32 v7, v53451; GFX908-NEXT:    v_mov_b32_e32 v6, v43452; GFX908-NEXT:    v_max_f64 v[4:5], v[6:7], v[6:7]3453; GFX908-NEXT:    v_max_f64 v[4:5], v[4:5], v[2:3]3454; GFX908-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off offset:-2048 glc3455; GFX908-NEXT:    s_waitcnt vmcnt(0)3456; GFX908-NEXT:    buffer_wbinvl13457; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]3458; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3459; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]3460; GFX908-NEXT:    s_cbranch_execnz .LBB20_13461; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end3462; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3463; GFX908-NEXT:    v_mov_b32_e32 v0, v43464; GFX908-NEXT:    v_mov_b32_e32 v1, v53465; GFX908-NEXT:    s_setpc_b64 s[30:31]3466;3467; GFX8-LABEL: global_agent_atomic_fmax_ret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3468; GFX8:       ; %bb.0:3469; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3470; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0xfffff800, v03471; GFX8-NEXT:    v_addc_u32_e32 v5, vcc, -1, v1, vcc3472; GFX8-NEXT:    flat_load_dwordx2 v[0:1], v[4:5]3473; GFX8-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3474; GFX8-NEXT:    s_mov_b64 s[4:5], 03475; GFX8-NEXT:  .LBB20_1: ; %atomicrmw.start3476; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=13477; GFX8-NEXT:    s_waitcnt vmcnt(0)3478; GFX8-NEXT:    v_mov_b32_e32 v9, v13479; GFX8-NEXT:    v_mov_b32_e32 v8, v03480; GFX8-NEXT:    v_max_f64 v[0:1], v[8:9], v[8:9]3481; GFX8-NEXT:    v_max_f64 v[6:7], v[0:1], v[2:3]3482; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[6:9] glc3483; GFX8-NEXT:    s_waitcnt vmcnt(0)3484; GFX8-NEXT:    buffer_wbinvl13485; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[8:9]3486; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3487; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]3488; GFX8-NEXT:    s_cbranch_execnz .LBB20_13489; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end3490; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3491; GFX8-NEXT:    s_setpc_b64 s[30:31]3492;3493; GFX7-LABEL: global_agent_atomic_fmax_ret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3494; GFX7:       ; %bb.0:3495; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3496; GFX7-NEXT:    s_movk_i32 s4, 0xf8003497; GFX7-NEXT:    s_mov_b32 s7, 0xf0003498; GFX7-NEXT:    s_mov_b32 s6, 03499; GFX7-NEXT:    s_mov_b32 s5, -13500; GFX7-NEXT:    buffer_atomic_fmax_x2 v[2:3], v[0:1], s[4:7], 0 addr64 glc3501; GFX7-NEXT:    s_waitcnt vmcnt(0)3502; GFX7-NEXT:    buffer_wbinvl13503; GFX7-NEXT:    v_mov_b32_e32 v0, v23504; GFX7-NEXT:    v_mov_b32_e32 v1, v33505; GFX7-NEXT:    s_setpc_b64 s[30:31]3506;3507; GFX6-LABEL: global_agent_atomic_fmax_ret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3508; GFX6:       ; %bb.0:3509; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3510; GFX6-NEXT:    s_movk_i32 s4, 0xf8003511; GFX6-NEXT:    s_mov_b32 s7, 0xf0003512; GFX6-NEXT:    s_mov_b32 s6, 03513; GFX6-NEXT:    s_mov_b32 s5, -13514; GFX6-NEXT:    buffer_atomic_fmax_x2 v[2:3], v[0:1], s[4:7], 0 addr64 glc3515; GFX6-NEXT:    s_waitcnt vmcnt(0)3516; GFX6-NEXT:    buffer_wbinvl13517; GFX6-NEXT:    v_mov_b32_e32 v0, v23518; GFX6-NEXT:    v_mov_b32_e32 v1, v33519; GFX6-NEXT:    s_waitcnt expcnt(0)3520; GFX6-NEXT:    s_setpc_b64 s[30:31]3521  %gep = getelementptr double, ptr addrspace(1) %ptr, i64 -2563522  %result = atomicrmw fmax ptr addrspace(1) %gep, double %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !03523  ret double %result3524}3525 3526define void @global_agent_atomic_fmax_noret_f64__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, double %val) #0 {3527; GFX12-LABEL: global_agent_atomic_fmax_noret_f64__amdgpu_no_fine_grained_memory:3528; GFX12:       ; %bb.0:3529; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03530; GFX12-NEXT:    s_wait_expcnt 0x03531; GFX12-NEXT:    s_wait_samplecnt 0x03532; GFX12-NEXT:    s_wait_bvhcnt 0x03533; GFX12-NEXT:    s_wait_kmcnt 0x03534; GFX12-NEXT:    global_load_b64 v[4:5], v[0:1], off3535; GFX12-NEXT:    v_max_num_f64_e32 v[6:7], v[2:3], v[2:3]3536; GFX12-NEXT:    s_mov_b32 s0, 03537; GFX12-NEXT:  .LBB21_1: ; %atomicrmw.start3538; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=13539; GFX12-NEXT:    s_wait_loadcnt 0x03540; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[4:5], v[4:5]3541; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)3542; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[6:7]3543; GFX12-NEXT:    s_wait_storecnt 0x03544; GFX12-NEXT:    global_atomic_cmpswap_b64 v[2:3], v[0:1], v[2:5], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV3545; GFX12-NEXT:    s_wait_loadcnt 0x03546; GFX12-NEXT:    global_inv scope:SCOPE_DEV3547; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[2:3], v[4:5]3548; GFX12-NEXT:    v_dual_mov_b32 v5, v3 :: v_dual_mov_b32 v4, v23549; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3550; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s03551; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3552; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03553; GFX12-NEXT:    s_cbranch_execnz .LBB21_13554; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end3555; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s03556; GFX12-NEXT:    s_wait_loadcnt 0x03557; GFX12-NEXT:    s_setpc_b64 s[30:31]3558;3559; GFX942-LABEL: global_agent_atomic_fmax_noret_f64__amdgpu_no_fine_grained_memory:3560; GFX942:       ; %bb.0:3561; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3562; GFX942-NEXT:    buffer_wbl2 sc13563; GFX942-NEXT:    global_atomic_max_f64 v[0:1], v[2:3], off3564; GFX942-NEXT:    s_waitcnt vmcnt(0)3565; GFX942-NEXT:    buffer_inv sc13566; GFX942-NEXT:    s_setpc_b64 s[30:31]3567;3568; GFX11-LABEL: global_agent_atomic_fmax_noret_f64__amdgpu_no_fine_grained_memory:3569; GFX11:       ; %bb.0:3570; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3571; GFX11-NEXT:    global_load_b64 v[4:5], v[0:1], off3572; GFX11-NEXT:    v_max_f64 v[6:7], v[2:3], v[2:3]3573; GFX11-NEXT:    s_mov_b32 s0, 03574; GFX11-NEXT:  .LBB21_1: ; %atomicrmw.start3575; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=13576; GFX11-NEXT:    s_waitcnt vmcnt(0)3577; GFX11-NEXT:    v_max_f64 v[2:3], v[4:5], v[4:5]3578; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)3579; GFX11-NEXT:    v_max_f64 v[2:3], v[2:3], v[6:7]3580; GFX11-NEXT:    s_waitcnt_vscnt null, 0x03581; GFX11-NEXT:    global_atomic_cmpswap_b64 v[2:3], v[0:1], v[2:5], off glc3582; GFX11-NEXT:    s_waitcnt vmcnt(0)3583; GFX11-NEXT:    buffer_gl1_inv3584; GFX11-NEXT:    buffer_gl0_inv3585; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[2:3], v[4:5]3586; GFX11-NEXT:    v_dual_mov_b32 v5, v3 :: v_dual_mov_b32 v4, v23587; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s03588; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3589; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03590; GFX11-NEXT:    s_cbranch_execnz .LBB21_13591; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end3592; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s03593; GFX11-NEXT:    s_setpc_b64 s[30:31]3594;3595; GFX10-LABEL: global_agent_atomic_fmax_noret_f64__amdgpu_no_fine_grained_memory:3596; GFX10:       ; %bb.0:3597; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3598; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03599; GFX10-NEXT:    global_atomic_fmax_x2 v[0:1], v[2:3], off3600; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03601; GFX10-NEXT:    buffer_gl1_inv3602; GFX10-NEXT:    buffer_gl0_inv3603; GFX10-NEXT:    s_setpc_b64 s[30:31]3604;3605; GFX90A-LABEL: global_agent_atomic_fmax_noret_f64__amdgpu_no_fine_grained_memory:3606; GFX90A:       ; %bb.0:3607; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3608; GFX90A-NEXT:    global_atomic_max_f64 v[0:1], v[2:3], off3609; GFX90A-NEXT:    s_waitcnt vmcnt(0)3610; GFX90A-NEXT:    buffer_wbinvl13611; GFX90A-NEXT:    s_setpc_b64 s[30:31]3612;3613; GFX908-LABEL: global_agent_atomic_fmax_noret_f64__amdgpu_no_fine_grained_memory:3614; GFX908:       ; %bb.0:3615; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3616; GFX908-NEXT:    global_load_dwordx2 v[4:5], v[0:1], off3617; GFX908-NEXT:    v_max_f64 v[6:7], v[2:3], v[2:3]3618; GFX908-NEXT:    s_mov_b64 s[4:5], 03619; GFX908-NEXT:  .LBB21_1: ; %atomicrmw.start3620; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=13621; GFX908-NEXT:    s_waitcnt vmcnt(0)3622; GFX908-NEXT:    v_max_f64 v[2:3], v[4:5], v[4:5]3623; GFX908-NEXT:    v_max_f64 v[2:3], v[2:3], v[6:7]3624; GFX908-NEXT:    global_atomic_cmpswap_x2 v[2:3], v[0:1], v[2:5], off glc3625; GFX908-NEXT:    s_waitcnt vmcnt(0)3626; GFX908-NEXT:    buffer_wbinvl13627; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[2:3], v[4:5]3628; GFX908-NEXT:    v_mov_b32_e32 v5, v33629; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3630; GFX908-NEXT:    v_mov_b32_e32 v4, v23631; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]3632; GFX908-NEXT:    s_cbranch_execnz .LBB21_13633; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end3634; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3635; GFX908-NEXT:    s_setpc_b64 s[30:31]3636;3637; GFX8-LABEL: global_agent_atomic_fmax_noret_f64__amdgpu_no_fine_grained_memory:3638; GFX8:       ; %bb.0:3639; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3640; GFX8-NEXT:    flat_load_dwordx2 v[4:5], v[0:1]3641; GFX8-NEXT:    v_max_f64 v[6:7], v[2:3], v[2:3]3642; GFX8-NEXT:    s_mov_b64 s[4:5], 03643; GFX8-NEXT:  .LBB21_1: ; %atomicrmw.start3644; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=13645; GFX8-NEXT:    s_waitcnt vmcnt(0)3646; GFX8-NEXT:    v_max_f64 v[2:3], v[4:5], v[4:5]3647; GFX8-NEXT:    v_max_f64 v[2:3], v[2:3], v[6:7]3648; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[2:3], v[0:1], v[2:5] glc3649; GFX8-NEXT:    s_waitcnt vmcnt(0)3650; GFX8-NEXT:    buffer_wbinvl13651; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[2:3], v[4:5]3652; GFX8-NEXT:    v_mov_b32_e32 v5, v33653; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3654; GFX8-NEXT:    v_mov_b32_e32 v4, v23655; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]3656; GFX8-NEXT:    s_cbranch_execnz .LBB21_13657; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end3658; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3659; GFX8-NEXT:    s_setpc_b64 s[30:31]3660;3661; GFX7-LABEL: global_agent_atomic_fmax_noret_f64__amdgpu_no_fine_grained_memory:3662; GFX7:       ; %bb.0:3663; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3664; GFX7-NEXT:    s_mov_b32 s6, 03665; GFX7-NEXT:    s_mov_b32 s7, 0xf0003666; GFX7-NEXT:    s_mov_b32 s4, s63667; GFX7-NEXT:    s_mov_b32 s5, s63668; GFX7-NEXT:    buffer_atomic_fmax_x2 v[2:3], v[0:1], s[4:7], 0 addr643669; GFX7-NEXT:    s_waitcnt vmcnt(0)3670; GFX7-NEXT:    buffer_wbinvl13671; GFX7-NEXT:    s_setpc_b64 s[30:31]3672;3673; GFX6-LABEL: global_agent_atomic_fmax_noret_f64__amdgpu_no_fine_grained_memory:3674; GFX6:       ; %bb.0:3675; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3676; GFX6-NEXT:    s_mov_b32 s6, 03677; GFX6-NEXT:    s_mov_b32 s7, 0xf0003678; GFX6-NEXT:    s_mov_b32 s4, s63679; GFX6-NEXT:    s_mov_b32 s5, s63680; GFX6-NEXT:    buffer_atomic_fmax_x2 v[2:3], v[0:1], s[4:7], 0 addr643681; GFX6-NEXT:    s_waitcnt vmcnt(0)3682; GFX6-NEXT:    buffer_wbinvl13683; GFX6-NEXT:    s_waitcnt expcnt(0)3684; GFX6-NEXT:    s_setpc_b64 s[30:31]3685  %unused = atomicrmw fmax ptr addrspace(1) %ptr, double %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !03686  ret void3687}3688 3689define void @global_agent_atomic_fmax_noret_f64__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, double %val) #0 {3690; GFX12-LABEL: global_agent_atomic_fmax_noret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3691; GFX12:       ; %bb.0:3692; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03693; GFX12-NEXT:    s_wait_expcnt 0x03694; GFX12-NEXT:    s_wait_samplecnt 0x03695; GFX12-NEXT:    s_wait_bvhcnt 0x03696; GFX12-NEXT:    s_wait_kmcnt 0x03697; GFX12-NEXT:    global_load_b64 v[4:5], v[0:1], off offset:20403698; GFX12-NEXT:    v_max_num_f64_e32 v[6:7], v[2:3], v[2:3]3699; GFX12-NEXT:    s_mov_b32 s0, 03700; GFX12-NEXT:  .LBB22_1: ; %atomicrmw.start3701; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=13702; GFX12-NEXT:    s_wait_loadcnt 0x03703; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[4:5], v[4:5]3704; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)3705; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[6:7]3706; GFX12-NEXT:    s_wait_storecnt 0x03707; GFX12-NEXT:    global_atomic_cmpswap_b64 v[2:3], v[0:1], v[2:5], off offset:2040 th:TH_ATOMIC_RETURN scope:SCOPE_DEV3708; GFX12-NEXT:    s_wait_loadcnt 0x03709; GFX12-NEXT:    global_inv scope:SCOPE_DEV3710; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[2:3], v[4:5]3711; GFX12-NEXT:    v_dual_mov_b32 v5, v3 :: v_dual_mov_b32 v4, v23712; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3713; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s03714; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3715; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03716; GFX12-NEXT:    s_cbranch_execnz .LBB22_13717; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end3718; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s03719; GFX12-NEXT:    s_wait_loadcnt 0x03720; GFX12-NEXT:    s_setpc_b64 s[30:31]3721;3722; GFX942-LABEL: global_agent_atomic_fmax_noret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3723; GFX942:       ; %bb.0:3724; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3725; GFX942-NEXT:    buffer_wbl2 sc13726; GFX942-NEXT:    global_atomic_max_f64 v[0:1], v[2:3], off offset:20403727; GFX942-NEXT:    s_waitcnt vmcnt(0)3728; GFX942-NEXT:    buffer_inv sc13729; GFX942-NEXT:    s_setpc_b64 s[30:31]3730;3731; GFX11-LABEL: global_agent_atomic_fmax_noret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3732; GFX11:       ; %bb.0:3733; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3734; GFX11-NEXT:    global_load_b64 v[4:5], v[0:1], off offset:20403735; GFX11-NEXT:    v_max_f64 v[6:7], v[2:3], v[2:3]3736; GFX11-NEXT:    s_mov_b32 s0, 03737; GFX11-NEXT:  .LBB22_1: ; %atomicrmw.start3738; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=13739; GFX11-NEXT:    s_waitcnt vmcnt(0)3740; GFX11-NEXT:    v_max_f64 v[2:3], v[4:5], v[4:5]3741; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)3742; GFX11-NEXT:    v_max_f64 v[2:3], v[2:3], v[6:7]3743; GFX11-NEXT:    s_waitcnt_vscnt null, 0x03744; GFX11-NEXT:    global_atomic_cmpswap_b64 v[2:3], v[0:1], v[2:5], off offset:2040 glc3745; GFX11-NEXT:    s_waitcnt vmcnt(0)3746; GFX11-NEXT:    buffer_gl1_inv3747; GFX11-NEXT:    buffer_gl0_inv3748; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[2:3], v[4:5]3749; GFX11-NEXT:    v_dual_mov_b32 v5, v3 :: v_dual_mov_b32 v4, v23750; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s03751; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3752; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03753; GFX11-NEXT:    s_cbranch_execnz .LBB22_13754; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end3755; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s03756; GFX11-NEXT:    s_setpc_b64 s[30:31]3757;3758; GFX10-LABEL: global_agent_atomic_fmax_noret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3759; GFX10:       ; %bb.0:3760; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3761; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03762; GFX10-NEXT:    global_atomic_fmax_x2 v[0:1], v[2:3], off offset:20403763; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03764; GFX10-NEXT:    buffer_gl1_inv3765; GFX10-NEXT:    buffer_gl0_inv3766; GFX10-NEXT:    s_setpc_b64 s[30:31]3767;3768; GFX90A-LABEL: global_agent_atomic_fmax_noret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3769; GFX90A:       ; %bb.0:3770; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3771; GFX90A-NEXT:    global_atomic_max_f64 v[0:1], v[2:3], off offset:20403772; GFX90A-NEXT:    s_waitcnt vmcnt(0)3773; GFX90A-NEXT:    buffer_wbinvl13774; GFX90A-NEXT:    s_setpc_b64 s[30:31]3775;3776; GFX908-LABEL: global_agent_atomic_fmax_noret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3777; GFX908:       ; %bb.0:3778; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3779; GFX908-NEXT:    global_load_dwordx2 v[4:5], v[0:1], off offset:20403780; GFX908-NEXT:    v_max_f64 v[6:7], v[2:3], v[2:3]3781; GFX908-NEXT:    s_mov_b64 s[4:5], 03782; GFX908-NEXT:  .LBB22_1: ; %atomicrmw.start3783; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=13784; GFX908-NEXT:    s_waitcnt vmcnt(0)3785; GFX908-NEXT:    v_max_f64 v[2:3], v[4:5], v[4:5]3786; GFX908-NEXT:    v_max_f64 v[2:3], v[2:3], v[6:7]3787; GFX908-NEXT:    global_atomic_cmpswap_x2 v[2:3], v[0:1], v[2:5], off offset:2040 glc3788; GFX908-NEXT:    s_waitcnt vmcnt(0)3789; GFX908-NEXT:    buffer_wbinvl13790; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[2:3], v[4:5]3791; GFX908-NEXT:    v_mov_b32_e32 v5, v33792; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3793; GFX908-NEXT:    v_mov_b32_e32 v4, v23794; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]3795; GFX908-NEXT:    s_cbranch_execnz .LBB22_13796; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end3797; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3798; GFX908-NEXT:    s_setpc_b64 s[30:31]3799;3800; GFX8-LABEL: global_agent_atomic_fmax_noret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3801; GFX8:       ; %bb.0:3802; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3803; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7f8, v03804; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc3805; GFX8-NEXT:    flat_load_dwordx2 v[4:5], v[0:1]3806; GFX8-NEXT:    v_max_f64 v[6:7], v[2:3], v[2:3]3807; GFX8-NEXT:    s_mov_b64 s[4:5], 03808; GFX8-NEXT:  .LBB22_1: ; %atomicrmw.start3809; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=13810; GFX8-NEXT:    s_waitcnt vmcnt(0)3811; GFX8-NEXT:    v_max_f64 v[2:3], v[4:5], v[4:5]3812; GFX8-NEXT:    v_max_f64 v[2:3], v[2:3], v[6:7]3813; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[2:3], v[0:1], v[2:5] glc3814; GFX8-NEXT:    s_waitcnt vmcnt(0)3815; GFX8-NEXT:    buffer_wbinvl13816; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[2:3], v[4:5]3817; GFX8-NEXT:    v_mov_b32_e32 v5, v33818; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3819; GFX8-NEXT:    v_mov_b32_e32 v4, v23820; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]3821; GFX8-NEXT:    s_cbranch_execnz .LBB22_13822; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end3823; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3824; GFX8-NEXT:    s_setpc_b64 s[30:31]3825;3826; GFX7-LABEL: global_agent_atomic_fmax_noret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3827; GFX7:       ; %bb.0:3828; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3829; GFX7-NEXT:    s_mov_b32 s6, 03830; GFX7-NEXT:    s_mov_b32 s7, 0xf0003831; GFX7-NEXT:    s_mov_b32 s4, s63832; GFX7-NEXT:    s_mov_b32 s5, s63833; GFX7-NEXT:    buffer_atomic_fmax_x2 v[2:3], v[0:1], s[4:7], 0 addr64 offset:20403834; GFX7-NEXT:    s_waitcnt vmcnt(0)3835; GFX7-NEXT:    buffer_wbinvl13836; GFX7-NEXT:    s_setpc_b64 s[30:31]3837;3838; GFX6-LABEL: global_agent_atomic_fmax_noret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3839; GFX6:       ; %bb.0:3840; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3841; GFX6-NEXT:    s_mov_b32 s6, 03842; GFX6-NEXT:    s_mov_b32 s7, 0xf0003843; GFX6-NEXT:    s_mov_b32 s4, s63844; GFX6-NEXT:    s_mov_b32 s5, s63845; GFX6-NEXT:    buffer_atomic_fmax_x2 v[2:3], v[0:1], s[4:7], 0 addr64 offset:20403846; GFX6-NEXT:    s_waitcnt vmcnt(0)3847; GFX6-NEXT:    buffer_wbinvl13848; GFX6-NEXT:    s_waitcnt expcnt(0)3849; GFX6-NEXT:    s_setpc_b64 s[30:31]3850  %gep = getelementptr double, ptr addrspace(1) %ptr, i64 2553851  %unused = atomicrmw fmax ptr addrspace(1) %gep, double %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !03852  ret void3853}3854 3855define void @global_agent_atomic_fmax_noret_f64__offset12b_neg__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, double %val) #0 {3856; GFX12-LABEL: global_agent_atomic_fmax_noret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3857; GFX12:       ; %bb.0:3858; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03859; GFX12-NEXT:    s_wait_expcnt 0x03860; GFX12-NEXT:    s_wait_samplecnt 0x03861; GFX12-NEXT:    s_wait_bvhcnt 0x03862; GFX12-NEXT:    s_wait_kmcnt 0x03863; GFX12-NEXT:    global_load_b64 v[4:5], v[0:1], off offset:-20483864; GFX12-NEXT:    v_max_num_f64_e32 v[6:7], v[2:3], v[2:3]3865; GFX12-NEXT:    s_mov_b32 s0, 03866; GFX12-NEXT:  .LBB23_1: ; %atomicrmw.start3867; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=13868; GFX12-NEXT:    s_wait_loadcnt 0x03869; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[4:5], v[4:5]3870; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)3871; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[6:7]3872; GFX12-NEXT:    s_wait_storecnt 0x03873; GFX12-NEXT:    global_atomic_cmpswap_b64 v[2:3], v[0:1], v[2:5], off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV3874; GFX12-NEXT:    s_wait_loadcnt 0x03875; GFX12-NEXT:    global_inv scope:SCOPE_DEV3876; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[2:3], v[4:5]3877; GFX12-NEXT:    v_dual_mov_b32 v5, v3 :: v_dual_mov_b32 v4, v23878; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3879; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s03880; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3881; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03882; GFX12-NEXT:    s_cbranch_execnz .LBB23_13883; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end3884; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s03885; GFX12-NEXT:    s_wait_loadcnt 0x03886; GFX12-NEXT:    s_setpc_b64 s[30:31]3887;3888; GFX942-LABEL: global_agent_atomic_fmax_noret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3889; GFX942:       ; %bb.0:3890; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3891; GFX942-NEXT:    buffer_wbl2 sc13892; GFX942-NEXT:    global_atomic_max_f64 v[0:1], v[2:3], off offset:-20483893; GFX942-NEXT:    s_waitcnt vmcnt(0)3894; GFX942-NEXT:    buffer_inv sc13895; GFX942-NEXT:    s_setpc_b64 s[30:31]3896;3897; GFX11-LABEL: global_agent_atomic_fmax_noret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3898; GFX11:       ; %bb.0:3899; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3900; GFX11-NEXT:    global_load_b64 v[4:5], v[0:1], off offset:-20483901; GFX11-NEXT:    v_max_f64 v[6:7], v[2:3], v[2:3]3902; GFX11-NEXT:    s_mov_b32 s0, 03903; GFX11-NEXT:  .LBB23_1: ; %atomicrmw.start3904; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=13905; GFX11-NEXT:    s_waitcnt vmcnt(0)3906; GFX11-NEXT:    v_max_f64 v[2:3], v[4:5], v[4:5]3907; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)3908; GFX11-NEXT:    v_max_f64 v[2:3], v[2:3], v[6:7]3909; GFX11-NEXT:    s_waitcnt_vscnt null, 0x03910; GFX11-NEXT:    global_atomic_cmpswap_b64 v[2:3], v[0:1], v[2:5], off offset:-2048 glc3911; GFX11-NEXT:    s_waitcnt vmcnt(0)3912; GFX11-NEXT:    buffer_gl1_inv3913; GFX11-NEXT:    buffer_gl0_inv3914; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[2:3], v[4:5]3915; GFX11-NEXT:    v_dual_mov_b32 v5, v3 :: v_dual_mov_b32 v4, v23916; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s03917; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3918; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03919; GFX11-NEXT:    s_cbranch_execnz .LBB23_13920; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end3921; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s03922; GFX11-NEXT:    s_setpc_b64 s[30:31]3923;3924; GFX10-LABEL: global_agent_atomic_fmax_noret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3925; GFX10:       ; %bb.0:3926; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3927; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03928; GFX10-NEXT:    global_atomic_fmax_x2 v[0:1], v[2:3], off offset:-20483929; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03930; GFX10-NEXT:    buffer_gl1_inv3931; GFX10-NEXT:    buffer_gl0_inv3932; GFX10-NEXT:    s_setpc_b64 s[30:31]3933;3934; GFX90A-LABEL: global_agent_atomic_fmax_noret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3935; GFX90A:       ; %bb.0:3936; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3937; GFX90A-NEXT:    global_atomic_max_f64 v[0:1], v[2:3], off offset:-20483938; GFX90A-NEXT:    s_waitcnt vmcnt(0)3939; GFX90A-NEXT:    buffer_wbinvl13940; GFX90A-NEXT:    s_setpc_b64 s[30:31]3941;3942; GFX908-LABEL: global_agent_atomic_fmax_noret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3943; GFX908:       ; %bb.0:3944; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3945; GFX908-NEXT:    global_load_dwordx2 v[4:5], v[0:1], off offset:-20483946; GFX908-NEXT:    v_max_f64 v[6:7], v[2:3], v[2:3]3947; GFX908-NEXT:    s_mov_b64 s[4:5], 03948; GFX908-NEXT:  .LBB23_1: ; %atomicrmw.start3949; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=13950; GFX908-NEXT:    s_waitcnt vmcnt(0)3951; GFX908-NEXT:    v_max_f64 v[2:3], v[4:5], v[4:5]3952; GFX908-NEXT:    v_max_f64 v[2:3], v[2:3], v[6:7]3953; GFX908-NEXT:    global_atomic_cmpswap_x2 v[2:3], v[0:1], v[2:5], off offset:-2048 glc3954; GFX908-NEXT:    s_waitcnt vmcnt(0)3955; GFX908-NEXT:    buffer_wbinvl13956; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[2:3], v[4:5]3957; GFX908-NEXT:    v_mov_b32_e32 v5, v33958; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3959; GFX908-NEXT:    v_mov_b32_e32 v4, v23960; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]3961; GFX908-NEXT:    s_cbranch_execnz .LBB23_13962; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end3963; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3964; GFX908-NEXT:    s_setpc_b64 s[30:31]3965;3966; GFX8-LABEL: global_agent_atomic_fmax_noret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3967; GFX8:       ; %bb.0:3968; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3969; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffff800, v03970; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc3971; GFX8-NEXT:    flat_load_dwordx2 v[4:5], v[0:1]3972; GFX8-NEXT:    v_max_f64 v[6:7], v[2:3], v[2:3]3973; GFX8-NEXT:    s_mov_b64 s[4:5], 03974; GFX8-NEXT:  .LBB23_1: ; %atomicrmw.start3975; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=13976; GFX8-NEXT:    s_waitcnt vmcnt(0)3977; GFX8-NEXT:    v_max_f64 v[2:3], v[4:5], v[4:5]3978; GFX8-NEXT:    v_max_f64 v[2:3], v[2:3], v[6:7]3979; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[2:3], v[0:1], v[2:5] glc3980; GFX8-NEXT:    s_waitcnt vmcnt(0)3981; GFX8-NEXT:    buffer_wbinvl13982; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[2:3], v[4:5]3983; GFX8-NEXT:    v_mov_b32_e32 v5, v33984; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3985; GFX8-NEXT:    v_mov_b32_e32 v4, v23986; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]3987; GFX8-NEXT:    s_cbranch_execnz .LBB23_13988; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end3989; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3990; GFX8-NEXT:    s_setpc_b64 s[30:31]3991;3992; GFX7-LABEL: global_agent_atomic_fmax_noret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3993; GFX7:       ; %bb.0:3994; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3995; GFX7-NEXT:    s_movk_i32 s4, 0xf8003996; GFX7-NEXT:    s_mov_b32 s7, 0xf0003997; GFX7-NEXT:    s_mov_b32 s6, 03998; GFX7-NEXT:    s_mov_b32 s5, -13999; GFX7-NEXT:    buffer_atomic_fmax_x2 v[2:3], v[0:1], s[4:7], 0 addr644000; GFX7-NEXT:    s_waitcnt vmcnt(0)4001; GFX7-NEXT:    buffer_wbinvl14002; GFX7-NEXT:    s_setpc_b64 s[30:31]4003;4004; GFX6-LABEL: global_agent_atomic_fmax_noret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:4005; GFX6:       ; %bb.0:4006; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4007; GFX6-NEXT:    s_movk_i32 s4, 0xf8004008; GFX6-NEXT:    s_mov_b32 s7, 0xf0004009; GFX6-NEXT:    s_mov_b32 s6, 04010; GFX6-NEXT:    s_mov_b32 s5, -14011; GFX6-NEXT:    buffer_atomic_fmax_x2 v[2:3], v[0:1], s[4:7], 0 addr644012; GFX6-NEXT:    s_waitcnt vmcnt(0)4013; GFX6-NEXT:    buffer_wbinvl14014; GFX6-NEXT:    s_waitcnt expcnt(0)4015; GFX6-NEXT:    s_setpc_b64 s[30:31]4016  %gep = getelementptr double, ptr addrspace(1) %ptr, i64 -2564017  %unused = atomicrmw fmax ptr addrspace(1) %gep, double %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !04018  ret void4019}4020 4021define double @global_agent_atomic_fmax_ret_f64__amdgpu_no_remote_memory(ptr addrspace(1) %ptr, double %val) #0 {4022; GFX12-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_remote_memory:4023; GFX12:       ; %bb.0:4024; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04025; GFX12-NEXT:    s_wait_expcnt 0x04026; GFX12-NEXT:    s_wait_samplecnt 0x04027; GFX12-NEXT:    s_wait_bvhcnt 0x04028; GFX12-NEXT:    s_wait_kmcnt 0x04029; GFX12-NEXT:    global_load_b64 v[4:5], v[0:1], off4030; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[2:3]4031; GFX12-NEXT:    s_mov_b32 s0, 04032; GFX12-NEXT:  .LBB24_1: ; %atomicrmw.start4033; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=14034; GFX12-NEXT:    s_wait_loadcnt 0x04035; GFX12-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v44036; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4037; GFX12-NEXT:    v_max_num_f64_e32 v[4:5], v[6:7], v[6:7]4038; GFX12-NEXT:    v_max_num_f64_e32 v[4:5], v[4:5], v[2:3]4039; GFX12-NEXT:    s_wait_storecnt 0x04040; GFX12-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV4041; GFX12-NEXT:    s_wait_loadcnt 0x04042; GFX12-NEXT:    global_inv scope:SCOPE_DEV4043; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4044; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4045; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s04046; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4047; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04048; GFX12-NEXT:    s_cbranch_execnz .LBB24_14049; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end4050; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s04051; GFX12-NEXT:    v_dual_mov_b32 v0, v4 :: v_dual_mov_b32 v1, v54052; GFX12-NEXT:    s_wait_loadcnt 0x04053; GFX12-NEXT:    s_setpc_b64 s[30:31]4054;4055; GFX942-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_remote_memory:4056; GFX942:       ; %bb.0:4057; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4058; GFX942-NEXT:    buffer_wbl2 sc14059; GFX942-NEXT:    global_atomic_max_f64 v[0:1], v[0:1], v[2:3], off sc04060; GFX942-NEXT:    s_waitcnt vmcnt(0)4061; GFX942-NEXT:    buffer_inv sc14062; GFX942-NEXT:    s_setpc_b64 s[30:31]4063;4064; GFX11-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_remote_memory:4065; GFX11:       ; %bb.0:4066; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4067; GFX11-NEXT:    global_load_b64 v[4:5], v[0:1], off4068; GFX11-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]4069; GFX11-NEXT:    s_mov_b32 s0, 04070; GFX11-NEXT:  .LBB24_1: ; %atomicrmw.start4071; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=14072; GFX11-NEXT:    s_waitcnt vmcnt(0)4073; GFX11-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v44074; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4075; GFX11-NEXT:    v_max_f64 v[4:5], v[6:7], v[6:7]4076; GFX11-NEXT:    v_max_f64 v[4:5], v[4:5], v[2:3]4077; GFX11-NEXT:    s_waitcnt_vscnt null, 0x04078; GFX11-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off glc4079; GFX11-NEXT:    s_waitcnt vmcnt(0)4080; GFX11-NEXT:    buffer_gl1_inv4081; GFX11-NEXT:    buffer_gl0_inv4082; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4083; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s04084; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4085; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04086; GFX11-NEXT:    s_cbranch_execnz .LBB24_14087; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end4088; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s04089; GFX11-NEXT:    v_dual_mov_b32 v0, v4 :: v_dual_mov_b32 v1, v54090; GFX11-NEXT:    s_setpc_b64 s[30:31]4091;4092; GFX10-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_remote_memory:4093; GFX10:       ; %bb.0:4094; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4095; GFX10-NEXT:    global_load_dwordx2 v[4:5], v[0:1], off4096; GFX10-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]4097; GFX10-NEXT:    s_mov_b32 s4, 04098; GFX10-NEXT:  .LBB24_1: ; %atomicrmw.start4099; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=14100; GFX10-NEXT:    s_waitcnt vmcnt(0)4101; GFX10-NEXT:    v_mov_b32_e32 v7, v54102; GFX10-NEXT:    v_mov_b32_e32 v6, v44103; GFX10-NEXT:    v_max_f64 v[4:5], v[6:7], v[6:7]4104; GFX10-NEXT:    v_max_f64 v[4:5], v[4:5], v[2:3]4105; GFX10-NEXT:    s_waitcnt_vscnt null, 0x04106; GFX10-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off glc4107; GFX10-NEXT:    s_waitcnt vmcnt(0)4108; GFX10-NEXT:    buffer_gl1_inv4109; GFX10-NEXT:    buffer_gl0_inv4110; GFX10-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4111; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s44112; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s44113; GFX10-NEXT:    s_cbranch_execnz .LBB24_14114; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end4115; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s44116; GFX10-NEXT:    v_mov_b32_e32 v0, v44117; GFX10-NEXT:    v_mov_b32_e32 v1, v54118; GFX10-NEXT:    s_setpc_b64 s[30:31]4119;4120; GFX90A-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_remote_memory:4121; GFX90A:       ; %bb.0:4122; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4123; GFX90A-NEXT:    global_load_dwordx2 v[4:5], v[0:1], off4124; GFX90A-NEXT:    s_mov_b64 s[4:5], 04125; GFX90A-NEXT:    v_max_f64 v[6:7], v[2:3], v[2:3]4126; GFX90A-NEXT:  .LBB24_1: ; %atomicrmw.start4127; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=14128; GFX90A-NEXT:    s_waitcnt vmcnt(0)4129; GFX90A-NEXT:    v_max_f64 v[2:3], v[4:5], v[4:5]4130; GFX90A-NEXT:    v_max_f64 v[2:3], v[2:3], v[6:7]4131; GFX90A-NEXT:    global_atomic_cmpswap_x2 v[2:3], v[0:1], v[2:5], off glc4132; GFX90A-NEXT:    s_waitcnt vmcnt(0)4133; GFX90A-NEXT:    buffer_wbinvl14134; GFX90A-NEXT:    v_cmp_eq_u64_e32 vcc, v[2:3], v[4:5]4135; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4136; GFX90A-NEXT:    v_pk_mov_b32 v[4:5], v[2:3], v[2:3] op_sel:[0,1]4137; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]4138; GFX90A-NEXT:    s_cbranch_execnz .LBB24_14139; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end4140; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]4141; GFX90A-NEXT:    v_mov_b32_e32 v0, v24142; GFX90A-NEXT:    v_mov_b32_e32 v1, v34143; GFX90A-NEXT:    s_setpc_b64 s[30:31]4144;4145; GFX908-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_remote_memory:4146; GFX908:       ; %bb.0:4147; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4148; GFX908-NEXT:    global_load_dwordx2 v[4:5], v[0:1], off4149; GFX908-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]4150; GFX908-NEXT:    s_mov_b64 s[4:5], 04151; GFX908-NEXT:  .LBB24_1: ; %atomicrmw.start4152; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=14153; GFX908-NEXT:    s_waitcnt vmcnt(0)4154; GFX908-NEXT:    v_mov_b32_e32 v7, v54155; GFX908-NEXT:    v_mov_b32_e32 v6, v44156; GFX908-NEXT:    v_max_f64 v[4:5], v[6:7], v[6:7]4157; GFX908-NEXT:    v_max_f64 v[4:5], v[4:5], v[2:3]4158; GFX908-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off glc4159; GFX908-NEXT:    s_waitcnt vmcnt(0)4160; GFX908-NEXT:    buffer_wbinvl14161; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4162; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4163; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]4164; GFX908-NEXT:    s_cbranch_execnz .LBB24_14165; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end4166; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]4167; GFX908-NEXT:    v_mov_b32_e32 v0, v44168; GFX908-NEXT:    v_mov_b32_e32 v1, v54169; GFX908-NEXT:    s_setpc_b64 s[30:31]4170;4171; GFX8-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_remote_memory:4172; GFX8:       ; %bb.0:4173; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4174; GFX8-NEXT:    flat_load_dwordx2 v[4:5], v[0:1]4175; GFX8-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]4176; GFX8-NEXT:    s_mov_b64 s[4:5], 04177; GFX8-NEXT:  .LBB24_1: ; %atomicrmw.start4178; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=14179; GFX8-NEXT:    s_waitcnt vmcnt(0)4180; GFX8-NEXT:    v_mov_b32_e32 v7, v54181; GFX8-NEXT:    v_mov_b32_e32 v6, v44182; GFX8-NEXT:    v_max_f64 v[4:5], v[6:7], v[6:7]4183; GFX8-NEXT:    v_max_f64 v[4:5], v[4:5], v[2:3]4184; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc4185; GFX8-NEXT:    s_waitcnt vmcnt(0)4186; GFX8-NEXT:    buffer_wbinvl14187; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4188; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4189; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]4190; GFX8-NEXT:    s_cbranch_execnz .LBB24_14191; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end4192; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]4193; GFX8-NEXT:    v_mov_b32_e32 v0, v44194; GFX8-NEXT:    v_mov_b32_e32 v1, v54195; GFX8-NEXT:    s_setpc_b64 s[30:31]4196;4197; GFX7-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_remote_memory:4198; GFX7:       ; %bb.0:4199; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4200; GFX7-NEXT:    s_mov_b32 s6, 04201; GFX7-NEXT:    v_mov_b32_e32 v5, v14202; GFX7-NEXT:    v_mov_b32_e32 v4, v04203; GFX7-NEXT:    s_mov_b32 s7, 0xf0004204; GFX7-NEXT:    s_mov_b32 s4, s64205; GFX7-NEXT:    s_mov_b32 s5, s64206; GFX7-NEXT:    buffer_load_dwordx2 v[8:9], v[4:5], s[4:7], 0 addr644207; GFX7-NEXT:    v_max_f64 v[10:11], v[2:3], v[2:3]4208; GFX7-NEXT:    s_mov_b64 s[8:9], 04209; GFX7-NEXT:  .LBB24_1: ; %atomicrmw.start4210; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=14211; GFX7-NEXT:    s_waitcnt vmcnt(0)4212; GFX7-NEXT:    v_max_f64 v[0:1], v[8:9], v[8:9]4213; GFX7-NEXT:    v_max_f64 v[6:7], v[0:1], v[10:11]4214; GFX7-NEXT:    v_mov_b32_e32 v0, v64215; GFX7-NEXT:    v_mov_b32_e32 v1, v74216; GFX7-NEXT:    v_mov_b32_e32 v2, v84217; GFX7-NEXT:    v_mov_b32_e32 v3, v94218; GFX7-NEXT:    buffer_atomic_cmpswap_x2 v[0:3], v[4:5], s[4:7], 0 addr64 glc4219; GFX7-NEXT:    s_waitcnt vmcnt(0)4220; GFX7-NEXT:    buffer_wbinvl14221; GFX7-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[8:9]4222; GFX7-NEXT:    v_mov_b32_e32 v9, v14223; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]4224; GFX7-NEXT:    v_mov_b32_e32 v8, v04225; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]4226; GFX7-NEXT:    s_cbranch_execnz .LBB24_14227; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end4228; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]4229; GFX7-NEXT:    s_setpc_b64 s[30:31]4230;4231; GFX6-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_remote_memory:4232; GFX6:       ; %bb.0:4233; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4234; GFX6-NEXT:    s_mov_b32 s6, 04235; GFX6-NEXT:    v_mov_b32_e32 v5, v14236; GFX6-NEXT:    v_mov_b32_e32 v4, v04237; GFX6-NEXT:    s_mov_b32 s7, 0xf0004238; GFX6-NEXT:    s_mov_b32 s4, s64239; GFX6-NEXT:    s_mov_b32 s5, s64240; GFX6-NEXT:    buffer_load_dwordx2 v[8:9], v[4:5], s[4:7], 0 addr644241; GFX6-NEXT:    v_max_f64 v[10:11], v[2:3], v[2:3]4242; GFX6-NEXT:    s_mov_b64 s[8:9], 04243; GFX6-NEXT:  .LBB24_1: ; %atomicrmw.start4244; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=14245; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0)4246; GFX6-NEXT:    v_max_f64 v[0:1], v[8:9], v[8:9]4247; GFX6-NEXT:    v_max_f64 v[6:7], v[0:1], v[10:11]4248; GFX6-NEXT:    v_mov_b32_e32 v0, v64249; GFX6-NEXT:    v_mov_b32_e32 v1, v74250; GFX6-NEXT:    v_mov_b32_e32 v2, v84251; GFX6-NEXT:    v_mov_b32_e32 v3, v94252; GFX6-NEXT:    buffer_atomic_cmpswap_x2 v[0:3], v[4:5], s[4:7], 0 addr64 glc4253; GFX6-NEXT:    s_waitcnt vmcnt(0)4254; GFX6-NEXT:    buffer_wbinvl14255; GFX6-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[8:9]4256; GFX6-NEXT:    v_mov_b32_e32 v9, v14257; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]4258; GFX6-NEXT:    v_mov_b32_e32 v8, v04259; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]4260; GFX6-NEXT:    s_cbranch_execnz .LBB24_14261; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end4262; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]4263; GFX6-NEXT:    s_waitcnt expcnt(0)4264; GFX6-NEXT:    s_setpc_b64 s[30:31]4265  %result = atomicrmw fmax ptr addrspace(1) %ptr, double %val syncscope("agent") seq_cst, !amdgpu.no.remote.memory !04266  ret double %result4267}4268 4269define double @global_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory(ptr addrspace(1) %ptr, double %val) #0 {4270; GFX12-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:4271; GFX12:       ; %bb.0:4272; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04273; GFX12-NEXT:    s_wait_expcnt 0x04274; GFX12-NEXT:    s_wait_samplecnt 0x04275; GFX12-NEXT:    s_wait_bvhcnt 0x04276; GFX12-NEXT:    s_wait_kmcnt 0x04277; GFX12-NEXT:    global_load_b64 v[4:5], v[0:1], off4278; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[2:3]4279; GFX12-NEXT:    s_mov_b32 s0, 04280; GFX12-NEXT:  .LBB25_1: ; %atomicrmw.start4281; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=14282; GFX12-NEXT:    s_wait_loadcnt 0x04283; GFX12-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v44284; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4285; GFX12-NEXT:    v_max_num_f64_e32 v[4:5], v[6:7], v[6:7]4286; GFX12-NEXT:    v_max_num_f64_e32 v[4:5], v[4:5], v[2:3]4287; GFX12-NEXT:    s_wait_storecnt 0x04288; GFX12-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV4289; GFX12-NEXT:    s_wait_loadcnt 0x04290; GFX12-NEXT:    global_inv scope:SCOPE_DEV4291; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4292; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4293; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s04294; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4295; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04296; GFX12-NEXT:    s_cbranch_execnz .LBB25_14297; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end4298; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s04299; GFX12-NEXT:    v_dual_mov_b32 v0, v4 :: v_dual_mov_b32 v1, v54300; GFX12-NEXT:    s_wait_loadcnt 0x04301; GFX12-NEXT:    s_setpc_b64 s[30:31]4302;4303; GFX942-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:4304; GFX942:       ; %bb.0:4305; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4306; GFX942-NEXT:    buffer_wbl2 sc14307; GFX942-NEXT:    global_atomic_max_f64 v[0:1], v[0:1], v[2:3], off sc04308; GFX942-NEXT:    s_waitcnt vmcnt(0)4309; GFX942-NEXT:    buffer_inv sc14310; GFX942-NEXT:    s_setpc_b64 s[30:31]4311;4312; GFX11-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:4313; GFX11:       ; %bb.0:4314; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4315; GFX11-NEXT:    global_load_b64 v[4:5], v[0:1], off4316; GFX11-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]4317; GFX11-NEXT:    s_mov_b32 s0, 04318; GFX11-NEXT:  .LBB25_1: ; %atomicrmw.start4319; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=14320; GFX11-NEXT:    s_waitcnt vmcnt(0)4321; GFX11-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v44322; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4323; GFX11-NEXT:    v_max_f64 v[4:5], v[6:7], v[6:7]4324; GFX11-NEXT:    v_max_f64 v[4:5], v[4:5], v[2:3]4325; GFX11-NEXT:    s_waitcnt_vscnt null, 0x04326; GFX11-NEXT:    global_atomic_cmpswap_b64 v[4:5], v[0:1], v[4:7], off glc4327; GFX11-NEXT:    s_waitcnt vmcnt(0)4328; GFX11-NEXT:    buffer_gl1_inv4329; GFX11-NEXT:    buffer_gl0_inv4330; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[4:5], v[6:7]4331; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s04332; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4333; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04334; GFX11-NEXT:    s_cbranch_execnz .LBB25_14335; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end4336; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s04337; GFX11-NEXT:    v_dual_mov_b32 v0, v4 :: v_dual_mov_b32 v1, v54338; GFX11-NEXT:    s_setpc_b64 s[30:31]4339;4340; GFX10-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:4341; GFX10:       ; %bb.0:4342; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4343; GFX10-NEXT:    s_waitcnt_vscnt null, 0x04344; GFX10-NEXT:    global_atomic_fmax_x2 v[0:1], v[0:1], v[2:3], off glc4345; GFX10-NEXT:    s_waitcnt vmcnt(0)4346; GFX10-NEXT:    buffer_gl1_inv4347; GFX10-NEXT:    buffer_gl0_inv4348; GFX10-NEXT:    s_setpc_b64 s[30:31]4349;4350; GFX90A-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:4351; GFX90A:       ; %bb.0:4352; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4353; GFX90A-NEXT:    global_atomic_max_f64 v[0:1], v[0:1], v[2:3], off glc4354; GFX90A-NEXT:    s_waitcnt vmcnt(0)4355; GFX90A-NEXT:    buffer_wbinvl14356; GFX90A-NEXT:    s_setpc_b64 s[30:31]4357;4358; GFX908-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:4359; GFX908:       ; %bb.0:4360; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4361; GFX908-NEXT:    global_load_dwordx2 v[4:5], v[0:1], off4362; GFX908-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]4363; GFX908-NEXT:    s_mov_b64 s[4:5], 04364; GFX908-NEXT:  .LBB25_1: ; %atomicrmw.start4365; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=14366; GFX908-NEXT:    s_waitcnt vmcnt(0)4367; GFX908-NEXT:    v_mov_b32_e32 v7, v54368; GFX908-NEXT:    v_mov_b32_e32 v6, v44369; GFX908-NEXT:    v_max_f64 v[4:5], v[6:7], v[6:7]4370; GFX908-NEXT:    v_max_f64 v[4:5], v[4:5], v[2:3]4371; GFX908-NEXT:    global_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7], off glc4372; GFX908-NEXT:    s_waitcnt vmcnt(0)4373; GFX908-NEXT:    buffer_wbinvl14374; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4375; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4376; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]4377; GFX908-NEXT:    s_cbranch_execnz .LBB25_14378; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end4379; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]4380; GFX908-NEXT:    v_mov_b32_e32 v0, v44381; GFX908-NEXT:    v_mov_b32_e32 v1, v54382; GFX908-NEXT:    s_setpc_b64 s[30:31]4383;4384; GFX8-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:4385; GFX8:       ; %bb.0:4386; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4387; GFX8-NEXT:    flat_load_dwordx2 v[4:5], v[0:1]4388; GFX8-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]4389; GFX8-NEXT:    s_mov_b64 s[4:5], 04390; GFX8-NEXT:  .LBB25_1: ; %atomicrmw.start4391; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=14392; GFX8-NEXT:    s_waitcnt vmcnt(0)4393; GFX8-NEXT:    v_mov_b32_e32 v7, v54394; GFX8-NEXT:    v_mov_b32_e32 v6, v44395; GFX8-NEXT:    v_max_f64 v[4:5], v[6:7], v[6:7]4396; GFX8-NEXT:    v_max_f64 v[4:5], v[4:5], v[2:3]4397; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[4:5], v[0:1], v[4:7] glc4398; GFX8-NEXT:    s_waitcnt vmcnt(0)4399; GFX8-NEXT:    buffer_wbinvl14400; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[4:5], v[6:7]4401; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4402; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]4403; GFX8-NEXT:    s_cbranch_execnz .LBB25_14404; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end4405; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]4406; GFX8-NEXT:    v_mov_b32_e32 v0, v44407; GFX8-NEXT:    v_mov_b32_e32 v1, v54408; GFX8-NEXT:    s_setpc_b64 s[30:31]4409;4410; GFX7-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:4411; GFX7:       ; %bb.0:4412; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4413; GFX7-NEXT:    s_mov_b32 s6, 04414; GFX7-NEXT:    s_mov_b32 s7, 0xf0004415; GFX7-NEXT:    s_mov_b32 s4, s64416; GFX7-NEXT:    s_mov_b32 s5, s64417; GFX7-NEXT:    buffer_atomic_fmax_x2 v[2:3], v[0:1], s[4:7], 0 addr64 glc4418; GFX7-NEXT:    s_waitcnt vmcnt(0)4419; GFX7-NEXT:    buffer_wbinvl14420; GFX7-NEXT:    v_mov_b32_e32 v0, v24421; GFX7-NEXT:    v_mov_b32_e32 v1, v34422; GFX7-NEXT:    s_setpc_b64 s[30:31]4423;4424; GFX6-LABEL: global_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:4425; GFX6:       ; %bb.0:4426; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4427; GFX6-NEXT:    s_mov_b32 s6, 04428; GFX6-NEXT:    s_mov_b32 s7, 0xf0004429; GFX6-NEXT:    s_mov_b32 s4, s64430; GFX6-NEXT:    s_mov_b32 s5, s64431; GFX6-NEXT:    buffer_atomic_fmax_x2 v[2:3], v[0:1], s[4:7], 0 addr64 glc4432; GFX6-NEXT:    s_waitcnt vmcnt(0)4433; GFX6-NEXT:    buffer_wbinvl14434; GFX6-NEXT:    v_mov_b32_e32 v0, v24435; GFX6-NEXT:    v_mov_b32_e32 v1, v34436; GFX6-NEXT:    s_waitcnt expcnt(0)4437; GFX6-NEXT:    s_setpc_b64 s[30:31]4438  %result = atomicrmw fmax ptr addrspace(1) %ptr, double %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0, !amdgpu.no.remote.memory !04439  ret double %result4440}4441 4442; --------------------------------------------------------------------4443; half4444; --------------------------------------------------------------------4445 4446define half @global_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, half %val) #0 {4447; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory:4448; GFX12-TRUE16:       ; %bb.0:4449; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x04450; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x04451; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x04452; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x04453; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x04454; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v04455; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v2.l, v2.l, v2.l4456; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 04457; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_1)4458; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v34459; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v34460; GFX12-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off4461; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v34462; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff4463; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4464; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v44465; GFX12-TRUE16-NEXT:  .LBB26_1: ; %atomicrmw.start4466; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=14467; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x04468; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v54469; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)4470; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v64471; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 04472; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v2.h, v5.l, v5.l4473; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4474; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v5.l, v2.h, v2.l4475; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v54476; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4477; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v54478; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x04479; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV4480; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x04481; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV4482; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v64483; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4484; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s04485; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4486; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04487; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB26_14488; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end4489; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04490; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v54491; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x04492; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]4493;4494; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory:4495; GFX12-FAKE16:       ; %bb.0:4496; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x04497; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x04498; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x04499; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x04500; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x04501; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v04502; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v24503; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 04504; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_1)4505; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v34506; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v34507; GFX12-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off4508; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v34509; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff4510; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4511; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v44512; GFX12-FAKE16-NEXT:  .LBB26_1: ; %atomicrmw.start4513; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=14514; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x04515; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v54516; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4517; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v64518; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v5, v5, v54519; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4520; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v5, v5, v24521; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v54522; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4523; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v54524; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v54525; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x04526; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV4527; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x04528; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV4529; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v64530; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4531; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s04532; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4533; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04534; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB26_14535; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end4536; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04537; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v54538; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x04539; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]4540;4541; GFX942-LABEL: global_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory:4542; GFX942:       ; %bb.0:4543; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4544; GFX942-NEXT:    v_mov_b32_e32 v3, v04545; GFX942-NEXT:    v_and_b32_e32 v0, -4, v34546; GFX942-NEXT:    global_load_dword v5, v[0:1], off4547; GFX942-NEXT:    v_and_b32_e32 v3, 3, v34548; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v34549; GFX942-NEXT:    s_mov_b32 s0, 0xffff4550; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s04551; GFX942-NEXT:    v_not_b32_e32 v6, v44552; GFX942-NEXT:    s_mov_b64 s[0:1], 04553; GFX942-NEXT:    v_max_f16_e32 v2, v2, v24554; GFX942-NEXT:  .LBB26_1: ; %atomicrmw.start4555; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=14556; GFX942-NEXT:    s_waitcnt vmcnt(0)4557; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v3, v54558; GFX942-NEXT:    v_max_f16_e32 v4, v4, v44559; GFX942-NEXT:    v_max_f16_e32 v4, v4, v24560; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v3, v44561; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v44562; GFX942-NEXT:    buffer_wbl2 sc14563; GFX942-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off sc04564; GFX942-NEXT:    s_waitcnt vmcnt(0)4565; GFX942-NEXT:    buffer_inv sc14566; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v54567; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]4568; GFX942-NEXT:    v_mov_b32_e32 v5, v44569; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]4570; GFX942-NEXT:    s_cbranch_execnz .LBB26_14571; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end4572; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]4573; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v3, v44574; GFX942-NEXT:    s_setpc_b64 s[30:31]4575;4576; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory:4577; GFX11-TRUE16:       ; %bb.0:4578; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4579; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v04580; GFX11-TRUE16-NEXT:    v_max_f16_e32 v2.l, v2.l, v2.l4581; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 04582; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_1)4583; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v34584; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v34585; GFX11-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off4586; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v34587; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff4588; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4589; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v44590; GFX11-TRUE16-NEXT:  .LBB26_1: ; %atomicrmw.start4591; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=14592; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)4593; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v54594; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)4595; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v64596; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 04597; GFX11-TRUE16-NEXT:    v_max_f16_e32 v2.h, v5.l, v5.l4598; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4599; GFX11-TRUE16-NEXT:    v_max_f16_e32 v5.l, v2.h, v2.l4600; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v54601; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4602; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v54603; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x04604; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc4605; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)4606; GFX11-TRUE16-NEXT:    buffer_gl1_inv4607; GFX11-TRUE16-NEXT:    buffer_gl0_inv4608; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v64609; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s04610; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4611; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04612; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB26_14613; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end4614; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04615; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v54616; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]4617;4618; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory:4619; GFX11-FAKE16:       ; %bb.0:4620; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4621; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v04622; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v24623; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 04624; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_1)4625; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v34626; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v34627; GFX11-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off4628; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v34629; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff4630; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4631; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v44632; GFX11-FAKE16-NEXT:  .LBB26_1: ; %atomicrmw.start4633; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=14634; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)4635; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v54636; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4637; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v64638; GFX11-FAKE16-NEXT:    v_max_f16_e32 v5, v5, v54639; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4640; GFX11-FAKE16-NEXT:    v_max_f16_e32 v5, v5, v24641; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v54642; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4643; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v54644; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v54645; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x04646; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc4647; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)4648; GFX11-FAKE16-NEXT:    buffer_gl1_inv4649; GFX11-FAKE16-NEXT:    buffer_gl0_inv4650; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v64651; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s04652; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4653; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04654; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB26_14655; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end4656; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04657; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v54658; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]4659;4660; GFX10-LABEL: global_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory:4661; GFX10:       ; %bb.0:4662; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4663; GFX10-NEXT:    v_mov_b32_e32 v3, v04664; GFX10-NEXT:    v_max_f16_e32 v2, v2, v24665; GFX10-NEXT:    s_mov_b32 s4, 04666; GFX10-NEXT:    v_and_b32_e32 v0, -4, v34667; GFX10-NEXT:    v_and_b32_e32 v3, 3, v34668; GFX10-NEXT:    global_load_dword v5, v[0:1], off4669; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v34670; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff4671; GFX10-NEXT:    v_not_b32_e32 v4, v44672; GFX10-NEXT:  .LBB26_1: ; %atomicrmw.start4673; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=14674; GFX10-NEXT:    s_waitcnt vmcnt(0)4675; GFX10-NEXT:    v_mov_b32_e32 v6, v54676; GFX10-NEXT:    v_lshrrev_b32_e32 v5, v3, v64677; GFX10-NEXT:    v_max_f16_e32 v5, v5, v54678; GFX10-NEXT:    v_max_f16_e32 v5, v5, v24679; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_04680; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v54681; GFX10-NEXT:    s_waitcnt_vscnt null, 0x04682; GFX10-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc4683; GFX10-NEXT:    s_waitcnt vmcnt(0)4684; GFX10-NEXT:    buffer_gl1_inv4685; GFX10-NEXT:    buffer_gl0_inv4686; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v64687; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s44688; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s44689; GFX10-NEXT:    s_cbranch_execnz .LBB26_14690; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end4691; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s44692; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v54693; GFX10-NEXT:    s_setpc_b64 s[30:31]4694;4695; GFX90A-LABEL: global_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory:4696; GFX90A:       ; %bb.0:4697; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4698; GFX90A-NEXT:    v_mov_b32_e32 v3, v04699; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v34700; GFX90A-NEXT:    global_load_dword v5, v[0:1], off4701; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v34702; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v34703; GFX90A-NEXT:    s_mov_b32 s4, 0xffff4704; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s44705; GFX90A-NEXT:    v_not_b32_e32 v6, v44706; GFX90A-NEXT:    s_mov_b64 s[4:5], 04707; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v24708; GFX90A-NEXT:  .LBB26_1: ; %atomicrmw.start4709; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=14710; GFX90A-NEXT:    s_waitcnt vmcnt(0)4711; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v3, v54712; GFX90A-NEXT:    v_max_f16_e32 v4, v4, v44713; GFX90A-NEXT:    v_max_f16_e32 v4, v4, v24714; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v3, v44715; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v44716; GFX90A-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off glc4717; GFX90A-NEXT:    s_waitcnt vmcnt(0)4718; GFX90A-NEXT:    buffer_wbinvl14719; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v54720; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4721; GFX90A-NEXT:    v_mov_b32_e32 v5, v44722; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]4723; GFX90A-NEXT:    s_cbranch_execnz .LBB26_14724; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end4725; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]4726; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v3, v44727; GFX90A-NEXT:    s_setpc_b64 s[30:31]4728;4729; GFX908-LABEL: global_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory:4730; GFX908:       ; %bb.0:4731; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4732; GFX908-NEXT:    v_mov_b32_e32 v3, v04733; GFX908-NEXT:    v_and_b32_e32 v0, -4, v34734; GFX908-NEXT:    global_load_dword v5, v[0:1], off4735; GFX908-NEXT:    v_and_b32_e32 v3, 3, v34736; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v34737; GFX908-NEXT:    s_mov_b32 s4, 0xffff4738; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s44739; GFX908-NEXT:    v_not_b32_e32 v4, v44740; GFX908-NEXT:    s_mov_b64 s[4:5], 04741; GFX908-NEXT:    v_max_f16_e32 v2, v2, v24742; GFX908-NEXT:  .LBB26_1: ; %atomicrmw.start4743; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=14744; GFX908-NEXT:    s_waitcnt vmcnt(0)4745; GFX908-NEXT:    v_mov_b32_e32 v6, v54746; GFX908-NEXT:    v_lshrrev_b32_e32 v5, v3, v64747; GFX908-NEXT:    v_max_f16_e32 v5, v5, v54748; GFX908-NEXT:    v_max_f16_e32 v5, v5, v24749; GFX908-NEXT:    v_lshlrev_b32_e32 v5, v3, v54750; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v54751; GFX908-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc4752; GFX908-NEXT:    s_waitcnt vmcnt(0)4753; GFX908-NEXT:    buffer_wbinvl14754; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v64755; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4756; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]4757; GFX908-NEXT:    s_cbranch_execnz .LBB26_14758; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end4759; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]4760; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v54761; GFX908-NEXT:    s_setpc_b64 s[30:31]4762;4763; GFX8-LABEL: global_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory:4764; GFX8:       ; %bb.0:4765; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4766; GFX8-NEXT:    v_mov_b32_e32 v3, v04767; GFX8-NEXT:    v_and_b32_e32 v0, -4, v34768; GFX8-NEXT:    flat_load_dword v5, v[0:1]4769; GFX8-NEXT:    v_and_b32_e32 v3, 3, v34770; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v34771; GFX8-NEXT:    s_mov_b32 s4, 0xffff4772; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s44773; GFX8-NEXT:    v_not_b32_e32 v4, v44774; GFX8-NEXT:    s_mov_b64 s[4:5], 04775; GFX8-NEXT:    v_max_f16_e32 v2, v2, v24776; GFX8-NEXT:  .LBB26_1: ; %atomicrmw.start4777; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=14778; GFX8-NEXT:    s_waitcnt vmcnt(0)4779; GFX8-NEXT:    v_mov_b32_e32 v6, v54780; GFX8-NEXT:    v_lshrrev_b32_e32 v5, v3, v64781; GFX8-NEXT:    v_max_f16_e32 v5, v5, v54782; GFX8-NEXT:    v_max_f16_e32 v5, v5, v24783; GFX8-NEXT:    v_and_b32_e32 v7, v6, v44784; GFX8-NEXT:    v_lshlrev_b32_e32 v5, v3, v54785; GFX8-NEXT:    v_or_b32_e32 v5, v7, v54786; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc4787; GFX8-NEXT:    s_waitcnt vmcnt(0)4788; GFX8-NEXT:    buffer_wbinvl14789; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v64790; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4791; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]4792; GFX8-NEXT:    s_cbranch_execnz .LBB26_14793; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end4794; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]4795; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v54796; GFX8-NEXT:    s_setpc_b64 s[30:31]4797;4798; GFX7-LABEL: global_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory:4799; GFX7:       ; %bb.0:4800; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4801; GFX7-NEXT:    v_mov_b32_e32 v3, v04802; GFX7-NEXT:    s_mov_b32 s6, 04803; GFX7-NEXT:    v_and_b32_e32 v0, -4, v34804; GFX7-NEXT:    s_mov_b32 s7, 0xf0004805; GFX7-NEXT:    s_mov_b32 s4, s64806; GFX7-NEXT:    s_mov_b32 s5, s64807; GFX7-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr644808; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v24809; GFX7-NEXT:    v_and_b32_e32 v3, 3, v34810; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 3, v34811; GFX7-NEXT:    s_mov_b64 s[8:9], 04812; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v24813; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v54814; GFX7-NEXT:    v_not_b32_e32 v7, v24815; GFX7-NEXT:  .LBB26_1: ; %atomicrmw.start4816; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=14817; GFX7-NEXT:    s_waitcnt vmcnt(0)4818; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v5, v44819; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v24820; GFX7-NEXT:    v_and_b32_e32 v3, v4, v74821; GFX7-NEXT:    v_max_f32_e32 v2, v2, v64822; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v24823; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v5, v24824; GFX7-NEXT:    v_or_b32_e32 v3, v3, v24825; GFX7-NEXT:    v_mov_b32_e32 v2, v34826; GFX7-NEXT:    v_mov_b32_e32 v3, v44827; GFX7-NEXT:    buffer_atomic_cmpswap v[2:3], v[0:1], s[4:7], 0 addr64 glc4828; GFX7-NEXT:    s_waitcnt vmcnt(0)4829; GFX7-NEXT:    buffer_wbinvl14830; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v44831; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]4832; GFX7-NEXT:    v_mov_b32_e32 v4, v24833; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]4834; GFX7-NEXT:    s_cbranch_execnz .LBB26_14835; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end4836; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]4837; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v5, v24838; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v04839; GFX7-NEXT:    s_setpc_b64 s[30:31]4840;4841; GFX6-LABEL: global_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory:4842; GFX6:       ; %bb.0:4843; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4844; GFX6-NEXT:    v_mov_b32_e32 v3, v04845; GFX6-NEXT:    s_mov_b32 s6, 04846; GFX6-NEXT:    v_and_b32_e32 v0, -4, v34847; GFX6-NEXT:    s_mov_b32 s7, 0xf0004848; GFX6-NEXT:    s_mov_b32 s4, s64849; GFX6-NEXT:    s_mov_b32 s5, s64850; GFX6-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr644851; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v24852; GFX6-NEXT:    v_and_b32_e32 v3, 3, v34853; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 3, v34854; GFX6-NEXT:    s_mov_b64 s[8:9], 04855; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v24856; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v54857; GFX6-NEXT:    v_not_b32_e32 v7, v24858; GFX6-NEXT:  .LBB26_1: ; %atomicrmw.start4859; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=14860; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0)4861; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v5, v44862; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v24863; GFX6-NEXT:    v_and_b32_e32 v3, v4, v74864; GFX6-NEXT:    v_max_f32_e32 v2, v2, v64865; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v24866; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v5, v24867; GFX6-NEXT:    v_or_b32_e32 v3, v3, v24868; GFX6-NEXT:    v_mov_b32_e32 v2, v34869; GFX6-NEXT:    v_mov_b32_e32 v3, v44870; GFX6-NEXT:    buffer_atomic_cmpswap v[2:3], v[0:1], s[4:7], 0 addr64 glc4871; GFX6-NEXT:    s_waitcnt vmcnt(0)4872; GFX6-NEXT:    buffer_wbinvl14873; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v44874; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]4875; GFX6-NEXT:    v_mov_b32_e32 v4, v24876; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]4877; GFX6-NEXT:    s_cbranch_execnz .LBB26_14878; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end4879; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]4880; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v5, v24881; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v04882; GFX6-NEXT:    s_waitcnt expcnt(0)4883; GFX6-NEXT:    s_setpc_b64 s[30:31]4884  %result = atomicrmw fmax ptr addrspace(1) %ptr, half %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !04885  ret half %result4886}4887 4888define half @global_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, half %val) #0 {4889; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:4890; GFX12-TRUE16:       ; %bb.0:4891; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x04892; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x04893; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x04894; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x04895; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x04896; GFX12-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fe, v04897; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)4898; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, 0, v1, vcc_lo4899; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 04900; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v04901; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v04902; GFX12-TRUE16-NEXT:    global_load_b32 v5, v[3:4], off4903; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v04904; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l4905; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)4906; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v6, v1, 0xffff4907; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l4908; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)4909; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v64910; GFX12-TRUE16-NEXT:  .LBB27_1: ; %atomicrmw.start4911; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=14912; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x04913; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v54914; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)4915; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v64916; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 04917; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.h, v5.l, v5.l4918; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4919; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v5.l, v0.h, v0.l4920; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v54921; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4922; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v54923; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x04924; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[3:4], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV4925; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x04926; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV4927; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v64928; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4929; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s04930; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4931; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04932; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB27_14933; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end4934; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04935; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v54936; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x04937; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]4938;4939; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:4940; GFX12-FAKE16:       ; %bb.0:4941; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x04942; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x04943; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x04944; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x04945; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x04946; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v04947; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)4948; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo4949; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v24950; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)4951; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v34952; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v34953; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 04954; GFX12-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off4955; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v34956; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff4957; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4958; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v44959; GFX12-FAKE16-NEXT:  .LBB27_1: ; %atomicrmw.start4960; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=14961; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x04962; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v54963; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4964; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v64965; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v5, v5, v54966; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4967; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v5, v5, v24968; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v54969; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4970; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v54971; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v54972; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x04973; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV4974; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x04975; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV4976; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v64977; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4978; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s04979; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4980; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04981; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB27_14982; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end4983; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04984; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v54985; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x04986; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]4987;4988; GFX942-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:4989; GFX942:       ; %bb.0:4990; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4991; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe4992; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]4993; GFX942-NEXT:    v_and_b32_e32 v0, -4, v44994; GFX942-NEXT:    v_mov_b32_e32 v1, v54995; GFX942-NEXT:    global_load_dword v3, v[0:1], off4996; GFX942-NEXT:    v_and_b32_e32 v4, 3, v44997; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v44998; GFX942-NEXT:    s_mov_b32 s0, 0xffff4999; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s05000; GFX942-NEXT:    v_not_b32_e32 v5, v55001; GFX942-NEXT:    s_mov_b64 s[0:1], 05002; GFX942-NEXT:    v_max_f16_e32 v6, v2, v25003; GFX942-NEXT:  .LBB27_1: ; %atomicrmw.start5004; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=15005; GFX942-NEXT:    s_waitcnt vmcnt(0)5006; GFX942-NEXT:    v_lshrrev_b32_e32 v2, v4, v35007; GFX942-NEXT:    v_max_f16_e32 v2, v2, v25008; GFX942-NEXT:    v_max_f16_e32 v2, v2, v65009; GFX942-NEXT:    v_lshlrev_b32_e32 v2, v4, v25010; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v25011; GFX942-NEXT:    buffer_wbl2 sc15012; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc05013; GFX942-NEXT:    s_waitcnt vmcnt(0)5014; GFX942-NEXT:    buffer_inv sc15015; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v35016; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]5017; GFX942-NEXT:    v_mov_b32_e32 v3, v25018; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]5019; GFX942-NEXT:    s_cbranch_execnz .LBB27_15020; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end5021; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]5022; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v4, v25023; GFX942-NEXT:    s_setpc_b64 s[30:31]5024;5025; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:5026; GFX11-TRUE16:       ; %bb.0:5027; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5028; GFX11-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fe, v05029; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5030; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, 0, v1, vcc_lo5031; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 05032; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v05033; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v05034; GFX11-TRUE16-NEXT:    global_load_b32 v5, v[3:4], off5035; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v05036; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l5037; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)5038; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v6, v1, 0xffff5039; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l5040; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)5041; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v65042; GFX11-TRUE16-NEXT:  .LBB27_1: ; %atomicrmw.start5043; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=15044; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)5045; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v55046; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)5047; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v65048; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 05049; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.h, v5.l, v5.l5050; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5051; GFX11-TRUE16-NEXT:    v_max_f16_e32 v5.l, v0.h, v0.l5052; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v55053; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5054; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v55055; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x05056; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[3:4], v[5:6], off glc5057; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)5058; GFX11-TRUE16-NEXT:    buffer_gl1_inv5059; GFX11-TRUE16-NEXT:    buffer_gl0_inv5060; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v65061; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s05062; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5063; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05064; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB27_15065; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end5066; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05067; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v55068; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]5069;5070; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:5071; GFX11-FAKE16:       ; %bb.0:5072; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5073; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v05074; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)5075; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo5076; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v25077; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v35078; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v35079; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 05080; GFX11-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off5081; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v35082; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5083; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff5084; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v45085; GFX11-FAKE16-NEXT:  .LBB27_1: ; %atomicrmw.start5086; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=15087; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)5088; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v55089; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5090; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v65091; GFX11-FAKE16-NEXT:    v_max_f16_e32 v5, v5, v55092; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5093; GFX11-FAKE16-NEXT:    v_max_f16_e32 v5, v5, v25094; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v55095; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5096; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v55097; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v55098; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x05099; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc5100; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)5101; GFX11-FAKE16-NEXT:    buffer_gl1_inv5102; GFX11-FAKE16-NEXT:    buffer_gl0_inv5103; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v65104; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s05105; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5106; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05107; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB27_15108; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end5109; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05110; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v55111; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]5112;5113; GFX10-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:5114; GFX10:       ; %bb.0:5115; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5116; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v05117; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo5118; GFX10-NEXT:    v_max_f16_e32 v2, v2, v25119; GFX10-NEXT:    v_and_b32_e32 v0, -4, v35120; GFX10-NEXT:    v_and_b32_e32 v3, 3, v35121; GFX10-NEXT:    s_mov_b32 s4, 05122; GFX10-NEXT:    global_load_dword v5, v[0:1], off5123; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v35124; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff5125; GFX10-NEXT:    v_not_b32_e32 v4, v45126; GFX10-NEXT:  .LBB27_1: ; %atomicrmw.start5127; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=15128; GFX10-NEXT:    s_waitcnt vmcnt(0)5129; GFX10-NEXT:    v_mov_b32_e32 v6, v55130; GFX10-NEXT:    v_lshrrev_b32_e32 v5, v3, v65131; GFX10-NEXT:    v_max_f16_e32 v5, v5, v55132; GFX10-NEXT:    v_max_f16_e32 v5, v5, v25133; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_05134; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v55135; GFX10-NEXT:    s_waitcnt_vscnt null, 0x05136; GFX10-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc5137; GFX10-NEXT:    s_waitcnt vmcnt(0)5138; GFX10-NEXT:    buffer_gl1_inv5139; GFX10-NEXT:    buffer_gl0_inv5140; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v65141; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s45142; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s45143; GFX10-NEXT:    s_cbranch_execnz .LBB27_15144; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end5145; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s45146; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v55147; GFX10-NEXT:    s_setpc_b64 s[30:31]5148;5149; GFX90A-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:5150; GFX90A:       ; %bb.0:5151; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5152; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v05153; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc5154; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v45155; GFX90A-NEXT:    global_load_dword v3, v[0:1], off5156; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v45157; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v45158; GFX90A-NEXT:    s_mov_b32 s4, 0xffff5159; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s45160; GFX90A-NEXT:    v_not_b32_e32 v5, v55161; GFX90A-NEXT:    s_mov_b64 s[4:5], 05162; GFX90A-NEXT:    v_max_f16_e32 v6, v2, v25163; GFX90A-NEXT:  .LBB27_1: ; %atomicrmw.start5164; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=15165; GFX90A-NEXT:    s_waitcnt vmcnt(0)5166; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, v4, v35167; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v25168; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v65169; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, v4, v25170; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v25171; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc5172; GFX90A-NEXT:    s_waitcnt vmcnt(0)5173; GFX90A-NEXT:    buffer_wbinvl15174; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v35175; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5176; GFX90A-NEXT:    v_mov_b32_e32 v3, v25177; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]5178; GFX90A-NEXT:    s_cbranch_execnz .LBB27_15179; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end5180; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]5181; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v4, v25182; GFX90A-NEXT:    s_setpc_b64 s[30:31]5183;5184; GFX908-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:5185; GFX908:       ; %bb.0:5186; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5187; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v05188; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc5189; GFX908-NEXT:    v_and_b32_e32 v0, -4, v35190; GFX908-NEXT:    global_load_dword v5, v[0:1], off5191; GFX908-NEXT:    v_and_b32_e32 v3, 3, v35192; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v35193; GFX908-NEXT:    s_mov_b32 s4, 0xffff5194; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s45195; GFX908-NEXT:    v_not_b32_e32 v4, v45196; GFX908-NEXT:    s_mov_b64 s[4:5], 05197; GFX908-NEXT:    v_max_f16_e32 v2, v2, v25198; GFX908-NEXT:  .LBB27_1: ; %atomicrmw.start5199; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=15200; GFX908-NEXT:    s_waitcnt vmcnt(0)5201; GFX908-NEXT:    v_mov_b32_e32 v6, v55202; GFX908-NEXT:    v_lshrrev_b32_e32 v5, v3, v65203; GFX908-NEXT:    v_max_f16_e32 v5, v5, v55204; GFX908-NEXT:    v_max_f16_e32 v5, v5, v25205; GFX908-NEXT:    v_lshlrev_b32_e32 v5, v3, v55206; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v55207; GFX908-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc5208; GFX908-NEXT:    s_waitcnt vmcnt(0)5209; GFX908-NEXT:    buffer_wbinvl15210; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v65211; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5212; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]5213; GFX908-NEXT:    s_cbranch_execnz .LBB27_15214; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end5215; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]5216; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v55217; GFX908-NEXT:    s_setpc_b64 s[30:31]5218;5219; GFX8-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:5220; GFX8:       ; %bb.0:5221; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5222; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v05223; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc5224; GFX8-NEXT:    v_and_b32_e32 v0, -4, v35225; GFX8-NEXT:    flat_load_dword v5, v[0:1]5226; GFX8-NEXT:    v_and_b32_e32 v3, 3, v35227; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v35228; GFX8-NEXT:    s_mov_b32 s4, 0xffff5229; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s45230; GFX8-NEXT:    v_not_b32_e32 v4, v45231; GFX8-NEXT:    s_mov_b64 s[4:5], 05232; GFX8-NEXT:    v_max_f16_e32 v2, v2, v25233; GFX8-NEXT:  .LBB27_1: ; %atomicrmw.start5234; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=15235; GFX8-NEXT:    s_waitcnt vmcnt(0)5236; GFX8-NEXT:    v_mov_b32_e32 v6, v55237; GFX8-NEXT:    v_lshrrev_b32_e32 v5, v3, v65238; GFX8-NEXT:    v_max_f16_e32 v5, v5, v55239; GFX8-NEXT:    v_max_f16_e32 v5, v5, v25240; GFX8-NEXT:    v_and_b32_e32 v7, v6, v45241; GFX8-NEXT:    v_lshlrev_b32_e32 v5, v3, v55242; GFX8-NEXT:    v_or_b32_e32 v5, v7, v55243; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc5244; GFX8-NEXT:    s_waitcnt vmcnt(0)5245; GFX8-NEXT:    buffer_wbinvl15246; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v65247; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5248; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]5249; GFX8-NEXT:    s_cbranch_execnz .LBB27_15250; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end5251; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]5252; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v55253; GFX8-NEXT:    s_setpc_b64 s[30:31]5254;5255; GFX7-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:5256; GFX7:       ; %bb.0:5257; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5258; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v05259; GFX7-NEXT:    s_mov_b32 s6, 05260; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc5261; GFX7-NEXT:    v_and_b32_e32 v0, -4, v45262; GFX7-NEXT:    s_mov_b32 s7, 0xf0005263; GFX7-NEXT:    s_mov_b32 s4, s65264; GFX7-NEXT:    s_mov_b32 s5, s65265; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr645266; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v25267; GFX7-NEXT:    v_and_b32_e32 v4, 3, v45268; GFX7-NEXT:    v_lshlrev_b32_e32 v6, 3, v45269; GFX7-NEXT:    s_mov_b64 s[8:9], 05270; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v25271; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v65272; GFX7-NEXT:    v_not_b32_e32 v8, v25273; GFX7-NEXT:  .LBB27_1: ; %atomicrmw.start5274; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=15275; GFX7-NEXT:    s_waitcnt vmcnt(0)5276; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v6, v35277; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v25278; GFX7-NEXT:    v_and_b32_e32 v4, v3, v85279; GFX7-NEXT:    v_max_f32_e32 v2, v2, v75280; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v25281; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v6, v25282; GFX7-NEXT:    v_or_b32_e32 v2, v4, v25283; GFX7-NEXT:    v_mov_b32_e32 v5, v35284; GFX7-NEXT:    v_mov_b32_e32 v4, v25285; GFX7-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc5286; GFX7-NEXT:    s_waitcnt vmcnt(0)5287; GFX7-NEXT:    buffer_wbinvl15288; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v35289; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]5290; GFX7-NEXT:    v_mov_b32_e32 v3, v45291; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]5292; GFX7-NEXT:    s_cbranch_execnz .LBB27_15293; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end5294; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]5295; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v6, v45296; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v05297; GFX7-NEXT:    s_setpc_b64 s[30:31]5298;5299; GFX6-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:5300; GFX6:       ; %bb.0:5301; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5302; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v05303; GFX6-NEXT:    s_mov_b32 s6, 05304; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc5305; GFX6-NEXT:    v_and_b32_e32 v0, -4, v45306; GFX6-NEXT:    s_mov_b32 s7, 0xf0005307; GFX6-NEXT:    s_mov_b32 s4, s65308; GFX6-NEXT:    s_mov_b32 s5, s65309; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr645310; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v25311; GFX6-NEXT:    v_and_b32_e32 v4, 3, v45312; GFX6-NEXT:    v_lshlrev_b32_e32 v6, 3, v45313; GFX6-NEXT:    s_mov_b64 s[8:9], 05314; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v25315; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v65316; GFX6-NEXT:    v_not_b32_e32 v8, v25317; GFX6-NEXT:  .LBB27_1: ; %atomicrmw.start5318; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=15319; GFX6-NEXT:    s_waitcnt vmcnt(0)5320; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v6, v35321; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v25322; GFX6-NEXT:    s_waitcnt expcnt(0)5323; GFX6-NEXT:    v_and_b32_e32 v4, v3, v85324; GFX6-NEXT:    v_max_f32_e32 v2, v2, v75325; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v25326; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v6, v25327; GFX6-NEXT:    v_or_b32_e32 v2, v4, v25328; GFX6-NEXT:    v_mov_b32_e32 v5, v35329; GFX6-NEXT:    v_mov_b32_e32 v4, v25330; GFX6-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc5331; GFX6-NEXT:    s_waitcnt vmcnt(0)5332; GFX6-NEXT:    buffer_wbinvl15333; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v35334; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]5335; GFX6-NEXT:    v_mov_b32_e32 v3, v45336; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]5337; GFX6-NEXT:    s_cbranch_execnz .LBB27_15338; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end5339; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]5340; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v6, v45341; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v05342; GFX6-NEXT:    s_waitcnt expcnt(0)5343; GFX6-NEXT:    s_setpc_b64 s[30:31]5344  %gep = getelementptr half, ptr addrspace(1) %ptr, i64 10235345  %result = atomicrmw fmax ptr addrspace(1) %gep, half %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !05346  ret half %result5347}5348 5349define half @global_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, half %val) #0 {5350; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:5351; GFX12-TRUE16:       ; %bb.0:5352; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x05353; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x05354; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x05355; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x05356; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x05357; GFX12-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v05358; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)5359; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, -1, v1, vcc_lo5360; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 05361; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v05362; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v05363; GFX12-TRUE16-NEXT:    global_load_b32 v5, v[3:4], off5364; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v05365; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l5366; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)5367; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v6, v1, 0xffff5368; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l5369; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)5370; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v65371; GFX12-TRUE16-NEXT:  .LBB28_1: ; %atomicrmw.start5372; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=15373; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x05374; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v55375; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)5376; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v65377; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 05378; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.h, v5.l, v5.l5379; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5380; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v5.l, v0.h, v0.l5381; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v55382; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5383; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v55384; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x05385; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[3:4], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV5386; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x05387; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV5388; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v65389; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5390; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s05391; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5392; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05393; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB28_15394; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end5395; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05396; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v55397; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x05398; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]5399;5400; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:5401; GFX12-FAKE16:       ; %bb.0:5402; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x05403; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x05404; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x05405; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x05406; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x05407; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v05408; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)5409; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo5410; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v25411; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)5412; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v35413; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v35414; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 05415; GFX12-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off5416; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v35417; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff5418; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5419; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v45420; GFX12-FAKE16-NEXT:  .LBB28_1: ; %atomicrmw.start5421; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=15422; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x05423; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v55424; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5425; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v65426; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v5, v5, v55427; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5428; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v5, v5, v25429; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v55430; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5431; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v55432; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v55433; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x05434; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV5435; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x05436; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV5437; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v65438; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5439; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s05440; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5441; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05442; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB28_15443; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end5444; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05445; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v55446; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x05447; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]5448;5449; GFX942-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:5450; GFX942:       ; %bb.0:5451; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5452; GFX942-NEXT:    s_movk_i32 s0, 0xf8005453; GFX942-NEXT:    s_mov_b32 s1, -15454; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]5455; GFX942-NEXT:    v_and_b32_e32 v0, -4, v45456; GFX942-NEXT:    v_mov_b32_e32 v1, v55457; GFX942-NEXT:    global_load_dword v3, v[0:1], off5458; GFX942-NEXT:    v_and_b32_e32 v4, 3, v45459; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v45460; GFX942-NEXT:    s_mov_b32 s0, 0xffff5461; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s05462; GFX942-NEXT:    v_not_b32_e32 v5, v55463; GFX942-NEXT:    s_mov_b64 s[0:1], 05464; GFX942-NEXT:    v_max_f16_e32 v6, v2, v25465; GFX942-NEXT:  .LBB28_1: ; %atomicrmw.start5466; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=15467; GFX942-NEXT:    s_waitcnt vmcnt(0)5468; GFX942-NEXT:    v_lshrrev_b32_e32 v2, v4, v35469; GFX942-NEXT:    v_max_f16_e32 v2, v2, v25470; GFX942-NEXT:    v_max_f16_e32 v2, v2, v65471; GFX942-NEXT:    v_lshlrev_b32_e32 v2, v4, v25472; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v25473; GFX942-NEXT:    buffer_wbl2 sc15474; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc05475; GFX942-NEXT:    s_waitcnt vmcnt(0)5476; GFX942-NEXT:    buffer_inv sc15477; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v35478; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]5479; GFX942-NEXT:    v_mov_b32_e32 v3, v25480; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]5481; GFX942-NEXT:    s_cbranch_execnz .LBB28_15482; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end5483; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]5484; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v4, v25485; GFX942-NEXT:    s_setpc_b64 s[30:31]5486;5487; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:5488; GFX11-TRUE16:       ; %bb.0:5489; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5490; GFX11-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v05491; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5492; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, -1, v1, vcc_lo5493; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 05494; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v05495; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v05496; GFX11-TRUE16-NEXT:    global_load_b32 v5, v[3:4], off5497; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v05498; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l5499; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)5500; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v6, v1, 0xffff5501; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l5502; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)5503; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v65504; GFX11-TRUE16-NEXT:  .LBB28_1: ; %atomicrmw.start5505; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=15506; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)5507; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v55508; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)5509; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v65510; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 05511; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.h, v5.l, v5.l5512; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5513; GFX11-TRUE16-NEXT:    v_max_f16_e32 v5.l, v0.h, v0.l5514; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v55515; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5516; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v55517; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x05518; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[3:4], v[5:6], off glc5519; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)5520; GFX11-TRUE16-NEXT:    buffer_gl1_inv5521; GFX11-TRUE16-NEXT:    buffer_gl0_inv5522; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v65523; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s05524; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5525; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05526; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB28_15527; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end5528; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05529; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v55530; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]5531;5532; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:5533; GFX11-FAKE16:       ; %bb.0:5534; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5535; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v05536; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)5537; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo5538; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v25539; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v35540; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v35541; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 05542; GFX11-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off5543; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v35544; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5545; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff5546; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v45547; GFX11-FAKE16-NEXT:  .LBB28_1: ; %atomicrmw.start5548; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=15549; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)5550; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v55551; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5552; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v65553; GFX11-FAKE16-NEXT:    v_max_f16_e32 v5, v5, v55554; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5555; GFX11-FAKE16-NEXT:    v_max_f16_e32 v5, v5, v25556; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v55557; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5558; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v55559; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v55560; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x05561; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc5562; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)5563; GFX11-FAKE16-NEXT:    buffer_gl1_inv5564; GFX11-FAKE16-NEXT:    buffer_gl0_inv5565; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v65566; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s05567; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5568; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05569; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB28_15570; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end5571; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05572; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v55573; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]5574;5575; GFX10-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:5576; GFX10:       ; %bb.0:5577; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5578; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v05579; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo5580; GFX10-NEXT:    v_max_f16_e32 v2, v2, v25581; GFX10-NEXT:    v_and_b32_e32 v0, -4, v35582; GFX10-NEXT:    v_and_b32_e32 v3, 3, v35583; GFX10-NEXT:    s_mov_b32 s4, 05584; GFX10-NEXT:    global_load_dword v5, v[0:1], off5585; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v35586; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff5587; GFX10-NEXT:    v_not_b32_e32 v4, v45588; GFX10-NEXT:  .LBB28_1: ; %atomicrmw.start5589; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=15590; GFX10-NEXT:    s_waitcnt vmcnt(0)5591; GFX10-NEXT:    v_mov_b32_e32 v6, v55592; GFX10-NEXT:    v_lshrrev_b32_e32 v5, v3, v65593; GFX10-NEXT:    v_max_f16_e32 v5, v5, v55594; GFX10-NEXT:    v_max_f16_e32 v5, v5, v25595; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_05596; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v55597; GFX10-NEXT:    s_waitcnt_vscnt null, 0x05598; GFX10-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc5599; GFX10-NEXT:    s_waitcnt vmcnt(0)5600; GFX10-NEXT:    buffer_gl1_inv5601; GFX10-NEXT:    buffer_gl0_inv5602; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v65603; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s45604; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s45605; GFX10-NEXT:    s_cbranch_execnz .LBB28_15606; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end5607; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s45608; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v55609; GFX10-NEXT:    s_setpc_b64 s[30:31]5610;5611; GFX90A-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:5612; GFX90A:       ; %bb.0:5613; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5614; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v05615; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc5616; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v45617; GFX90A-NEXT:    global_load_dword v3, v[0:1], off5618; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v45619; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v45620; GFX90A-NEXT:    s_mov_b32 s4, 0xffff5621; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s45622; GFX90A-NEXT:    v_not_b32_e32 v5, v55623; GFX90A-NEXT:    s_mov_b64 s[4:5], 05624; GFX90A-NEXT:    v_max_f16_e32 v6, v2, v25625; GFX90A-NEXT:  .LBB28_1: ; %atomicrmw.start5626; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=15627; GFX90A-NEXT:    s_waitcnt vmcnt(0)5628; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, v4, v35629; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v25630; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v65631; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, v4, v25632; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v25633; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc5634; GFX90A-NEXT:    s_waitcnt vmcnt(0)5635; GFX90A-NEXT:    buffer_wbinvl15636; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v35637; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5638; GFX90A-NEXT:    v_mov_b32_e32 v3, v25639; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]5640; GFX90A-NEXT:    s_cbranch_execnz .LBB28_15641; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end5642; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]5643; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v4, v25644; GFX90A-NEXT:    s_setpc_b64 s[30:31]5645;5646; GFX908-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:5647; GFX908:       ; %bb.0:5648; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5649; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v05650; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc5651; GFX908-NEXT:    v_and_b32_e32 v0, -4, v35652; GFX908-NEXT:    global_load_dword v5, v[0:1], off5653; GFX908-NEXT:    v_and_b32_e32 v3, 3, v35654; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v35655; GFX908-NEXT:    s_mov_b32 s4, 0xffff5656; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s45657; GFX908-NEXT:    v_not_b32_e32 v4, v45658; GFX908-NEXT:    s_mov_b64 s[4:5], 05659; GFX908-NEXT:    v_max_f16_e32 v2, v2, v25660; GFX908-NEXT:  .LBB28_1: ; %atomicrmw.start5661; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=15662; GFX908-NEXT:    s_waitcnt vmcnt(0)5663; GFX908-NEXT:    v_mov_b32_e32 v6, v55664; GFX908-NEXT:    v_lshrrev_b32_e32 v5, v3, v65665; GFX908-NEXT:    v_max_f16_e32 v5, v5, v55666; GFX908-NEXT:    v_max_f16_e32 v5, v5, v25667; GFX908-NEXT:    v_lshlrev_b32_e32 v5, v3, v55668; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v55669; GFX908-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc5670; GFX908-NEXT:    s_waitcnt vmcnt(0)5671; GFX908-NEXT:    buffer_wbinvl15672; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v65673; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5674; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]5675; GFX908-NEXT:    s_cbranch_execnz .LBB28_15676; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end5677; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]5678; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v55679; GFX908-NEXT:    s_setpc_b64 s[30:31]5680;5681; GFX8-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:5682; GFX8:       ; %bb.0:5683; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5684; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v05685; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc5686; GFX8-NEXT:    v_and_b32_e32 v0, -4, v35687; GFX8-NEXT:    flat_load_dword v5, v[0:1]5688; GFX8-NEXT:    v_and_b32_e32 v3, 3, v35689; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v35690; GFX8-NEXT:    s_mov_b32 s4, 0xffff5691; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s45692; GFX8-NEXT:    v_not_b32_e32 v4, v45693; GFX8-NEXT:    s_mov_b64 s[4:5], 05694; GFX8-NEXT:    v_max_f16_e32 v2, v2, v25695; GFX8-NEXT:  .LBB28_1: ; %atomicrmw.start5696; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=15697; GFX8-NEXT:    s_waitcnt vmcnt(0)5698; GFX8-NEXT:    v_mov_b32_e32 v6, v55699; GFX8-NEXT:    v_lshrrev_b32_e32 v5, v3, v65700; GFX8-NEXT:    v_max_f16_e32 v5, v5, v55701; GFX8-NEXT:    v_max_f16_e32 v5, v5, v25702; GFX8-NEXT:    v_and_b32_e32 v7, v6, v45703; GFX8-NEXT:    v_lshlrev_b32_e32 v5, v3, v55704; GFX8-NEXT:    v_or_b32_e32 v5, v7, v55705; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc5706; GFX8-NEXT:    s_waitcnt vmcnt(0)5707; GFX8-NEXT:    buffer_wbinvl15708; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v65709; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5710; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]5711; GFX8-NEXT:    s_cbranch_execnz .LBB28_15712; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end5713; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]5714; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v55715; GFX8-NEXT:    s_setpc_b64 s[30:31]5716;5717; GFX7-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:5718; GFX7:       ; %bb.0:5719; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5720; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v05721; GFX7-NEXT:    s_mov_b32 s6, 05722; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc5723; GFX7-NEXT:    v_and_b32_e32 v0, -4, v45724; GFX7-NEXT:    s_mov_b32 s7, 0xf0005725; GFX7-NEXT:    s_mov_b32 s4, s65726; GFX7-NEXT:    s_mov_b32 s5, s65727; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr645728; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v25729; GFX7-NEXT:    v_and_b32_e32 v4, 3, v45730; GFX7-NEXT:    v_lshlrev_b32_e32 v6, 3, v45731; GFX7-NEXT:    s_mov_b64 s[8:9], 05732; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v25733; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v65734; GFX7-NEXT:    v_not_b32_e32 v8, v25735; GFX7-NEXT:  .LBB28_1: ; %atomicrmw.start5736; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=15737; GFX7-NEXT:    s_waitcnt vmcnt(0)5738; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v6, v35739; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v25740; GFX7-NEXT:    v_and_b32_e32 v4, v3, v85741; GFX7-NEXT:    v_max_f32_e32 v2, v2, v75742; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v25743; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v6, v25744; GFX7-NEXT:    v_or_b32_e32 v2, v4, v25745; GFX7-NEXT:    v_mov_b32_e32 v5, v35746; GFX7-NEXT:    v_mov_b32_e32 v4, v25747; GFX7-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc5748; GFX7-NEXT:    s_waitcnt vmcnt(0)5749; GFX7-NEXT:    buffer_wbinvl15750; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v35751; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]5752; GFX7-NEXT:    v_mov_b32_e32 v3, v45753; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]5754; GFX7-NEXT:    s_cbranch_execnz .LBB28_15755; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end5756; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]5757; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v6, v45758; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v05759; GFX7-NEXT:    s_setpc_b64 s[30:31]5760;5761; GFX6-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:5762; GFX6:       ; %bb.0:5763; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5764; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v05765; GFX6-NEXT:    s_mov_b32 s6, 05766; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc5767; GFX6-NEXT:    v_and_b32_e32 v0, -4, v45768; GFX6-NEXT:    s_mov_b32 s7, 0xf0005769; GFX6-NEXT:    s_mov_b32 s4, s65770; GFX6-NEXT:    s_mov_b32 s5, s65771; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr645772; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v25773; GFX6-NEXT:    v_and_b32_e32 v4, 3, v45774; GFX6-NEXT:    v_lshlrev_b32_e32 v6, 3, v45775; GFX6-NEXT:    s_mov_b64 s[8:9], 05776; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v25777; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v65778; GFX6-NEXT:    v_not_b32_e32 v8, v25779; GFX6-NEXT:  .LBB28_1: ; %atomicrmw.start5780; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=15781; GFX6-NEXT:    s_waitcnt vmcnt(0)5782; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v6, v35783; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v25784; GFX6-NEXT:    s_waitcnt expcnt(0)5785; GFX6-NEXT:    v_and_b32_e32 v4, v3, v85786; GFX6-NEXT:    v_max_f32_e32 v2, v2, v75787; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v25788; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v6, v25789; GFX6-NEXT:    v_or_b32_e32 v2, v4, v25790; GFX6-NEXT:    v_mov_b32_e32 v5, v35791; GFX6-NEXT:    v_mov_b32_e32 v4, v25792; GFX6-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc5793; GFX6-NEXT:    s_waitcnt vmcnt(0)5794; GFX6-NEXT:    buffer_wbinvl15795; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v35796; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]5797; GFX6-NEXT:    v_mov_b32_e32 v3, v45798; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]5799; GFX6-NEXT:    s_cbranch_execnz .LBB28_15800; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end5801; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]5802; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v6, v45803; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v05804; GFX6-NEXT:    s_waitcnt expcnt(0)5805; GFX6-NEXT:    s_setpc_b64 s[30:31]5806  %gep = getelementptr half, ptr addrspace(1) %ptr, i64 -10245807  %result = atomicrmw fmax ptr addrspace(1) %gep, half %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !05808  ret half %result5809 }5810 5811define void @global_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, half %val) #0 {5812; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory:5813; GFX12-TRUE16:       ; %bb.0:5814; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x05815; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x05816; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x05817; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x05818; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x05819; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v05820; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v2.l, v2.l, v2.l5821; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 05822; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_1)5823; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v35824; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v35825; GFX12-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off5826; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v35827; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff5828; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5829; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v35830; GFX12-TRUE16-NEXT:  .LBB29_1: ; %atomicrmw.start5831; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=15832; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x05833; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v45834; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 05835; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5836; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v2.h, v3.l, v3.l5837; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v3.l, v2.h, v2.l5838; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5839; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v35840; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v35841; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x05842; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV5843; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x05844; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV5845; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v45846; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v35847; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5848; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s05849; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5850; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05851; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB29_15852; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end5853; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05854; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x05855; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]5856;5857; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory:5858; GFX12-FAKE16:       ; %bb.0:5859; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x05860; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x05861; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x05862; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x05863; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x05864; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v05865; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v25866; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 05867; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_1)5868; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v35869; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v35870; GFX12-FAKE16-NEXT:    global_load_b32 v4, v[0:1], off5871; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v35872; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff5873; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5874; GFX12-FAKE16-NEXT:    v_not_b32_e32 v6, v35875; GFX12-FAKE16-NEXT:  .LBB29_1: ; %atomicrmw.start5876; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=15877; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x05878; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v45879; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5880; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v3, v3, v35881; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v3, v3, v25882; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5883; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v35884; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v35885; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5886; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v35887; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x05888; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV5889; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x05890; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV5891; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v45892; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v35893; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5894; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s05895; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5896; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05897; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB29_15898; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end5899; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05900; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x05901; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]5902;5903; GFX942-LABEL: global_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory:5904; GFX942:       ; %bb.0:5905; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5906; GFX942-NEXT:    v_mov_b32_e32 v3, v05907; GFX942-NEXT:    v_and_b32_e32 v0, -4, v35908; GFX942-NEXT:    global_load_dword v5, v[0:1], off5909; GFX942-NEXT:    v_and_b32_e32 v3, 3, v35910; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v35911; GFX942-NEXT:    s_mov_b32 s0, 0xffff5912; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s05913; GFX942-NEXT:    v_not_b32_e32 v6, v45914; GFX942-NEXT:    s_mov_b64 s[0:1], 05915; GFX942-NEXT:    v_max_f16_e32 v2, v2, v25916; GFX942-NEXT:  .LBB29_1: ; %atomicrmw.start5917; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=15918; GFX942-NEXT:    s_waitcnt vmcnt(0)5919; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v3, v55920; GFX942-NEXT:    v_max_f16_e32 v4, v4, v45921; GFX942-NEXT:    v_max_f16_e32 v4, v4, v25922; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v3, v45923; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v45924; GFX942-NEXT:    buffer_wbl2 sc15925; GFX942-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off sc05926; GFX942-NEXT:    s_waitcnt vmcnt(0)5927; GFX942-NEXT:    buffer_inv sc15928; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v55929; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]5930; GFX942-NEXT:    v_mov_b32_e32 v5, v45931; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]5932; GFX942-NEXT:    s_cbranch_execnz .LBB29_15933; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end5934; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]5935; GFX942-NEXT:    s_setpc_b64 s[30:31]5936;5937; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory:5938; GFX11-TRUE16:       ; %bb.0:5939; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5940; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v05941; GFX11-TRUE16-NEXT:    v_max_f16_e32 v2.l, v2.l, v2.l5942; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 05943; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_1)5944; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v35945; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v35946; GFX11-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off5947; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v35948; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff5949; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5950; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v35951; GFX11-TRUE16-NEXT:  .LBB29_1: ; %atomicrmw.start5952; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=15953; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)5954; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v45955; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 05956; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5957; GFX11-TRUE16-NEXT:    v_max_f16_e32 v2.h, v3.l, v3.l5958; GFX11-TRUE16-NEXT:    v_max_f16_e32 v3.l, v2.h, v2.l5959; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5960; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v35961; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v35962; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x05963; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc5964; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)5965; GFX11-TRUE16-NEXT:    buffer_gl1_inv5966; GFX11-TRUE16-NEXT:    buffer_gl0_inv5967; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v45968; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v35969; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s05970; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5971; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05972; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB29_15973; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end5974; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05975; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]5976;5977; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory:5978; GFX11-FAKE16:       ; %bb.0:5979; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5980; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v05981; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v25982; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 05983; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_1)5984; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v35985; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v35986; GFX11-FAKE16-NEXT:    global_load_b32 v4, v[0:1], off5987; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v35988; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff5989; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5990; GFX11-FAKE16-NEXT:    v_not_b32_e32 v6, v35991; GFX11-FAKE16-NEXT:  .LBB29_1: ; %atomicrmw.start5992; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=15993; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)5994; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v45995; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5996; GFX11-FAKE16-NEXT:    v_max_f16_e32 v3, v3, v35997; GFX11-FAKE16-NEXT:    v_max_f16_e32 v3, v3, v25998; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5999; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v36000; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v36001; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6002; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v36003; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x06004; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc6005; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)6006; GFX11-FAKE16-NEXT:    buffer_gl1_inv6007; GFX11-FAKE16-NEXT:    buffer_gl0_inv6008; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v46009; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v36010; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06011; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6012; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06013; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB29_16014; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6015; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06016; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]6017;6018; GFX10-LABEL: global_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory:6019; GFX10:       ; %bb.0:6020; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6021; GFX10-NEXT:    v_mov_b32_e32 v3, v06022; GFX10-NEXT:    v_max_f16_e32 v2, v2, v26023; GFX10-NEXT:    s_mov_b32 s4, 06024; GFX10-NEXT:    v_and_b32_e32 v0, -4, v36025; GFX10-NEXT:    v_and_b32_e32 v3, 3, v36026; GFX10-NEXT:    global_load_dword v4, v[0:1], off6027; GFX10-NEXT:    v_lshlrev_b32_e32 v5, 3, v36028; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff6029; GFX10-NEXT:    v_not_b32_e32 v6, v36030; GFX10-NEXT:  .LBB29_1: ; %atomicrmw.start6031; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=16032; GFX10-NEXT:    s_waitcnt vmcnt(0)6033; GFX10-NEXT:    v_lshrrev_b32_e32 v3, v5, v46034; GFX10-NEXT:    v_max_f16_e32 v3, v3, v36035; GFX10-NEXT:    v_max_f16_e32 v3, v3, v26036; GFX10-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_06037; GFX10-NEXT:    v_and_or_b32 v3, v4, v6, v36038; GFX10-NEXT:    s_waitcnt_vscnt null, 0x06039; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc6040; GFX10-NEXT:    s_waitcnt vmcnt(0)6041; GFX10-NEXT:    buffer_gl1_inv6042; GFX10-NEXT:    buffer_gl0_inv6043; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v46044; GFX10-NEXT:    v_mov_b32_e32 v4, v36045; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s46046; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s46047; GFX10-NEXT:    s_cbranch_execnz .LBB29_16048; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end6049; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s46050; GFX10-NEXT:    s_setpc_b64 s[30:31]6051;6052; GFX90A-LABEL: global_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory:6053; GFX90A:       ; %bb.0:6054; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6055; GFX90A-NEXT:    v_mov_b32_e32 v3, v06056; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v36057; GFX90A-NEXT:    global_load_dword v5, v[0:1], off6058; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v36059; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v36060; GFX90A-NEXT:    s_mov_b32 s4, 0xffff6061; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s46062; GFX90A-NEXT:    v_not_b32_e32 v6, v46063; GFX90A-NEXT:    s_mov_b64 s[4:5], 06064; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v26065; GFX90A-NEXT:  .LBB29_1: ; %atomicrmw.start6066; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=16067; GFX90A-NEXT:    s_waitcnt vmcnt(0)6068; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v3, v56069; GFX90A-NEXT:    v_max_f16_e32 v4, v4, v46070; GFX90A-NEXT:    v_max_f16_e32 v4, v4, v26071; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v3, v46072; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v46073; GFX90A-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off glc6074; GFX90A-NEXT:    s_waitcnt vmcnt(0)6075; GFX90A-NEXT:    buffer_wbinvl16076; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v56077; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6078; GFX90A-NEXT:    v_mov_b32_e32 v5, v46079; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]6080; GFX90A-NEXT:    s_cbranch_execnz .LBB29_16081; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end6082; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]6083; GFX90A-NEXT:    s_setpc_b64 s[30:31]6084;6085; GFX908-LABEL: global_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory:6086; GFX908:       ; %bb.0:6087; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6088; GFX908-NEXT:    v_mov_b32_e32 v3, v06089; GFX908-NEXT:    v_and_b32_e32 v0, -4, v36090; GFX908-NEXT:    global_load_dword v4, v[0:1], off6091; GFX908-NEXT:    v_and_b32_e32 v3, 3, v36092; GFX908-NEXT:    v_lshlrev_b32_e32 v5, 3, v36093; GFX908-NEXT:    s_mov_b32 s4, 0xffff6094; GFX908-NEXT:    v_lshlrev_b32_e64 v3, v5, s46095; GFX908-NEXT:    v_not_b32_e32 v6, v36096; GFX908-NEXT:    s_mov_b64 s[4:5], 06097; GFX908-NEXT:    v_max_f16_e32 v2, v2, v26098; GFX908-NEXT:  .LBB29_1: ; %atomicrmw.start6099; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=16100; GFX908-NEXT:    s_waitcnt vmcnt(0)6101; GFX908-NEXT:    v_lshrrev_b32_e32 v3, v5, v46102; GFX908-NEXT:    v_max_f16_e32 v3, v3, v36103; GFX908-NEXT:    v_max_f16_e32 v3, v3, v26104; GFX908-NEXT:    v_lshlrev_b32_e32 v3, v5, v36105; GFX908-NEXT:    v_and_or_b32 v3, v4, v6, v36106; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc6107; GFX908-NEXT:    s_waitcnt vmcnt(0)6108; GFX908-NEXT:    buffer_wbinvl16109; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v46110; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6111; GFX908-NEXT:    v_mov_b32_e32 v4, v36112; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]6113; GFX908-NEXT:    s_cbranch_execnz .LBB29_16114; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end6115; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]6116; GFX908-NEXT:    s_setpc_b64 s[30:31]6117;6118; GFX8-LABEL: global_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory:6119; GFX8:       ; %bb.0:6120; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6121; GFX8-NEXT:    v_mov_b32_e32 v3, v06122; GFX8-NEXT:    v_and_b32_e32 v0, -4, v36123; GFX8-NEXT:    flat_load_dword v4, v[0:1]6124; GFX8-NEXT:    v_and_b32_e32 v3, 3, v36125; GFX8-NEXT:    v_lshlrev_b32_e32 v5, 3, v36126; GFX8-NEXT:    s_mov_b32 s4, 0xffff6127; GFX8-NEXT:    v_lshlrev_b32_e64 v3, v5, s46128; GFX8-NEXT:    v_not_b32_e32 v6, v36129; GFX8-NEXT:    s_mov_b64 s[4:5], 06130; GFX8-NEXT:    v_max_f16_e32 v2, v2, v26131; GFX8-NEXT:  .LBB29_1: ; %atomicrmw.start6132; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=16133; GFX8-NEXT:    s_waitcnt vmcnt(0)6134; GFX8-NEXT:    v_lshrrev_b32_e32 v3, v5, v46135; GFX8-NEXT:    v_max_f16_e32 v3, v3, v36136; GFX8-NEXT:    v_max_f16_e32 v3, v3, v26137; GFX8-NEXT:    v_and_b32_e32 v7, v4, v66138; GFX8-NEXT:    v_lshlrev_b32_e32 v3, v5, v36139; GFX8-NEXT:    v_or_b32_e32 v3, v7, v36140; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc6141; GFX8-NEXT:    s_waitcnt vmcnt(0)6142; GFX8-NEXT:    buffer_wbinvl16143; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v46144; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6145; GFX8-NEXT:    v_mov_b32_e32 v4, v36146; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]6147; GFX8-NEXT:    s_cbranch_execnz .LBB29_16148; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end6149; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]6150; GFX8-NEXT:    s_setpc_b64 s[30:31]6151;6152; GFX7-LABEL: global_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory:6153; GFX7:       ; %bb.0:6154; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6155; GFX7-NEXT:    v_mov_b32_e32 v3, v06156; GFX7-NEXT:    s_mov_b32 s6, 06157; GFX7-NEXT:    v_and_b32_e32 v0, -4, v36158; GFX7-NEXT:    s_mov_b32 s7, 0xf0006159; GFX7-NEXT:    s_mov_b32 s4, s66160; GFX7-NEXT:    s_mov_b32 s5, s66161; GFX7-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr646162; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v26163; GFX7-NEXT:    v_and_b32_e32 v2, 3, v36164; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 3, v26165; GFX7-NEXT:    v_lshl_b32_e32 v3, 0xffff, v26166; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v56167; GFX7-NEXT:    v_not_b32_e32 v6, v36168; GFX7-NEXT:    s_mov_b64 s[8:9], 06169; GFX7-NEXT:  .LBB29_1: ; %atomicrmw.start6170; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=16171; GFX7-NEXT:    s_waitcnt vmcnt(0)6172; GFX7-NEXT:    v_lshrrev_b32_e32 v3, v2, v46173; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v36174; GFX7-NEXT:    v_and_b32_e32 v7, v4, v66175; GFX7-NEXT:    v_max_f32_e32 v3, v3, v56176; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v36177; GFX7-NEXT:    v_lshlrev_b32_e32 v3, v2, v36178; GFX7-NEXT:    v_or_b32_e32 v3, v7, v36179; GFX7-NEXT:    v_mov_b32_e32 v8, v46180; GFX7-NEXT:    v_mov_b32_e32 v7, v36181; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc6182; GFX7-NEXT:    s_waitcnt vmcnt(0)6183; GFX7-NEXT:    buffer_wbinvl16184; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v46185; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]6186; GFX7-NEXT:    v_mov_b32_e32 v4, v76187; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]6188; GFX7-NEXT:    s_cbranch_execnz .LBB29_16189; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end6190; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]6191; GFX7-NEXT:    s_setpc_b64 s[30:31]6192;6193; GFX6-LABEL: global_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory:6194; GFX6:       ; %bb.0:6195; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6196; GFX6-NEXT:    v_mov_b32_e32 v3, v06197; GFX6-NEXT:    s_mov_b32 s6, 06198; GFX6-NEXT:    v_and_b32_e32 v0, -4, v36199; GFX6-NEXT:    s_mov_b32 s7, 0xf0006200; GFX6-NEXT:    s_mov_b32 s4, s66201; GFX6-NEXT:    s_mov_b32 s5, s66202; GFX6-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr646203; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v26204; GFX6-NEXT:    v_and_b32_e32 v2, 3, v36205; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 3, v26206; GFX6-NEXT:    v_lshl_b32_e32 v3, 0xffff, v26207; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v56208; GFX6-NEXT:    v_not_b32_e32 v6, v36209; GFX6-NEXT:    s_mov_b64 s[8:9], 06210; GFX6-NEXT:  .LBB29_1: ; %atomicrmw.start6211; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=16212; GFX6-NEXT:    s_waitcnt vmcnt(0)6213; GFX6-NEXT:    v_lshrrev_b32_e32 v3, v2, v46214; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v36215; GFX6-NEXT:    s_waitcnt expcnt(0)6216; GFX6-NEXT:    v_and_b32_e32 v7, v4, v66217; GFX6-NEXT:    v_max_f32_e32 v3, v3, v56218; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v36219; GFX6-NEXT:    v_lshlrev_b32_e32 v3, v2, v36220; GFX6-NEXT:    v_or_b32_e32 v3, v7, v36221; GFX6-NEXT:    v_mov_b32_e32 v8, v46222; GFX6-NEXT:    v_mov_b32_e32 v7, v36223; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc6224; GFX6-NEXT:    s_waitcnt vmcnt(0)6225; GFX6-NEXT:    buffer_wbinvl16226; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v46227; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]6228; GFX6-NEXT:    v_mov_b32_e32 v4, v76229; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]6230; GFX6-NEXT:    s_cbranch_execnz .LBB29_16231; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end6232; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]6233; GFX6-NEXT:    s_waitcnt expcnt(0)6234; GFX6-NEXT:    s_setpc_b64 s[30:31]6235  %unused = atomicrmw fmax ptr addrspace(1) %ptr, half %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !06236  ret void6237}6238 6239define void @global_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, half %val) #0 {6240; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:6241; GFX12-TRUE16:       ; %bb.0:6242; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06243; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x06244; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x06245; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x06246; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x06247; GFX12-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fe, v06248; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)6249; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, 0, v1, vcc_lo6250; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 06251; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v06252; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v06253; GFX12-TRUE16-NEXT:    global_load_b32 v6, v[3:4], off6254; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v06255; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l6256; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)6257; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v5, v1, 0xffff6258; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l6259; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)6260; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v56261; GFX12-TRUE16-NEXT:  .LBB30_1: ; %atomicrmw.start6262; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16263; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06264; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v66265; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 06266; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6267; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.h, v5.l, v5.l6268; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v5.l, v0.h, v0.l6269; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6270; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v56271; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v56272; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x06273; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[3:4], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV6274; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06275; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV6276; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66277; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v56278; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6279; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06280; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6281; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06282; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB30_16283; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6284; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06285; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06286; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]6287;6288; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:6289; GFX12-FAKE16:       ; %bb.0:6290; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06291; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x06292; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x06293; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x06294; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x06295; GFX12-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v06296; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)6297; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo6298; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v6, v2, v26299; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)6300; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v46301; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v46302; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 06303; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off6304; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v46305; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff6306; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6307; GFX12-FAKE16-NEXT:    v_not_b32_e32 v5, v56308; GFX12-FAKE16-NEXT:  .LBB30_1: ; %atomicrmw.start6309; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16310; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06311; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v36312; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6313; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v26314; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v66315; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6316; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v26317; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v26318; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6319; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v26320; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x06321; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV6322; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06323; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV6324; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v36325; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v26326; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6327; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06328; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6329; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06330; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB30_16331; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6332; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06333; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06334; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]6335;6336; GFX942-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:6337; GFX942:       ; %bb.0:6338; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6339; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe6340; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]6341; GFX942-NEXT:    v_and_b32_e32 v0, -4, v46342; GFX942-NEXT:    v_mov_b32_e32 v1, v56343; GFX942-NEXT:    global_load_dword v3, v[0:1], off6344; GFX942-NEXT:    v_and_b32_e32 v4, 3, v46345; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v46346; GFX942-NEXT:    s_mov_b32 s0, 0xffff6347; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s06348; GFX942-NEXT:    v_not_b32_e32 v5, v56349; GFX942-NEXT:    s_mov_b64 s[0:1], 06350; GFX942-NEXT:    v_max_f16_e32 v6, v2, v26351; GFX942-NEXT:  .LBB30_1: ; %atomicrmw.start6352; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=16353; GFX942-NEXT:    s_waitcnt vmcnt(0)6354; GFX942-NEXT:    v_lshrrev_b32_e32 v2, v4, v36355; GFX942-NEXT:    v_max_f16_e32 v2, v2, v26356; GFX942-NEXT:    v_max_f16_e32 v2, v2, v66357; GFX942-NEXT:    v_lshlrev_b32_e32 v2, v4, v26358; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v26359; GFX942-NEXT:    buffer_wbl2 sc16360; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc06361; GFX942-NEXT:    s_waitcnt vmcnt(0)6362; GFX942-NEXT:    buffer_inv sc16363; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v36364; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]6365; GFX942-NEXT:    v_mov_b32_e32 v3, v26366; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]6367; GFX942-NEXT:    s_cbranch_execnz .LBB30_16368; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end6369; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]6370; GFX942-NEXT:    s_setpc_b64 s[30:31]6371;6372; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:6373; GFX11-TRUE16:       ; %bb.0:6374; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6375; GFX11-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fe, v06376; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6377; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, 0, v1, vcc_lo6378; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 06379; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v06380; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v06381; GFX11-TRUE16-NEXT:    global_load_b32 v6, v[3:4], off6382; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v06383; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l6384; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)6385; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v5, v1, 0xffff6386; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l6387; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)6388; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v56389; GFX11-TRUE16-NEXT:  .LBB30_1: ; %atomicrmw.start6390; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16391; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)6392; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v66393; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 06394; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6395; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.h, v5.l, v5.l6396; GFX11-TRUE16-NEXT:    v_max_f16_e32 v5.l, v0.h, v0.l6397; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6398; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v56399; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v56400; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x06401; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[3:4], v[5:6], off glc6402; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)6403; GFX11-TRUE16-NEXT:    buffer_gl1_inv6404; GFX11-TRUE16-NEXT:    buffer_gl0_inv6405; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66406; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v56407; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06408; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6409; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06410; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB30_16411; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6412; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06413; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]6414;6415; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:6416; GFX11-FAKE16:       ; %bb.0:6417; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6418; GFX11-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v06419; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)6420; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo6421; GFX11-FAKE16-NEXT:    v_max_f16_e32 v6, v2, v26422; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v46423; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v46424; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 06425; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off6426; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v46427; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6428; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff6429; GFX11-FAKE16-NEXT:    v_not_b32_e32 v5, v56430; GFX11-FAKE16-NEXT:  .LBB30_1: ; %atomicrmw.start6431; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16432; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)6433; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v36434; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6435; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v26436; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v66437; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6438; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v26439; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v26440; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6441; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v26442; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x06443; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off glc6444; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)6445; GFX11-FAKE16-NEXT:    buffer_gl1_inv6446; GFX11-FAKE16-NEXT:    buffer_gl0_inv6447; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v36448; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v26449; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06450; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6451; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06452; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB30_16453; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6454; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06455; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]6456;6457; GFX10-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:6458; GFX10:       ; %bb.0:6459; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6460; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v06461; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo6462; GFX10-NEXT:    v_max_f16_e32 v6, v2, v26463; GFX10-NEXT:    v_and_b32_e32 v0, -4, v46464; GFX10-NEXT:    v_and_b32_e32 v4, 3, v46465; GFX10-NEXT:    s_mov_b32 s4, 06466; GFX10-NEXT:    global_load_dword v3, v[0:1], off6467; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 3, v46468; GFX10-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff6469; GFX10-NEXT:    v_not_b32_e32 v5, v56470; GFX10-NEXT:  .LBB30_1: ; %atomicrmw.start6471; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=16472; GFX10-NEXT:    s_waitcnt vmcnt(0)6473; GFX10-NEXT:    v_lshrrev_b32_e32 v2, v4, v36474; GFX10-NEXT:    v_max_f16_e32 v2, v2, v26475; GFX10-NEXT:    v_max_f16_e32 v2, v2, v66476; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_06477; GFX10-NEXT:    v_and_or_b32 v2, v3, v5, v26478; GFX10-NEXT:    s_waitcnt_vscnt null, 0x06479; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc6480; GFX10-NEXT:    s_waitcnt vmcnt(0)6481; GFX10-NEXT:    buffer_gl1_inv6482; GFX10-NEXT:    buffer_gl0_inv6483; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v36484; GFX10-NEXT:    v_mov_b32_e32 v3, v26485; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s46486; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s46487; GFX10-NEXT:    s_cbranch_execnz .LBB30_16488; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end6489; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s46490; GFX10-NEXT:    s_setpc_b64 s[30:31]6491;6492; GFX90A-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:6493; GFX90A:       ; %bb.0:6494; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6495; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v06496; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc6497; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v46498; GFX90A-NEXT:    global_load_dword v3, v[0:1], off6499; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v46500; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v46501; GFX90A-NEXT:    s_mov_b32 s4, 0xffff6502; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s46503; GFX90A-NEXT:    v_not_b32_e32 v5, v56504; GFX90A-NEXT:    s_mov_b64 s[4:5], 06505; GFX90A-NEXT:    v_max_f16_e32 v6, v2, v26506; GFX90A-NEXT:  .LBB30_1: ; %atomicrmw.start6507; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=16508; GFX90A-NEXT:    s_waitcnt vmcnt(0)6509; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, v4, v36510; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v26511; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v66512; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, v4, v26513; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v26514; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc6515; GFX90A-NEXT:    s_waitcnt vmcnt(0)6516; GFX90A-NEXT:    buffer_wbinvl16517; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v36518; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6519; GFX90A-NEXT:    v_mov_b32_e32 v3, v26520; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]6521; GFX90A-NEXT:    s_cbranch_execnz .LBB30_16522; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end6523; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]6524; GFX90A-NEXT:    s_setpc_b64 s[30:31]6525;6526; GFX908-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:6527; GFX908:       ; %bb.0:6528; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6529; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v06530; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc6531; GFX908-NEXT:    v_and_b32_e32 v0, -4, v46532; GFX908-NEXT:    global_load_dword v3, v[0:1], off6533; GFX908-NEXT:    v_and_b32_e32 v4, 3, v46534; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 3, v46535; GFX908-NEXT:    s_mov_b32 s4, 0xffff6536; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v4, s46537; GFX908-NEXT:    v_not_b32_e32 v5, v56538; GFX908-NEXT:    s_mov_b64 s[4:5], 06539; GFX908-NEXT:    v_max_f16_e32 v6, v2, v26540; GFX908-NEXT:  .LBB30_1: ; %atomicrmw.start6541; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=16542; GFX908-NEXT:    s_waitcnt vmcnt(0)6543; GFX908-NEXT:    v_lshrrev_b32_e32 v2, v4, v36544; GFX908-NEXT:    v_max_f16_e32 v2, v2, v26545; GFX908-NEXT:    v_max_f16_e32 v2, v2, v66546; GFX908-NEXT:    v_lshlrev_b32_e32 v2, v4, v26547; GFX908-NEXT:    v_and_or_b32 v2, v3, v5, v26548; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc6549; GFX908-NEXT:    s_waitcnt vmcnt(0)6550; GFX908-NEXT:    buffer_wbinvl16551; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v36552; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6553; GFX908-NEXT:    v_mov_b32_e32 v3, v26554; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]6555; GFX908-NEXT:    s_cbranch_execnz .LBB30_16556; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end6557; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]6558; GFX908-NEXT:    s_setpc_b64 s[30:31]6559;6560; GFX8-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:6561; GFX8:       ; %bb.0:6562; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6563; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0x7fe, v06564; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc6565; GFX8-NEXT:    v_and_b32_e32 v0, -4, v46566; GFX8-NEXT:    flat_load_dword v3, v[0:1]6567; GFX8-NEXT:    v_and_b32_e32 v4, 3, v46568; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 3, v46569; GFX8-NEXT:    s_mov_b32 s4, 0xffff6570; GFX8-NEXT:    v_lshlrev_b32_e64 v5, v4, s46571; GFX8-NEXT:    v_not_b32_e32 v5, v56572; GFX8-NEXT:    s_mov_b64 s[4:5], 06573; GFX8-NEXT:    v_max_f16_e32 v6, v2, v26574; GFX8-NEXT:  .LBB30_1: ; %atomicrmw.start6575; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=16576; GFX8-NEXT:    s_waitcnt vmcnt(0)6577; GFX8-NEXT:    v_lshrrev_b32_e32 v2, v4, v36578; GFX8-NEXT:    v_max_f16_e32 v2, v2, v26579; GFX8-NEXT:    v_max_f16_e32 v2, v2, v66580; GFX8-NEXT:    v_and_b32_e32 v7, v3, v56581; GFX8-NEXT:    v_lshlrev_b32_e32 v2, v4, v26582; GFX8-NEXT:    v_or_b32_e32 v2, v7, v26583; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc6584; GFX8-NEXT:    s_waitcnt vmcnt(0)6585; GFX8-NEXT:    buffer_wbinvl16586; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v36587; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6588; GFX8-NEXT:    v_mov_b32_e32 v3, v26589; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]6590; GFX8-NEXT:    s_cbranch_execnz .LBB30_16591; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end6592; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]6593; GFX8-NEXT:    s_setpc_b64 s[30:31]6594;6595; GFX7-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:6596; GFX7:       ; %bb.0:6597; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6598; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v06599; GFX7-NEXT:    s_mov_b32 s6, 06600; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc6601; GFX7-NEXT:    v_and_b32_e32 v0, -4, v46602; GFX7-NEXT:    s_mov_b32 s7, 0xf0006603; GFX7-NEXT:    s_mov_b32 s4, s66604; GFX7-NEXT:    s_mov_b32 s5, s66605; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr646606; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v26607; GFX7-NEXT:    v_and_b32_e32 v4, 3, v46608; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v46609; GFX7-NEXT:    s_mov_b64 s[8:9], 06610; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v26611; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v46612; GFX7-NEXT:    v_not_b32_e32 v6, v26613; GFX7-NEXT:  .LBB30_1: ; %atomicrmw.start6614; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=16615; GFX7-NEXT:    s_waitcnt vmcnt(0)6616; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v36617; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v26618; GFX7-NEXT:    v_and_b32_e32 v7, v3, v66619; GFX7-NEXT:    v_max_f32_e32 v2, v2, v56620; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v26621; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v26622; GFX7-NEXT:    v_or_b32_e32 v2, v7, v26623; GFX7-NEXT:    v_mov_b32_e32 v8, v36624; GFX7-NEXT:    v_mov_b32_e32 v7, v26625; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc6626; GFX7-NEXT:    s_waitcnt vmcnt(0)6627; GFX7-NEXT:    buffer_wbinvl16628; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v36629; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]6630; GFX7-NEXT:    v_mov_b32_e32 v3, v76631; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]6632; GFX7-NEXT:    s_cbranch_execnz .LBB30_16633; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end6634; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]6635; GFX7-NEXT:    s_setpc_b64 s[30:31]6636;6637; GFX6-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:6638; GFX6:       ; %bb.0:6639; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6640; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v06641; GFX6-NEXT:    s_mov_b32 s6, 06642; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc6643; GFX6-NEXT:    v_and_b32_e32 v0, -4, v46644; GFX6-NEXT:    s_mov_b32 s7, 0xf0006645; GFX6-NEXT:    s_mov_b32 s4, s66646; GFX6-NEXT:    s_mov_b32 s5, s66647; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr646648; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v26649; GFX6-NEXT:    v_and_b32_e32 v4, 3, v46650; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 3, v46651; GFX6-NEXT:    s_mov_b64 s[8:9], 06652; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v26653; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v46654; GFX6-NEXT:    v_not_b32_e32 v6, v26655; GFX6-NEXT:  .LBB30_1: ; %atomicrmw.start6656; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=16657; GFX6-NEXT:    s_waitcnt vmcnt(0)6658; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v4, v36659; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v26660; GFX6-NEXT:    s_waitcnt expcnt(0)6661; GFX6-NEXT:    v_and_b32_e32 v7, v3, v66662; GFX6-NEXT:    v_max_f32_e32 v2, v2, v56663; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v26664; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v4, v26665; GFX6-NEXT:    v_or_b32_e32 v2, v7, v26666; GFX6-NEXT:    v_mov_b32_e32 v8, v36667; GFX6-NEXT:    v_mov_b32_e32 v7, v26668; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc6669; GFX6-NEXT:    s_waitcnt vmcnt(0)6670; GFX6-NEXT:    buffer_wbinvl16671; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v36672; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]6673; GFX6-NEXT:    v_mov_b32_e32 v3, v76674; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]6675; GFX6-NEXT:    s_cbranch_execnz .LBB30_16676; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end6677; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]6678; GFX6-NEXT:    s_waitcnt expcnt(0)6679; GFX6-NEXT:    s_setpc_b64 s[30:31]6680  %gep = getelementptr half, ptr addrspace(1) %ptr, i64 10236681  %unused = atomicrmw fmax ptr addrspace(1) %gep, half %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !06682  ret void6683}6684 6685define void @global_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, half %val) #0 {6686; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:6687; GFX12-TRUE16:       ; %bb.0:6688; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06689; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x06690; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x06691; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x06692; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x06693; GFX12-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v06694; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)6695; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, -1, v1, vcc_lo6696; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 06697; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v06698; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v06699; GFX12-TRUE16-NEXT:    global_load_b32 v6, v[3:4], off6700; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v06701; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l6702; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)6703; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v5, v1, 0xffff6704; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l6705; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)6706; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v56707; GFX12-TRUE16-NEXT:  .LBB31_1: ; %atomicrmw.start6708; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16709; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06710; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v66711; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 06712; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6713; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.h, v5.l, v5.l6714; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v5.l, v0.h, v0.l6715; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6716; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v56717; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v56718; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x06719; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[3:4], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV6720; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06721; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV6722; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66723; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v56724; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6725; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06726; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6727; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06728; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB31_16729; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6730; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06731; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06732; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]6733;6734; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:6735; GFX12-FAKE16:       ; %bb.0:6736; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06737; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x06738; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x06739; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x06740; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x06741; GFX12-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v06742; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)6743; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo6744; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v6, v2, v26745; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)6746; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v46747; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v46748; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 06749; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off6750; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v46751; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff6752; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6753; GFX12-FAKE16-NEXT:    v_not_b32_e32 v5, v56754; GFX12-FAKE16-NEXT:  .LBB31_1: ; %atomicrmw.start6755; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16756; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06757; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v36758; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6759; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v26760; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v66761; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6762; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v26763; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v26764; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6765; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v26766; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x06767; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV6768; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06769; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV6770; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v36771; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v26772; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6773; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06774; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6775; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06776; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB31_16777; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6778; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06779; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06780; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]6781;6782; GFX942-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:6783; GFX942:       ; %bb.0:6784; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6785; GFX942-NEXT:    s_movk_i32 s0, 0xf8006786; GFX942-NEXT:    s_mov_b32 s1, -16787; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]6788; GFX942-NEXT:    v_and_b32_e32 v0, -4, v46789; GFX942-NEXT:    v_mov_b32_e32 v1, v56790; GFX942-NEXT:    global_load_dword v3, v[0:1], off6791; GFX942-NEXT:    v_and_b32_e32 v4, 3, v46792; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v46793; GFX942-NEXT:    s_mov_b32 s0, 0xffff6794; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s06795; GFX942-NEXT:    v_not_b32_e32 v5, v56796; GFX942-NEXT:    s_mov_b64 s[0:1], 06797; GFX942-NEXT:    v_max_f16_e32 v6, v2, v26798; GFX942-NEXT:  .LBB31_1: ; %atomicrmw.start6799; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=16800; GFX942-NEXT:    s_waitcnt vmcnt(0)6801; GFX942-NEXT:    v_lshrrev_b32_e32 v2, v4, v36802; GFX942-NEXT:    v_max_f16_e32 v2, v2, v26803; GFX942-NEXT:    v_max_f16_e32 v2, v2, v66804; GFX942-NEXT:    v_lshlrev_b32_e32 v2, v4, v26805; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v26806; GFX942-NEXT:    buffer_wbl2 sc16807; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc06808; GFX942-NEXT:    s_waitcnt vmcnt(0)6809; GFX942-NEXT:    buffer_inv sc16810; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v36811; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]6812; GFX942-NEXT:    v_mov_b32_e32 v3, v26813; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]6814; GFX942-NEXT:    s_cbranch_execnz .LBB31_16815; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end6816; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]6817; GFX942-NEXT:    s_setpc_b64 s[30:31]6818;6819; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:6820; GFX11-TRUE16:       ; %bb.0:6821; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6822; GFX11-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v06823; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6824; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, -1, v1, vcc_lo6825; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 06826; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v06827; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v06828; GFX11-TRUE16-NEXT:    global_load_b32 v6, v[3:4], off6829; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v06830; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l6831; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)6832; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v5, v1, 0xffff6833; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l6834; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)6835; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v56836; GFX11-TRUE16-NEXT:  .LBB31_1: ; %atomicrmw.start6837; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16838; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)6839; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v66840; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 06841; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6842; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.h, v5.l, v5.l6843; GFX11-TRUE16-NEXT:    v_max_f16_e32 v5.l, v0.h, v0.l6844; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6845; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v56846; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v56847; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x06848; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[3:4], v[5:6], off glc6849; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)6850; GFX11-TRUE16-NEXT:    buffer_gl1_inv6851; GFX11-TRUE16-NEXT:    buffer_gl0_inv6852; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66853; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v56854; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06855; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6856; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06857; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB31_16858; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6859; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06860; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]6861;6862; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:6863; GFX11-FAKE16:       ; %bb.0:6864; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6865; GFX11-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v06866; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)6867; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo6868; GFX11-FAKE16-NEXT:    v_max_f16_e32 v6, v2, v26869; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v46870; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v46871; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 06872; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off6873; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v46874; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6875; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff6876; GFX11-FAKE16-NEXT:    v_not_b32_e32 v5, v56877; GFX11-FAKE16-NEXT:  .LBB31_1: ; %atomicrmw.start6878; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16879; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)6880; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v36881; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6882; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v26883; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v66884; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6885; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v26886; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v26887; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6888; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v26889; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x06890; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off glc6891; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)6892; GFX11-FAKE16-NEXT:    buffer_gl1_inv6893; GFX11-FAKE16-NEXT:    buffer_gl0_inv6894; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v36895; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v26896; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06897; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6898; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06899; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB31_16900; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6901; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06902; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]6903;6904; GFX10-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:6905; GFX10:       ; %bb.0:6906; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6907; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v06908; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo6909; GFX10-NEXT:    v_max_f16_e32 v6, v2, v26910; GFX10-NEXT:    v_and_b32_e32 v0, -4, v46911; GFX10-NEXT:    v_and_b32_e32 v4, 3, v46912; GFX10-NEXT:    s_mov_b32 s4, 06913; GFX10-NEXT:    global_load_dword v3, v[0:1], off6914; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 3, v46915; GFX10-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff6916; GFX10-NEXT:    v_not_b32_e32 v5, v56917; GFX10-NEXT:  .LBB31_1: ; %atomicrmw.start6918; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=16919; GFX10-NEXT:    s_waitcnt vmcnt(0)6920; GFX10-NEXT:    v_lshrrev_b32_e32 v2, v4, v36921; GFX10-NEXT:    v_max_f16_e32 v2, v2, v26922; GFX10-NEXT:    v_max_f16_e32 v2, v2, v66923; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_06924; GFX10-NEXT:    v_and_or_b32 v2, v3, v5, v26925; GFX10-NEXT:    s_waitcnt_vscnt null, 0x06926; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc6927; GFX10-NEXT:    s_waitcnt vmcnt(0)6928; GFX10-NEXT:    buffer_gl1_inv6929; GFX10-NEXT:    buffer_gl0_inv6930; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v36931; GFX10-NEXT:    v_mov_b32_e32 v3, v26932; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s46933; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s46934; GFX10-NEXT:    s_cbranch_execnz .LBB31_16935; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end6936; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s46937; GFX10-NEXT:    s_setpc_b64 s[30:31]6938;6939; GFX90A-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:6940; GFX90A:       ; %bb.0:6941; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6942; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v06943; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc6944; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v46945; GFX90A-NEXT:    global_load_dword v3, v[0:1], off6946; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v46947; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v46948; GFX90A-NEXT:    s_mov_b32 s4, 0xffff6949; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s46950; GFX90A-NEXT:    v_not_b32_e32 v5, v56951; GFX90A-NEXT:    s_mov_b64 s[4:5], 06952; GFX90A-NEXT:    v_max_f16_e32 v6, v2, v26953; GFX90A-NEXT:  .LBB31_1: ; %atomicrmw.start6954; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=16955; GFX90A-NEXT:    s_waitcnt vmcnt(0)6956; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, v4, v36957; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v26958; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v66959; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, v4, v26960; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v26961; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc6962; GFX90A-NEXT:    s_waitcnt vmcnt(0)6963; GFX90A-NEXT:    buffer_wbinvl16964; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v36965; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6966; GFX90A-NEXT:    v_mov_b32_e32 v3, v26967; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]6968; GFX90A-NEXT:    s_cbranch_execnz .LBB31_16969; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end6970; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]6971; GFX90A-NEXT:    s_setpc_b64 s[30:31]6972;6973; GFX908-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:6974; GFX908:       ; %bb.0:6975; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6976; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v06977; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc6978; GFX908-NEXT:    v_and_b32_e32 v0, -4, v46979; GFX908-NEXT:    global_load_dword v3, v[0:1], off6980; GFX908-NEXT:    v_and_b32_e32 v4, 3, v46981; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 3, v46982; GFX908-NEXT:    s_mov_b32 s4, 0xffff6983; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v4, s46984; GFX908-NEXT:    v_not_b32_e32 v5, v56985; GFX908-NEXT:    s_mov_b64 s[4:5], 06986; GFX908-NEXT:    v_max_f16_e32 v6, v2, v26987; GFX908-NEXT:  .LBB31_1: ; %atomicrmw.start6988; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=16989; GFX908-NEXT:    s_waitcnt vmcnt(0)6990; GFX908-NEXT:    v_lshrrev_b32_e32 v2, v4, v36991; GFX908-NEXT:    v_max_f16_e32 v2, v2, v26992; GFX908-NEXT:    v_max_f16_e32 v2, v2, v66993; GFX908-NEXT:    v_lshlrev_b32_e32 v2, v4, v26994; GFX908-NEXT:    v_and_or_b32 v2, v3, v5, v26995; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc6996; GFX908-NEXT:    s_waitcnt vmcnt(0)6997; GFX908-NEXT:    buffer_wbinvl16998; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v36999; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7000; GFX908-NEXT:    v_mov_b32_e32 v3, v27001; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]7002; GFX908-NEXT:    s_cbranch_execnz .LBB31_17003; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end7004; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]7005; GFX908-NEXT:    s_setpc_b64 s[30:31]7006;7007; GFX8-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:7008; GFX8:       ; %bb.0:7009; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7010; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0xfffff800, v07011; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc7012; GFX8-NEXT:    v_and_b32_e32 v0, -4, v47013; GFX8-NEXT:    flat_load_dword v3, v[0:1]7014; GFX8-NEXT:    v_and_b32_e32 v4, 3, v47015; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 3, v47016; GFX8-NEXT:    s_mov_b32 s4, 0xffff7017; GFX8-NEXT:    v_lshlrev_b32_e64 v5, v4, s47018; GFX8-NEXT:    v_not_b32_e32 v5, v57019; GFX8-NEXT:    s_mov_b64 s[4:5], 07020; GFX8-NEXT:    v_max_f16_e32 v6, v2, v27021; GFX8-NEXT:  .LBB31_1: ; %atomicrmw.start7022; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=17023; GFX8-NEXT:    s_waitcnt vmcnt(0)7024; GFX8-NEXT:    v_lshrrev_b32_e32 v2, v4, v37025; GFX8-NEXT:    v_max_f16_e32 v2, v2, v27026; GFX8-NEXT:    v_max_f16_e32 v2, v2, v67027; GFX8-NEXT:    v_and_b32_e32 v7, v3, v57028; GFX8-NEXT:    v_lshlrev_b32_e32 v2, v4, v27029; GFX8-NEXT:    v_or_b32_e32 v2, v7, v27030; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc7031; GFX8-NEXT:    s_waitcnt vmcnt(0)7032; GFX8-NEXT:    buffer_wbinvl17033; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v37034; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7035; GFX8-NEXT:    v_mov_b32_e32 v3, v27036; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]7037; GFX8-NEXT:    s_cbranch_execnz .LBB31_17038; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end7039; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]7040; GFX8-NEXT:    s_setpc_b64 s[30:31]7041;7042; GFX7-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:7043; GFX7:       ; %bb.0:7044; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7045; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v07046; GFX7-NEXT:    s_mov_b32 s6, 07047; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc7048; GFX7-NEXT:    v_and_b32_e32 v0, -4, v47049; GFX7-NEXT:    s_mov_b32 s7, 0xf0007050; GFX7-NEXT:    s_mov_b32 s4, s67051; GFX7-NEXT:    s_mov_b32 s5, s67052; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr647053; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v27054; GFX7-NEXT:    v_and_b32_e32 v4, 3, v47055; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v47056; GFX7-NEXT:    s_mov_b64 s[8:9], 07057; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v27058; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v47059; GFX7-NEXT:    v_not_b32_e32 v6, v27060; GFX7-NEXT:  .LBB31_1: ; %atomicrmw.start7061; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=17062; GFX7-NEXT:    s_waitcnt vmcnt(0)7063; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v37064; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v27065; GFX7-NEXT:    v_and_b32_e32 v7, v3, v67066; GFX7-NEXT:    v_max_f32_e32 v2, v2, v57067; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v27068; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v27069; GFX7-NEXT:    v_or_b32_e32 v2, v7, v27070; GFX7-NEXT:    v_mov_b32_e32 v8, v37071; GFX7-NEXT:    v_mov_b32_e32 v7, v27072; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc7073; GFX7-NEXT:    s_waitcnt vmcnt(0)7074; GFX7-NEXT:    buffer_wbinvl17075; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v37076; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]7077; GFX7-NEXT:    v_mov_b32_e32 v3, v77078; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]7079; GFX7-NEXT:    s_cbranch_execnz .LBB31_17080; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end7081; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]7082; GFX7-NEXT:    s_setpc_b64 s[30:31]7083;7084; GFX6-LABEL: global_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:7085; GFX6:       ; %bb.0:7086; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7087; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v07088; GFX6-NEXT:    s_mov_b32 s6, 07089; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc7090; GFX6-NEXT:    v_and_b32_e32 v0, -4, v47091; GFX6-NEXT:    s_mov_b32 s7, 0xf0007092; GFX6-NEXT:    s_mov_b32 s4, s67093; GFX6-NEXT:    s_mov_b32 s5, s67094; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr647095; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v27096; GFX6-NEXT:    v_and_b32_e32 v4, 3, v47097; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 3, v47098; GFX6-NEXT:    s_mov_b64 s[8:9], 07099; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v27100; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v47101; GFX6-NEXT:    v_not_b32_e32 v6, v27102; GFX6-NEXT:  .LBB31_1: ; %atomicrmw.start7103; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=17104; GFX6-NEXT:    s_waitcnt vmcnt(0)7105; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v4, v37106; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v27107; GFX6-NEXT:    s_waitcnt expcnt(0)7108; GFX6-NEXT:    v_and_b32_e32 v7, v3, v67109; GFX6-NEXT:    v_max_f32_e32 v2, v2, v57110; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v27111; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v4, v27112; GFX6-NEXT:    v_or_b32_e32 v2, v7, v27113; GFX6-NEXT:    v_mov_b32_e32 v8, v37114; GFX6-NEXT:    v_mov_b32_e32 v7, v27115; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc7116; GFX6-NEXT:    s_waitcnt vmcnt(0)7117; GFX6-NEXT:    buffer_wbinvl17118; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v37119; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]7120; GFX6-NEXT:    v_mov_b32_e32 v3, v77121; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]7122; GFX6-NEXT:    s_cbranch_execnz .LBB31_17123; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end7124; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]7125; GFX6-NEXT:    s_waitcnt expcnt(0)7126; GFX6-NEXT:    s_setpc_b64 s[30:31]7127  %gep = getelementptr half, ptr addrspace(1) %ptr, i64 -10247128  %unused = atomicrmw fmax ptr addrspace(1) %gep, half %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !07129  ret void7130}7131 7132define half @global_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, half %val) #0 {7133; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:7134; GFX12-TRUE16:       ; %bb.0:7135; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x07136; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x07137; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x07138; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x07139; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x07140; GFX12-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:20467141; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v2.l, v2.l, v2.l7142; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 07143; GFX12-TRUE16-NEXT:  .LBB32_1: ; %atomicrmw.start7144; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17145; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07146; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v37147; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 07148; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7149; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v2.h, v4.l, v4.l7150; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v3.l, v2.h, v2.l7151; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7152; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v37153; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x07154; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV7155; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07156; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV7157; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47158; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7159; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07160; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7161; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07162; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB32_17163; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7164; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07165; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v3.l7166; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07167; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]7168;7169; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:7170; GFX12-FAKE16:       ; %bb.0:7171; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07172; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x07173; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x07174; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x07175; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x07176; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:20467177; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v27178; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 07179; GFX12-FAKE16-NEXT:  .LBB32_1: ; %atomicrmw.start7180; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17181; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07182; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v37183; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7184; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v3, v4, v47185; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v3, v3, v27186; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7187; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v37188; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v37189; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x07190; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV7191; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07192; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV7193; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47194; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7195; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s07196; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7197; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07198; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB32_17199; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7200; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07201; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v37202; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07203; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]7204;7205; GFX942-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:7206; GFX942:       ; %bb.0:7207; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7208; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:20467209; GFX942-NEXT:    s_mov_b64 s[0:1], 07210; GFX942-NEXT:    v_max_f16_e32 v4, v2, v27211; GFX942-NEXT:    s_mov_b32 s2, 0xffff00007212; GFX942-NEXT:  .LBB32_1: ; %atomicrmw.start7213; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=17214; GFX942-NEXT:    s_waitcnt vmcnt(0)7215; GFX942-NEXT:    v_max_f16_e32 v2, v3, v37216; GFX942-NEXT:    v_max_f16_e32 v2, v2, v47217; GFX942-NEXT:    v_and_or_b32 v2, v3, s2, v27218; GFX942-NEXT:    buffer_wbl2 sc17219; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2046 sc07220; GFX942-NEXT:    s_waitcnt vmcnt(0)7221; GFX942-NEXT:    buffer_inv sc17222; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v37223; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]7224; GFX942-NEXT:    v_mov_b32_e32 v3, v27225; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]7226; GFX942-NEXT:    s_cbranch_execnz .LBB32_17227; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end7228; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]7229; GFX942-NEXT:    v_mov_b32_e32 v0, v27230; GFX942-NEXT:    s_setpc_b64 s[30:31]7231;7232; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:7233; GFX11-TRUE16:       ; %bb.0:7234; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7235; GFX11-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:20467236; GFX11-TRUE16-NEXT:    v_max_f16_e32 v2.l, v2.l, v2.l7237; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 07238; GFX11-TRUE16-NEXT:  .LBB32_1: ; %atomicrmw.start7239; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17240; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)7241; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v37242; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 07243; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7244; GFX11-TRUE16-NEXT:    v_max_f16_e32 v2.h, v4.l, v4.l7245; GFX11-TRUE16-NEXT:    v_max_f16_e32 v3.l, v2.h, v2.l7246; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7247; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v37248; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x07249; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 glc7250; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)7251; GFX11-TRUE16-NEXT:    buffer_gl1_inv7252; GFX11-TRUE16-NEXT:    buffer_gl0_inv7253; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47254; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07255; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7256; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07257; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB32_17258; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7259; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07260; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v3.l7261; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]7262;7263; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:7264; GFX11-FAKE16:       ; %bb.0:7265; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7266; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:20467267; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v27268; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 07269; GFX11-FAKE16-NEXT:  .LBB32_1: ; %atomicrmw.start7270; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17271; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)7272; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v37273; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7274; GFX11-FAKE16-NEXT:    v_max_f16_e32 v3, v4, v47275; GFX11-FAKE16-NEXT:    v_max_f16_e32 v3, v3, v27276; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7277; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v37278; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v37279; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x07280; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 glc7281; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)7282; GFX11-FAKE16-NEXT:    buffer_gl1_inv7283; GFX11-FAKE16-NEXT:    buffer_gl0_inv7284; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47285; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s07286; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7287; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07288; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB32_17289; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7290; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07291; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v37292; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]7293;7294; GFX10-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:7295; GFX10:       ; %bb.0:7296; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7297; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:20467298; GFX10-NEXT:    v_max_f16_e32 v2, v2, v27299; GFX10-NEXT:    s_mov_b32 s4, 07300; GFX10-NEXT:  .LBB32_1: ; %atomicrmw.start7301; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=17302; GFX10-NEXT:    s_waitcnt vmcnt(0)7303; GFX10-NEXT:    v_mov_b32_e32 v4, v37304; GFX10-NEXT:    v_max_f16_e32 v3, v4, v47305; GFX10-NEXT:    v_max_f16_e32 v3, v3, v27306; GFX10-NEXT:    v_and_b32_e32 v3, 0xffff, v37307; GFX10-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v37308; GFX10-NEXT:    s_waitcnt_vscnt null, 0x07309; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2046 glc7310; GFX10-NEXT:    s_waitcnt vmcnt(0)7311; GFX10-NEXT:    buffer_gl1_inv7312; GFX10-NEXT:    buffer_gl0_inv7313; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47314; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s47315; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s47316; GFX10-NEXT:    s_cbranch_execnz .LBB32_17317; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end7318; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s47319; GFX10-NEXT:    v_mov_b32_e32 v0, v37320; GFX10-NEXT:    s_setpc_b64 s[30:31]7321;7322; GFX90A-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:7323; GFX90A:       ; %bb.0:7324; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7325; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:20467326; GFX90A-NEXT:    s_mov_b64 s[4:5], 07327; GFX90A-NEXT:    v_max_f16_e32 v4, v2, v27328; GFX90A-NEXT:    s_mov_b32 s6, 0xffff00007329; GFX90A-NEXT:  .LBB32_1: ; %atomicrmw.start7330; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=17331; GFX90A-NEXT:    s_waitcnt vmcnt(0)7332; GFX90A-NEXT:    v_max_f16_e32 v2, v3, v37333; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v47334; GFX90A-NEXT:    v_and_or_b32 v2, v3, s6, v27335; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2046 glc7336; GFX90A-NEXT:    s_waitcnt vmcnt(0)7337; GFX90A-NEXT:    buffer_wbinvl17338; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v37339; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7340; GFX90A-NEXT:    v_mov_b32_e32 v3, v27341; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]7342; GFX90A-NEXT:    s_cbranch_execnz .LBB32_17343; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end7344; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]7345; GFX90A-NEXT:    v_mov_b32_e32 v0, v27346; GFX90A-NEXT:    s_setpc_b64 s[30:31]7347;7348; GFX908-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:7349; GFX908:       ; %bb.0:7350; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7351; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:20467352; GFX908-NEXT:    s_mov_b64 s[4:5], 07353; GFX908-NEXT:    v_max_f16_e32 v2, v2, v27354; GFX908-NEXT:    s_mov_b32 s6, 0xffff00007355; GFX908-NEXT:  .LBB32_1: ; %atomicrmw.start7356; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=17357; GFX908-NEXT:    s_waitcnt vmcnt(0)7358; GFX908-NEXT:    v_mov_b32_e32 v4, v37359; GFX908-NEXT:    v_max_f16_e32 v3, v4, v47360; GFX908-NEXT:    v_max_f16_e32 v3, v3, v27361; GFX908-NEXT:    v_and_or_b32 v3, v4, s6, v37362; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2046 glc7363; GFX908-NEXT:    s_waitcnt vmcnt(0)7364; GFX908-NEXT:    buffer_wbinvl17365; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v47366; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7367; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]7368; GFX908-NEXT:    s_cbranch_execnz .LBB32_17369; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end7370; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]7371; GFX908-NEXT:    v_mov_b32_e32 v0, v37372; GFX908-NEXT:    s_setpc_b64 s[30:31]7373;7374; GFX8-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:7375; GFX8:       ; %bb.0:7376; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7377; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v07378; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc7379; GFX8-NEXT:    flat_load_dword v0, v[3:4]7380; GFX8-NEXT:    s_mov_b64 s[4:5], 07381; GFX8-NEXT:    v_max_f16_e32 v1, v2, v27382; GFX8-NEXT:  .LBB32_1: ; %atomicrmw.start7383; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=17384; GFX8-NEXT:    s_waitcnt vmcnt(0)7385; GFX8-NEXT:    v_mov_b32_e32 v6, v07386; GFX8-NEXT:    v_max_f16_e32 v0, v6, v67387; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v67388; GFX8-NEXT:    v_max_f16_e32 v0, v0, v17389; GFX8-NEXT:    v_or_b32_e32 v5, v2, v07390; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc7391; GFX8-NEXT:    s_waitcnt vmcnt(0)7392; GFX8-NEXT:    buffer_wbinvl17393; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v67394; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7395; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]7396; GFX8-NEXT:    s_cbranch_execnz .LBB32_17397; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end7398; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]7399; GFX8-NEXT:    s_setpc_b64 s[30:31]7400;7401; GFX7-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:7402; GFX7:       ; %bb.0:7403; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7404; GFX7-NEXT:    s_mov_b32 s6, 07405; GFX7-NEXT:    s_mov_b32 s7, 0xf0007406; GFX7-NEXT:    s_mov_b32 s4, s67407; GFX7-NEXT:    s_mov_b32 s5, s67408; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:20467409; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v27410; GFX7-NEXT:    s_mov_b64 s[8:9], 07411; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v27412; GFX7-NEXT:  .LBB32_1: ; %atomicrmw.start7413; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=17414; GFX7-NEXT:    s_waitcnt vmcnt(0)7415; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v37416; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v37417; GFX7-NEXT:    v_max_f32_e32 v2, v2, v67418; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v27419; GFX7-NEXT:    v_or_b32_e32 v2, v4, v27420; GFX7-NEXT:    v_mov_b32_e32 v5, v37421; GFX7-NEXT:    v_mov_b32_e32 v4, v27422; GFX7-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 offset:2046 glc7423; GFX7-NEXT:    s_waitcnt vmcnt(0)7424; GFX7-NEXT:    buffer_wbinvl17425; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v37426; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]7427; GFX7-NEXT:    v_mov_b32_e32 v3, v47428; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]7429; GFX7-NEXT:    s_cbranch_execnz .LBB32_17430; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end7431; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]7432; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v47433; GFX7-NEXT:    s_setpc_b64 s[30:31]7434;7435; GFX6-LABEL: global_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:7436; GFX6:       ; %bb.0:7437; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7438; GFX6-NEXT:    s_mov_b32 s6, 07439; GFX6-NEXT:    s_mov_b32 s7, 0xf0007440; GFX6-NEXT:    s_mov_b32 s4, s67441; GFX6-NEXT:    s_mov_b32 s5, s67442; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:20467443; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v27444; GFX6-NEXT:    s_mov_b64 s[8:9], 07445; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v27446; GFX6-NEXT:  .LBB32_1: ; %atomicrmw.start7447; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=17448; GFX6-NEXT:    s_waitcnt vmcnt(0)7449; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v37450; GFX6-NEXT:    s_waitcnt expcnt(0)7451; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v37452; GFX6-NEXT:    v_max_f32_e32 v2, v2, v67453; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v27454; GFX6-NEXT:    v_or_b32_e32 v2, v4, v27455; GFX6-NEXT:    v_mov_b32_e32 v5, v37456; GFX6-NEXT:    v_mov_b32_e32 v4, v27457; GFX6-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 offset:2046 glc7458; GFX6-NEXT:    s_waitcnt vmcnt(0)7459; GFX6-NEXT:    buffer_wbinvl17460; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v37461; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]7462; GFX6-NEXT:    v_mov_b32_e32 v3, v47463; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]7464; GFX6-NEXT:    s_cbranch_execnz .LBB32_17465; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end7466; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]7467; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v47468; GFX6-NEXT:    s_waitcnt expcnt(0)7469; GFX6-NEXT:    s_setpc_b64 s[30:31]7470  %gep = getelementptr half, ptr addrspace(1) %ptr, i64 10237471  %result = atomicrmw fmax ptr addrspace(1) %gep, half %val syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !07472  ret half %result7473}7474 7475define void @global_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, half %val) #0 {7476; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:7477; GFX12-TRUE16:       ; %bb.0:7478; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x07479; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x07480; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x07481; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x07482; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x07483; GFX12-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off offset:20467484; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v2.l, v2.l, v2.l7485; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 07486; GFX12-TRUE16-NEXT:  .LBB33_1: ; %atomicrmw.start7487; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17488; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07489; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v2.h, v4.l, v4.l7490; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 07491; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7492; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v3.l, v2.h, v2.l7493; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v37494; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x07495; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV7496; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07497; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV7498; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47499; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v37500; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7501; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07502; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7503; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07504; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB33_17505; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7506; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07507; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07508; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]7509;7510; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:7511; GFX12-FAKE16:       ; %bb.0:7512; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07513; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x07514; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x07515; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x07516; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x07517; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:20467518; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v4, v2, v27519; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 07520; GFX12-FAKE16-NEXT:  .LBB33_1: ; %atomicrmw.start7521; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17522; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07523; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v3, v37524; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7525; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v47526; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v27527; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7528; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v3, v27529; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x07530; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV7531; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07532; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV7533; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v37534; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v27535; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7536; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s07537; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7538; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07539; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB33_17540; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7541; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07542; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07543; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]7544;7545; GFX942-LABEL: global_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:7546; GFX942:       ; %bb.0:7547; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7548; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:20467549; GFX942-NEXT:    s_mov_b64 s[0:1], 07550; GFX942-NEXT:    v_max_f16_e32 v4, v2, v27551; GFX942-NEXT:    s_mov_b32 s2, 0xffff00007552; GFX942-NEXT:  .LBB33_1: ; %atomicrmw.start7553; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=17554; GFX942-NEXT:    s_waitcnt vmcnt(0)7555; GFX942-NEXT:    v_max_f16_e32 v2, v3, v37556; GFX942-NEXT:    v_max_f16_e32 v2, v2, v47557; GFX942-NEXT:    v_and_or_b32 v2, v3, s2, v27558; GFX942-NEXT:    buffer_wbl2 sc17559; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2046 sc07560; GFX942-NEXT:    s_waitcnt vmcnt(0)7561; GFX942-NEXT:    buffer_inv sc17562; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v37563; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]7564; GFX942-NEXT:    v_mov_b32_e32 v3, v27565; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]7566; GFX942-NEXT:    s_cbranch_execnz .LBB33_17567; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end7568; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]7569; GFX942-NEXT:    s_setpc_b64 s[30:31]7570;7571; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:7572; GFX11-TRUE16:       ; %bb.0:7573; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7574; GFX11-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off offset:20467575; GFX11-TRUE16-NEXT:    v_max_f16_e32 v2.l, v2.l, v2.l7576; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 07577; GFX11-TRUE16-NEXT:  .LBB33_1: ; %atomicrmw.start7578; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17579; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)7580; GFX11-TRUE16-NEXT:    v_max_f16_e32 v2.h, v4.l, v4.l7581; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 07582; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7583; GFX11-TRUE16-NEXT:    v_max_f16_e32 v3.l, v2.h, v2.l7584; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v37585; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x07586; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 glc7587; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)7588; GFX11-TRUE16-NEXT:    buffer_gl1_inv7589; GFX11-TRUE16-NEXT:    buffer_gl0_inv7590; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47591; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v37592; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07593; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7594; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07595; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB33_17596; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7597; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07598; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]7599;7600; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:7601; GFX11-FAKE16:       ; %bb.0:7602; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7603; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:20467604; GFX11-FAKE16-NEXT:    v_max_f16_e32 v4, v2, v27605; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 07606; GFX11-FAKE16-NEXT:  .LBB33_1: ; %atomicrmw.start7607; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17608; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)7609; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v3, v37610; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7611; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v47612; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v27613; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7614; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v3, v27615; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x07616; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2046 glc7617; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)7618; GFX11-FAKE16-NEXT:    buffer_gl1_inv7619; GFX11-FAKE16-NEXT:    buffer_gl0_inv7620; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v37621; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v27622; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s07623; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7624; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07625; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB33_17626; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7627; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07628; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]7629;7630; GFX10-LABEL: global_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:7631; GFX10:       ; %bb.0:7632; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7633; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:20467634; GFX10-NEXT:    v_max_f16_e32 v4, v2, v27635; GFX10-NEXT:    s_mov_b32 s4, 07636; GFX10-NEXT:  .LBB33_1: ; %atomicrmw.start7637; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=17638; GFX10-NEXT:    s_waitcnt vmcnt(0)7639; GFX10-NEXT:    v_max_f16_e32 v2, v3, v37640; GFX10-NEXT:    v_max_f16_e32 v2, v2, v47641; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff, v27642; GFX10-NEXT:    v_and_or_b32 v2, 0xffff0000, v3, v27643; GFX10-NEXT:    s_waitcnt_vscnt null, 0x07644; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2046 glc7645; GFX10-NEXT:    s_waitcnt vmcnt(0)7646; GFX10-NEXT:    buffer_gl1_inv7647; GFX10-NEXT:    buffer_gl0_inv7648; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v37649; GFX10-NEXT:    v_mov_b32_e32 v3, v27650; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s47651; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s47652; GFX10-NEXT:    s_cbranch_execnz .LBB33_17653; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end7654; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s47655; GFX10-NEXT:    s_setpc_b64 s[30:31]7656;7657; GFX90A-LABEL: global_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:7658; GFX90A:       ; %bb.0:7659; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7660; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:20467661; GFX90A-NEXT:    s_mov_b64 s[4:5], 07662; GFX90A-NEXT:    v_max_f16_e32 v4, v2, v27663; GFX90A-NEXT:    s_mov_b32 s6, 0xffff00007664; GFX90A-NEXT:  .LBB33_1: ; %atomicrmw.start7665; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=17666; GFX90A-NEXT:    s_waitcnt vmcnt(0)7667; GFX90A-NEXT:    v_max_f16_e32 v2, v3, v37668; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v47669; GFX90A-NEXT:    v_and_or_b32 v2, v3, s6, v27670; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2046 glc7671; GFX90A-NEXT:    s_waitcnt vmcnt(0)7672; GFX90A-NEXT:    buffer_wbinvl17673; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v37674; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7675; GFX90A-NEXT:    v_mov_b32_e32 v3, v27676; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]7677; GFX90A-NEXT:    s_cbranch_execnz .LBB33_17678; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end7679; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]7680; GFX90A-NEXT:    s_setpc_b64 s[30:31]7681;7682; GFX908-LABEL: global_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:7683; GFX908:       ; %bb.0:7684; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7685; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:20467686; GFX908-NEXT:    s_mov_b64 s[4:5], 07687; GFX908-NEXT:    v_max_f16_e32 v4, v2, v27688; GFX908-NEXT:    s_mov_b32 s6, 0xffff00007689; GFX908-NEXT:  .LBB33_1: ; %atomicrmw.start7690; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=17691; GFX908-NEXT:    s_waitcnt vmcnt(0)7692; GFX908-NEXT:    v_max_f16_e32 v2, v3, v37693; GFX908-NEXT:    v_max_f16_e32 v2, v2, v47694; GFX908-NEXT:    v_and_or_b32 v2, v3, s6, v27695; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2046 glc7696; GFX908-NEXT:    s_waitcnt vmcnt(0)7697; GFX908-NEXT:    buffer_wbinvl17698; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v37699; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7700; GFX908-NEXT:    v_mov_b32_e32 v3, v27701; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]7702; GFX908-NEXT:    s_cbranch_execnz .LBB33_17703; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end7704; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]7705; GFX908-NEXT:    s_setpc_b64 s[30:31]7706;7707; GFX8-LABEL: global_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:7708; GFX8:       ; %bb.0:7709; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7710; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fe, v07711; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc7712; GFX8-NEXT:    flat_load_dword v3, v[0:1]7713; GFX8-NEXT:    s_mov_b64 s[4:5], 07714; GFX8-NEXT:    v_max_f16_e32 v4, v2, v27715; GFX8-NEXT:  .LBB33_1: ; %atomicrmw.start7716; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=17717; GFX8-NEXT:    s_waitcnt vmcnt(0)7718; GFX8-NEXT:    v_max_f16_e32 v2, v3, v37719; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v37720; GFX8-NEXT:    v_max_f16_e32 v2, v2, v47721; GFX8-NEXT:    v_or_b32_e32 v2, v5, v27722; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc7723; GFX8-NEXT:    s_waitcnt vmcnt(0)7724; GFX8-NEXT:    buffer_wbinvl17725; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v37726; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7727; GFX8-NEXT:    v_mov_b32_e32 v3, v27728; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]7729; GFX8-NEXT:    s_cbranch_execnz .LBB33_17730; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end7731; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]7732; GFX8-NEXT:    s_setpc_b64 s[30:31]7733;7734; GFX7-LABEL: global_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:7735; GFX7:       ; %bb.0:7736; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7737; GFX7-NEXT:    s_mov_b32 s6, 07738; GFX7-NEXT:    s_mov_b32 s7, 0xf0007739; GFX7-NEXT:    s_mov_b32 s4, s67740; GFX7-NEXT:    s_mov_b32 s5, s67741; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:20467742; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v27743; GFX7-NEXT:    s_mov_b64 s[8:9], 07744; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v27745; GFX7-NEXT:  .LBB33_1: ; %atomicrmw.start7746; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=17747; GFX7-NEXT:    s_waitcnt vmcnt(0)7748; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v37749; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v37750; GFX7-NEXT:    v_max_f32_e32 v2, v2, v47751; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v27752; GFX7-NEXT:    v_or_b32_e32 v2, v5, v27753; GFX7-NEXT:    v_mov_b32_e32 v6, v37754; GFX7-NEXT:    v_mov_b32_e32 v5, v27755; GFX7-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 offset:2046 glc7756; GFX7-NEXT:    s_waitcnt vmcnt(0)7757; GFX7-NEXT:    buffer_wbinvl17758; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v37759; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]7760; GFX7-NEXT:    v_mov_b32_e32 v3, v57761; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]7762; GFX7-NEXT:    s_cbranch_execnz .LBB33_17763; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end7764; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]7765; GFX7-NEXT:    s_setpc_b64 s[30:31]7766;7767; GFX6-LABEL: global_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:7768; GFX6:       ; %bb.0:7769; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7770; GFX6-NEXT:    s_mov_b32 s6, 07771; GFX6-NEXT:    s_mov_b32 s7, 0xf0007772; GFX6-NEXT:    s_mov_b32 s4, s67773; GFX6-NEXT:    s_mov_b32 s5, s67774; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:20467775; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v27776; GFX6-NEXT:    s_mov_b64 s[8:9], 07777; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v27778; GFX6-NEXT:  .LBB33_1: ; %atomicrmw.start7779; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=17780; GFX6-NEXT:    s_waitcnt vmcnt(0)7781; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v37782; GFX6-NEXT:    s_waitcnt expcnt(0)7783; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v37784; GFX6-NEXT:    v_max_f32_e32 v2, v2, v47785; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v27786; GFX6-NEXT:    v_or_b32_e32 v2, v5, v27787; GFX6-NEXT:    v_mov_b32_e32 v6, v37788; GFX6-NEXT:    v_mov_b32_e32 v5, v27789; GFX6-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 offset:2046 glc7790; GFX6-NEXT:    s_waitcnt vmcnt(0)7791; GFX6-NEXT:    buffer_wbinvl17792; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v37793; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]7794; GFX6-NEXT:    v_mov_b32_e32 v3, v57795; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]7796; GFX6-NEXT:    s_cbranch_execnz .LBB33_17797; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end7798; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]7799; GFX6-NEXT:    s_waitcnt expcnt(0)7800; GFX6-NEXT:    s_setpc_b64 s[30:31]7801  %gep = getelementptr half, ptr addrspace(1) %ptr, i64 10237802  %unused = atomicrmw fmax ptr addrspace(1) %gep, half %val syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !07803  ret void7804}7805 7806define half @global_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, half %val) #0 {7807; GFX12-TRUE16-LABEL: global_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:7808; GFX12-TRUE16:       ; %bb.0:7809; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x07810; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x07811; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x07812; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x07813; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x07814; GFX12-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fe, v07815; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)7816; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, 0, v1, vcc_lo7817; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 07818; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v07819; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v07820; GFX12-TRUE16-NEXT:    global_load_b32 v5, v[3:4], off7821; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v07822; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l7823; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7824; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v6, v1, 0xffff7825; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l7826; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)7827; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v67828; GFX12-TRUE16-NEXT:  .LBB34_1: ; %atomicrmw.start7829; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17830; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07831; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v57832; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)7833; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v67834; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 07835; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.h, v5.l, v5.l7836; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7837; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v5.l, v0.h, v0.l7838; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v57839; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7840; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v57841; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS7842; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x07843; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[3:4], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_SYS7844; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07845; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS7846; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v67847; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7848; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07849; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7850; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07851; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB34_17852; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7853; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07854; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v57855; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07856; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]7857;7858; GFX12-FAKE16-LABEL: global_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:7859; GFX12-FAKE16:       ; %bb.0:7860; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07861; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x07862; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x07863; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x07864; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x07865; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v07866; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)7867; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo7868; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v27869; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)7870; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v37871; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v37872; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 07873; GFX12-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off7874; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v37875; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff7876; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7877; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v47878; GFX12-FAKE16-NEXT:  .LBB34_1: ; %atomicrmw.start7879; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17880; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07881; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v57882; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7883; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v67884; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v5, v5, v57885; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7886; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v5, v5, v27887; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v57888; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7889; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v57890; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v57891; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS7892; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x07893; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_SYS7894; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07895; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS7896; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v67897; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7898; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s07899; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7900; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07901; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB34_17902; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7903; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07904; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v57905; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07906; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]7907;7908; GFX942-LABEL: global_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:7909; GFX942:       ; %bb.0:7910; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7911; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe7912; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]7913; GFX942-NEXT:    v_and_b32_e32 v0, -4, v47914; GFX942-NEXT:    v_mov_b32_e32 v1, v57915; GFX942-NEXT:    global_load_dword v3, v[0:1], off7916; GFX942-NEXT:    v_and_b32_e32 v4, 3, v47917; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v47918; GFX942-NEXT:    s_mov_b32 s0, 0xffff7919; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s07920; GFX942-NEXT:    v_not_b32_e32 v5, v57921; GFX942-NEXT:    s_mov_b64 s[0:1], 07922; GFX942-NEXT:    v_max_f16_e32 v6, v2, v27923; GFX942-NEXT:  .LBB34_1: ; %atomicrmw.start7924; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=17925; GFX942-NEXT:    s_waitcnt vmcnt(0)7926; GFX942-NEXT:    v_lshrrev_b32_e32 v2, v4, v37927; GFX942-NEXT:    v_max_f16_e32 v2, v2, v27928; GFX942-NEXT:    v_max_f16_e32 v2, v2, v67929; GFX942-NEXT:    v_lshlrev_b32_e32 v2, v4, v27930; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v27931; GFX942-NEXT:    buffer_wbl2 sc0 sc17932; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc0 sc17933; GFX942-NEXT:    s_waitcnt vmcnt(0)7934; GFX942-NEXT:    buffer_inv sc0 sc17935; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v37936; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]7937; GFX942-NEXT:    v_mov_b32_e32 v3, v27938; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]7939; GFX942-NEXT:    s_cbranch_execnz .LBB34_17940; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end7941; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]7942; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v4, v27943; GFX942-NEXT:    s_setpc_b64 s[30:31]7944;7945; GFX11-TRUE16-LABEL: global_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:7946; GFX11-TRUE16:       ; %bb.0:7947; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7948; GFX11-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fe, v07949; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7950; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, 0, v1, vcc_lo7951; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 07952; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v07953; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v07954; GFX11-TRUE16-NEXT:    global_load_b32 v5, v[3:4], off7955; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v07956; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l7957; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7958; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v6, v1, 0xffff7959; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l7960; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)7961; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v67962; GFX11-TRUE16-NEXT:  .LBB34_1: ; %atomicrmw.start7963; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17964; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)7965; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v57966; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)7967; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v67968; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 07969; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.h, v5.l, v5.l7970; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7971; GFX11-TRUE16-NEXT:    v_max_f16_e32 v5.l, v0.h, v0.l7972; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v57973; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7974; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v57975; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x07976; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[3:4], v[5:6], off glc7977; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)7978; GFX11-TRUE16-NEXT:    buffer_gl1_inv7979; GFX11-TRUE16-NEXT:    buffer_gl0_inv7980; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v67981; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07982; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7983; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07984; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB34_17985; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7986; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07987; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v57988; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]7989;7990; GFX11-FAKE16-LABEL: global_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:7991; GFX11-FAKE16:       ; %bb.0:7992; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7993; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v07994; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)7995; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo7996; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v27997; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v37998; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v37999; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 08000; GFX11-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off8001; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v38002; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8003; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff8004; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v48005; GFX11-FAKE16-NEXT:  .LBB34_1: ; %atomicrmw.start8006; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18007; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)8008; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v58009; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8010; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v68011; GFX11-FAKE16-NEXT:    v_max_f16_e32 v5, v5, v58012; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8013; GFX11-FAKE16-NEXT:    v_max_f16_e32 v5, v5, v28014; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v58015; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8016; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v58017; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v58018; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x08019; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc8020; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)8021; GFX11-FAKE16-NEXT:    buffer_gl1_inv8022; GFX11-FAKE16-NEXT:    buffer_gl0_inv8023; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v68024; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08025; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8026; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08027; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB34_18028; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8029; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08030; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v58031; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]8032;8033; GFX10-LABEL: global_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:8034; GFX10:       ; %bb.0:8035; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8036; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v08037; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo8038; GFX10-NEXT:    v_max_f16_e32 v2, v2, v28039; GFX10-NEXT:    v_and_b32_e32 v0, -4, v38040; GFX10-NEXT:    v_and_b32_e32 v3, 3, v38041; GFX10-NEXT:    s_mov_b32 s4, 08042; GFX10-NEXT:    global_load_dword v5, v[0:1], off8043; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v38044; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff8045; GFX10-NEXT:    v_not_b32_e32 v4, v48046; GFX10-NEXT:  .LBB34_1: ; %atomicrmw.start8047; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=18048; GFX10-NEXT:    s_waitcnt vmcnt(0)8049; GFX10-NEXT:    v_mov_b32_e32 v6, v58050; GFX10-NEXT:    v_lshrrev_b32_e32 v5, v3, v68051; GFX10-NEXT:    v_max_f16_e32 v5, v5, v58052; GFX10-NEXT:    v_max_f16_e32 v5, v5, v28053; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_08054; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v58055; GFX10-NEXT:    s_waitcnt_vscnt null, 0x08056; GFX10-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc8057; GFX10-NEXT:    s_waitcnt vmcnt(0)8058; GFX10-NEXT:    buffer_gl1_inv8059; GFX10-NEXT:    buffer_gl0_inv8060; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v68061; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s48062; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s48063; GFX10-NEXT:    s_cbranch_execnz .LBB34_18064; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end8065; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s48066; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v58067; GFX10-NEXT:    s_setpc_b64 s[30:31]8068;8069; GFX90A-LABEL: global_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:8070; GFX90A:       ; %bb.0:8071; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8072; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v08073; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc8074; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v48075; GFX90A-NEXT:    global_load_dword v3, v[0:1], off8076; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v48077; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v48078; GFX90A-NEXT:    s_mov_b32 s4, 0xffff8079; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s48080; GFX90A-NEXT:    v_not_b32_e32 v5, v58081; GFX90A-NEXT:    s_mov_b64 s[4:5], 08082; GFX90A-NEXT:    v_max_f16_e32 v6, v2, v28083; GFX90A-NEXT:  .LBB34_1: ; %atomicrmw.start8084; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=18085; GFX90A-NEXT:    s_waitcnt vmcnt(0)8086; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, v4, v38087; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v28088; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v68089; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, v4, v28090; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v28091; GFX90A-NEXT:    buffer_wbl28092; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc8093; GFX90A-NEXT:    s_waitcnt vmcnt(0)8094; GFX90A-NEXT:    buffer_invl28095; GFX90A-NEXT:    buffer_wbinvl18096; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v38097; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8098; GFX90A-NEXT:    v_mov_b32_e32 v3, v28099; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]8100; GFX90A-NEXT:    s_cbranch_execnz .LBB34_18101; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end8102; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]8103; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v4, v28104; GFX90A-NEXT:    s_setpc_b64 s[30:31]8105;8106; GFX908-LABEL: global_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:8107; GFX908:       ; %bb.0:8108; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8109; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v08110; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc8111; GFX908-NEXT:    v_and_b32_e32 v0, -4, v38112; GFX908-NEXT:    global_load_dword v5, v[0:1], off8113; GFX908-NEXT:    v_and_b32_e32 v3, 3, v38114; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v38115; GFX908-NEXT:    s_mov_b32 s4, 0xffff8116; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s48117; GFX908-NEXT:    v_not_b32_e32 v4, v48118; GFX908-NEXT:    s_mov_b64 s[4:5], 08119; GFX908-NEXT:    v_max_f16_e32 v2, v2, v28120; GFX908-NEXT:  .LBB34_1: ; %atomicrmw.start8121; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=18122; GFX908-NEXT:    s_waitcnt vmcnt(0)8123; GFX908-NEXT:    v_mov_b32_e32 v6, v58124; GFX908-NEXT:    v_lshrrev_b32_e32 v5, v3, v68125; GFX908-NEXT:    v_max_f16_e32 v5, v5, v58126; GFX908-NEXT:    v_max_f16_e32 v5, v5, v28127; GFX908-NEXT:    v_lshlrev_b32_e32 v5, v3, v58128; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v58129; GFX908-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc8130; GFX908-NEXT:    s_waitcnt vmcnt(0)8131; GFX908-NEXT:    buffer_wbinvl18132; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v68133; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8134; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]8135; GFX908-NEXT:    s_cbranch_execnz .LBB34_18136; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end8137; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]8138; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v58139; GFX908-NEXT:    s_setpc_b64 s[30:31]8140;8141; GFX8-LABEL: global_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:8142; GFX8:       ; %bb.0:8143; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8144; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v08145; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc8146; GFX8-NEXT:    v_and_b32_e32 v0, -4, v38147; GFX8-NEXT:    flat_load_dword v5, v[0:1]8148; GFX8-NEXT:    v_and_b32_e32 v3, 3, v38149; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v38150; GFX8-NEXT:    s_mov_b32 s4, 0xffff8151; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s48152; GFX8-NEXT:    v_not_b32_e32 v4, v48153; GFX8-NEXT:    s_mov_b64 s[4:5], 08154; GFX8-NEXT:    v_max_f16_e32 v2, v2, v28155; GFX8-NEXT:  .LBB34_1: ; %atomicrmw.start8156; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=18157; GFX8-NEXT:    s_waitcnt vmcnt(0)8158; GFX8-NEXT:    v_mov_b32_e32 v6, v58159; GFX8-NEXT:    v_lshrrev_b32_e32 v5, v3, v68160; GFX8-NEXT:    v_max_f16_e32 v5, v5, v58161; GFX8-NEXT:    v_max_f16_e32 v5, v5, v28162; GFX8-NEXT:    v_and_b32_e32 v7, v6, v48163; GFX8-NEXT:    v_lshlrev_b32_e32 v5, v3, v58164; GFX8-NEXT:    v_or_b32_e32 v5, v7, v58165; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc8166; GFX8-NEXT:    s_waitcnt vmcnt(0)8167; GFX8-NEXT:    buffer_wbinvl18168; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v68169; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8170; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]8171; GFX8-NEXT:    s_cbranch_execnz .LBB34_18172; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end8173; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]8174; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v58175; GFX8-NEXT:    s_setpc_b64 s[30:31]8176;8177; GFX7-LABEL: global_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:8178; GFX7:       ; %bb.0:8179; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8180; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v08181; GFX7-NEXT:    s_mov_b32 s6, 08182; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc8183; GFX7-NEXT:    v_and_b32_e32 v0, -4, v48184; GFX7-NEXT:    s_mov_b32 s7, 0xf0008185; GFX7-NEXT:    s_mov_b32 s4, s68186; GFX7-NEXT:    s_mov_b32 s5, s68187; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr648188; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v28189; GFX7-NEXT:    v_and_b32_e32 v4, 3, v48190; GFX7-NEXT:    v_lshlrev_b32_e32 v6, 3, v48191; GFX7-NEXT:    s_mov_b64 s[8:9], 08192; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v28193; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v68194; GFX7-NEXT:    v_not_b32_e32 v8, v28195; GFX7-NEXT:  .LBB34_1: ; %atomicrmw.start8196; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=18197; GFX7-NEXT:    s_waitcnt vmcnt(0)8198; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v6, v38199; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v28200; GFX7-NEXT:    v_and_b32_e32 v4, v3, v88201; GFX7-NEXT:    v_max_f32_e32 v2, v2, v78202; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v28203; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v6, v28204; GFX7-NEXT:    v_or_b32_e32 v2, v4, v28205; GFX7-NEXT:    v_mov_b32_e32 v5, v38206; GFX7-NEXT:    v_mov_b32_e32 v4, v28207; GFX7-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc8208; GFX7-NEXT:    s_waitcnt vmcnt(0)8209; GFX7-NEXT:    buffer_wbinvl18210; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v38211; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]8212; GFX7-NEXT:    v_mov_b32_e32 v3, v48213; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]8214; GFX7-NEXT:    s_cbranch_execnz .LBB34_18215; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end8216; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]8217; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v6, v48218; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v08219; GFX7-NEXT:    s_setpc_b64 s[30:31]8220;8221; GFX6-LABEL: global_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:8222; GFX6:       ; %bb.0:8223; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8224; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v08225; GFX6-NEXT:    s_mov_b32 s6, 08226; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc8227; GFX6-NEXT:    v_and_b32_e32 v0, -4, v48228; GFX6-NEXT:    s_mov_b32 s7, 0xf0008229; GFX6-NEXT:    s_mov_b32 s4, s68230; GFX6-NEXT:    s_mov_b32 s5, s68231; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr648232; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v28233; GFX6-NEXT:    v_and_b32_e32 v4, 3, v48234; GFX6-NEXT:    v_lshlrev_b32_e32 v6, 3, v48235; GFX6-NEXT:    s_mov_b64 s[8:9], 08236; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v28237; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v68238; GFX6-NEXT:    v_not_b32_e32 v8, v28239; GFX6-NEXT:  .LBB34_1: ; %atomicrmw.start8240; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=18241; GFX6-NEXT:    s_waitcnt vmcnt(0)8242; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v6, v38243; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v28244; GFX6-NEXT:    s_waitcnt expcnt(0)8245; GFX6-NEXT:    v_and_b32_e32 v4, v3, v88246; GFX6-NEXT:    v_max_f32_e32 v2, v2, v78247; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v28248; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v6, v28249; GFX6-NEXT:    v_or_b32_e32 v2, v4, v28250; GFX6-NEXT:    v_mov_b32_e32 v5, v38251; GFX6-NEXT:    v_mov_b32_e32 v4, v28252; GFX6-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc8253; GFX6-NEXT:    s_waitcnt vmcnt(0)8254; GFX6-NEXT:    buffer_wbinvl18255; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v38256; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]8257; GFX6-NEXT:    v_mov_b32_e32 v3, v48258; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]8259; GFX6-NEXT:    s_cbranch_execnz .LBB34_18260; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end8261; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]8262; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v6, v48263; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v08264; GFX6-NEXT:    s_waitcnt expcnt(0)8265; GFX6-NEXT:    s_setpc_b64 s[30:31]8266  %gep = getelementptr half, ptr addrspace(1) %ptr, i64 10238267  %result = atomicrmw fmax ptr addrspace(1) %gep, half %val seq_cst, !amdgpu.no.fine.grained.memory !08268  ret half %result8269}8270 8271define void @global_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, half %val) #0 {8272; GFX12-TRUE16-LABEL: global_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:8273; GFX12-TRUE16:       ; %bb.0:8274; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08275; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x08276; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x08277; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x08278; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x08279; GFX12-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fe, v08280; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)8281; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, 0, v1, vcc_lo8282; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 08283; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v08284; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v08285; GFX12-TRUE16-NEXT:    global_load_b32 v6, v[3:4], off8286; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v08287; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l8288; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8289; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v5, v1, 0xffff8290; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l8291; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)8292; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v58293; GFX12-TRUE16-NEXT:  .LBB35_1: ; %atomicrmw.start8294; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18295; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08296; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v68297; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 08298; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8299; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.h, v5.l, v5.l8300; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v5.l, v0.h, v0.l8301; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8302; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v58303; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v58304; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS8305; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x08306; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[3:4], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_SYS8307; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08308; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS8309; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v68310; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v58311; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8312; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08313; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8314; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08315; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB35_18316; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8317; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08318; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08319; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]8320;8321; GFX12-FAKE16-LABEL: global_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:8322; GFX12-FAKE16:       ; %bb.0:8323; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08324; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x08325; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x08326; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x08327; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x08328; GFX12-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v08329; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)8330; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo8331; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v6, v2, v28332; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)8333; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v48334; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v48335; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 08336; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off8337; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v48338; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff8339; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8340; GFX12-FAKE16-NEXT:    v_not_b32_e32 v5, v58341; GFX12-FAKE16-NEXT:  .LBB35_1: ; %atomicrmw.start8342; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18343; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08344; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v38345; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8346; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v28347; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v68348; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8349; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v28350; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v28351; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8352; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v28353; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS8354; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x08355; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off th:TH_ATOMIC_RETURN scope:SCOPE_SYS8356; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08357; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS8358; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v38359; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v28360; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8361; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08362; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8363; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08364; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB35_18365; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8366; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08367; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08368; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]8369;8370; GFX942-LABEL: global_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:8371; GFX942:       ; %bb.0:8372; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8373; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe8374; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]8375; GFX942-NEXT:    v_and_b32_e32 v0, -4, v48376; GFX942-NEXT:    v_mov_b32_e32 v1, v58377; GFX942-NEXT:    global_load_dword v3, v[0:1], off8378; GFX942-NEXT:    v_and_b32_e32 v4, 3, v48379; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v48380; GFX942-NEXT:    s_mov_b32 s0, 0xffff8381; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s08382; GFX942-NEXT:    v_not_b32_e32 v5, v58383; GFX942-NEXT:    s_mov_b64 s[0:1], 08384; GFX942-NEXT:    v_max_f16_e32 v6, v2, v28385; GFX942-NEXT:  .LBB35_1: ; %atomicrmw.start8386; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=18387; GFX942-NEXT:    s_waitcnt vmcnt(0)8388; GFX942-NEXT:    v_lshrrev_b32_e32 v2, v4, v38389; GFX942-NEXT:    v_max_f16_e32 v2, v2, v28390; GFX942-NEXT:    v_max_f16_e32 v2, v2, v68391; GFX942-NEXT:    v_lshlrev_b32_e32 v2, v4, v28392; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v28393; GFX942-NEXT:    buffer_wbl2 sc0 sc18394; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc0 sc18395; GFX942-NEXT:    s_waitcnt vmcnt(0)8396; GFX942-NEXT:    buffer_inv sc0 sc18397; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v38398; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]8399; GFX942-NEXT:    v_mov_b32_e32 v3, v28400; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]8401; GFX942-NEXT:    s_cbranch_execnz .LBB35_18402; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end8403; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]8404; GFX942-NEXT:    s_setpc_b64 s[30:31]8405;8406; GFX11-TRUE16-LABEL: global_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:8407; GFX11-TRUE16:       ; %bb.0:8408; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8409; GFX11-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fe, v08410; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8411; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, 0, v1, vcc_lo8412; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 08413; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v08414; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v08415; GFX11-TRUE16-NEXT:    global_load_b32 v6, v[3:4], off8416; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v08417; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l8418; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8419; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v5, v1, 0xffff8420; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l8421; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)8422; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v58423; GFX11-TRUE16-NEXT:  .LBB35_1: ; %atomicrmw.start8424; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18425; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)8426; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v68427; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 08428; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8429; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.h, v5.l, v5.l8430; GFX11-TRUE16-NEXT:    v_max_f16_e32 v5.l, v0.h, v0.l8431; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8432; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v58433; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v58434; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x08435; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[3:4], v[5:6], off glc8436; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)8437; GFX11-TRUE16-NEXT:    buffer_gl1_inv8438; GFX11-TRUE16-NEXT:    buffer_gl0_inv8439; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v68440; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v58441; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08442; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8443; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08444; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB35_18445; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8446; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08447; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]8448;8449; GFX11-FAKE16-LABEL: global_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:8450; GFX11-FAKE16:       ; %bb.0:8451; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8452; GFX11-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v08453; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)8454; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo8455; GFX11-FAKE16-NEXT:    v_max_f16_e32 v6, v2, v28456; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v48457; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v48458; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 08459; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off8460; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v48461; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8462; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff8463; GFX11-FAKE16-NEXT:    v_not_b32_e32 v5, v58464; GFX11-FAKE16-NEXT:  .LBB35_1: ; %atomicrmw.start8465; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18466; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)8467; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v38468; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8469; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v28470; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v68471; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8472; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v28473; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v28474; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8475; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v28476; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x08477; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off glc8478; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)8479; GFX11-FAKE16-NEXT:    buffer_gl1_inv8480; GFX11-FAKE16-NEXT:    buffer_gl0_inv8481; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v38482; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v28483; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08484; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8485; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08486; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB35_18487; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8488; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08489; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]8490;8491; GFX10-LABEL: global_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:8492; GFX10:       ; %bb.0:8493; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8494; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v08495; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo8496; GFX10-NEXT:    v_max_f16_e32 v6, v2, v28497; GFX10-NEXT:    v_and_b32_e32 v0, -4, v48498; GFX10-NEXT:    v_and_b32_e32 v4, 3, v48499; GFX10-NEXT:    s_mov_b32 s4, 08500; GFX10-NEXT:    global_load_dword v3, v[0:1], off8501; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 3, v48502; GFX10-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff8503; GFX10-NEXT:    v_not_b32_e32 v5, v58504; GFX10-NEXT:  .LBB35_1: ; %atomicrmw.start8505; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=18506; GFX10-NEXT:    s_waitcnt vmcnt(0)8507; GFX10-NEXT:    v_lshrrev_b32_e32 v2, v4, v38508; GFX10-NEXT:    v_max_f16_e32 v2, v2, v28509; GFX10-NEXT:    v_max_f16_e32 v2, v2, v68510; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_08511; GFX10-NEXT:    v_and_or_b32 v2, v3, v5, v28512; GFX10-NEXT:    s_waitcnt_vscnt null, 0x08513; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc8514; GFX10-NEXT:    s_waitcnt vmcnt(0)8515; GFX10-NEXT:    buffer_gl1_inv8516; GFX10-NEXT:    buffer_gl0_inv8517; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v38518; GFX10-NEXT:    v_mov_b32_e32 v3, v28519; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s48520; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s48521; GFX10-NEXT:    s_cbranch_execnz .LBB35_18522; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end8523; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s48524; GFX10-NEXT:    s_setpc_b64 s[30:31]8525;8526; GFX90A-LABEL: global_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:8527; GFX90A:       ; %bb.0:8528; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8529; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v08530; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc8531; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v48532; GFX90A-NEXT:    global_load_dword v3, v[0:1], off8533; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v48534; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v48535; GFX90A-NEXT:    s_mov_b32 s4, 0xffff8536; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s48537; GFX90A-NEXT:    v_not_b32_e32 v5, v58538; GFX90A-NEXT:    s_mov_b64 s[4:5], 08539; GFX90A-NEXT:    v_max_f16_e32 v6, v2, v28540; GFX90A-NEXT:  .LBB35_1: ; %atomicrmw.start8541; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=18542; GFX90A-NEXT:    s_waitcnt vmcnt(0)8543; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, v4, v38544; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v28545; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v68546; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, v4, v28547; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v28548; GFX90A-NEXT:    buffer_wbl28549; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc8550; GFX90A-NEXT:    s_waitcnt vmcnt(0)8551; GFX90A-NEXT:    buffer_invl28552; GFX90A-NEXT:    buffer_wbinvl18553; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v38554; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8555; GFX90A-NEXT:    v_mov_b32_e32 v3, v28556; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]8557; GFX90A-NEXT:    s_cbranch_execnz .LBB35_18558; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end8559; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]8560; GFX90A-NEXT:    s_setpc_b64 s[30:31]8561;8562; GFX908-LABEL: global_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:8563; GFX908:       ; %bb.0:8564; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8565; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v08566; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc8567; GFX908-NEXT:    v_and_b32_e32 v0, -4, v48568; GFX908-NEXT:    global_load_dword v3, v[0:1], off8569; GFX908-NEXT:    v_and_b32_e32 v4, 3, v48570; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 3, v48571; GFX908-NEXT:    s_mov_b32 s4, 0xffff8572; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v4, s48573; GFX908-NEXT:    v_not_b32_e32 v5, v58574; GFX908-NEXT:    s_mov_b64 s[4:5], 08575; GFX908-NEXT:    v_max_f16_e32 v6, v2, v28576; GFX908-NEXT:  .LBB35_1: ; %atomicrmw.start8577; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=18578; GFX908-NEXT:    s_waitcnt vmcnt(0)8579; GFX908-NEXT:    v_lshrrev_b32_e32 v2, v4, v38580; GFX908-NEXT:    v_max_f16_e32 v2, v2, v28581; GFX908-NEXT:    v_max_f16_e32 v2, v2, v68582; GFX908-NEXT:    v_lshlrev_b32_e32 v2, v4, v28583; GFX908-NEXT:    v_and_or_b32 v2, v3, v5, v28584; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc8585; GFX908-NEXT:    s_waitcnt vmcnt(0)8586; GFX908-NEXT:    buffer_wbinvl18587; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v38588; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8589; GFX908-NEXT:    v_mov_b32_e32 v3, v28590; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]8591; GFX908-NEXT:    s_cbranch_execnz .LBB35_18592; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end8593; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]8594; GFX908-NEXT:    s_setpc_b64 s[30:31]8595;8596; GFX8-LABEL: global_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:8597; GFX8:       ; %bb.0:8598; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8599; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0x7fe, v08600; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc8601; GFX8-NEXT:    v_and_b32_e32 v0, -4, v48602; GFX8-NEXT:    flat_load_dword v3, v[0:1]8603; GFX8-NEXT:    v_and_b32_e32 v4, 3, v48604; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 3, v48605; GFX8-NEXT:    s_mov_b32 s4, 0xffff8606; GFX8-NEXT:    v_lshlrev_b32_e64 v5, v4, s48607; GFX8-NEXT:    v_not_b32_e32 v5, v58608; GFX8-NEXT:    s_mov_b64 s[4:5], 08609; GFX8-NEXT:    v_max_f16_e32 v6, v2, v28610; GFX8-NEXT:  .LBB35_1: ; %atomicrmw.start8611; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=18612; GFX8-NEXT:    s_waitcnt vmcnt(0)8613; GFX8-NEXT:    v_lshrrev_b32_e32 v2, v4, v38614; GFX8-NEXT:    v_max_f16_e32 v2, v2, v28615; GFX8-NEXT:    v_max_f16_e32 v2, v2, v68616; GFX8-NEXT:    v_and_b32_e32 v7, v3, v58617; GFX8-NEXT:    v_lshlrev_b32_e32 v2, v4, v28618; GFX8-NEXT:    v_or_b32_e32 v2, v7, v28619; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc8620; GFX8-NEXT:    s_waitcnt vmcnt(0)8621; GFX8-NEXT:    buffer_wbinvl18622; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v38623; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8624; GFX8-NEXT:    v_mov_b32_e32 v3, v28625; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]8626; GFX8-NEXT:    s_cbranch_execnz .LBB35_18627; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end8628; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]8629; GFX8-NEXT:    s_setpc_b64 s[30:31]8630;8631; GFX7-LABEL: global_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:8632; GFX7:       ; %bb.0:8633; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8634; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v08635; GFX7-NEXT:    s_mov_b32 s6, 08636; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc8637; GFX7-NEXT:    v_and_b32_e32 v0, -4, v48638; GFX7-NEXT:    s_mov_b32 s7, 0xf0008639; GFX7-NEXT:    s_mov_b32 s4, s68640; GFX7-NEXT:    s_mov_b32 s5, s68641; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr648642; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v28643; GFX7-NEXT:    v_and_b32_e32 v4, 3, v48644; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v48645; GFX7-NEXT:    s_mov_b64 s[8:9], 08646; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v28647; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v48648; GFX7-NEXT:    v_not_b32_e32 v6, v28649; GFX7-NEXT:  .LBB35_1: ; %atomicrmw.start8650; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=18651; GFX7-NEXT:    s_waitcnt vmcnt(0)8652; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v38653; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v28654; GFX7-NEXT:    v_and_b32_e32 v7, v3, v68655; GFX7-NEXT:    v_max_f32_e32 v2, v2, v58656; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v28657; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v28658; GFX7-NEXT:    v_or_b32_e32 v2, v7, v28659; GFX7-NEXT:    v_mov_b32_e32 v8, v38660; GFX7-NEXT:    v_mov_b32_e32 v7, v28661; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc8662; GFX7-NEXT:    s_waitcnt vmcnt(0)8663; GFX7-NEXT:    buffer_wbinvl18664; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v38665; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]8666; GFX7-NEXT:    v_mov_b32_e32 v3, v78667; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]8668; GFX7-NEXT:    s_cbranch_execnz .LBB35_18669; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end8670; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]8671; GFX7-NEXT:    s_setpc_b64 s[30:31]8672;8673; GFX6-LABEL: global_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:8674; GFX6:       ; %bb.0:8675; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8676; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v08677; GFX6-NEXT:    s_mov_b32 s6, 08678; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc8679; GFX6-NEXT:    v_and_b32_e32 v0, -4, v48680; GFX6-NEXT:    s_mov_b32 s7, 0xf0008681; GFX6-NEXT:    s_mov_b32 s4, s68682; GFX6-NEXT:    s_mov_b32 s5, s68683; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr648684; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v28685; GFX6-NEXT:    v_and_b32_e32 v4, 3, v48686; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 3, v48687; GFX6-NEXT:    s_mov_b64 s[8:9], 08688; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v28689; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v48690; GFX6-NEXT:    v_not_b32_e32 v6, v28691; GFX6-NEXT:  .LBB35_1: ; %atomicrmw.start8692; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=18693; GFX6-NEXT:    s_waitcnt vmcnt(0)8694; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v4, v38695; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v28696; GFX6-NEXT:    s_waitcnt expcnt(0)8697; GFX6-NEXT:    v_and_b32_e32 v7, v3, v68698; GFX6-NEXT:    v_max_f32_e32 v2, v2, v58699; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v28700; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v4, v28701; GFX6-NEXT:    v_or_b32_e32 v2, v7, v28702; GFX6-NEXT:    v_mov_b32_e32 v8, v38703; GFX6-NEXT:    v_mov_b32_e32 v7, v28704; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc8705; GFX6-NEXT:    s_waitcnt vmcnt(0)8706; GFX6-NEXT:    buffer_wbinvl18707; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v38708; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]8709; GFX6-NEXT:    v_mov_b32_e32 v3, v78710; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]8711; GFX6-NEXT:    s_cbranch_execnz .LBB35_18712; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end8713; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]8714; GFX6-NEXT:    s_waitcnt expcnt(0)8715; GFX6-NEXT:    s_setpc_b64 s[30:31]8716  %gep = getelementptr half, ptr addrspace(1) %ptr, i64 10238717  %unused = atomicrmw fmax ptr addrspace(1) %gep, half %val seq_cst, !amdgpu.no.fine.grained.memory !08718  ret void8719}8720 8721; --------------------------------------------------------------------8722; bfloat8723; --------------------------------------------------------------------8724 8725define bfloat @global_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, bfloat %val) #0 {8726; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory:8727; GFX12-TRUE16:       ; %bb.0:8728; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08729; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x08730; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x08731; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x08732; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x08733; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v08734; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 08735; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)8736; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v38737; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v38738; GFX12-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off8739; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v38740; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff8741; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8742; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v48743; GFX12-TRUE16-NEXT:  .LBB36_1: ; %atomicrmw.start8744; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18745; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08746; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v58747; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 08748; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l8749; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)8750; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v68751; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v58752; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)8753; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v5, v5, v78754; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l8755; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 18756; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v58757; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v58758; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)8759; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff8760; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)8761; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo8762; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8763; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h8764; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v78765; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8766; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v58767; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x08768; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV8769; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08770; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV8771; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v68772; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8773; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08774; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8775; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08776; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB36_18777; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8778; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08779; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v58780; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08781; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]8782;8783; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory:8784; GFX12-FAKE16:       ; %bb.0:8785; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08786; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x08787; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x08788; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x08789; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x08790; GFX12-FAKE16-NEXT:    v_dual_mov_b32 v3, v0 :: v_dual_lshlrev_b32 v2, 16, v28791; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 08792; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)8793; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v38794; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v38795; GFX12-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off8796; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v38797; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff8798; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8799; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v48800; GFX12-FAKE16-NEXT:  .LBB36_1: ; %atomicrmw.start8801; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18802; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08803; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v58804; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8805; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v68806; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v58807; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8808; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v5, v5, v28809; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 18810; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v58811; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v58812; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)8813; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff8814; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)8815; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo8816; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8817; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v58818; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v58819; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8820; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v58821; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x08822; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV8823; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08824; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV8825; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v68826; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8827; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08828; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8829; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08830; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB36_18831; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8832; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08833; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v58834; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08835; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]8836;8837; GFX942-LABEL: global_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory:8838; GFX942:       ; %bb.0:8839; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8840; GFX942-NEXT:    v_mov_b32_e32 v3, v08841; GFX942-NEXT:    v_and_b32_e32 v0, -4, v38842; GFX942-NEXT:    global_load_dword v5, v[0:1], off8843; GFX942-NEXT:    v_and_b32_e32 v3, 3, v38844; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v38845; GFX942-NEXT:    s_mov_b32 s0, 0xffff8846; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s08847; GFX942-NEXT:    v_not_b32_e32 v6, v48848; GFX942-NEXT:    s_mov_b64 s[0:1], 08849; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v28850; GFX942-NEXT:    s_movk_i32 s2, 0x7fff8851; GFX942-NEXT:  .LBB36_1: ; %atomicrmw.start8852; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=18853; GFX942-NEXT:    s_waitcnt vmcnt(0)8854; GFX942-NEXT:    v_lshrrev_b32_sdwa v4, v3, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD8855; GFX942-NEXT:    s_nop 08856; GFX942-NEXT:    v_max_f32_e32 v4, v4, v28857; GFX942-NEXT:    v_bfe_u32 v7, v4, 16, 18858; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v48859; GFX942-NEXT:    v_add3_u32 v7, v7, v4, s28860; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v4, v48861; GFX942-NEXT:    s_nop 18862; GFX942-NEXT:    v_cndmask_b32_e32 v4, v7, v8, vcc8863; GFX942-NEXT:    v_lshlrev_b32_sdwa v4, v3, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_18864; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v48865; GFX942-NEXT:    buffer_wbl2 sc18866; GFX942-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off sc08867; GFX942-NEXT:    s_waitcnt vmcnt(0)8868; GFX942-NEXT:    buffer_inv sc18869; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v58870; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]8871; GFX942-NEXT:    v_mov_b32_e32 v5, v48872; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]8873; GFX942-NEXT:    s_cbranch_execnz .LBB36_18874; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end8875; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]8876; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v3, v48877; GFX942-NEXT:    s_setpc_b64 s[30:31]8878;8879; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory:8880; GFX11-TRUE16:       ; %bb.0:8881; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8882; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v08883; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 08884; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)8885; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v38886; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v38887; GFX11-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off8888; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v38889; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff8890; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8891; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v48892; GFX11-TRUE16-NEXT:    .p2align 68893; GFX11-TRUE16-NEXT:  .LBB36_1: ; %atomicrmw.start8894; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18895; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)8896; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v58897; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 08898; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l8899; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)8900; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v68901; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v58902; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)8903; GFX11-TRUE16-NEXT:    v_max_f32_e32 v5, v5, v78904; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l8905; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 18906; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v58907; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v58908; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)8909; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff8910; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo8911; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8912; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h8913; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v78914; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8915; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v58916; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x08917; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc8918; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)8919; GFX11-TRUE16-NEXT:    buffer_gl1_inv8920; GFX11-TRUE16-NEXT:    buffer_gl0_inv8921; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v68922; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08923; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8924; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08925; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB36_18926; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8927; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08928; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v58929; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]8930;8931; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory:8932; GFX11-FAKE16:       ; %bb.0:8933; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8934; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v3, v0 :: v_dual_lshlrev_b32 v2, 16, v28935; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 08936; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)8937; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v38938; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v38939; GFX11-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off8940; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v38941; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff8942; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8943; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v48944; GFX11-FAKE16-NEXT:    .p2align 68945; GFX11-FAKE16-NEXT:  .LBB36_1: ; %atomicrmw.start8946; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18947; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)8948; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v58949; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8950; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v68951; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v58952; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8953; GFX11-FAKE16-NEXT:    v_max_f32_e32 v5, v5, v28954; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 18955; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v58956; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v58957; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)8958; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff8959; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo8960; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8961; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v58962; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v58963; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8964; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v58965; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x08966; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc8967; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)8968; GFX11-FAKE16-NEXT:    buffer_gl1_inv8969; GFX11-FAKE16-NEXT:    buffer_gl0_inv8970; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v68971; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08972; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8973; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08974; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB36_18975; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8976; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08977; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v58978; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]8979;8980; GFX10-LABEL: global_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory:8981; GFX10:       ; %bb.0:8982; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8983; GFX10-NEXT:    v_mov_b32_e32 v3, v08984; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v28985; GFX10-NEXT:    s_mov_b32 s4, 08986; GFX10-NEXT:    v_and_b32_e32 v0, -4, v38987; GFX10-NEXT:    v_and_b32_e32 v3, 3, v38988; GFX10-NEXT:    global_load_dword v5, v[0:1], off8989; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v38990; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff8991; GFX10-NEXT:    v_not_b32_e32 v4, v48992; GFX10-NEXT:  .LBB36_1: ; %atomicrmw.start8993; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=18994; GFX10-NEXT:    s_waitcnt vmcnt(0)8995; GFX10-NEXT:    v_mov_b32_e32 v6, v58996; GFX10-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD8997; GFX10-NEXT:    v_max_f32_e32 v5, v5, v28998; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 18999; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v59000; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59001; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff9002; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo9003; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19004; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v59005; GFX10-NEXT:    s_waitcnt_vscnt null, 0x09006; GFX10-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc9007; GFX10-NEXT:    s_waitcnt vmcnt(0)9008; GFX10-NEXT:    buffer_gl1_inv9009; GFX10-NEXT:    buffer_gl0_inv9010; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69011; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s49012; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s49013; GFX10-NEXT:    s_cbranch_execnz .LBB36_19014; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end9015; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s49016; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v59017; GFX10-NEXT:    s_setpc_b64 s[30:31]9018;9019; GFX90A-LABEL: global_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory:9020; GFX90A:       ; %bb.0:9021; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9022; GFX90A-NEXT:    v_mov_b32_e32 v3, v09023; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v39024; GFX90A-NEXT:    global_load_dword v5, v[0:1], off9025; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v39026; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v39027; GFX90A-NEXT:    s_mov_b32 s4, 0xffff9028; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s49029; GFX90A-NEXT:    v_not_b32_e32 v6, v49030; GFX90A-NEXT:    s_mov_b64 s[4:5], 09031; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v29032; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff9033; GFX90A-NEXT:  .LBB36_1: ; %atomicrmw.start9034; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=19035; GFX90A-NEXT:    s_waitcnt vmcnt(0)9036; GFX90A-NEXT:    v_lshrrev_b32_sdwa v4, v3, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9037; GFX90A-NEXT:    v_max_f32_e32 v4, v4, v29038; GFX90A-NEXT:    v_bfe_u32 v7, v4, 16, 19039; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v49040; GFX90A-NEXT:    v_add3_u32 v7, v7, v4, s69041; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v4, v49042; GFX90A-NEXT:    v_cndmask_b32_e32 v4, v7, v8, vcc9043; GFX90A-NEXT:    v_lshlrev_b32_sdwa v4, v3, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19044; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v49045; GFX90A-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off glc9046; GFX90A-NEXT:    s_waitcnt vmcnt(0)9047; GFX90A-NEXT:    buffer_wbinvl19048; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v59049; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9050; GFX90A-NEXT:    v_mov_b32_e32 v5, v49051; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]9052; GFX90A-NEXT:    s_cbranch_execnz .LBB36_19053; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end9054; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]9055; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v3, v49056; GFX90A-NEXT:    s_setpc_b64 s[30:31]9057;9058; GFX908-LABEL: global_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory:9059; GFX908:       ; %bb.0:9060; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9061; GFX908-NEXT:    v_mov_b32_e32 v3, v09062; GFX908-NEXT:    v_and_b32_e32 v0, -4, v39063; GFX908-NEXT:    global_load_dword v5, v[0:1], off9064; GFX908-NEXT:    v_and_b32_e32 v3, 3, v39065; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v39066; GFX908-NEXT:    s_mov_b32 s4, 0xffff9067; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s49068; GFX908-NEXT:    v_not_b32_e32 v4, v49069; GFX908-NEXT:    s_mov_b64 s[4:5], 09070; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v29071; GFX908-NEXT:    s_movk_i32 s6, 0x7fff9072; GFX908-NEXT:  .LBB36_1: ; %atomicrmw.start9073; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=19074; GFX908-NEXT:    s_waitcnt vmcnt(0)9075; GFX908-NEXT:    v_mov_b32_e32 v6, v59076; GFX908-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9077; GFX908-NEXT:    v_max_f32_e32 v5, v5, v29078; GFX908-NEXT:    v_bfe_u32 v7, v5, 16, 19079; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v59080; GFX908-NEXT:    v_add3_u32 v7, v7, v5, s69081; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v59082; GFX908-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc9083; GFX908-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19084; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v59085; GFX908-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc9086; GFX908-NEXT:    s_waitcnt vmcnt(0)9087; GFX908-NEXT:    buffer_wbinvl19088; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v69089; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9090; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]9091; GFX908-NEXT:    s_cbranch_execnz .LBB36_19092; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end9093; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]9094; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v59095; GFX908-NEXT:    s_setpc_b64 s[30:31]9096;9097; GFX8-LABEL: global_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory:9098; GFX8:       ; %bb.0:9099; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9100; GFX8-NEXT:    v_mov_b32_e32 v3, v09101; GFX8-NEXT:    v_and_b32_e32 v0, -4, v39102; GFX8-NEXT:    flat_load_dword v5, v[0:1]9103; GFX8-NEXT:    v_and_b32_e32 v3, 3, v39104; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v39105; GFX8-NEXT:    s_mov_b32 s4, 0xffff9106; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s49107; GFX8-NEXT:    v_not_b32_e32 v4, v49108; GFX8-NEXT:    s_mov_b64 s[4:5], 09109; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v29110; GFX8-NEXT:  .LBB36_1: ; %atomicrmw.start9111; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=19112; GFX8-NEXT:    s_waitcnt vmcnt(0)9113; GFX8-NEXT:    v_mov_b32_e32 v6, v59114; GFX8-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9115; GFX8-NEXT:    v_max_f32_e32 v5, v5, v29116; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 19117; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v59118; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v89119; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v59120; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v59121; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc9122; GFX8-NEXT:    v_and_b32_e32 v7, v6, v49123; GFX8-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19124; GFX8-NEXT:    v_or_b32_e32 v5, v7, v59125; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc9126; GFX8-NEXT:    s_waitcnt vmcnt(0)9127; GFX8-NEXT:    buffer_wbinvl19128; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v69129; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9130; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]9131; GFX8-NEXT:    s_cbranch_execnz .LBB36_19132; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end9133; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]9134; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v59135; GFX8-NEXT:    s_setpc_b64 s[30:31]9136;9137; GFX7-LABEL: global_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory:9138; GFX7:       ; %bb.0:9139; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9140; GFX7-NEXT:    v_mov_b32_e32 v3, v09141; GFX7-NEXT:    s_mov_b32 s6, 09142; GFX7-NEXT:    v_and_b32_e32 v0, -4, v39143; GFX7-NEXT:    s_mov_b32 s7, 0xf0009144; GFX7-NEXT:    s_mov_b32 s4, s69145; GFX7-NEXT:    s_mov_b32 s5, s69146; GFX7-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr649147; GFX7-NEXT:    v_and_b32_e32 v3, 3, v39148; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 3, v39149; GFX7-NEXT:    v_lshl_b32_e32 v3, 0xffff, v59150; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v29151; GFX7-NEXT:    v_not_b32_e32 v6, v39152; GFX7-NEXT:    s_mov_b64 s[8:9], 09153; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v29154; GFX7-NEXT:  .LBB36_1: ; %atomicrmw.start9155; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=19156; GFX7-NEXT:    s_waitcnt vmcnt(0)9157; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v5, v49158; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v29159; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v29160; GFX7-NEXT:    v_max_f32_e32 v2, v2, v79161; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v29162; GFX7-NEXT:    v_and_b32_e32 v3, v4, v69163; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v5, v29164; GFX7-NEXT:    v_or_b32_e32 v3, v3, v29165; GFX7-NEXT:    v_mov_b32_e32 v2, v39166; GFX7-NEXT:    v_mov_b32_e32 v3, v49167; GFX7-NEXT:    buffer_atomic_cmpswap v[2:3], v[0:1], s[4:7], 0 addr64 glc9168; GFX7-NEXT:    s_waitcnt vmcnt(0)9169; GFX7-NEXT:    buffer_wbinvl19170; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v49171; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]9172; GFX7-NEXT:    v_mov_b32_e32 v4, v29173; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]9174; GFX7-NEXT:    s_cbranch_execnz .LBB36_19175; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end9176; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]9177; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v5, v29178; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v09179; GFX7-NEXT:    s_setpc_b64 s[30:31]9180;9181; GFX6-LABEL: global_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory:9182; GFX6:       ; %bb.0:9183; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9184; GFX6-NEXT:    v_mov_b32_e32 v3, v09185; GFX6-NEXT:    s_mov_b32 s6, 09186; GFX6-NEXT:    v_and_b32_e32 v0, -4, v39187; GFX6-NEXT:    s_mov_b32 s7, 0xf0009188; GFX6-NEXT:    s_mov_b32 s4, s69189; GFX6-NEXT:    s_mov_b32 s5, s69190; GFX6-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr649191; GFX6-NEXT:    v_and_b32_e32 v3, 3, v39192; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 3, v39193; GFX6-NEXT:    v_lshl_b32_e32 v3, 0xffff, v59194; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v29195; GFX6-NEXT:    v_not_b32_e32 v6, v39196; GFX6-NEXT:    s_mov_b64 s[8:9], 09197; GFX6-NEXT:    v_and_b32_e32 v7, 0xffff0000, v29198; GFX6-NEXT:  .LBB36_1: ; %atomicrmw.start9199; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=19200; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0)9201; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v5, v49202; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v29203; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v29204; GFX6-NEXT:    v_max_f32_e32 v2, v2, v79205; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v29206; GFX6-NEXT:    v_and_b32_e32 v3, v4, v69207; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v5, v29208; GFX6-NEXT:    v_or_b32_e32 v3, v3, v29209; GFX6-NEXT:    v_mov_b32_e32 v2, v39210; GFX6-NEXT:    v_mov_b32_e32 v3, v49211; GFX6-NEXT:    buffer_atomic_cmpswap v[2:3], v[0:1], s[4:7], 0 addr64 glc9212; GFX6-NEXT:    s_waitcnt vmcnt(0)9213; GFX6-NEXT:    buffer_wbinvl19214; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v49215; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]9216; GFX6-NEXT:    v_mov_b32_e32 v4, v29217; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]9218; GFX6-NEXT:    s_cbranch_execnz .LBB36_19219; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end9220; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]9221; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v5, v29222; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v09223; GFX6-NEXT:    s_waitcnt expcnt(0)9224; GFX6-NEXT:    s_setpc_b64 s[30:31]9225  %result = atomicrmw fmax ptr addrspace(1) %ptr, bfloat %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !09226  ret bfloat %result9227}9228 9229define bfloat @global_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, bfloat %val) #0 {9230; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:9231; GFX12-TRUE16:       ; %bb.0:9232; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09233; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x09234; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x09235; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x09236; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x09237; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v09238; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)9239; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo9240; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 09241; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v39242; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v39243; GFX12-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off9244; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39245; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9246; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9247; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v49248; GFX12-TRUE16-NEXT:  .LBB37_1: ; %atomicrmw.start9249; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19250; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x09251; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v59252; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 09253; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l9254; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9255; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69256; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59257; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)9258; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v5, v5, v79259; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l9260; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 19261; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v59262; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59263; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)9264; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff9265; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)9266; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo9267; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9268; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h9269; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v79270; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9271; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v59272; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x09273; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV9274; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x09275; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV9276; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69277; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9278; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s09279; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9280; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09281; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB37_19282; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end9283; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09284; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59285; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x09286; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]9287;9288; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:9289; GFX12-FAKE16:       ; %bb.0:9290; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09291; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x09292; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x09293; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x09294; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x09295; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v09296; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)9297; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo9298; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v29299; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)9300; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v39301; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v39302; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 09303; GFX12-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off9304; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39305; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9306; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9307; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v49308; GFX12-FAKE16-NEXT:  .LBB37_1: ; %atomicrmw.start9309; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19310; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x09311; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v59312; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9313; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69314; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59315; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9316; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v5, v5, v29317; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 19318; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v59319; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59320; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)9321; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff9322; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)9323; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo9324; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9325; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v59326; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v59327; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9328; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v59329; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x09330; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV9331; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x09332; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV9333; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69334; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9335; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s09336; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9337; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09338; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB37_19339; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end9340; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09341; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59342; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x09343; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]9344;9345; GFX942-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:9346; GFX942:       ; %bb.0:9347; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9348; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe9349; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]9350; GFX942-NEXT:    v_and_b32_e32 v0, -4, v49351; GFX942-NEXT:    v_mov_b32_e32 v1, v59352; GFX942-NEXT:    global_load_dword v3, v[0:1], off9353; GFX942-NEXT:    v_and_b32_e32 v4, 3, v49354; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v49355; GFX942-NEXT:    s_mov_b32 s0, 0xffff9356; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s09357; GFX942-NEXT:    v_not_b32_e32 v5, v59358; GFX942-NEXT:    s_mov_b64 s[0:1], 09359; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v29360; GFX942-NEXT:    s_movk_i32 s2, 0x7fff9361; GFX942-NEXT:  .LBB37_1: ; %atomicrmw.start9362; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=19363; GFX942-NEXT:    s_waitcnt vmcnt(0)9364; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9365; GFX942-NEXT:    s_nop 09366; GFX942-NEXT:    v_max_f32_e32 v2, v2, v69367; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 19368; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v29369; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s29370; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v29371; GFX942-NEXT:    s_nop 19372; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc9373; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19374; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v29375; GFX942-NEXT:    buffer_wbl2 sc19376; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc09377; GFX942-NEXT:    s_waitcnt vmcnt(0)9378; GFX942-NEXT:    buffer_inv sc19379; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v39380; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]9381; GFX942-NEXT:    v_mov_b32_e32 v3, v29382; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]9383; GFX942-NEXT:    s_cbranch_execnz .LBB37_19384; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end9385; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]9386; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v4, v29387; GFX942-NEXT:    s_setpc_b64 s[30:31]9388;9389; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:9390; GFX11-TRUE16:       ; %bb.0:9391; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9392; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v09393; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9394; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo9395; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 09396; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v39397; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v39398; GFX11-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off9399; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39400; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9401; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9402; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v49403; GFX11-TRUE16-NEXT:    .p2align 69404; GFX11-TRUE16-NEXT:  .LBB37_1: ; %atomicrmw.start9405; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19406; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)9407; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v59408; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 09409; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l9410; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9411; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69412; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59413; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)9414; GFX11-TRUE16-NEXT:    v_max_f32_e32 v5, v5, v79415; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l9416; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 19417; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v59418; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59419; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9420; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff9421; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo9422; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9423; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h9424; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v79425; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9426; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v59427; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x09428; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc9429; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)9430; GFX11-TRUE16-NEXT:    buffer_gl1_inv9431; GFX11-TRUE16-NEXT:    buffer_gl0_inv9432; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69433; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s09434; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9435; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09436; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB37_19437; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end9438; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09439; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59440; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]9441;9442; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:9443; GFX11-FAKE16:       ; %bb.0:9444; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9445; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v09446; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)9447; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo9448; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v29449; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v39450; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v39451; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 09452; GFX11-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off9453; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39454; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9455; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9456; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v49457; GFX11-FAKE16-NEXT:    .p2align 69458; GFX11-FAKE16-NEXT:  .LBB37_1: ; %atomicrmw.start9459; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19460; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)9461; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v59462; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9463; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69464; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59465; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9466; GFX11-FAKE16-NEXT:    v_max_f32_e32 v5, v5, v29467; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 19468; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v59469; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59470; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9471; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff9472; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo9473; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9474; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v59475; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v59476; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9477; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v59478; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x09479; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc9480; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)9481; GFX11-FAKE16-NEXT:    buffer_gl1_inv9482; GFX11-FAKE16-NEXT:    buffer_gl0_inv9483; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69484; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s09485; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9486; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09487; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB37_19488; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end9489; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09490; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59491; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]9492;9493; GFX10-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:9494; GFX10:       ; %bb.0:9495; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9496; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v09497; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo9498; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v29499; GFX10-NEXT:    v_and_b32_e32 v0, -4, v39500; GFX10-NEXT:    v_and_b32_e32 v3, 3, v39501; GFX10-NEXT:    s_mov_b32 s4, 09502; GFX10-NEXT:    global_load_dword v5, v[0:1], off9503; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v39504; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9505; GFX10-NEXT:    v_not_b32_e32 v4, v49506; GFX10-NEXT:  .LBB37_1: ; %atomicrmw.start9507; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=19508; GFX10-NEXT:    s_waitcnt vmcnt(0)9509; GFX10-NEXT:    v_mov_b32_e32 v6, v59510; GFX10-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9511; GFX10-NEXT:    v_max_f32_e32 v5, v5, v29512; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 19513; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v59514; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59515; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff9516; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo9517; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19518; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v59519; GFX10-NEXT:    s_waitcnt_vscnt null, 0x09520; GFX10-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc9521; GFX10-NEXT:    s_waitcnt vmcnt(0)9522; GFX10-NEXT:    buffer_gl1_inv9523; GFX10-NEXT:    buffer_gl0_inv9524; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69525; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s49526; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s49527; GFX10-NEXT:    s_cbranch_execnz .LBB37_19528; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end9529; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s49530; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v59531; GFX10-NEXT:    s_setpc_b64 s[30:31]9532;9533; GFX90A-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:9534; GFX90A:       ; %bb.0:9535; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9536; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v09537; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc9538; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v49539; GFX90A-NEXT:    global_load_dword v3, v[0:1], off9540; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v49541; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v49542; GFX90A-NEXT:    s_mov_b32 s4, 0xffff9543; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s49544; GFX90A-NEXT:    v_not_b32_e32 v5, v59545; GFX90A-NEXT:    s_mov_b64 s[4:5], 09546; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v29547; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff9548; GFX90A-NEXT:  .LBB37_1: ; %atomicrmw.start9549; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=19550; GFX90A-NEXT:    s_waitcnt vmcnt(0)9551; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9552; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v69553; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 19554; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v29555; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s69556; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v29557; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc9558; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19559; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v29560; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc9561; GFX90A-NEXT:    s_waitcnt vmcnt(0)9562; GFX90A-NEXT:    buffer_wbinvl19563; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v39564; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9565; GFX90A-NEXT:    v_mov_b32_e32 v3, v29566; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]9567; GFX90A-NEXT:    s_cbranch_execnz .LBB37_19568; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end9569; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]9570; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v4, v29571; GFX90A-NEXT:    s_setpc_b64 s[30:31]9572;9573; GFX908-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:9574; GFX908:       ; %bb.0:9575; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9576; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v09577; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc9578; GFX908-NEXT:    v_and_b32_e32 v0, -4, v39579; GFX908-NEXT:    global_load_dword v5, v[0:1], off9580; GFX908-NEXT:    v_and_b32_e32 v3, 3, v39581; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v39582; GFX908-NEXT:    s_mov_b32 s4, 0xffff9583; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s49584; GFX908-NEXT:    v_not_b32_e32 v4, v49585; GFX908-NEXT:    s_mov_b64 s[4:5], 09586; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v29587; GFX908-NEXT:    s_movk_i32 s6, 0x7fff9588; GFX908-NEXT:  .LBB37_1: ; %atomicrmw.start9589; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=19590; GFX908-NEXT:    s_waitcnt vmcnt(0)9591; GFX908-NEXT:    v_mov_b32_e32 v6, v59592; GFX908-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9593; GFX908-NEXT:    v_max_f32_e32 v5, v5, v29594; GFX908-NEXT:    v_bfe_u32 v7, v5, 16, 19595; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v59596; GFX908-NEXT:    v_add3_u32 v7, v7, v5, s69597; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v59598; GFX908-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc9599; GFX908-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19600; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v59601; GFX908-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc9602; GFX908-NEXT:    s_waitcnt vmcnt(0)9603; GFX908-NEXT:    buffer_wbinvl19604; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v69605; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9606; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]9607; GFX908-NEXT:    s_cbranch_execnz .LBB37_19608; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end9609; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]9610; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v59611; GFX908-NEXT:    s_setpc_b64 s[30:31]9612;9613; GFX8-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:9614; GFX8:       ; %bb.0:9615; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9616; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v09617; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc9618; GFX8-NEXT:    v_and_b32_e32 v0, -4, v39619; GFX8-NEXT:    flat_load_dword v5, v[0:1]9620; GFX8-NEXT:    v_and_b32_e32 v3, 3, v39621; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v39622; GFX8-NEXT:    s_mov_b32 s4, 0xffff9623; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s49624; GFX8-NEXT:    v_not_b32_e32 v4, v49625; GFX8-NEXT:    s_mov_b64 s[4:5], 09626; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v29627; GFX8-NEXT:  .LBB37_1: ; %atomicrmw.start9628; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=19629; GFX8-NEXT:    s_waitcnt vmcnt(0)9630; GFX8-NEXT:    v_mov_b32_e32 v6, v59631; GFX8-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9632; GFX8-NEXT:    v_max_f32_e32 v5, v5, v29633; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 19634; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v59635; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v89636; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v59637; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v59638; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc9639; GFX8-NEXT:    v_and_b32_e32 v7, v6, v49640; GFX8-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19641; GFX8-NEXT:    v_or_b32_e32 v5, v7, v59642; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc9643; GFX8-NEXT:    s_waitcnt vmcnt(0)9644; GFX8-NEXT:    buffer_wbinvl19645; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v69646; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9647; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]9648; GFX8-NEXT:    s_cbranch_execnz .LBB37_19649; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end9650; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]9651; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v59652; GFX8-NEXT:    s_setpc_b64 s[30:31]9653;9654; GFX7-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:9655; GFX7:       ; %bb.0:9656; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9657; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v09658; GFX7-NEXT:    s_mov_b32 s6, 09659; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc9660; GFX7-NEXT:    v_and_b32_e32 v0, -4, v49661; GFX7-NEXT:    s_mov_b32 s7, 0xf0009662; GFX7-NEXT:    s_mov_b32 s4, s69663; GFX7-NEXT:    s_mov_b32 s5, s69664; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr649665; GFX7-NEXT:    v_and_b32_e32 v4, 3, v49666; GFX7-NEXT:    v_lshlrev_b32_e32 v6, 3, v49667; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v69668; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v29669; GFX7-NEXT:    v_not_b32_e32 v7, v49670; GFX7-NEXT:    s_mov_b64 s[8:9], 09671; GFX7-NEXT:    v_and_b32_e32 v8, 0xffff0000, v29672; GFX7-NEXT:  .LBB37_1: ; %atomicrmw.start9673; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=19674; GFX7-NEXT:    s_waitcnt vmcnt(0)9675; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v6, v39676; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v29677; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v29678; GFX7-NEXT:    v_max_f32_e32 v2, v2, v89679; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v29680; GFX7-NEXT:    v_and_b32_e32 v4, v3, v79681; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v6, v29682; GFX7-NEXT:    v_or_b32_e32 v2, v4, v29683; GFX7-NEXT:    v_mov_b32_e32 v5, v39684; GFX7-NEXT:    v_mov_b32_e32 v4, v29685; GFX7-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc9686; GFX7-NEXT:    s_waitcnt vmcnt(0)9687; GFX7-NEXT:    buffer_wbinvl19688; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v39689; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]9690; GFX7-NEXT:    v_mov_b32_e32 v3, v49691; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]9692; GFX7-NEXT:    s_cbranch_execnz .LBB37_19693; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end9694; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]9695; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v6, v49696; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v09697; GFX7-NEXT:    s_setpc_b64 s[30:31]9698;9699; GFX6-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:9700; GFX6:       ; %bb.0:9701; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9702; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v09703; GFX6-NEXT:    s_mov_b32 s6, 09704; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc9705; GFX6-NEXT:    v_and_b32_e32 v0, -4, v49706; GFX6-NEXT:    s_mov_b32 s7, 0xf0009707; GFX6-NEXT:    s_mov_b32 s4, s69708; GFX6-NEXT:    s_mov_b32 s5, s69709; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr649710; GFX6-NEXT:    v_and_b32_e32 v4, 3, v49711; GFX6-NEXT:    v_lshlrev_b32_e32 v6, 3, v49712; GFX6-NEXT:    v_lshl_b32_e32 v4, 0xffff, v69713; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v29714; GFX6-NEXT:    v_not_b32_e32 v7, v49715; GFX6-NEXT:    s_mov_b64 s[8:9], 09716; GFX6-NEXT:    v_and_b32_e32 v8, 0xffff0000, v29717; GFX6-NEXT:  .LBB37_1: ; %atomicrmw.start9718; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=19719; GFX6-NEXT:    s_waitcnt vmcnt(0)9720; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v6, v39721; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v29722; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v29723; GFX6-NEXT:    v_max_f32_e32 v2, v2, v89724; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v29725; GFX6-NEXT:    s_waitcnt expcnt(0)9726; GFX6-NEXT:    v_and_b32_e32 v4, v3, v79727; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v6, v29728; GFX6-NEXT:    v_or_b32_e32 v2, v4, v29729; GFX6-NEXT:    v_mov_b32_e32 v5, v39730; GFX6-NEXT:    v_mov_b32_e32 v4, v29731; GFX6-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc9732; GFX6-NEXT:    s_waitcnt vmcnt(0)9733; GFX6-NEXT:    buffer_wbinvl19734; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v39735; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]9736; GFX6-NEXT:    v_mov_b32_e32 v3, v49737; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]9738; GFX6-NEXT:    s_cbranch_execnz .LBB37_19739; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end9740; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]9741; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v6, v49742; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v09743; GFX6-NEXT:    s_waitcnt expcnt(0)9744; GFX6-NEXT:    s_setpc_b64 s[30:31]9745  %gep = getelementptr bfloat, ptr addrspace(1) %ptr, i64 10239746  %result = atomicrmw fmax ptr addrspace(1) %gep, bfloat %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !09747  ret bfloat %result9748}9749 9750define bfloat @global_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, bfloat %val) #0 {9751; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:9752; GFX12-TRUE16:       ; %bb.0:9753; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09754; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x09755; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x09756; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x09757; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x09758; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v09759; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)9760; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo9761; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 09762; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v39763; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v39764; GFX12-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off9765; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39766; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9767; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9768; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v49769; GFX12-TRUE16-NEXT:  .LBB38_1: ; %atomicrmw.start9770; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19771; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x09772; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v59773; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 09774; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l9775; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9776; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69777; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59778; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)9779; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v5, v5, v79780; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l9781; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 19782; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v59783; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59784; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)9785; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff9786; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)9787; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo9788; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9789; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h9790; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v79791; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9792; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v59793; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x09794; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV9795; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x09796; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV9797; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69798; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9799; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s09800; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9801; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09802; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB38_19803; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end9804; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09805; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59806; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x09807; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]9808;9809; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:9810; GFX12-FAKE16:       ; %bb.0:9811; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09812; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x09813; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x09814; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x09815; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x09816; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v09817; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)9818; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo9819; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v29820; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)9821; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v39822; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v39823; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 09824; GFX12-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off9825; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39826; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9827; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9828; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v49829; GFX12-FAKE16-NEXT:  .LBB38_1: ; %atomicrmw.start9830; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19831; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x09832; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v59833; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9834; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69835; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59836; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9837; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v5, v5, v29838; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 19839; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v59840; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59841; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)9842; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff9843; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)9844; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo9845; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9846; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v59847; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v59848; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9849; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v59850; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x09851; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV9852; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x09853; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV9854; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69855; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9856; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s09857; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9858; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09859; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB38_19860; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end9861; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09862; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59863; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x09864; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]9865;9866; GFX942-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:9867; GFX942:       ; %bb.0:9868; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9869; GFX942-NEXT:    s_movk_i32 s0, 0xf8009870; GFX942-NEXT:    s_mov_b32 s1, -19871; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]9872; GFX942-NEXT:    v_and_b32_e32 v0, -4, v49873; GFX942-NEXT:    v_mov_b32_e32 v1, v59874; GFX942-NEXT:    global_load_dword v3, v[0:1], off9875; GFX942-NEXT:    v_and_b32_e32 v4, 3, v49876; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v49877; GFX942-NEXT:    s_mov_b32 s0, 0xffff9878; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s09879; GFX942-NEXT:    v_not_b32_e32 v5, v59880; GFX942-NEXT:    s_mov_b64 s[0:1], 09881; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v29882; GFX942-NEXT:    s_movk_i32 s2, 0x7fff9883; GFX942-NEXT:  .LBB38_1: ; %atomicrmw.start9884; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=19885; GFX942-NEXT:    s_waitcnt vmcnt(0)9886; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9887; GFX942-NEXT:    s_nop 09888; GFX942-NEXT:    v_max_f32_e32 v2, v2, v69889; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 19890; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v29891; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s29892; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v29893; GFX942-NEXT:    s_nop 19894; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc9895; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19896; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v29897; GFX942-NEXT:    buffer_wbl2 sc19898; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc09899; GFX942-NEXT:    s_waitcnt vmcnt(0)9900; GFX942-NEXT:    buffer_inv sc19901; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v39902; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]9903; GFX942-NEXT:    v_mov_b32_e32 v3, v29904; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]9905; GFX942-NEXT:    s_cbranch_execnz .LBB38_19906; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end9907; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]9908; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v4, v29909; GFX942-NEXT:    s_setpc_b64 s[30:31]9910;9911; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:9912; GFX11-TRUE16:       ; %bb.0:9913; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9914; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v09915; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9916; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo9917; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 09918; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v39919; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v39920; GFX11-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off9921; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39922; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9923; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9924; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v49925; GFX11-TRUE16-NEXT:    .p2align 69926; GFX11-TRUE16-NEXT:  .LBB38_1: ; %atomicrmw.start9927; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19928; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)9929; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v59930; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 09931; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l9932; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9933; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69934; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59935; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)9936; GFX11-TRUE16-NEXT:    v_max_f32_e32 v5, v5, v79937; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l9938; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 19939; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v59940; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59941; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9942; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff9943; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo9944; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9945; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h9946; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v79947; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9948; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v59949; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x09950; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc9951; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)9952; GFX11-TRUE16-NEXT:    buffer_gl1_inv9953; GFX11-TRUE16-NEXT:    buffer_gl0_inv9954; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69955; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s09956; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9957; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09958; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB38_19959; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end9960; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09961; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59962; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]9963;9964; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:9965; GFX11-FAKE16:       ; %bb.0:9966; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9967; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v09968; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)9969; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo9970; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v29971; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v39972; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v39973; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 09974; GFX11-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off9975; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39976; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9977; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9978; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v49979; GFX11-FAKE16-NEXT:    .p2align 69980; GFX11-FAKE16-NEXT:  .LBB38_1: ; %atomicrmw.start9981; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19982; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)9983; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v59984; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9985; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69986; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59987; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9988; GFX11-FAKE16-NEXT:    v_max_f32_e32 v5, v5, v29989; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 19990; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v59991; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59992; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9993; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff9994; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo9995; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9996; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v59997; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v59998; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9999; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v510000; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x010001; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc10002; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)10003; GFX11-FAKE16-NEXT:    buffer_gl1_inv10004; GFX11-FAKE16-NEXT:    buffer_gl0_inv10005; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610006; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s010007; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10008; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010009; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB38_110010; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end10011; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010012; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v510013; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]10014;10015; GFX10-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:10016; GFX10:       ; %bb.0:10017; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10018; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v010019; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo10020; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v210021; GFX10-NEXT:    v_and_b32_e32 v0, -4, v310022; GFX10-NEXT:    v_and_b32_e32 v3, 3, v310023; GFX10-NEXT:    s_mov_b32 s4, 010024; GFX10-NEXT:    global_load_dword v5, v[0:1], off10025; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v310026; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10027; GFX10-NEXT:    v_not_b32_e32 v4, v410028; GFX10-NEXT:  .LBB38_1: ; %atomicrmw.start10029; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=110030; GFX10-NEXT:    s_waitcnt vmcnt(0)10031; GFX10-NEXT:    v_mov_b32_e32 v6, v510032; GFX10-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10033; GFX10-NEXT:    v_max_f32_e32 v5, v5, v210034; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 110035; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v510036; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510037; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff10038; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo10039; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110040; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v510041; GFX10-NEXT:    s_waitcnt_vscnt null, 0x010042; GFX10-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc10043; GFX10-NEXT:    s_waitcnt vmcnt(0)10044; GFX10-NEXT:    buffer_gl1_inv10045; GFX10-NEXT:    buffer_gl0_inv10046; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610047; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s410048; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s410049; GFX10-NEXT:    s_cbranch_execnz .LBB38_110050; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end10051; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s410052; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v510053; GFX10-NEXT:    s_setpc_b64 s[30:31]10054;10055; GFX90A-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:10056; GFX90A:       ; %bb.0:10057; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10058; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v010059; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc10060; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v410061; GFX90A-NEXT:    global_load_dword v3, v[0:1], off10062; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v410063; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v410064; GFX90A-NEXT:    s_mov_b32 s4, 0xffff10065; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s410066; GFX90A-NEXT:    v_not_b32_e32 v5, v510067; GFX90A-NEXT:    s_mov_b64 s[4:5], 010068; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v210069; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff10070; GFX90A-NEXT:  .LBB38_1: ; %atomicrmw.start10071; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=110072; GFX90A-NEXT:    s_waitcnt vmcnt(0)10073; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10074; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v610075; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 110076; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v210077; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s610078; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v210079; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc10080; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110081; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v210082; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc10083; GFX90A-NEXT:    s_waitcnt vmcnt(0)10084; GFX90A-NEXT:    buffer_wbinvl110085; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v310086; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10087; GFX90A-NEXT:    v_mov_b32_e32 v3, v210088; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]10089; GFX90A-NEXT:    s_cbranch_execnz .LBB38_110090; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end10091; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]10092; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v4, v210093; GFX90A-NEXT:    s_setpc_b64 s[30:31]10094;10095; GFX908-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:10096; GFX908:       ; %bb.0:10097; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10098; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v010099; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc10100; GFX908-NEXT:    v_and_b32_e32 v0, -4, v310101; GFX908-NEXT:    global_load_dword v5, v[0:1], off10102; GFX908-NEXT:    v_and_b32_e32 v3, 3, v310103; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v310104; GFX908-NEXT:    s_mov_b32 s4, 0xffff10105; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s410106; GFX908-NEXT:    v_not_b32_e32 v4, v410107; GFX908-NEXT:    s_mov_b64 s[4:5], 010108; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v210109; GFX908-NEXT:    s_movk_i32 s6, 0x7fff10110; GFX908-NEXT:  .LBB38_1: ; %atomicrmw.start10111; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=110112; GFX908-NEXT:    s_waitcnt vmcnt(0)10113; GFX908-NEXT:    v_mov_b32_e32 v6, v510114; GFX908-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10115; GFX908-NEXT:    v_max_f32_e32 v5, v5, v210116; GFX908-NEXT:    v_bfe_u32 v7, v5, 16, 110117; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v510118; GFX908-NEXT:    v_add3_u32 v7, v7, v5, s610119; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v510120; GFX908-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc10121; GFX908-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110122; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v510123; GFX908-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc10124; GFX908-NEXT:    s_waitcnt vmcnt(0)10125; GFX908-NEXT:    buffer_wbinvl110126; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v610127; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10128; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]10129; GFX908-NEXT:    s_cbranch_execnz .LBB38_110130; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end10131; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]10132; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v510133; GFX908-NEXT:    s_setpc_b64 s[30:31]10134;10135; GFX8-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:10136; GFX8:       ; %bb.0:10137; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10138; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v010139; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc10140; GFX8-NEXT:    v_and_b32_e32 v0, -4, v310141; GFX8-NEXT:    flat_load_dword v5, v[0:1]10142; GFX8-NEXT:    v_and_b32_e32 v3, 3, v310143; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v310144; GFX8-NEXT:    s_mov_b32 s4, 0xffff10145; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s410146; GFX8-NEXT:    v_not_b32_e32 v4, v410147; GFX8-NEXT:    s_mov_b64 s[4:5], 010148; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v210149; GFX8-NEXT:  .LBB38_1: ; %atomicrmw.start10150; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=110151; GFX8-NEXT:    s_waitcnt vmcnt(0)10152; GFX8-NEXT:    v_mov_b32_e32 v6, v510153; GFX8-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10154; GFX8-NEXT:    v_max_f32_e32 v5, v5, v210155; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 110156; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v510157; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v810158; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v510159; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v510160; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc10161; GFX8-NEXT:    v_and_b32_e32 v7, v6, v410162; GFX8-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110163; GFX8-NEXT:    v_or_b32_e32 v5, v7, v510164; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc10165; GFX8-NEXT:    s_waitcnt vmcnt(0)10166; GFX8-NEXT:    buffer_wbinvl110167; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v610168; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10169; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]10170; GFX8-NEXT:    s_cbranch_execnz .LBB38_110171; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end10172; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]10173; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v510174; GFX8-NEXT:    s_setpc_b64 s[30:31]10175;10176; GFX7-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:10177; GFX7:       ; %bb.0:10178; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10179; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v010180; GFX7-NEXT:    s_mov_b32 s6, 010181; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc10182; GFX7-NEXT:    v_and_b32_e32 v0, -4, v410183; GFX7-NEXT:    s_mov_b32 s7, 0xf00010184; GFX7-NEXT:    s_mov_b32 s4, s610185; GFX7-NEXT:    s_mov_b32 s5, s610186; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6410187; GFX7-NEXT:    v_and_b32_e32 v4, 3, v410188; GFX7-NEXT:    v_lshlrev_b32_e32 v6, 3, v410189; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v610190; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v210191; GFX7-NEXT:    v_not_b32_e32 v7, v410192; GFX7-NEXT:    s_mov_b64 s[8:9], 010193; GFX7-NEXT:    v_and_b32_e32 v8, 0xffff0000, v210194; GFX7-NEXT:  .LBB38_1: ; %atomicrmw.start10195; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=110196; GFX7-NEXT:    s_waitcnt vmcnt(0)10197; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v6, v310198; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v210199; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v210200; GFX7-NEXT:    v_max_f32_e32 v2, v2, v810201; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v210202; GFX7-NEXT:    v_and_b32_e32 v4, v3, v710203; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v6, v210204; GFX7-NEXT:    v_or_b32_e32 v2, v4, v210205; GFX7-NEXT:    v_mov_b32_e32 v5, v310206; GFX7-NEXT:    v_mov_b32_e32 v4, v210207; GFX7-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc10208; GFX7-NEXT:    s_waitcnt vmcnt(0)10209; GFX7-NEXT:    buffer_wbinvl110210; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v310211; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]10212; GFX7-NEXT:    v_mov_b32_e32 v3, v410213; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]10214; GFX7-NEXT:    s_cbranch_execnz .LBB38_110215; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end10216; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]10217; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v6, v410218; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v010219; GFX7-NEXT:    s_setpc_b64 s[30:31]10220;10221; GFX6-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:10222; GFX6:       ; %bb.0:10223; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10224; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v010225; GFX6-NEXT:    s_mov_b32 s6, 010226; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc10227; GFX6-NEXT:    v_and_b32_e32 v0, -4, v410228; GFX6-NEXT:    s_mov_b32 s7, 0xf00010229; GFX6-NEXT:    s_mov_b32 s4, s610230; GFX6-NEXT:    s_mov_b32 s5, s610231; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6410232; GFX6-NEXT:    v_and_b32_e32 v4, 3, v410233; GFX6-NEXT:    v_lshlrev_b32_e32 v6, 3, v410234; GFX6-NEXT:    v_lshl_b32_e32 v4, 0xffff, v610235; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v210236; GFX6-NEXT:    v_not_b32_e32 v7, v410237; GFX6-NEXT:    s_mov_b64 s[8:9], 010238; GFX6-NEXT:    v_and_b32_e32 v8, 0xffff0000, v210239; GFX6-NEXT:  .LBB38_1: ; %atomicrmw.start10240; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=110241; GFX6-NEXT:    s_waitcnt vmcnt(0)10242; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v6, v310243; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v210244; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v210245; GFX6-NEXT:    v_max_f32_e32 v2, v2, v810246; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v210247; GFX6-NEXT:    s_waitcnt expcnt(0)10248; GFX6-NEXT:    v_and_b32_e32 v4, v3, v710249; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v6, v210250; GFX6-NEXT:    v_or_b32_e32 v2, v4, v210251; GFX6-NEXT:    v_mov_b32_e32 v5, v310252; GFX6-NEXT:    v_mov_b32_e32 v4, v210253; GFX6-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc10254; GFX6-NEXT:    s_waitcnt vmcnt(0)10255; GFX6-NEXT:    buffer_wbinvl110256; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v310257; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]10258; GFX6-NEXT:    v_mov_b32_e32 v3, v410259; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]10260; GFX6-NEXT:    s_cbranch_execnz .LBB38_110261; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end10262; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]10263; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v6, v410264; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v010265; GFX6-NEXT:    s_waitcnt expcnt(0)10266; GFX6-NEXT:    s_setpc_b64 s[30:31]10267  %gep = getelementptr bfloat, ptr addrspace(1) %ptr, i64 -102410268  %result = atomicrmw fmax ptr addrspace(1) %gep, bfloat %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !010269  ret bfloat %result10270 }10271 10272define void @global_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, bfloat %val) #0 {10273; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory:10274; GFX12-TRUE16:       ; %bb.0:10275; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x010276; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x010277; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x010278; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x010279; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x010280; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v010281; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 010282; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)10283; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v310284; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v310285; GFX12-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off10286; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v310287; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff10288; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10289; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v310290; GFX12-TRUE16-NEXT:  .LBB39_1: ; %atomicrmw.start10291; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110292; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x010293; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v410294; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 010295; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l10296; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10297; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v310298; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v3, v3, v710299; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l10300; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)10301; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 110302; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v310303; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v310304; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff10305; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)10306; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10307; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo10308; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h10309; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10310; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v710311; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v310312; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x010313; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV10314; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x010315; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV10316; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v410317; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v310318; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10319; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s010320; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10321; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010322; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB39_110323; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end10324; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010325; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x010326; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]10327;10328; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory:10329; GFX12-FAKE16:       ; %bb.0:10330; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x010331; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x010332; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x010333; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x010334; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x010335; GFX12-FAKE16-NEXT:    v_dual_mov_b32 v3, v0 :: v_dual_lshlrev_b32 v2, 16, v210336; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 010337; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)10338; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v310339; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v310340; GFX12-FAKE16-NEXT:    global_load_b32 v4, v[0:1], off10341; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v310342; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff10343; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10344; GFX12-FAKE16-NEXT:    v_not_b32_e32 v6, v310345; GFX12-FAKE16-NEXT:  .LBB39_1: ; %atomicrmw.start10346; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=110347; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x010348; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v410349; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10350; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v310351; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v3, v3, v210352; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)10353; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 110354; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v310355; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v310356; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff10357; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)10358; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10359; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v7, v8, vcc_lo10360; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v310361; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10362; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v310363; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v310364; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x010365; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV10366; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x010367; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV10368; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v410369; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v310370; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10371; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s010372; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10373; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010374; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB39_110375; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end10376; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010377; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x010378; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]10379;10380; GFX942-LABEL: global_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory:10381; GFX942:       ; %bb.0:10382; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10383; GFX942-NEXT:    v_mov_b32_e32 v3, v010384; GFX942-NEXT:    v_and_b32_e32 v0, -4, v310385; GFX942-NEXT:    global_load_dword v5, v[0:1], off10386; GFX942-NEXT:    v_and_b32_e32 v3, 3, v310387; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v310388; GFX942-NEXT:    s_mov_b32 s0, 0xffff10389; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s010390; GFX942-NEXT:    v_not_b32_e32 v6, v410391; GFX942-NEXT:    s_mov_b64 s[0:1], 010392; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v210393; GFX942-NEXT:    s_movk_i32 s2, 0x7fff10394; GFX942-NEXT:  .LBB39_1: ; %atomicrmw.start10395; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=110396; GFX942-NEXT:    s_waitcnt vmcnt(0)10397; GFX942-NEXT:    v_lshrrev_b32_sdwa v4, v3, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10398; GFX942-NEXT:    s_nop 010399; GFX942-NEXT:    v_max_f32_e32 v4, v4, v210400; GFX942-NEXT:    v_bfe_u32 v7, v4, 16, 110401; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v410402; GFX942-NEXT:    v_add3_u32 v7, v7, v4, s210403; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v4, v410404; GFX942-NEXT:    s_nop 110405; GFX942-NEXT:    v_cndmask_b32_e32 v4, v7, v8, vcc10406; GFX942-NEXT:    v_lshlrev_b32_sdwa v4, v3, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110407; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v410408; GFX942-NEXT:    buffer_wbl2 sc110409; GFX942-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off sc010410; GFX942-NEXT:    s_waitcnt vmcnt(0)10411; GFX942-NEXT:    buffer_inv sc110412; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v510413; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]10414; GFX942-NEXT:    v_mov_b32_e32 v5, v410415; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]10416; GFX942-NEXT:    s_cbranch_execnz .LBB39_110417; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end10418; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]10419; GFX942-NEXT:    s_setpc_b64 s[30:31]10420;10421; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory:10422; GFX11-TRUE16:       ; %bb.0:10423; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10424; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v010425; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 010426; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)10427; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v310428; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v310429; GFX11-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off10430; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v310431; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff10432; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10433; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v310434; GFX11-TRUE16-NEXT:    .p2align 610435; GFX11-TRUE16-NEXT:  .LBB39_1: ; %atomicrmw.start10436; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110437; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)10438; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v410439; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 010440; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l10441; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10442; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v310443; GFX11-TRUE16-NEXT:    v_max_f32_e32 v3, v3, v710444; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l10445; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)10446; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 110447; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v310448; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v310449; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff10450; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10451; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo10452; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h10453; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10454; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v710455; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v310456; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x010457; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc10458; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)10459; GFX11-TRUE16-NEXT:    buffer_gl1_inv10460; GFX11-TRUE16-NEXT:    buffer_gl0_inv10461; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v410462; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v310463; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s010464; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10465; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010466; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB39_110467; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end10468; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010469; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]10470;10471; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory:10472; GFX11-FAKE16:       ; %bb.0:10473; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10474; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v3, v0 :: v_dual_lshlrev_b32 v2, 16, v210475; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 010476; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)10477; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v310478; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v310479; GFX11-FAKE16-NEXT:    global_load_b32 v4, v[0:1], off10480; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v310481; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff10482; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10483; GFX11-FAKE16-NEXT:    v_not_b32_e32 v6, v310484; GFX11-FAKE16-NEXT:    .p2align 610485; GFX11-FAKE16-NEXT:  .LBB39_1: ; %atomicrmw.start10486; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=110487; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)10488; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v410489; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10490; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v310491; GFX11-FAKE16-NEXT:    v_max_f32_e32 v3, v3, v210492; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)10493; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 110494; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v310495; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v310496; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff10497; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10498; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v7, v8, vcc_lo10499; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v310500; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10501; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v310502; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v310503; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x010504; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc10505; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)10506; GFX11-FAKE16-NEXT:    buffer_gl1_inv10507; GFX11-FAKE16-NEXT:    buffer_gl0_inv10508; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v410509; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v310510; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s010511; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10512; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010513; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB39_110514; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end10515; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010516; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]10517;10518; GFX10-LABEL: global_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory:10519; GFX10:       ; %bb.0:10520; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10521; GFX10-NEXT:    v_mov_b32_e32 v3, v010522; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v210523; GFX10-NEXT:    s_mov_b32 s4, 010524; GFX10-NEXT:    v_and_b32_e32 v0, -4, v310525; GFX10-NEXT:    v_and_b32_e32 v3, 3, v310526; GFX10-NEXT:    global_load_dword v4, v[0:1], off10527; GFX10-NEXT:    v_lshlrev_b32_e32 v5, 3, v310528; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff10529; GFX10-NEXT:    v_not_b32_e32 v6, v310530; GFX10-NEXT:  .LBB39_1: ; %atomicrmw.start10531; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=110532; GFX10-NEXT:    s_waitcnt vmcnt(0)10533; GFX10-NEXT:    v_lshrrev_b32_sdwa v3, v5, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10534; GFX10-NEXT:    v_max_f32_e32 v3, v3, v210535; GFX10-NEXT:    v_bfe_u32 v7, v3, 16, 110536; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v310537; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v310538; GFX10-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff10539; GFX10-NEXT:    v_cndmask_b32_e32 v3, v7, v8, vcc_lo10540; GFX10-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110541; GFX10-NEXT:    v_and_or_b32 v3, v4, v6, v310542; GFX10-NEXT:    s_waitcnt_vscnt null, 0x010543; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc10544; GFX10-NEXT:    s_waitcnt vmcnt(0)10545; GFX10-NEXT:    buffer_gl1_inv10546; GFX10-NEXT:    buffer_gl0_inv10547; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v410548; GFX10-NEXT:    v_mov_b32_e32 v4, v310549; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s410550; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s410551; GFX10-NEXT:    s_cbranch_execnz .LBB39_110552; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end10553; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s410554; GFX10-NEXT:    s_setpc_b64 s[30:31]10555;10556; GFX90A-LABEL: global_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory:10557; GFX90A:       ; %bb.0:10558; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10559; GFX90A-NEXT:    v_mov_b32_e32 v3, v010560; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v310561; GFX90A-NEXT:    global_load_dword v5, v[0:1], off10562; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v310563; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v310564; GFX90A-NEXT:    s_mov_b32 s4, 0xffff10565; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s410566; GFX90A-NEXT:    v_not_b32_e32 v6, v410567; GFX90A-NEXT:    s_mov_b64 s[4:5], 010568; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v210569; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff10570; GFX90A-NEXT:  .LBB39_1: ; %atomicrmw.start10571; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=110572; GFX90A-NEXT:    s_waitcnt vmcnt(0)10573; GFX90A-NEXT:    v_lshrrev_b32_sdwa v4, v3, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10574; GFX90A-NEXT:    v_max_f32_e32 v4, v4, v210575; GFX90A-NEXT:    v_bfe_u32 v7, v4, 16, 110576; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v410577; GFX90A-NEXT:    v_add3_u32 v7, v7, v4, s610578; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v4, v410579; GFX90A-NEXT:    v_cndmask_b32_e32 v4, v7, v8, vcc10580; GFX90A-NEXT:    v_lshlrev_b32_sdwa v4, v3, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110581; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v410582; GFX90A-NEXT:    global_atomic_cmpswap v4, v[0:1], v[4:5], off glc10583; GFX90A-NEXT:    s_waitcnt vmcnt(0)10584; GFX90A-NEXT:    buffer_wbinvl110585; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v510586; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10587; GFX90A-NEXT:    v_mov_b32_e32 v5, v410588; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]10589; GFX90A-NEXT:    s_cbranch_execnz .LBB39_110590; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end10591; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]10592; GFX90A-NEXT:    s_setpc_b64 s[30:31]10593;10594; GFX908-LABEL: global_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory:10595; GFX908:       ; %bb.0:10596; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10597; GFX908-NEXT:    v_mov_b32_e32 v3, v010598; GFX908-NEXT:    v_and_b32_e32 v0, -4, v310599; GFX908-NEXT:    global_load_dword v4, v[0:1], off10600; GFX908-NEXT:    v_and_b32_e32 v3, 3, v310601; GFX908-NEXT:    v_lshlrev_b32_e32 v5, 3, v310602; GFX908-NEXT:    s_mov_b32 s4, 0xffff10603; GFX908-NEXT:    v_lshlrev_b32_e64 v3, v5, s410604; GFX908-NEXT:    v_not_b32_e32 v6, v310605; GFX908-NEXT:    s_mov_b64 s[4:5], 010606; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v210607; GFX908-NEXT:    s_movk_i32 s6, 0x7fff10608; GFX908-NEXT:  .LBB39_1: ; %atomicrmw.start10609; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=110610; GFX908-NEXT:    s_waitcnt vmcnt(0)10611; GFX908-NEXT:    v_lshrrev_b32_sdwa v3, v5, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10612; GFX908-NEXT:    v_max_f32_e32 v3, v3, v210613; GFX908-NEXT:    v_bfe_u32 v7, v3, 16, 110614; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v310615; GFX908-NEXT:    v_add3_u32 v7, v7, v3, s610616; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v3, v310617; GFX908-NEXT:    v_cndmask_b32_e32 v3, v7, v8, vcc10618; GFX908-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110619; GFX908-NEXT:    v_and_or_b32 v3, v4, v6, v310620; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc10621; GFX908-NEXT:    s_waitcnt vmcnt(0)10622; GFX908-NEXT:    buffer_wbinvl110623; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v410624; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10625; GFX908-NEXT:    v_mov_b32_e32 v4, v310626; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]10627; GFX908-NEXT:    s_cbranch_execnz .LBB39_110628; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end10629; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]10630; GFX908-NEXT:    s_setpc_b64 s[30:31]10631;10632; GFX8-LABEL: global_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory:10633; GFX8:       ; %bb.0:10634; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10635; GFX8-NEXT:    v_mov_b32_e32 v3, v010636; GFX8-NEXT:    v_and_b32_e32 v0, -4, v310637; GFX8-NEXT:    flat_load_dword v4, v[0:1]10638; GFX8-NEXT:    v_and_b32_e32 v3, 3, v310639; GFX8-NEXT:    v_lshlrev_b32_e32 v5, 3, v310640; GFX8-NEXT:    s_mov_b32 s4, 0xffff10641; GFX8-NEXT:    v_lshlrev_b32_e64 v3, v5, s410642; GFX8-NEXT:    v_not_b32_e32 v6, v310643; GFX8-NEXT:    s_mov_b64 s[4:5], 010644; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v210645; GFX8-NEXT:  .LBB39_1: ; %atomicrmw.start10646; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=110647; GFX8-NEXT:    s_waitcnt vmcnt(0)10648; GFX8-NEXT:    v_lshrrev_b32_sdwa v3, v5, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10649; GFX8-NEXT:    v_max_f32_e32 v3, v3, v210650; GFX8-NEXT:    v_bfe_u32 v8, v3, 16, 110651; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v310652; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v810653; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v310654; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v3, v310655; GFX8-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc10656; GFX8-NEXT:    v_and_b32_e32 v7, v4, v610657; GFX8-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110658; GFX8-NEXT:    v_or_b32_e32 v3, v7, v310659; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc10660; GFX8-NEXT:    s_waitcnt vmcnt(0)10661; GFX8-NEXT:    buffer_wbinvl110662; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v410663; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10664; GFX8-NEXT:    v_mov_b32_e32 v4, v310665; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]10666; GFX8-NEXT:    s_cbranch_execnz .LBB39_110667; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end10668; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]10669; GFX8-NEXT:    s_setpc_b64 s[30:31]10670;10671; GFX7-LABEL: global_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory:10672; GFX7:       ; %bb.0:10673; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10674; GFX7-NEXT:    v_mov_b32_e32 v3, v010675; GFX7-NEXT:    s_mov_b32 s6, 010676; GFX7-NEXT:    v_and_b32_e32 v0, -4, v310677; GFX7-NEXT:    s_mov_b32 s7, 0xf00010678; GFX7-NEXT:    s_mov_b32 s4, s610679; GFX7-NEXT:    s_mov_b32 s5, s610680; GFX7-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr6410681; GFX7-NEXT:    v_and_b32_e32 v3, 3, v310682; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 3, v310683; GFX7-NEXT:    v_lshl_b32_e32 v3, 0xffff, v510684; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v210685; GFX7-NEXT:    v_not_b32_e32 v6, v310686; GFX7-NEXT:    s_mov_b64 s[8:9], 010687; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v210688; GFX7-NEXT:  .LBB39_1: ; %atomicrmw.start10689; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=110690; GFX7-NEXT:    s_waitcnt vmcnt(0)10691; GFX7-NEXT:    v_lshrrev_b32_e32 v3, v5, v410692; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v310693; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v310694; GFX7-NEXT:    v_max_f32_e32 v3, v3, v210695; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v310696; GFX7-NEXT:    v_and_b32_e32 v7, v4, v610697; GFX7-NEXT:    v_lshlrev_b32_e32 v3, v5, v310698; GFX7-NEXT:    v_or_b32_e32 v3, v7, v310699; GFX7-NEXT:    v_mov_b32_e32 v8, v410700; GFX7-NEXT:    v_mov_b32_e32 v7, v310701; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc10702; GFX7-NEXT:    s_waitcnt vmcnt(0)10703; GFX7-NEXT:    buffer_wbinvl110704; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v410705; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]10706; GFX7-NEXT:    v_mov_b32_e32 v4, v710707; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]10708; GFX7-NEXT:    s_cbranch_execnz .LBB39_110709; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end10710; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]10711; GFX7-NEXT:    s_setpc_b64 s[30:31]10712;10713; GFX6-LABEL: global_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory:10714; GFX6:       ; %bb.0:10715; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10716; GFX6-NEXT:    v_mov_b32_e32 v3, v010717; GFX6-NEXT:    s_mov_b32 s6, 010718; GFX6-NEXT:    v_and_b32_e32 v0, -4, v310719; GFX6-NEXT:    s_mov_b32 s7, 0xf00010720; GFX6-NEXT:    s_mov_b32 s4, s610721; GFX6-NEXT:    s_mov_b32 s5, s610722; GFX6-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr6410723; GFX6-NEXT:    v_and_b32_e32 v3, 3, v310724; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 3, v310725; GFX6-NEXT:    v_lshl_b32_e32 v3, 0xffff, v510726; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v210727; GFX6-NEXT:    v_not_b32_e32 v6, v310728; GFX6-NEXT:    s_mov_b64 s[8:9], 010729; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v210730; GFX6-NEXT:  .LBB39_1: ; %atomicrmw.start10731; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=110732; GFX6-NEXT:    s_waitcnt vmcnt(0)10733; GFX6-NEXT:    v_lshrrev_b32_e32 v3, v5, v410734; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v310735; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v310736; GFX6-NEXT:    v_max_f32_e32 v3, v3, v210737; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v310738; GFX6-NEXT:    s_waitcnt expcnt(0)10739; GFX6-NEXT:    v_and_b32_e32 v7, v4, v610740; GFX6-NEXT:    v_lshlrev_b32_e32 v3, v5, v310741; GFX6-NEXT:    v_or_b32_e32 v3, v7, v310742; GFX6-NEXT:    v_mov_b32_e32 v8, v410743; GFX6-NEXT:    v_mov_b32_e32 v7, v310744; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc10745; GFX6-NEXT:    s_waitcnt vmcnt(0)10746; GFX6-NEXT:    buffer_wbinvl110747; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v410748; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]10749; GFX6-NEXT:    v_mov_b32_e32 v4, v710750; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]10751; GFX6-NEXT:    s_cbranch_execnz .LBB39_110752; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end10753; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]10754; GFX6-NEXT:    s_waitcnt expcnt(0)10755; GFX6-NEXT:    s_setpc_b64 s[30:31]10756  %unused = atomicrmw fmax ptr addrspace(1) %ptr, bfloat %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !010757  ret void10758}10759 10760define void @global_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, bfloat %val) #0 {10761; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:10762; GFX12-TRUE16:       ; %bb.0:10763; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x010764; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x010765; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x010766; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x010767; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x010768; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v010769; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)10770; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo10771; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 010772; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v310773; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v310774; GFX12-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off10775; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v310776; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10777; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff10778; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v310779; GFX12-TRUE16-NEXT:  .LBB40_1: ; %atomicrmw.start10780; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110781; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x010782; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v410783; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 010784; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l10785; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10786; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v310787; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v3, v3, v710788; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l10789; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)10790; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 110791; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v310792; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v310793; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff10794; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)10795; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10796; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo10797; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h10798; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10799; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v710800; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v310801; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x010802; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV10803; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x010804; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV10805; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v410806; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v310807; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10808; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s010809; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10810; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010811; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB40_110812; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end10813; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010814; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x010815; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]10816;10817; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:10818; GFX12-FAKE16:       ; %bb.0:10819; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x010820; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x010821; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x010822; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x010823; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x010824; GFX12-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v010825; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)10826; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo10827; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v210828; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)10829; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v410830; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v410831; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 010832; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off10833; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v410834; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff10835; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10836; GFX12-FAKE16-NEXT:    v_not_b32_e32 v5, v510837; GFX12-FAKE16-NEXT:  .LBB40_1: ; %atomicrmw.start10838; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=110839; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x010840; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v310841; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10842; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v210843; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v2, v2, v610844; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)10845; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 110846; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v210847; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v210848; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff10849; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)10850; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10851; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo10852; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v210853; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10854; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v210855; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v210856; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x010857; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV10858; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x010859; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV10860; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v310861; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v210862; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10863; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s010864; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10865; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010866; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB40_110867; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end10868; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010869; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x010870; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]10871;10872; GFX942-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:10873; GFX942:       ; %bb.0:10874; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10875; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe10876; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]10877; GFX942-NEXT:    v_and_b32_e32 v0, -4, v410878; GFX942-NEXT:    v_mov_b32_e32 v1, v510879; GFX942-NEXT:    global_load_dword v3, v[0:1], off10880; GFX942-NEXT:    v_and_b32_e32 v4, 3, v410881; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v410882; GFX942-NEXT:    s_mov_b32 s0, 0xffff10883; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s010884; GFX942-NEXT:    v_not_b32_e32 v5, v510885; GFX942-NEXT:    s_mov_b64 s[0:1], 010886; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v210887; GFX942-NEXT:    s_movk_i32 s2, 0x7fff10888; GFX942-NEXT:  .LBB40_1: ; %atomicrmw.start10889; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=110890; GFX942-NEXT:    s_waitcnt vmcnt(0)10891; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10892; GFX942-NEXT:    s_nop 010893; GFX942-NEXT:    v_max_f32_e32 v2, v2, v610894; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 110895; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v210896; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s210897; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v210898; GFX942-NEXT:    s_nop 110899; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc10900; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110901; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v210902; GFX942-NEXT:    buffer_wbl2 sc110903; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc010904; GFX942-NEXT:    s_waitcnt vmcnt(0)10905; GFX942-NEXT:    buffer_inv sc110906; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v310907; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]10908; GFX942-NEXT:    v_mov_b32_e32 v3, v210909; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]10910; GFX942-NEXT:    s_cbranch_execnz .LBB40_110911; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end10912; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]10913; GFX942-NEXT:    s_setpc_b64 s[30:31]10914;10915; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:10916; GFX11-TRUE16:       ; %bb.0:10917; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10918; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v010919; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10920; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo10921; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 010922; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v310923; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v310924; GFX11-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off10925; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v310926; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10927; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff10928; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v310929; GFX11-TRUE16-NEXT:    .p2align 610930; GFX11-TRUE16-NEXT:  .LBB40_1: ; %atomicrmw.start10931; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110932; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)10933; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v410934; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 010935; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l10936; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10937; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v310938; GFX11-TRUE16-NEXT:    v_max_f32_e32 v3, v3, v710939; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l10940; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)10941; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 110942; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v310943; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v310944; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff10945; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10946; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo10947; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h10948; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10949; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v710950; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v310951; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x010952; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc10953; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)10954; GFX11-TRUE16-NEXT:    buffer_gl1_inv10955; GFX11-TRUE16-NEXT:    buffer_gl0_inv10956; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v410957; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v310958; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s010959; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10960; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010961; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB40_110962; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end10963; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010964; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]10965;10966; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:10967; GFX11-FAKE16:       ; %bb.0:10968; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10969; GFX11-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v010970; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)10971; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo10972; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v210973; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v410974; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v410975; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 010976; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off10977; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v410978; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10979; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff10980; GFX11-FAKE16-NEXT:    v_not_b32_e32 v5, v510981; GFX11-FAKE16-NEXT:    .p2align 610982; GFX11-FAKE16-NEXT:  .LBB40_1: ; %atomicrmw.start10983; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=110984; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)10985; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v310986; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10987; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v210988; GFX11-FAKE16-NEXT:    v_max_f32_e32 v2, v2, v610989; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)10990; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 110991; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v210992; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v210993; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff10994; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10995; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo10996; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v210997; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10998; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v210999; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v211000; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x011001; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off glc11002; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)11003; GFX11-FAKE16-NEXT:    buffer_gl1_inv11004; GFX11-FAKE16-NEXT:    buffer_gl0_inv11005; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v311006; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v211007; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s011008; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)11009; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011010; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB40_111011; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end11012; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011013; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]11014;11015; GFX10-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:11016; GFX10:       ; %bb.0:11017; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11018; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v011019; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo11020; GFX10-NEXT:    v_lshlrev_b32_e32 v6, 16, v211021; GFX10-NEXT:    v_and_b32_e32 v0, -4, v411022; GFX10-NEXT:    v_and_b32_e32 v4, 3, v411023; GFX10-NEXT:    s_mov_b32 s4, 011024; GFX10-NEXT:    global_load_dword v3, v[0:1], off11025; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 3, v411026; GFX10-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff11027; GFX10-NEXT:    v_not_b32_e32 v5, v511028; GFX10-NEXT:  .LBB40_1: ; %atomicrmw.start11029; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=111030; GFX10-NEXT:    s_waitcnt vmcnt(0)11031; GFX10-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11032; GFX10-NEXT:    v_max_f32_e32 v2, v2, v611033; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 111034; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v211035; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v211036; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff11037; GFX10-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo11038; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111039; GFX10-NEXT:    v_and_or_b32 v2, v3, v5, v211040; GFX10-NEXT:    s_waitcnt_vscnt null, 0x011041; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc11042; GFX10-NEXT:    s_waitcnt vmcnt(0)11043; GFX10-NEXT:    buffer_gl1_inv11044; GFX10-NEXT:    buffer_gl0_inv11045; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v311046; GFX10-NEXT:    v_mov_b32_e32 v3, v211047; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s411048; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s411049; GFX10-NEXT:    s_cbranch_execnz .LBB40_111050; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end11051; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s411052; GFX10-NEXT:    s_setpc_b64 s[30:31]11053;11054; GFX90A-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:11055; GFX90A:       ; %bb.0:11056; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11057; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v011058; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc11059; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v411060; GFX90A-NEXT:    global_load_dword v3, v[0:1], off11061; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v411062; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v411063; GFX90A-NEXT:    s_mov_b32 s4, 0xffff11064; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s411065; GFX90A-NEXT:    v_not_b32_e32 v5, v511066; GFX90A-NEXT:    s_mov_b64 s[4:5], 011067; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v211068; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff11069; GFX90A-NEXT:  .LBB40_1: ; %atomicrmw.start11070; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=111071; GFX90A-NEXT:    s_waitcnt vmcnt(0)11072; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11073; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v611074; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 111075; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v211076; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s611077; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211078; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc11079; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111080; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v211081; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc11082; GFX90A-NEXT:    s_waitcnt vmcnt(0)11083; GFX90A-NEXT:    buffer_wbinvl111084; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311085; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11086; GFX90A-NEXT:    v_mov_b32_e32 v3, v211087; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]11088; GFX90A-NEXT:    s_cbranch_execnz .LBB40_111089; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end11090; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]11091; GFX90A-NEXT:    s_setpc_b64 s[30:31]11092;11093; GFX908-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:11094; GFX908:       ; %bb.0:11095; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11096; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v011097; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc11098; GFX908-NEXT:    v_and_b32_e32 v0, -4, v411099; GFX908-NEXT:    global_load_dword v3, v[0:1], off11100; GFX908-NEXT:    v_and_b32_e32 v4, 3, v411101; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 3, v411102; GFX908-NEXT:    s_mov_b32 s4, 0xffff11103; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v4, s411104; GFX908-NEXT:    v_not_b32_e32 v5, v511105; GFX908-NEXT:    s_mov_b64 s[4:5], 011106; GFX908-NEXT:    v_lshlrev_b32_e32 v6, 16, v211107; GFX908-NEXT:    s_movk_i32 s6, 0x7fff11108; GFX908-NEXT:  .LBB40_1: ; %atomicrmw.start11109; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=111110; GFX908-NEXT:    s_waitcnt vmcnt(0)11111; GFX908-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11112; GFX908-NEXT:    v_max_f32_e32 v2, v2, v611113; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 111114; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v211115; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s611116; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211117; GFX908-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc11118; GFX908-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111119; GFX908-NEXT:    v_and_or_b32 v2, v3, v5, v211120; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc11121; GFX908-NEXT:    s_waitcnt vmcnt(0)11122; GFX908-NEXT:    buffer_wbinvl111123; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311124; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11125; GFX908-NEXT:    v_mov_b32_e32 v3, v211126; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]11127; GFX908-NEXT:    s_cbranch_execnz .LBB40_111128; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end11129; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]11130; GFX908-NEXT:    s_setpc_b64 s[30:31]11131;11132; GFX8-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:11133; GFX8:       ; %bb.0:11134; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11135; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0x7fe, v011136; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc11137; GFX8-NEXT:    v_and_b32_e32 v0, -4, v411138; GFX8-NEXT:    flat_load_dword v3, v[0:1]11139; GFX8-NEXT:    v_and_b32_e32 v4, 3, v411140; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 3, v411141; GFX8-NEXT:    s_mov_b32 s4, 0xffff11142; GFX8-NEXT:    v_lshlrev_b32_e64 v5, v4, s411143; GFX8-NEXT:    v_not_b32_e32 v5, v511144; GFX8-NEXT:    s_mov_b64 s[4:5], 011145; GFX8-NEXT:    v_lshlrev_b32_e32 v6, 16, v211146; GFX8-NEXT:  .LBB40_1: ; %atomicrmw.start11147; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=111148; GFX8-NEXT:    s_waitcnt vmcnt(0)11149; GFX8-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11150; GFX8-NEXT:    v_max_f32_e32 v2, v2, v611151; GFX8-NEXT:    v_bfe_u32 v8, v2, 16, 111152; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v211153; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v811154; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v211155; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211156; GFX8-NEXT:    v_cndmask_b32_e32 v2, v8, v9, vcc11157; GFX8-NEXT:    v_and_b32_e32 v7, v3, v511158; GFX8-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111159; GFX8-NEXT:    v_or_b32_e32 v2, v7, v211160; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc11161; GFX8-NEXT:    s_waitcnt vmcnt(0)11162; GFX8-NEXT:    buffer_wbinvl111163; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311164; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11165; GFX8-NEXT:    v_mov_b32_e32 v3, v211166; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]11167; GFX8-NEXT:    s_cbranch_execnz .LBB40_111168; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end11169; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]11170; GFX8-NEXT:    s_setpc_b64 s[30:31]11171;11172; GFX7-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:11173; GFX7:       ; %bb.0:11174; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11175; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v011176; GFX7-NEXT:    s_mov_b32 s6, 011177; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc11178; GFX7-NEXT:    v_and_b32_e32 v0, -4, v411179; GFX7-NEXT:    s_mov_b32 s7, 0xf00011180; GFX7-NEXT:    s_mov_b32 s4, s611181; GFX7-NEXT:    s_mov_b32 s5, s611182; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6411183; GFX7-NEXT:    v_and_b32_e32 v4, 3, v411184; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v411185; GFX7-NEXT:    v_lshl_b32_e32 v5, 0xffff, v411186; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v211187; GFX7-NEXT:    v_not_b32_e32 v5, v511188; GFX7-NEXT:    s_mov_b64 s[8:9], 011189; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v211190; GFX7-NEXT:  .LBB40_1: ; %atomicrmw.start11191; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=111192; GFX7-NEXT:    s_waitcnt vmcnt(0)11193; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v311194; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v211195; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v211196; GFX7-NEXT:    v_max_f32_e32 v2, v2, v611197; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v211198; GFX7-NEXT:    v_and_b32_e32 v7, v3, v511199; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v211200; GFX7-NEXT:    v_or_b32_e32 v2, v7, v211201; GFX7-NEXT:    v_mov_b32_e32 v8, v311202; GFX7-NEXT:    v_mov_b32_e32 v7, v211203; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc11204; GFX7-NEXT:    s_waitcnt vmcnt(0)11205; GFX7-NEXT:    buffer_wbinvl111206; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v311207; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]11208; GFX7-NEXT:    v_mov_b32_e32 v3, v711209; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]11210; GFX7-NEXT:    s_cbranch_execnz .LBB40_111211; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end11212; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]11213; GFX7-NEXT:    s_setpc_b64 s[30:31]11214;11215; GFX6-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:11216; GFX6:       ; %bb.0:11217; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11218; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v011219; GFX6-NEXT:    s_mov_b32 s6, 011220; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc11221; GFX6-NEXT:    v_and_b32_e32 v0, -4, v411222; GFX6-NEXT:    s_mov_b32 s7, 0xf00011223; GFX6-NEXT:    s_mov_b32 s4, s611224; GFX6-NEXT:    s_mov_b32 s5, s611225; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6411226; GFX6-NEXT:    v_and_b32_e32 v4, 3, v411227; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 3, v411228; GFX6-NEXT:    v_lshl_b32_e32 v5, 0xffff, v411229; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v211230; GFX6-NEXT:    v_not_b32_e32 v5, v511231; GFX6-NEXT:    s_mov_b64 s[8:9], 011232; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v211233; GFX6-NEXT:  .LBB40_1: ; %atomicrmw.start11234; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=111235; GFX6-NEXT:    s_waitcnt vmcnt(0)11236; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v4, v311237; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v211238; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v211239; GFX6-NEXT:    v_max_f32_e32 v2, v2, v611240; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v211241; GFX6-NEXT:    s_waitcnt expcnt(0)11242; GFX6-NEXT:    v_and_b32_e32 v7, v3, v511243; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v4, v211244; GFX6-NEXT:    v_or_b32_e32 v2, v7, v211245; GFX6-NEXT:    v_mov_b32_e32 v8, v311246; GFX6-NEXT:    v_mov_b32_e32 v7, v211247; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc11248; GFX6-NEXT:    s_waitcnt vmcnt(0)11249; GFX6-NEXT:    buffer_wbinvl111250; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v311251; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]11252; GFX6-NEXT:    v_mov_b32_e32 v3, v711253; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]11254; GFX6-NEXT:    s_cbranch_execnz .LBB40_111255; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end11256; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]11257; GFX6-NEXT:    s_waitcnt expcnt(0)11258; GFX6-NEXT:    s_setpc_b64 s[30:31]11259  %gep = getelementptr bfloat, ptr addrspace(1) %ptr, i64 102311260  %unused = atomicrmw fmax ptr addrspace(1) %gep, bfloat %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !011261  ret void11262}11263 11264define void @global_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, bfloat %val) #0 {11265; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:11266; GFX12-TRUE16:       ; %bb.0:11267; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x011268; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x011269; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x011270; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x011271; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x011272; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v011273; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)11274; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo11275; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 011276; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v311277; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v311278; GFX12-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off11279; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v311280; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11281; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff11282; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v311283; GFX12-TRUE16-NEXT:  .LBB41_1: ; %atomicrmw.start11284; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=111285; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x011286; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v411287; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 011288; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l11289; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)11290; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v311291; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v3, v3, v711292; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l11293; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)11294; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 111295; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v311296; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311297; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff11298; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)11299; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11300; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo11301; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h11302; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11303; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v711304; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v311305; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x011306; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV11307; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x011308; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV11309; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411310; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v311311; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11312; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s011313; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11314; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011315; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB41_111316; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end11317; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011318; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x011319; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]11320;11321; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:11322; GFX12-FAKE16:       ; %bb.0:11323; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x011324; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x011325; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x011326; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x011327; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x011328; GFX12-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v011329; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11330; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo11331; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v211332; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)11333; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v411334; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v411335; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 011336; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off11337; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v411338; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff11339; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11340; GFX12-FAKE16-NEXT:    v_not_b32_e32 v5, v511341; GFX12-FAKE16-NEXT:  .LBB41_1: ; %atomicrmw.start11342; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=111343; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x011344; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v311345; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11346; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v211347; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v2, v2, v611348; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)11349; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 111350; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v211351; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v211352; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff11353; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11354; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11355; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo11356; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v211357; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11358; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v211359; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v211360; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x011361; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV11362; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x011363; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV11364; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v311365; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v211366; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11367; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s011368; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11369; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011370; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB41_111371; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end11372; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011373; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x011374; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]11375;11376; GFX942-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:11377; GFX942:       ; %bb.0:11378; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11379; GFX942-NEXT:    s_movk_i32 s0, 0xf80011380; GFX942-NEXT:    s_mov_b32 s1, -111381; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]11382; GFX942-NEXT:    v_and_b32_e32 v0, -4, v411383; GFX942-NEXT:    v_mov_b32_e32 v1, v511384; GFX942-NEXT:    global_load_dword v3, v[0:1], off11385; GFX942-NEXT:    v_and_b32_e32 v4, 3, v411386; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v411387; GFX942-NEXT:    s_mov_b32 s0, 0xffff11388; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s011389; GFX942-NEXT:    v_not_b32_e32 v5, v511390; GFX942-NEXT:    s_mov_b64 s[0:1], 011391; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v211392; GFX942-NEXT:    s_movk_i32 s2, 0x7fff11393; GFX942-NEXT:  .LBB41_1: ; %atomicrmw.start11394; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=111395; GFX942-NEXT:    s_waitcnt vmcnt(0)11396; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11397; GFX942-NEXT:    s_nop 011398; GFX942-NEXT:    v_max_f32_e32 v2, v2, v611399; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 111400; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v211401; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s211402; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211403; GFX942-NEXT:    s_nop 111404; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc11405; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111406; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v211407; GFX942-NEXT:    buffer_wbl2 sc111408; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc011409; GFX942-NEXT:    s_waitcnt vmcnt(0)11410; GFX942-NEXT:    buffer_inv sc111411; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311412; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]11413; GFX942-NEXT:    v_mov_b32_e32 v3, v211414; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]11415; GFX942-NEXT:    s_cbranch_execnz .LBB41_111416; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end11417; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]11418; GFX942-NEXT:    s_setpc_b64 s[30:31]11419;11420; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:11421; GFX11-TRUE16:       ; %bb.0:11422; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11423; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v011424; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11425; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo11426; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 011427; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v311428; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v311429; GFX11-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off11430; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v311431; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11432; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff11433; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v311434; GFX11-TRUE16-NEXT:    .p2align 611435; GFX11-TRUE16-NEXT:  .LBB41_1: ; %atomicrmw.start11436; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=111437; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)11438; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v411439; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 011440; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l11441; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)11442; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v311443; GFX11-TRUE16-NEXT:    v_max_f32_e32 v3, v3, v711444; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l11445; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)11446; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 111447; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v311448; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311449; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff11450; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11451; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo11452; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h11453; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11454; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v711455; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v311456; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x011457; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc11458; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)11459; GFX11-TRUE16-NEXT:    buffer_gl1_inv11460; GFX11-TRUE16-NEXT:    buffer_gl0_inv11461; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411462; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v311463; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s011464; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)11465; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011466; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB41_111467; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end11468; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011469; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]11470;11471; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:11472; GFX11-FAKE16:       ; %bb.0:11473; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11474; GFX11-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v011475; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)11476; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo11477; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v211478; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v411479; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v411480; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 011481; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off11482; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v411483; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11484; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff11485; GFX11-FAKE16-NEXT:    v_not_b32_e32 v5, v511486; GFX11-FAKE16-NEXT:    .p2align 611487; GFX11-FAKE16-NEXT:  .LBB41_1: ; %atomicrmw.start11488; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=111489; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)11490; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v311491; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11492; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v211493; GFX11-FAKE16-NEXT:    v_max_f32_e32 v2, v2, v611494; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)11495; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 111496; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v211497; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v211498; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff11499; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11500; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo11501; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v211502; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11503; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v211504; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v211505; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x011506; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off glc11507; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)11508; GFX11-FAKE16-NEXT:    buffer_gl1_inv11509; GFX11-FAKE16-NEXT:    buffer_gl0_inv11510; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v311511; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v211512; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s011513; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)11514; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011515; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB41_111516; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end11517; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011518; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]11519;11520; GFX10-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:11521; GFX10:       ; %bb.0:11522; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11523; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v011524; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo11525; GFX10-NEXT:    v_lshlrev_b32_e32 v6, 16, v211526; GFX10-NEXT:    v_and_b32_e32 v0, -4, v411527; GFX10-NEXT:    v_and_b32_e32 v4, 3, v411528; GFX10-NEXT:    s_mov_b32 s4, 011529; GFX10-NEXT:    global_load_dword v3, v[0:1], off11530; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 3, v411531; GFX10-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff11532; GFX10-NEXT:    v_not_b32_e32 v5, v511533; GFX10-NEXT:  .LBB41_1: ; %atomicrmw.start11534; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=111535; GFX10-NEXT:    s_waitcnt vmcnt(0)11536; GFX10-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11537; GFX10-NEXT:    v_max_f32_e32 v2, v2, v611538; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 111539; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v211540; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v211541; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff11542; GFX10-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo11543; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111544; GFX10-NEXT:    v_and_or_b32 v2, v3, v5, v211545; GFX10-NEXT:    s_waitcnt_vscnt null, 0x011546; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc11547; GFX10-NEXT:    s_waitcnt vmcnt(0)11548; GFX10-NEXT:    buffer_gl1_inv11549; GFX10-NEXT:    buffer_gl0_inv11550; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v311551; GFX10-NEXT:    v_mov_b32_e32 v3, v211552; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s411553; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s411554; GFX10-NEXT:    s_cbranch_execnz .LBB41_111555; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end11556; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s411557; GFX10-NEXT:    s_setpc_b64 s[30:31]11558;11559; GFX90A-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:11560; GFX90A:       ; %bb.0:11561; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11562; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v011563; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc11564; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v411565; GFX90A-NEXT:    global_load_dword v3, v[0:1], off11566; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v411567; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v411568; GFX90A-NEXT:    s_mov_b32 s4, 0xffff11569; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s411570; GFX90A-NEXT:    v_not_b32_e32 v5, v511571; GFX90A-NEXT:    s_mov_b64 s[4:5], 011572; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v211573; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff11574; GFX90A-NEXT:  .LBB41_1: ; %atomicrmw.start11575; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=111576; GFX90A-NEXT:    s_waitcnt vmcnt(0)11577; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11578; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v611579; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 111580; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v211581; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s611582; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211583; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc11584; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111585; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v211586; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc11587; GFX90A-NEXT:    s_waitcnt vmcnt(0)11588; GFX90A-NEXT:    buffer_wbinvl111589; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311590; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11591; GFX90A-NEXT:    v_mov_b32_e32 v3, v211592; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]11593; GFX90A-NEXT:    s_cbranch_execnz .LBB41_111594; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end11595; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]11596; GFX90A-NEXT:    s_setpc_b64 s[30:31]11597;11598; GFX908-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:11599; GFX908:       ; %bb.0:11600; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11601; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v011602; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc11603; GFX908-NEXT:    v_and_b32_e32 v0, -4, v411604; GFX908-NEXT:    global_load_dword v3, v[0:1], off11605; GFX908-NEXT:    v_and_b32_e32 v4, 3, v411606; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 3, v411607; GFX908-NEXT:    s_mov_b32 s4, 0xffff11608; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v4, s411609; GFX908-NEXT:    v_not_b32_e32 v5, v511610; GFX908-NEXT:    s_mov_b64 s[4:5], 011611; GFX908-NEXT:    v_lshlrev_b32_e32 v6, 16, v211612; GFX908-NEXT:    s_movk_i32 s6, 0x7fff11613; GFX908-NEXT:  .LBB41_1: ; %atomicrmw.start11614; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=111615; GFX908-NEXT:    s_waitcnt vmcnt(0)11616; GFX908-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11617; GFX908-NEXT:    v_max_f32_e32 v2, v2, v611618; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 111619; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v211620; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s611621; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211622; GFX908-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc11623; GFX908-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111624; GFX908-NEXT:    v_and_or_b32 v2, v3, v5, v211625; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc11626; GFX908-NEXT:    s_waitcnt vmcnt(0)11627; GFX908-NEXT:    buffer_wbinvl111628; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311629; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11630; GFX908-NEXT:    v_mov_b32_e32 v3, v211631; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]11632; GFX908-NEXT:    s_cbranch_execnz .LBB41_111633; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end11634; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]11635; GFX908-NEXT:    s_setpc_b64 s[30:31]11636;11637; GFX8-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:11638; GFX8:       ; %bb.0:11639; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11640; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0xfffff800, v011641; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc11642; GFX8-NEXT:    v_and_b32_e32 v0, -4, v411643; GFX8-NEXT:    flat_load_dword v3, v[0:1]11644; GFX8-NEXT:    v_and_b32_e32 v4, 3, v411645; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 3, v411646; GFX8-NEXT:    s_mov_b32 s4, 0xffff11647; GFX8-NEXT:    v_lshlrev_b32_e64 v5, v4, s411648; GFX8-NEXT:    v_not_b32_e32 v5, v511649; GFX8-NEXT:    s_mov_b64 s[4:5], 011650; GFX8-NEXT:    v_lshlrev_b32_e32 v6, 16, v211651; GFX8-NEXT:  .LBB41_1: ; %atomicrmw.start11652; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=111653; GFX8-NEXT:    s_waitcnt vmcnt(0)11654; GFX8-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11655; GFX8-NEXT:    v_max_f32_e32 v2, v2, v611656; GFX8-NEXT:    v_bfe_u32 v8, v2, 16, 111657; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v211658; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v811659; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v211660; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211661; GFX8-NEXT:    v_cndmask_b32_e32 v2, v8, v9, vcc11662; GFX8-NEXT:    v_and_b32_e32 v7, v3, v511663; GFX8-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111664; GFX8-NEXT:    v_or_b32_e32 v2, v7, v211665; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc11666; GFX8-NEXT:    s_waitcnt vmcnt(0)11667; GFX8-NEXT:    buffer_wbinvl111668; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311669; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11670; GFX8-NEXT:    v_mov_b32_e32 v3, v211671; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]11672; GFX8-NEXT:    s_cbranch_execnz .LBB41_111673; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end11674; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]11675; GFX8-NEXT:    s_setpc_b64 s[30:31]11676;11677; GFX7-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:11678; GFX7:       ; %bb.0:11679; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11680; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v011681; GFX7-NEXT:    s_mov_b32 s6, 011682; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc11683; GFX7-NEXT:    v_and_b32_e32 v0, -4, v411684; GFX7-NEXT:    s_mov_b32 s7, 0xf00011685; GFX7-NEXT:    s_mov_b32 s4, s611686; GFX7-NEXT:    s_mov_b32 s5, s611687; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6411688; GFX7-NEXT:    v_and_b32_e32 v4, 3, v411689; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v411690; GFX7-NEXT:    v_lshl_b32_e32 v5, 0xffff, v411691; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v211692; GFX7-NEXT:    v_not_b32_e32 v5, v511693; GFX7-NEXT:    s_mov_b64 s[8:9], 011694; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v211695; GFX7-NEXT:  .LBB41_1: ; %atomicrmw.start11696; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=111697; GFX7-NEXT:    s_waitcnt vmcnt(0)11698; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v311699; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v211700; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v211701; GFX7-NEXT:    v_max_f32_e32 v2, v2, v611702; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v211703; GFX7-NEXT:    v_and_b32_e32 v7, v3, v511704; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v211705; GFX7-NEXT:    v_or_b32_e32 v2, v7, v211706; GFX7-NEXT:    v_mov_b32_e32 v8, v311707; GFX7-NEXT:    v_mov_b32_e32 v7, v211708; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc11709; GFX7-NEXT:    s_waitcnt vmcnt(0)11710; GFX7-NEXT:    buffer_wbinvl111711; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v311712; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]11713; GFX7-NEXT:    v_mov_b32_e32 v3, v711714; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]11715; GFX7-NEXT:    s_cbranch_execnz .LBB41_111716; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end11717; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]11718; GFX7-NEXT:    s_setpc_b64 s[30:31]11719;11720; GFX6-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:11721; GFX6:       ; %bb.0:11722; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11723; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v011724; GFX6-NEXT:    s_mov_b32 s6, 011725; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc11726; GFX6-NEXT:    v_and_b32_e32 v0, -4, v411727; GFX6-NEXT:    s_mov_b32 s7, 0xf00011728; GFX6-NEXT:    s_mov_b32 s4, s611729; GFX6-NEXT:    s_mov_b32 s5, s611730; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6411731; GFX6-NEXT:    v_and_b32_e32 v4, 3, v411732; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 3, v411733; GFX6-NEXT:    v_lshl_b32_e32 v5, 0xffff, v411734; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v211735; GFX6-NEXT:    v_not_b32_e32 v5, v511736; GFX6-NEXT:    s_mov_b64 s[8:9], 011737; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v211738; GFX6-NEXT:  .LBB41_1: ; %atomicrmw.start11739; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=111740; GFX6-NEXT:    s_waitcnt vmcnt(0)11741; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v4, v311742; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v211743; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v211744; GFX6-NEXT:    v_max_f32_e32 v2, v2, v611745; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v211746; GFX6-NEXT:    s_waitcnt expcnt(0)11747; GFX6-NEXT:    v_and_b32_e32 v7, v3, v511748; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v4, v211749; GFX6-NEXT:    v_or_b32_e32 v2, v7, v211750; GFX6-NEXT:    v_mov_b32_e32 v8, v311751; GFX6-NEXT:    v_mov_b32_e32 v7, v211752; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc11753; GFX6-NEXT:    s_waitcnt vmcnt(0)11754; GFX6-NEXT:    buffer_wbinvl111755; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v311756; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]11757; GFX6-NEXT:    v_mov_b32_e32 v3, v711758; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]11759; GFX6-NEXT:    s_cbranch_execnz .LBB41_111760; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end11761; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]11762; GFX6-NEXT:    s_waitcnt expcnt(0)11763; GFX6-NEXT:    s_setpc_b64 s[30:31]11764  %gep = getelementptr bfloat, ptr addrspace(1) %ptr, i64 -102411765  %unused = atomicrmw fmax ptr addrspace(1) %gep, bfloat %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !011766  ret void11767}11768 11769define bfloat @global_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, bfloat %val) #0 {11770; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:11771; GFX12-TRUE16:       ; %bb.0:11772; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x011773; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x011774; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x011775; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x011776; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x011777; GFX12-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204611778; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 011779; GFX12-TRUE16-NEXT:  .LBB42_1: ; %atomicrmw.start11780; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=111781; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x011782; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v311783; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.l, 011784; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v2.l11785; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)11786; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v411787; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v5, v5, v311788; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v3.l11789; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)11790; GFX12-TRUE16-NEXT:    v_bfe_u32 v6, v5, 16, 111791; GFX12-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v511792; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v511793; GFX12-TRUE16-NEXT:    v_add3_u32 v6, v6, v5, 0x7fff11794; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)11795; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11796; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v6, v7, vcc_lo11797; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v5.h11798; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11799; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v311800; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x011801; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV11802; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x011803; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV11804; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411805; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11806; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s011807; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11808; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011809; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB42_111810; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end11811; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011812; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v3.l11813; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x011814; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]11815;11816; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:11817; GFX12-FAKE16:       ; %bb.0:11818; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x011819; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x011820; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x011821; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x011822; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x011823; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204611824; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v211825; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 011826; GFX12-FAKE16-NEXT:  .LBB42_1: ; %atomicrmw.start11827; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=111828; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x011829; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v311830; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11831; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v411832; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v3, v3, v211833; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)11834; GFX12-FAKE16-NEXT:    v_bfe_u32 v5, v3, 16, 111835; GFX12-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v311836; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311837; GFX12-FAKE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff11838; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11839; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11840; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo11841; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v311842; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11843; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v311844; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x011845; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV11846; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x011847; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV11848; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411849; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11850; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s011851; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11852; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011853; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB42_111854; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end11855; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011856; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v311857; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x011858; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]11859;11860; GFX942-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:11861; GFX942:       ; %bb.0:11862; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11863; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:204611864; GFX942-NEXT:    s_mov_b64 s[0:1], 011865; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v211866; GFX942-NEXT:    s_movk_i32 s2, 0x7fff11867; GFX942-NEXT:    s_mov_b32 s3, 0xffff000011868; GFX942-NEXT:  .LBB42_1: ; %atomicrmw.start11869; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=111870; GFX942-NEXT:    s_waitcnt vmcnt(0)11871; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v311872; GFX942-NEXT:    v_max_f32_e32 v2, v2, v411873; GFX942-NEXT:    v_bfe_u32 v5, v2, 16, 111874; GFX942-NEXT:    v_or_b32_e32 v6, 0x400000, v211875; GFX942-NEXT:    v_add3_u32 v5, v5, v2, s211876; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211877; GFX942-NEXT:    s_nop 111878; GFX942-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc11879; GFX942-NEXT:    v_lshrrev_b32_e32 v2, 16, v211880; GFX942-NEXT:    v_and_or_b32 v2, v3, s3, v211881; GFX942-NEXT:    buffer_wbl2 sc111882; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2046 sc011883; GFX942-NEXT:    s_waitcnt vmcnt(0)11884; GFX942-NEXT:    buffer_inv sc111885; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311886; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]11887; GFX942-NEXT:    v_mov_b32_e32 v3, v211888; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]11889; GFX942-NEXT:    s_cbranch_execnz .LBB42_111890; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end11891; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]11892; GFX942-NEXT:    v_mov_b32_e32 v0, v211893; GFX942-NEXT:    s_setpc_b64 s[30:31]11894;11895; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:11896; GFX11-TRUE16:       ; %bb.0:11897; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11898; GFX11-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204611899; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 011900; GFX11-TRUE16-NEXT:    .p2align 611901; GFX11-TRUE16-NEXT:  .LBB42_1: ; %atomicrmw.start11902; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=111903; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)11904; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v311905; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, 011906; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v2.l11907; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)11908; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v411909; GFX11-TRUE16-NEXT:    v_max_f32_e32 v5, v5, v311910; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v3.l11911; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)11912; GFX11-TRUE16-NEXT:    v_bfe_u32 v6, v5, 16, 111913; GFX11-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v511914; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v511915; GFX11-TRUE16-NEXT:    v_add3_u32 v6, v6, v5, 0x7fff11916; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11917; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v6, v7, vcc_lo11918; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v5.h11919; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11920; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v311921; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x011922; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 glc11923; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)11924; GFX11-TRUE16-NEXT:    buffer_gl1_inv11925; GFX11-TRUE16-NEXT:    buffer_gl0_inv11926; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411927; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s011928; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)11929; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011930; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB42_111931; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end11932; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011933; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v3.l11934; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]11935;11936; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:11937; GFX11-FAKE16:       ; %bb.0:11938; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11939; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204611940; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v211941; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 011942; GFX11-FAKE16-NEXT:    .p2align 611943; GFX11-FAKE16-NEXT:  .LBB42_1: ; %atomicrmw.start11944; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=111945; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)11946; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v311947; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11948; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v411949; GFX11-FAKE16-NEXT:    v_max_f32_e32 v3, v3, v211950; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)11951; GFX11-FAKE16-NEXT:    v_bfe_u32 v5, v3, 16, 111952; GFX11-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v311953; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311954; GFX11-FAKE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff11955; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11956; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo11957; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v311958; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11959; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v311960; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x011961; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 glc11962; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)11963; GFX11-FAKE16-NEXT:    buffer_gl1_inv11964; GFX11-FAKE16-NEXT:    buffer_gl0_inv11965; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411966; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s011967; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)11968; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011969; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB42_111970; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end11971; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011972; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v311973; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]11974;11975; GFX10-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:11976; GFX10:       ; %bb.0:11977; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11978; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:204611979; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v211980; GFX10-NEXT:    s_mov_b32 s4, 011981; GFX10-NEXT:  .LBB42_1: ; %atomicrmw.start11982; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=111983; GFX10-NEXT:    s_waitcnt vmcnt(0)11984; GFX10-NEXT:    v_mov_b32_e32 v4, v311985; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 16, v411986; GFX10-NEXT:    v_max_f32_e32 v3, v3, v211987; GFX10-NEXT:    v_bfe_u32 v5, v3, 16, 111988; GFX10-NEXT:    v_or_b32_e32 v6, 0x400000, v311989; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311990; GFX10-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff11991; GFX10-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo11992; GFX10-NEXT:    v_lshrrev_b32_e32 v3, 16, v311993; GFX10-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v311994; GFX10-NEXT:    s_waitcnt_vscnt null, 0x011995; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2046 glc11996; GFX10-NEXT:    s_waitcnt vmcnt(0)11997; GFX10-NEXT:    buffer_gl1_inv11998; GFX10-NEXT:    buffer_gl0_inv11999; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412000; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s412001; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s412002; GFX10-NEXT:    s_cbranch_execnz .LBB42_112003; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end12004; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s412005; GFX10-NEXT:    v_mov_b32_e32 v0, v312006; GFX10-NEXT:    s_setpc_b64 s[30:31]12007;12008; GFX90A-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:12009; GFX90A:       ; %bb.0:12010; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12011; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:204612012; GFX90A-NEXT:    s_mov_b64 s[4:5], 012013; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v212014; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff12015; GFX90A-NEXT:    s_mov_b32 s7, 0xffff000012016; GFX90A-NEXT:  .LBB42_1: ; %atomicrmw.start12017; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=112018; GFX90A-NEXT:    s_waitcnt vmcnt(0)12019; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v312020; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v412021; GFX90A-NEXT:    v_bfe_u32 v5, v2, 16, 112022; GFX90A-NEXT:    v_or_b32_e32 v6, 0x400000, v212023; GFX90A-NEXT:    v_add3_u32 v5, v5, v2, s612024; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212025; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc12026; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, 16, v212027; GFX90A-NEXT:    v_and_or_b32 v2, v3, s7, v212028; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2046 glc12029; GFX90A-NEXT:    s_waitcnt vmcnt(0)12030; GFX90A-NEXT:    buffer_wbinvl112031; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312032; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12033; GFX90A-NEXT:    v_mov_b32_e32 v3, v212034; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]12035; GFX90A-NEXT:    s_cbranch_execnz .LBB42_112036; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end12037; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]12038; GFX90A-NEXT:    v_mov_b32_e32 v0, v212039; GFX90A-NEXT:    s_setpc_b64 s[30:31]12040;12041; GFX908-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:12042; GFX908:       ; %bb.0:12043; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12044; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:204612045; GFX908-NEXT:    s_mov_b64 s[4:5], 012046; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v212047; GFX908-NEXT:    s_movk_i32 s6, 0x7fff12048; GFX908-NEXT:    s_mov_b32 s7, 0xffff000012049; GFX908-NEXT:  .LBB42_1: ; %atomicrmw.start12050; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=112051; GFX908-NEXT:    s_waitcnt vmcnt(0)12052; GFX908-NEXT:    v_mov_b32_e32 v4, v312053; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v412054; GFX908-NEXT:    v_max_f32_e32 v3, v3, v212055; GFX908-NEXT:    v_bfe_u32 v5, v3, 16, 112056; GFX908-NEXT:    v_or_b32_e32 v6, 0x400000, v312057; GFX908-NEXT:    v_add3_u32 v5, v5, v3, s612058; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v3, v312059; GFX908-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc12060; GFX908-NEXT:    v_lshrrev_b32_e32 v3, 16, v312061; GFX908-NEXT:    v_and_or_b32 v3, v4, s7, v312062; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2046 glc12063; GFX908-NEXT:    s_waitcnt vmcnt(0)12064; GFX908-NEXT:    buffer_wbinvl112065; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v412066; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12067; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]12068; GFX908-NEXT:    s_cbranch_execnz .LBB42_112069; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end12070; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]12071; GFX908-NEXT:    v_mov_b32_e32 v0, v312072; GFX908-NEXT:    s_setpc_b64 s[30:31]12073;12074; GFX8-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:12075; GFX8:       ; %bb.0:12076; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12077; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v012078; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc12079; GFX8-NEXT:    flat_load_dword v0, v[3:4]12080; GFX8-NEXT:    s_mov_b64 s[4:5], 012081; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 16, v212082; GFX8-NEXT:  .LBB42_1: ; %atomicrmw.start12083; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=112084; GFX8-NEXT:    s_waitcnt vmcnt(0)12085; GFX8-NEXT:    v_mov_b32_e32 v6, v012086; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 16, v612087; GFX8-NEXT:    v_max_f32_e32 v0, v0, v112088; GFX8-NEXT:    v_bfe_u32 v5, v0, 16, 112089; GFX8-NEXT:    v_add_u32_e32 v5, vcc, v5, v012090; GFX8-NEXT:    v_add_u32_e32 v5, vcc, 0x7fff, v512091; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v012092; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v0, v012093; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v612094; GFX8-NEXT:    v_cndmask_b32_e32 v0, v5, v7, vcc12095; GFX8-NEXT:    v_or_b32_sdwa v5, v2, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112096; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc12097; GFX8-NEXT:    s_waitcnt vmcnt(0)12098; GFX8-NEXT:    buffer_wbinvl112099; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v612100; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12101; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]12102; GFX8-NEXT:    s_cbranch_execnz .LBB42_112103; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end12104; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]12105; GFX8-NEXT:    s_setpc_b64 s[30:31]12106;12107; GFX7-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:12108; GFX7:       ; %bb.0:12109; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12110; GFX7-NEXT:    s_mov_b32 s6, 012111; GFX7-NEXT:    s_mov_b32 s7, 0xf00012112; GFX7-NEXT:    s_mov_b32 s4, s612113; GFX7-NEXT:    s_mov_b32 s5, s612114; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:204612115; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v212116; GFX7-NEXT:    s_mov_b64 s[8:9], 012117; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v212118; GFX7-NEXT:  .LBB42_1: ; %atomicrmw.start12119; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=112120; GFX7-NEXT:    s_waitcnt vmcnt(0)12121; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v312122; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v212123; GFX7-NEXT:    v_max_f32_e32 v2, v2, v612124; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v312125; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v212126; GFX7-NEXT:    v_or_b32_e32 v2, v4, v212127; GFX7-NEXT:    v_mov_b32_e32 v5, v312128; GFX7-NEXT:    v_mov_b32_e32 v4, v212129; GFX7-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 offset:2046 glc12130; GFX7-NEXT:    s_waitcnt vmcnt(0)12131; GFX7-NEXT:    buffer_wbinvl112132; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v312133; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]12134; GFX7-NEXT:    v_mov_b32_e32 v3, v412135; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]12136; GFX7-NEXT:    s_cbranch_execnz .LBB42_112137; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end12138; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]12139; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v412140; GFX7-NEXT:    s_setpc_b64 s[30:31]12141;12142; GFX6-LABEL: global_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:12143; GFX6:       ; %bb.0:12144; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12145; GFX6-NEXT:    s_mov_b32 s6, 012146; GFX6-NEXT:    s_mov_b32 s7, 0xf00012147; GFX6-NEXT:    s_mov_b32 s4, s612148; GFX6-NEXT:    s_mov_b32 s5, s612149; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:204612150; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v212151; GFX6-NEXT:    s_mov_b64 s[8:9], 012152; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v212153; GFX6-NEXT:  .LBB42_1: ; %atomicrmw.start12154; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=112155; GFX6-NEXT:    s_waitcnt vmcnt(0)12156; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v312157; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v212158; GFX6-NEXT:    v_max_f32_e32 v2, v2, v612159; GFX6-NEXT:    s_waitcnt expcnt(0)12160; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v312161; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v212162; GFX6-NEXT:    v_or_b32_e32 v2, v4, v212163; GFX6-NEXT:    v_mov_b32_e32 v5, v312164; GFX6-NEXT:    v_mov_b32_e32 v4, v212165; GFX6-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 offset:2046 glc12166; GFX6-NEXT:    s_waitcnt vmcnt(0)12167; GFX6-NEXT:    buffer_wbinvl112168; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v312169; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]12170; GFX6-NEXT:    v_mov_b32_e32 v3, v412171; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]12172; GFX6-NEXT:    s_cbranch_execnz .LBB42_112173; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end12174; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]12175; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v412176; GFX6-NEXT:    s_waitcnt expcnt(0)12177; GFX6-NEXT:    s_setpc_b64 s[30:31]12178  %gep = getelementptr bfloat, ptr addrspace(1) %ptr, i64 102312179  %result = atomicrmw fmax ptr addrspace(1) %gep, bfloat %val syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !012180  ret bfloat %result12181}12182 12183define void @global_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, bfloat %val) #0 {12184; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:12185; GFX12-TRUE16:       ; %bb.0:12186; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012187; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x012188; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x012189; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x012190; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x012191; GFX12-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off offset:204612192; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 012193; GFX12-TRUE16-NEXT:  .LBB43_1: ; %atomicrmw.start12194; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=112195; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.l, 012196; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v2.l12197; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x012198; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v412199; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)12200; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v5, v5, v312201; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v3.l12202; GFX12-TRUE16-NEXT:    v_bfe_u32 v6, v5, 16, 112203; GFX12-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v512204; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v512205; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)12206; GFX12-TRUE16-NEXT:    v_add3_u32 v6, v6, v5, 0x7fff12207; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)12208; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v6, v7, vcc_lo12209; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12210; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v5.h12211; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v312212; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x012213; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV12214; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x012215; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV12216; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412217; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v312218; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12219; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s012220; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12221; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012222; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB43_112223; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end12224; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012225; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x012226; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]12227;12228; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:12229; GFX12-FAKE16:       ; %bb.0:12230; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x012231; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x012232; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x012233; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x012234; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x012235; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204612236; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v212237; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 012238; GFX12-FAKE16-NEXT:  .LBB43_1: ; %atomicrmw.start12239; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=112240; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x012241; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v312242; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12243; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v2, v2, v412244; GFX12-FAKE16-NEXT:    v_bfe_u32 v5, v2, 16, 112245; GFX12-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v212246; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v212247; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)12248; GFX12-FAKE16-NEXT:    v_add3_u32 v5, v5, v2, 0x7fff12249; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)12250; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc_lo12251; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12252; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v212253; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v3, v212254; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x012255; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV12256; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x012257; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV12258; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v312259; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v212260; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12261; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s012262; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12263; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012264; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB43_112265; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end12266; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012267; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x012268; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]12269;12270; GFX942-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:12271; GFX942:       ; %bb.0:12272; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12273; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:204612274; GFX942-NEXT:    s_mov_b64 s[0:1], 012275; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v212276; GFX942-NEXT:    s_movk_i32 s2, 0x7fff12277; GFX942-NEXT:    s_mov_b32 s3, 0xffff000012278; GFX942-NEXT:  .LBB43_1: ; %atomicrmw.start12279; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=112280; GFX942-NEXT:    s_waitcnt vmcnt(0)12281; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v312282; GFX942-NEXT:    v_max_f32_e32 v2, v2, v412283; GFX942-NEXT:    v_bfe_u32 v5, v2, 16, 112284; GFX942-NEXT:    v_or_b32_e32 v6, 0x400000, v212285; GFX942-NEXT:    v_add3_u32 v5, v5, v2, s212286; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212287; GFX942-NEXT:    s_nop 112288; GFX942-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc12289; GFX942-NEXT:    v_lshrrev_b32_e32 v2, 16, v212290; GFX942-NEXT:    v_and_or_b32 v2, v3, s3, v212291; GFX942-NEXT:    buffer_wbl2 sc112292; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2046 sc012293; GFX942-NEXT:    s_waitcnt vmcnt(0)12294; GFX942-NEXT:    buffer_inv sc112295; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312296; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]12297; GFX942-NEXT:    v_mov_b32_e32 v3, v212298; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]12299; GFX942-NEXT:    s_cbranch_execnz .LBB43_112300; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end12301; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]12302; GFX942-NEXT:    s_setpc_b64 s[30:31]12303;12304; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:12305; GFX11-TRUE16:       ; %bb.0:12306; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12307; GFX11-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off offset:204612308; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 012309; GFX11-TRUE16-NEXT:    .p2align 612310; GFX11-TRUE16-NEXT:  .LBB43_1: ; %atomicrmw.start12311; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=112312; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, 012313; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v2.l12314; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)12315; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v412316; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)12317; GFX11-TRUE16-NEXT:    v_max_f32_e32 v5, v5, v312318; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v3.l12319; GFX11-TRUE16-NEXT:    v_bfe_u32 v6, v5, 16, 112320; GFX11-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v512321; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v512322; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)12323; GFX11-TRUE16-NEXT:    v_add3_u32 v6, v6, v5, 0x7fff12324; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v6, v7, vcc_lo12325; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12326; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v5.h12327; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v312328; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x012329; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2046 glc12330; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)12331; GFX11-TRUE16-NEXT:    buffer_gl1_inv12332; GFX11-TRUE16-NEXT:    buffer_gl0_inv12333; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412334; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v312335; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s012336; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12337; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012338; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB43_112339; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end12340; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012341; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]12342;12343; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:12344; GFX11-FAKE16:       ; %bb.0:12345; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12346; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204612347; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v212348; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 012349; GFX11-FAKE16-NEXT:    .p2align 612350; GFX11-FAKE16-NEXT:  .LBB43_1: ; %atomicrmw.start12351; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=112352; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)12353; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v312354; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12355; GFX11-FAKE16-NEXT:    v_max_f32_e32 v2, v2, v412356; GFX11-FAKE16-NEXT:    v_bfe_u32 v5, v2, 16, 112357; GFX11-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v212358; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v212359; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)12360; GFX11-FAKE16-NEXT:    v_add3_u32 v5, v5, v2, 0x7fff12361; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc_lo12362; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12363; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v212364; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v3, v212365; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x012366; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2046 glc12367; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)12368; GFX11-FAKE16-NEXT:    buffer_gl1_inv12369; GFX11-FAKE16-NEXT:    buffer_gl0_inv12370; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v312371; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v212372; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s012373; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12374; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012375; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB43_112376; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end12377; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012378; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]12379;12380; GFX10-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:12381; GFX10:       ; %bb.0:12382; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12383; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:204612384; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v212385; GFX10-NEXT:    s_mov_b32 s4, 012386; GFX10-NEXT:  .LBB43_1: ; %atomicrmw.start12387; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=112388; GFX10-NEXT:    s_waitcnt vmcnt(0)12389; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v312390; GFX10-NEXT:    v_max_f32_e32 v2, v2, v412391; GFX10-NEXT:    v_bfe_u32 v5, v2, 16, 112392; GFX10-NEXT:    v_or_b32_e32 v6, 0x400000, v212393; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v212394; GFX10-NEXT:    v_add3_u32 v5, v5, v2, 0x7fff12395; GFX10-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc_lo12396; GFX10-NEXT:    v_lshrrev_b32_e32 v2, 16, v212397; GFX10-NEXT:    v_and_or_b32 v2, 0xffff0000, v3, v212398; GFX10-NEXT:    s_waitcnt_vscnt null, 0x012399; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2046 glc12400; GFX10-NEXT:    s_waitcnt vmcnt(0)12401; GFX10-NEXT:    buffer_gl1_inv12402; GFX10-NEXT:    buffer_gl0_inv12403; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v312404; GFX10-NEXT:    v_mov_b32_e32 v3, v212405; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s412406; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s412407; GFX10-NEXT:    s_cbranch_execnz .LBB43_112408; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end12409; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s412410; GFX10-NEXT:    s_setpc_b64 s[30:31]12411;12412; GFX90A-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:12413; GFX90A:       ; %bb.0:12414; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12415; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:204612416; GFX90A-NEXT:    s_mov_b64 s[4:5], 012417; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v212418; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff12419; GFX90A-NEXT:    s_mov_b32 s7, 0xffff000012420; GFX90A-NEXT:  .LBB43_1: ; %atomicrmw.start12421; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=112422; GFX90A-NEXT:    s_waitcnt vmcnt(0)12423; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v312424; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v412425; GFX90A-NEXT:    v_bfe_u32 v5, v2, 16, 112426; GFX90A-NEXT:    v_or_b32_e32 v6, 0x400000, v212427; GFX90A-NEXT:    v_add3_u32 v5, v5, v2, s612428; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212429; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc12430; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, 16, v212431; GFX90A-NEXT:    v_and_or_b32 v2, v3, s7, v212432; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2046 glc12433; GFX90A-NEXT:    s_waitcnt vmcnt(0)12434; GFX90A-NEXT:    buffer_wbinvl112435; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312436; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12437; GFX90A-NEXT:    v_mov_b32_e32 v3, v212438; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]12439; GFX90A-NEXT:    s_cbranch_execnz .LBB43_112440; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end12441; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]12442; GFX90A-NEXT:    s_setpc_b64 s[30:31]12443;12444; GFX908-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:12445; GFX908:       ; %bb.0:12446; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12447; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:204612448; GFX908-NEXT:    s_mov_b64 s[4:5], 012449; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v212450; GFX908-NEXT:    s_movk_i32 s6, 0x7fff12451; GFX908-NEXT:    s_mov_b32 s7, 0xffff000012452; GFX908-NEXT:  .LBB43_1: ; %atomicrmw.start12453; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=112454; GFX908-NEXT:    s_waitcnt vmcnt(0)12455; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v312456; GFX908-NEXT:    v_max_f32_e32 v2, v2, v412457; GFX908-NEXT:    v_bfe_u32 v5, v2, 16, 112458; GFX908-NEXT:    v_or_b32_e32 v6, 0x400000, v212459; GFX908-NEXT:    v_add3_u32 v5, v5, v2, s612460; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212461; GFX908-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc12462; GFX908-NEXT:    v_lshrrev_b32_e32 v2, 16, v212463; GFX908-NEXT:    v_and_or_b32 v2, v3, s7, v212464; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2046 glc12465; GFX908-NEXT:    s_waitcnt vmcnt(0)12466; GFX908-NEXT:    buffer_wbinvl112467; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312468; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12469; GFX908-NEXT:    v_mov_b32_e32 v3, v212470; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]12471; GFX908-NEXT:    s_cbranch_execnz .LBB43_112472; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end12473; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]12474; GFX908-NEXT:    s_setpc_b64 s[30:31]12475;12476; GFX8-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:12477; GFX8:       ; %bb.0:12478; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12479; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fe, v012480; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc12481; GFX8-NEXT:    flat_load_dword v3, v[0:1]12482; GFX8-NEXT:    s_mov_b64 s[4:5], 012483; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v212484; GFX8-NEXT:  .LBB43_1: ; %atomicrmw.start12485; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=112486; GFX8-NEXT:    s_waitcnt vmcnt(0)12487; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v312488; GFX8-NEXT:    v_max_f32_e32 v2, v2, v412489; GFX8-NEXT:    v_bfe_u32 v6, v2, 16, 112490; GFX8-NEXT:    v_add_u32_e32 v6, vcc, v6, v212491; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0x7fff, v612492; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v212493; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212494; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v312495; GFX8-NEXT:    v_cndmask_b32_e32 v2, v6, v7, vcc12496; GFX8-NEXT:    v_or_b32_sdwa v2, v5, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112497; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc12498; GFX8-NEXT:    s_waitcnt vmcnt(0)12499; GFX8-NEXT:    buffer_wbinvl112500; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312501; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12502; GFX8-NEXT:    v_mov_b32_e32 v3, v212503; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]12504; GFX8-NEXT:    s_cbranch_execnz .LBB43_112505; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end12506; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]12507; GFX8-NEXT:    s_setpc_b64 s[30:31]12508;12509; GFX7-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:12510; GFX7:       ; %bb.0:12511; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12512; GFX7-NEXT:    s_mov_b32 s6, 012513; GFX7-NEXT:    s_mov_b32 s7, 0xf00012514; GFX7-NEXT:    s_mov_b32 s4, s612515; GFX7-NEXT:    s_mov_b32 s5, s612516; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:204612517; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v212518; GFX7-NEXT:    s_mov_b64 s[8:9], 012519; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v212520; GFX7-NEXT:  .LBB43_1: ; %atomicrmw.start12521; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=112522; GFX7-NEXT:    s_waitcnt vmcnt(0)12523; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v312524; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v212525; GFX7-NEXT:    v_max_f32_e32 v2, v2, v412526; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v312527; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v212528; GFX7-NEXT:    v_or_b32_e32 v2, v5, v212529; GFX7-NEXT:    v_mov_b32_e32 v6, v312530; GFX7-NEXT:    v_mov_b32_e32 v5, v212531; GFX7-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 offset:2046 glc12532; GFX7-NEXT:    s_waitcnt vmcnt(0)12533; GFX7-NEXT:    buffer_wbinvl112534; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v312535; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]12536; GFX7-NEXT:    v_mov_b32_e32 v3, v512537; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]12538; GFX7-NEXT:    s_cbranch_execnz .LBB43_112539; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end12540; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]12541; GFX7-NEXT:    s_setpc_b64 s[30:31]12542;12543; GFX6-LABEL: global_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:12544; GFX6:       ; %bb.0:12545; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12546; GFX6-NEXT:    s_mov_b32 s6, 012547; GFX6-NEXT:    s_mov_b32 s7, 0xf00012548; GFX6-NEXT:    s_mov_b32 s4, s612549; GFX6-NEXT:    s_mov_b32 s5, s612550; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr64 offset:204612551; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v212552; GFX6-NEXT:    s_mov_b64 s[8:9], 012553; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v212554; GFX6-NEXT:  .LBB43_1: ; %atomicrmw.start12555; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=112556; GFX6-NEXT:    s_waitcnt vmcnt(0)12557; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v312558; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v212559; GFX6-NEXT:    v_max_f32_e32 v2, v2, v412560; GFX6-NEXT:    s_waitcnt expcnt(0)12561; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v312562; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v212563; GFX6-NEXT:    v_or_b32_e32 v2, v5, v212564; GFX6-NEXT:    v_mov_b32_e32 v6, v312565; GFX6-NEXT:    v_mov_b32_e32 v5, v212566; GFX6-NEXT:    buffer_atomic_cmpswap v[5:6], v[0:1], s[4:7], 0 addr64 offset:2046 glc12567; GFX6-NEXT:    s_waitcnt vmcnt(0)12568; GFX6-NEXT:    buffer_wbinvl112569; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v312570; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]12571; GFX6-NEXT:    v_mov_b32_e32 v3, v512572; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]12573; GFX6-NEXT:    s_cbranch_execnz .LBB43_112574; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end12575; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]12576; GFX6-NEXT:    s_waitcnt expcnt(0)12577; GFX6-NEXT:    s_setpc_b64 s[30:31]12578  %gep = getelementptr bfloat, ptr addrspace(1) %ptr, i64 102312579  %unused = atomicrmw fmax ptr addrspace(1) %gep, bfloat %val syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !012580  ret void12581}12582 12583define bfloat @global_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, bfloat %val) #0 {12584; GFX12-TRUE16-LABEL: global_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:12585; GFX12-TRUE16:       ; %bb.0:12586; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012587; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x012588; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x012589; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x012590; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x012591; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v012592; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)12593; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo12594; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 012595; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v312596; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v312597; GFX12-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off12598; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v312599; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12600; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff12601; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v412602; GFX12-TRUE16-NEXT:  .LBB44_1: ; %atomicrmw.start12603; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=112604; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x012605; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v512606; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 012607; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l12608; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)12609; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v612610; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v512611; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)12612; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v5, v5, v712613; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l12614; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 112615; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v512616; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v512617; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)12618; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff12619; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)12620; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo12621; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12622; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h12623; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v712624; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12625; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v512626; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS12627; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x012628; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_SYS12629; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x012630; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS12631; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v612632; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12633; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s012634; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12635; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012636; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB44_112637; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end12638; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012639; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v512640; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x012641; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]12642;12643; GFX12-FAKE16-LABEL: global_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:12644; GFX12-FAKE16:       ; %bb.0:12645; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x012646; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x012647; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x012648; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x012649; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x012650; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v012651; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)12652; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo12653; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v212654; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)12655; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v312656; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v312657; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 012658; GFX12-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off12659; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v312660; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff12661; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12662; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v412663; GFX12-FAKE16-NEXT:  .LBB44_1: ; %atomicrmw.start12664; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=112665; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x012666; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v512667; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12668; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v612669; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v512670; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12671; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v5, v5, v212672; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 112673; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v512674; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v512675; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)12676; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff12677; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)12678; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo12679; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12680; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v512681; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v512682; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12683; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v512684; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS12685; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x012686; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_SYS12687; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x012688; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS12689; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v612690; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12691; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s012692; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12693; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012694; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB44_112695; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end12696; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012697; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v512698; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x012699; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]12700;12701; GFX942-LABEL: global_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:12702; GFX942:       ; %bb.0:12703; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12704; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe12705; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]12706; GFX942-NEXT:    v_and_b32_e32 v0, -4, v412707; GFX942-NEXT:    v_mov_b32_e32 v1, v512708; GFX942-NEXT:    global_load_dword v3, v[0:1], off12709; GFX942-NEXT:    v_and_b32_e32 v4, 3, v412710; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v412711; GFX942-NEXT:    s_mov_b32 s0, 0xffff12712; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s012713; GFX942-NEXT:    v_not_b32_e32 v5, v512714; GFX942-NEXT:    s_mov_b64 s[0:1], 012715; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v212716; GFX942-NEXT:    s_movk_i32 s2, 0x7fff12717; GFX942-NEXT:  .LBB44_1: ; %atomicrmw.start12718; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=112719; GFX942-NEXT:    s_waitcnt vmcnt(0)12720; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD12721; GFX942-NEXT:    s_nop 012722; GFX942-NEXT:    v_max_f32_e32 v2, v2, v612723; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 112724; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v212725; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s212726; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212727; GFX942-NEXT:    s_nop 112728; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc12729; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112730; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v212731; GFX942-NEXT:    buffer_wbl2 sc0 sc112732; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc0 sc112733; GFX942-NEXT:    s_waitcnt vmcnt(0)12734; GFX942-NEXT:    buffer_inv sc0 sc112735; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312736; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]12737; GFX942-NEXT:    v_mov_b32_e32 v3, v212738; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]12739; GFX942-NEXT:    s_cbranch_execnz .LBB44_112740; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end12741; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]12742; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v4, v212743; GFX942-NEXT:    s_setpc_b64 s[30:31]12744;12745; GFX11-TRUE16-LABEL: global_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:12746; GFX11-TRUE16:       ; %bb.0:12747; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12748; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v012749; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12750; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo12751; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 012752; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v312753; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v312754; GFX11-TRUE16-NEXT:    global_load_b32 v5, v[0:1], off12755; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v312756; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12757; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff12758; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v412759; GFX11-TRUE16-NEXT:    .p2align 612760; GFX11-TRUE16-NEXT:  .LBB44_1: ; %atomicrmw.start12761; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=112762; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)12763; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v512764; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 012765; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l12766; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)12767; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v612768; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v512769; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)12770; GFX11-TRUE16-NEXT:    v_max_f32_e32 v5, v5, v712771; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l12772; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 112773; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v512774; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v512775; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)12776; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff12777; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo12778; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12779; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h12780; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v712781; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12782; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v512783; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x012784; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc12785; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)12786; GFX11-TRUE16-NEXT:    buffer_gl1_inv12787; GFX11-TRUE16-NEXT:    buffer_gl0_inv12788; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v612789; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s012790; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12791; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012792; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB44_112793; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end12794; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012795; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v512796; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]12797;12798; GFX11-FAKE16-LABEL: global_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:12799; GFX11-FAKE16:       ; %bb.0:12800; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12801; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v012802; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)12803; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo12804; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v212805; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v312806; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v312807; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 012808; GFX11-FAKE16-NEXT:    global_load_b32 v5, v[0:1], off12809; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v312810; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12811; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff12812; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v412813; GFX11-FAKE16-NEXT:    .p2align 612814; GFX11-FAKE16-NEXT:  .LBB44_1: ; %atomicrmw.start12815; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=112816; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)12817; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v512818; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12819; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v612820; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v512821; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12822; GFX11-FAKE16-NEXT:    v_max_f32_e32 v5, v5, v212823; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 112824; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v512825; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v512826; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)12827; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff12828; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo12829; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12830; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v512831; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v512832; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12833; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v512834; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x012835; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v5, v[0:1], v[5:6], off glc12836; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)12837; GFX11-FAKE16-NEXT:    buffer_gl1_inv12838; GFX11-FAKE16-NEXT:    buffer_gl0_inv12839; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v612840; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s012841; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12842; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012843; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB44_112844; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end12845; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012846; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v512847; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]12848;12849; GFX10-LABEL: global_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:12850; GFX10:       ; %bb.0:12851; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12852; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v012853; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo12854; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v212855; GFX10-NEXT:    v_and_b32_e32 v0, -4, v312856; GFX10-NEXT:    v_and_b32_e32 v3, 3, v312857; GFX10-NEXT:    s_mov_b32 s4, 012858; GFX10-NEXT:    global_load_dword v5, v[0:1], off12859; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v312860; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff12861; GFX10-NEXT:    v_not_b32_e32 v4, v412862; GFX10-NEXT:  .LBB44_1: ; %atomicrmw.start12863; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=112864; GFX10-NEXT:    s_waitcnt vmcnt(0)12865; GFX10-NEXT:    v_mov_b32_e32 v6, v512866; GFX10-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD12867; GFX10-NEXT:    v_max_f32_e32 v5, v5, v212868; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 112869; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v512870; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v512871; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff12872; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo12873; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112874; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v512875; GFX10-NEXT:    s_waitcnt_vscnt null, 0x012876; GFX10-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc12877; GFX10-NEXT:    s_waitcnt vmcnt(0)12878; GFX10-NEXT:    buffer_gl1_inv12879; GFX10-NEXT:    buffer_gl0_inv12880; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v612881; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s412882; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s412883; GFX10-NEXT:    s_cbranch_execnz .LBB44_112884; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end12885; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s412886; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v512887; GFX10-NEXT:    s_setpc_b64 s[30:31]12888;12889; GFX90A-LABEL: global_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:12890; GFX90A:       ; %bb.0:12891; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12892; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v012893; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc12894; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v412895; GFX90A-NEXT:    global_load_dword v3, v[0:1], off12896; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v412897; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v412898; GFX90A-NEXT:    s_mov_b32 s4, 0xffff12899; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s412900; GFX90A-NEXT:    v_not_b32_e32 v5, v512901; GFX90A-NEXT:    s_mov_b64 s[4:5], 012902; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v212903; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff12904; GFX90A-NEXT:  .LBB44_1: ; %atomicrmw.start12905; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=112906; GFX90A-NEXT:    s_waitcnt vmcnt(0)12907; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD12908; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v612909; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 112910; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v212911; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s612912; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212913; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc12914; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112915; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v212916; GFX90A-NEXT:    buffer_wbl212917; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc12918; GFX90A-NEXT:    s_waitcnt vmcnt(0)12919; GFX90A-NEXT:    buffer_invl212920; GFX90A-NEXT:    buffer_wbinvl112921; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312922; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12923; GFX90A-NEXT:    v_mov_b32_e32 v3, v212924; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]12925; GFX90A-NEXT:    s_cbranch_execnz .LBB44_112926; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end12927; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]12928; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v4, v212929; GFX90A-NEXT:    s_setpc_b64 s[30:31]12930;12931; GFX908-LABEL: global_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:12932; GFX908:       ; %bb.0:12933; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12934; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v012935; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc12936; GFX908-NEXT:    v_and_b32_e32 v0, -4, v312937; GFX908-NEXT:    global_load_dword v5, v[0:1], off12938; GFX908-NEXT:    v_and_b32_e32 v3, 3, v312939; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v312940; GFX908-NEXT:    s_mov_b32 s4, 0xffff12941; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s412942; GFX908-NEXT:    v_not_b32_e32 v4, v412943; GFX908-NEXT:    s_mov_b64 s[4:5], 012944; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v212945; GFX908-NEXT:    s_movk_i32 s6, 0x7fff12946; GFX908-NEXT:  .LBB44_1: ; %atomicrmw.start12947; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=112948; GFX908-NEXT:    s_waitcnt vmcnt(0)12949; GFX908-NEXT:    v_mov_b32_e32 v6, v512950; GFX908-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD12951; GFX908-NEXT:    v_max_f32_e32 v5, v5, v212952; GFX908-NEXT:    v_bfe_u32 v7, v5, 16, 112953; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v512954; GFX908-NEXT:    v_add3_u32 v7, v7, v5, s612955; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v512956; GFX908-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc12957; GFX908-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112958; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v512959; GFX908-NEXT:    global_atomic_cmpswap v5, v[0:1], v[5:6], off glc12960; GFX908-NEXT:    s_waitcnt vmcnt(0)12961; GFX908-NEXT:    buffer_wbinvl112962; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v612963; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12964; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]12965; GFX908-NEXT:    s_cbranch_execnz .LBB44_112966; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end12967; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]12968; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v512969; GFX908-NEXT:    s_setpc_b64 s[30:31]12970;12971; GFX8-LABEL: global_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:12972; GFX8:       ; %bb.0:12973; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12974; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v012975; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc12976; GFX8-NEXT:    v_and_b32_e32 v0, -4, v312977; GFX8-NEXT:    flat_load_dword v5, v[0:1]12978; GFX8-NEXT:    v_and_b32_e32 v3, 3, v312979; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v312980; GFX8-NEXT:    s_mov_b32 s4, 0xffff12981; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s412982; GFX8-NEXT:    v_not_b32_e32 v4, v412983; GFX8-NEXT:    s_mov_b64 s[4:5], 012984; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v212985; GFX8-NEXT:  .LBB44_1: ; %atomicrmw.start12986; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=112987; GFX8-NEXT:    s_waitcnt vmcnt(0)12988; GFX8-NEXT:    v_mov_b32_e32 v6, v512989; GFX8-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD12990; GFX8-NEXT:    v_max_f32_e32 v5, v5, v212991; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 112992; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v512993; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v812994; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v512995; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v512996; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc12997; GFX8-NEXT:    v_and_b32_e32 v7, v6, v412998; GFX8-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112999; GFX8-NEXT:    v_or_b32_e32 v5, v7, v513000; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc13001; GFX8-NEXT:    s_waitcnt vmcnt(0)13002; GFX8-NEXT:    buffer_wbinvl113003; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v613004; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13005; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]13006; GFX8-NEXT:    s_cbranch_execnz .LBB44_113007; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end13008; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]13009; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v513010; GFX8-NEXT:    s_setpc_b64 s[30:31]13011;13012; GFX7-LABEL: global_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13013; GFX7:       ; %bb.0:13014; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13015; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v013016; GFX7-NEXT:    s_mov_b32 s6, 013017; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc13018; GFX7-NEXT:    v_and_b32_e32 v0, -4, v413019; GFX7-NEXT:    s_mov_b32 s7, 0xf00013020; GFX7-NEXT:    s_mov_b32 s4, s613021; GFX7-NEXT:    s_mov_b32 s5, s613022; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6413023; GFX7-NEXT:    v_and_b32_e32 v4, 3, v413024; GFX7-NEXT:    v_lshlrev_b32_e32 v6, 3, v413025; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v613026; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v213027; GFX7-NEXT:    v_not_b32_e32 v7, v413028; GFX7-NEXT:    s_mov_b64 s[8:9], 013029; GFX7-NEXT:    v_and_b32_e32 v8, 0xffff0000, v213030; GFX7-NEXT:  .LBB44_1: ; %atomicrmw.start13031; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=113032; GFX7-NEXT:    s_waitcnt vmcnt(0)13033; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v6, v313034; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v213035; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v213036; GFX7-NEXT:    v_max_f32_e32 v2, v2, v813037; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v213038; GFX7-NEXT:    v_and_b32_e32 v4, v3, v713039; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v6, v213040; GFX7-NEXT:    v_or_b32_e32 v2, v4, v213041; GFX7-NEXT:    v_mov_b32_e32 v5, v313042; GFX7-NEXT:    v_mov_b32_e32 v4, v213043; GFX7-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc13044; GFX7-NEXT:    s_waitcnt vmcnt(0)13045; GFX7-NEXT:    buffer_wbinvl113046; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v313047; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]13048; GFX7-NEXT:    v_mov_b32_e32 v3, v413049; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]13050; GFX7-NEXT:    s_cbranch_execnz .LBB44_113051; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end13052; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]13053; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v6, v413054; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v013055; GFX7-NEXT:    s_setpc_b64 s[30:31]13056;13057; GFX6-LABEL: global_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13058; GFX6:       ; %bb.0:13059; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13060; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v013061; GFX6-NEXT:    s_mov_b32 s6, 013062; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc13063; GFX6-NEXT:    v_and_b32_e32 v0, -4, v413064; GFX6-NEXT:    s_mov_b32 s7, 0xf00013065; GFX6-NEXT:    s_mov_b32 s4, s613066; GFX6-NEXT:    s_mov_b32 s5, s613067; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6413068; GFX6-NEXT:    v_and_b32_e32 v4, 3, v413069; GFX6-NEXT:    v_lshlrev_b32_e32 v6, 3, v413070; GFX6-NEXT:    v_lshl_b32_e32 v4, 0xffff, v613071; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v213072; GFX6-NEXT:    v_not_b32_e32 v7, v413073; GFX6-NEXT:    s_mov_b64 s[8:9], 013074; GFX6-NEXT:    v_and_b32_e32 v8, 0xffff0000, v213075; GFX6-NEXT:  .LBB44_1: ; %atomicrmw.start13076; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=113077; GFX6-NEXT:    s_waitcnt vmcnt(0)13078; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v6, v313079; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v213080; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v213081; GFX6-NEXT:    v_max_f32_e32 v2, v2, v813082; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v213083; GFX6-NEXT:    s_waitcnt expcnt(0)13084; GFX6-NEXT:    v_and_b32_e32 v4, v3, v713085; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v6, v213086; GFX6-NEXT:    v_or_b32_e32 v2, v4, v213087; GFX6-NEXT:    v_mov_b32_e32 v5, v313088; GFX6-NEXT:    v_mov_b32_e32 v4, v213089; GFX6-NEXT:    buffer_atomic_cmpswap v[4:5], v[0:1], s[4:7], 0 addr64 glc13090; GFX6-NEXT:    s_waitcnt vmcnt(0)13091; GFX6-NEXT:    buffer_wbinvl113092; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v313093; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]13094; GFX6-NEXT:    v_mov_b32_e32 v3, v413095; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]13096; GFX6-NEXT:    s_cbranch_execnz .LBB44_113097; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end13098; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]13099; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v6, v413100; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v013101; GFX6-NEXT:    s_waitcnt expcnt(0)13102; GFX6-NEXT:    s_setpc_b64 s[30:31]13103  %gep = getelementptr bfloat, ptr addrspace(1) %ptr, i64 102313104  %result = atomicrmw fmax ptr addrspace(1) %gep, bfloat %val seq_cst, !amdgpu.no.fine.grained.memory !013105  ret bfloat %result13106}13107 13108define void @global_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, bfloat %val) #0 {13109; GFX12-TRUE16-LABEL: global_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13110; GFX12-TRUE16:       ; %bb.0:13111; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x013112; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x013113; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x013114; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x013115; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x013116; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v013117; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)13118; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13119; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 013120; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v313121; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v313122; GFX12-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off13123; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v313124; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13125; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff13126; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v313127; GFX12-TRUE16-NEXT:  .LBB45_1: ; %atomicrmw.start13128; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=113129; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x013130; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v413131; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 013132; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l13133; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)13134; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v313135; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v3, v3, v713136; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l13137; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)13138; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 113139; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v313140; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v313141; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff13142; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)13143; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13144; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo13145; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h13146; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13147; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v713148; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v313149; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS13150; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x013151; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_SYS13152; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x013153; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS13154; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v413155; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v313156; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13157; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s013158; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13159; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013160; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB45_113161; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end13162; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013163; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x013164; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]13165;13166; GFX12-FAKE16-LABEL: global_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13167; GFX12-FAKE16:       ; %bb.0:13168; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x013169; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x013170; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x013171; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x013172; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x013173; GFX12-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v013174; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)13175; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13176; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v213177; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)13178; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v413179; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v413180; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 013181; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off13182; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v413183; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff13184; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13185; GFX12-FAKE16-NEXT:    v_not_b32_e32 v5, v513186; GFX12-FAKE16-NEXT:  .LBB45_1: ; %atomicrmw.start13187; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=113188; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x013189; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v313190; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13191; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v213192; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v2, v2, v613193; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)13194; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 113195; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v213196; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v213197; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff13198; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)13199; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13200; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo13201; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v213202; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13203; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v213204; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v213205; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS13206; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x013207; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off th:TH_ATOMIC_RETURN scope:SCOPE_SYS13208; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x013209; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS13210; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v313211; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v213212; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13213; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s013214; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13215; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013216; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB45_113217; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end13218; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013219; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x013220; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]13221;13222; GFX942-LABEL: global_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13223; GFX942:       ; %bb.0:13224; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13225; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe13226; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]13227; GFX942-NEXT:    v_and_b32_e32 v0, -4, v413228; GFX942-NEXT:    v_mov_b32_e32 v1, v513229; GFX942-NEXT:    global_load_dword v3, v[0:1], off13230; GFX942-NEXT:    v_and_b32_e32 v4, 3, v413231; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v413232; GFX942-NEXT:    s_mov_b32 s0, 0xffff13233; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s013234; GFX942-NEXT:    v_not_b32_e32 v5, v513235; GFX942-NEXT:    s_mov_b64 s[0:1], 013236; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v213237; GFX942-NEXT:    s_movk_i32 s2, 0x7fff13238; GFX942-NEXT:  .LBB45_1: ; %atomicrmw.start13239; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=113240; GFX942-NEXT:    s_waitcnt vmcnt(0)13241; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13242; GFX942-NEXT:    s_nop 013243; GFX942-NEXT:    v_max_f32_e32 v2, v2, v613244; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 113245; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v213246; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s213247; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213248; GFX942-NEXT:    s_nop 113249; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc13250; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113251; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v213252; GFX942-NEXT:    buffer_wbl2 sc0 sc113253; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc0 sc113254; GFX942-NEXT:    s_waitcnt vmcnt(0)13255; GFX942-NEXT:    buffer_inv sc0 sc113256; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313257; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]13258; GFX942-NEXT:    v_mov_b32_e32 v3, v213259; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]13260; GFX942-NEXT:    s_cbranch_execnz .LBB45_113261; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end13262; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]13263; GFX942-NEXT:    s_setpc_b64 s[30:31]13264;13265; GFX11-TRUE16-LABEL: global_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13266; GFX11-TRUE16:       ; %bb.0:13267; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13268; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v013269; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13270; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13271; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 013272; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v313273; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v313274; GFX11-TRUE16-NEXT:    global_load_b32 v4, v[0:1], off13275; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v313276; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13277; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff13278; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v313279; GFX11-TRUE16-NEXT:    .p2align 613280; GFX11-TRUE16-NEXT:  .LBB45_1: ; %atomicrmw.start13281; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=113282; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)13283; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v413284; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 013285; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l13286; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)13287; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v313288; GFX11-TRUE16-NEXT:    v_max_f32_e32 v3, v3, v713289; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l13290; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)13291; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 113292; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v313293; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v313294; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff13295; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13296; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo13297; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h13298; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13299; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v713300; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v313301; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x013302; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc13303; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)13304; GFX11-TRUE16-NEXT:    buffer_gl1_inv13305; GFX11-TRUE16-NEXT:    buffer_gl0_inv13306; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v413307; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v313308; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s013309; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)13310; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013311; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB45_113312; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end13313; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013314; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]13315;13316; GFX11-FAKE16-LABEL: global_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13317; GFX11-FAKE16:       ; %bb.0:13318; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13319; GFX11-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v013320; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)13321; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13322; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v213323; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v413324; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v413325; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 013326; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off13327; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v413328; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13329; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff13330; GFX11-FAKE16-NEXT:    v_not_b32_e32 v5, v513331; GFX11-FAKE16-NEXT:    .p2align 613332; GFX11-FAKE16-NEXT:  .LBB45_1: ; %atomicrmw.start13333; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=113334; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)13335; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v313336; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13337; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v213338; GFX11-FAKE16-NEXT:    v_max_f32_e32 v2, v2, v613339; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)13340; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 113341; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v213342; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v213343; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff13344; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13345; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo13346; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v213347; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13348; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v213349; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v213350; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x013351; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off glc13352; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)13353; GFX11-FAKE16-NEXT:    buffer_gl1_inv13354; GFX11-FAKE16-NEXT:    buffer_gl0_inv13355; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v313356; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v213357; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s013358; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)13359; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013360; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB45_113361; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end13362; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013363; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]13364;13365; GFX10-LABEL: global_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13366; GFX10:       ; %bb.0:13367; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13368; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v013369; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo13370; GFX10-NEXT:    v_lshlrev_b32_e32 v6, 16, v213371; GFX10-NEXT:    v_and_b32_e32 v0, -4, v413372; GFX10-NEXT:    v_and_b32_e32 v4, 3, v413373; GFX10-NEXT:    s_mov_b32 s4, 013374; GFX10-NEXT:    global_load_dword v3, v[0:1], off13375; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 3, v413376; GFX10-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff13377; GFX10-NEXT:    v_not_b32_e32 v5, v513378; GFX10-NEXT:  .LBB45_1: ; %atomicrmw.start13379; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=113380; GFX10-NEXT:    s_waitcnt vmcnt(0)13381; GFX10-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13382; GFX10-NEXT:    v_max_f32_e32 v2, v2, v613383; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 113384; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v213385; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v213386; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff13387; GFX10-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo13388; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113389; GFX10-NEXT:    v_and_or_b32 v2, v3, v5, v213390; GFX10-NEXT:    s_waitcnt_vscnt null, 0x013391; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc13392; GFX10-NEXT:    s_waitcnt vmcnt(0)13393; GFX10-NEXT:    buffer_gl1_inv13394; GFX10-NEXT:    buffer_gl0_inv13395; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v313396; GFX10-NEXT:    v_mov_b32_e32 v3, v213397; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s413398; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s413399; GFX10-NEXT:    s_cbranch_execnz .LBB45_113400; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end13401; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s413402; GFX10-NEXT:    s_setpc_b64 s[30:31]13403;13404; GFX90A-LABEL: global_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13405; GFX90A:       ; %bb.0:13406; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13407; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v013408; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc13409; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v413410; GFX90A-NEXT:    global_load_dword v3, v[0:1], off13411; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v413412; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v413413; GFX90A-NEXT:    s_mov_b32 s4, 0xffff13414; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s413415; GFX90A-NEXT:    v_not_b32_e32 v5, v513416; GFX90A-NEXT:    s_mov_b64 s[4:5], 013417; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v213418; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff13419; GFX90A-NEXT:  .LBB45_1: ; %atomicrmw.start13420; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=113421; GFX90A-NEXT:    s_waitcnt vmcnt(0)13422; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13423; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v613424; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 113425; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v213426; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s613427; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213428; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc13429; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113430; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v213431; GFX90A-NEXT:    buffer_wbl213432; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc13433; GFX90A-NEXT:    s_waitcnt vmcnt(0)13434; GFX90A-NEXT:    buffer_invl213435; GFX90A-NEXT:    buffer_wbinvl113436; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313437; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13438; GFX90A-NEXT:    v_mov_b32_e32 v3, v213439; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]13440; GFX90A-NEXT:    s_cbranch_execnz .LBB45_113441; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end13442; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]13443; GFX90A-NEXT:    s_setpc_b64 s[30:31]13444;13445; GFX908-LABEL: global_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13446; GFX908:       ; %bb.0:13447; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13448; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v013449; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc13450; GFX908-NEXT:    v_and_b32_e32 v0, -4, v413451; GFX908-NEXT:    global_load_dword v3, v[0:1], off13452; GFX908-NEXT:    v_and_b32_e32 v4, 3, v413453; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 3, v413454; GFX908-NEXT:    s_mov_b32 s4, 0xffff13455; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v4, s413456; GFX908-NEXT:    v_not_b32_e32 v5, v513457; GFX908-NEXT:    s_mov_b64 s[4:5], 013458; GFX908-NEXT:    v_lshlrev_b32_e32 v6, 16, v213459; GFX908-NEXT:    s_movk_i32 s6, 0x7fff13460; GFX908-NEXT:  .LBB45_1: ; %atomicrmw.start13461; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=113462; GFX908-NEXT:    s_waitcnt vmcnt(0)13463; GFX908-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13464; GFX908-NEXT:    v_max_f32_e32 v2, v2, v613465; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 113466; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v213467; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s613468; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213469; GFX908-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc13470; GFX908-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113471; GFX908-NEXT:    v_and_or_b32 v2, v3, v5, v213472; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc13473; GFX908-NEXT:    s_waitcnt vmcnt(0)13474; GFX908-NEXT:    buffer_wbinvl113475; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313476; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13477; GFX908-NEXT:    v_mov_b32_e32 v3, v213478; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]13479; GFX908-NEXT:    s_cbranch_execnz .LBB45_113480; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end13481; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]13482; GFX908-NEXT:    s_setpc_b64 s[30:31]13483;13484; GFX8-LABEL: global_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13485; GFX8:       ; %bb.0:13486; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13487; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0x7fe, v013488; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc13489; GFX8-NEXT:    v_and_b32_e32 v0, -4, v413490; GFX8-NEXT:    flat_load_dword v3, v[0:1]13491; GFX8-NEXT:    v_and_b32_e32 v4, 3, v413492; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 3, v413493; GFX8-NEXT:    s_mov_b32 s4, 0xffff13494; GFX8-NEXT:    v_lshlrev_b32_e64 v5, v4, s413495; GFX8-NEXT:    v_not_b32_e32 v5, v513496; GFX8-NEXT:    s_mov_b64 s[4:5], 013497; GFX8-NEXT:    v_lshlrev_b32_e32 v6, 16, v213498; GFX8-NEXT:  .LBB45_1: ; %atomicrmw.start13499; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=113500; GFX8-NEXT:    s_waitcnt vmcnt(0)13501; GFX8-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13502; GFX8-NEXT:    v_max_f32_e32 v2, v2, v613503; GFX8-NEXT:    v_bfe_u32 v8, v2, 16, 113504; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v213505; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v813506; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v213507; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213508; GFX8-NEXT:    v_cndmask_b32_e32 v2, v8, v9, vcc13509; GFX8-NEXT:    v_and_b32_e32 v7, v3, v513510; GFX8-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113511; GFX8-NEXT:    v_or_b32_e32 v2, v7, v213512; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc13513; GFX8-NEXT:    s_waitcnt vmcnt(0)13514; GFX8-NEXT:    buffer_wbinvl113515; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313516; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13517; GFX8-NEXT:    v_mov_b32_e32 v3, v213518; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]13519; GFX8-NEXT:    s_cbranch_execnz .LBB45_113520; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end13521; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]13522; GFX8-NEXT:    s_setpc_b64 s[30:31]13523;13524; GFX7-LABEL: global_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13525; GFX7:       ; %bb.0:13526; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13527; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v013528; GFX7-NEXT:    s_mov_b32 s6, 013529; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc13530; GFX7-NEXT:    v_and_b32_e32 v0, -4, v413531; GFX7-NEXT:    s_mov_b32 s7, 0xf00013532; GFX7-NEXT:    s_mov_b32 s4, s613533; GFX7-NEXT:    s_mov_b32 s5, s613534; GFX7-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6413535; GFX7-NEXT:    v_and_b32_e32 v4, 3, v413536; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v413537; GFX7-NEXT:    v_lshl_b32_e32 v5, 0xffff, v413538; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v213539; GFX7-NEXT:    v_not_b32_e32 v5, v513540; GFX7-NEXT:    s_mov_b64 s[8:9], 013541; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v213542; GFX7-NEXT:  .LBB45_1: ; %atomicrmw.start13543; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=113544; GFX7-NEXT:    s_waitcnt vmcnt(0)13545; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v313546; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v213547; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v213548; GFX7-NEXT:    v_max_f32_e32 v2, v2, v613549; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v213550; GFX7-NEXT:    v_and_b32_e32 v7, v3, v513551; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v213552; GFX7-NEXT:    v_or_b32_e32 v2, v7, v213553; GFX7-NEXT:    v_mov_b32_e32 v8, v313554; GFX7-NEXT:    v_mov_b32_e32 v7, v213555; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc13556; GFX7-NEXT:    s_waitcnt vmcnt(0)13557; GFX7-NEXT:    buffer_wbinvl113558; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v313559; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]13560; GFX7-NEXT:    v_mov_b32_e32 v3, v713561; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]13562; GFX7-NEXT:    s_cbranch_execnz .LBB45_113563; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end13564; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]13565; GFX7-NEXT:    s_setpc_b64 s[30:31]13566;13567; GFX6-LABEL: global_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13568; GFX6:       ; %bb.0:13569; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13570; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v013571; GFX6-NEXT:    s_mov_b32 s6, 013572; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc13573; GFX6-NEXT:    v_and_b32_e32 v0, -4, v413574; GFX6-NEXT:    s_mov_b32 s7, 0xf00013575; GFX6-NEXT:    s_mov_b32 s4, s613576; GFX6-NEXT:    s_mov_b32 s5, s613577; GFX6-NEXT:    buffer_load_dword v3, v[0:1], s[4:7], 0 addr6413578; GFX6-NEXT:    v_and_b32_e32 v4, 3, v413579; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 3, v413580; GFX6-NEXT:    v_lshl_b32_e32 v5, 0xffff, v413581; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v213582; GFX6-NEXT:    v_not_b32_e32 v5, v513583; GFX6-NEXT:    s_mov_b64 s[8:9], 013584; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v213585; GFX6-NEXT:  .LBB45_1: ; %atomicrmw.start13586; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=113587; GFX6-NEXT:    s_waitcnt vmcnt(0)13588; GFX6-NEXT:    v_lshrrev_b32_e32 v2, v4, v313589; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v213590; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v213591; GFX6-NEXT:    v_max_f32_e32 v2, v2, v613592; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v213593; GFX6-NEXT:    s_waitcnt expcnt(0)13594; GFX6-NEXT:    v_and_b32_e32 v7, v3, v513595; GFX6-NEXT:    v_lshlrev_b32_e32 v2, v4, v213596; GFX6-NEXT:    v_or_b32_e32 v2, v7, v213597; GFX6-NEXT:    v_mov_b32_e32 v8, v313598; GFX6-NEXT:    v_mov_b32_e32 v7, v213599; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc13600; GFX6-NEXT:    s_waitcnt vmcnt(0)13601; GFX6-NEXT:    buffer_wbinvl113602; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v313603; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]13604; GFX6-NEXT:    v_mov_b32_e32 v3, v713605; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]13606; GFX6-NEXT:    s_cbranch_execnz .LBB45_113607; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end13608; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]13609; GFX6-NEXT:    s_waitcnt expcnt(0)13610; GFX6-NEXT:    s_setpc_b64 s[30:31]13611  %gep = getelementptr bfloat, ptr addrspace(1) %ptr, i64 102313612  %unused = atomicrmw fmax ptr addrspace(1) %gep, bfloat %val seq_cst, !amdgpu.no.fine.grained.memory !013613  ret void13614}13615 13616; --------------------------------------------------------------------13617; <2 x half>13618; --------------------------------------------------------------------13619 13620define <2 x half> @global_agent_atomic_fmax_ret_v2f16__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, <2 x half> %val) #0 {13621; GFX12-LABEL: global_agent_atomic_fmax_ret_v2f16__amdgpu_no_fine_grained_memory:13622; GFX12:       ; %bb.0:13623; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x013624; GFX12-NEXT:    s_wait_expcnt 0x013625; GFX12-NEXT:    s_wait_samplecnt 0x013626; GFX12-NEXT:    s_wait_bvhcnt 0x013627; GFX12-NEXT:    s_wait_kmcnt 0x013628; GFX12-NEXT:    global_load_b32 v3, v[0:1], off13629; GFX12-NEXT:    v_pk_max_num_f16 v2, v2, v213630; GFX12-NEXT:    s_mov_b32 s0, 013631; GFX12-NEXT:  .LBB46_1: ; %atomicrmw.start13632; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=113633; GFX12-NEXT:    s_wait_loadcnt 0x013634; GFX12-NEXT:    v_mov_b32_e32 v4, v313635; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13636; GFX12-NEXT:    v_pk_max_num_f16 v3, v4, v413637; GFX12-NEXT:    v_pk_max_num_f16 v3, v3, v213638; GFX12-NEXT:    s_wait_storecnt 0x013639; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV13640; GFX12-NEXT:    s_wait_loadcnt 0x013641; GFX12-NEXT:    global_inv scope:SCOPE_DEV13642; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v413643; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)13644; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s013645; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)13646; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013647; GFX12-NEXT:    s_cbranch_execnz .LBB46_113648; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end13649; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s013650; GFX12-NEXT:    v_mov_b32_e32 v0, v313651; GFX12-NEXT:    s_wait_loadcnt 0x013652; GFX12-NEXT:    s_setpc_b64 s[30:31]13653;13654; GFX942-LABEL: global_agent_atomic_fmax_ret_v2f16__amdgpu_no_fine_grained_memory:13655; GFX942:       ; %bb.0:13656; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13657; GFX942-NEXT:    global_load_dword v3, v[0:1], off13658; GFX942-NEXT:    s_mov_b64 s[0:1], 013659; GFX942-NEXT:    v_pk_max_f16 v4, v2, v213660; GFX942-NEXT:  .LBB46_1: ; %atomicrmw.start13661; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=113662; GFX942-NEXT:    s_waitcnt vmcnt(0)13663; GFX942-NEXT:    v_pk_max_f16 v2, v3, v313664; GFX942-NEXT:    s_nop 013665; GFX942-NEXT:    v_pk_max_f16 v2, v2, v413666; GFX942-NEXT:    buffer_wbl2 sc113667; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc013668; GFX942-NEXT:    s_waitcnt vmcnt(0)13669; GFX942-NEXT:    buffer_inv sc113670; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313671; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]13672; GFX942-NEXT:    v_mov_b32_e32 v3, v213673; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]13674; GFX942-NEXT:    s_cbranch_execnz .LBB46_113675; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end13676; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]13677; GFX942-NEXT:    v_mov_b32_e32 v0, v213678; GFX942-NEXT:    s_setpc_b64 s[30:31]13679;13680; GFX11-LABEL: global_agent_atomic_fmax_ret_v2f16__amdgpu_no_fine_grained_memory:13681; GFX11:       ; %bb.0:13682; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13683; GFX11-NEXT:    global_load_b32 v3, v[0:1], off13684; GFX11-NEXT:    v_pk_max_f16 v2, v2, v213685; GFX11-NEXT:    s_mov_b32 s0, 013686; GFX11-NEXT:  .LBB46_1: ; %atomicrmw.start13687; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=113688; GFX11-NEXT:    s_waitcnt vmcnt(0)13689; GFX11-NEXT:    v_mov_b32_e32 v4, v313690; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13691; GFX11-NEXT:    v_pk_max_f16 v3, v4, v413692; GFX11-NEXT:    v_pk_max_f16 v3, v3, v213693; GFX11-NEXT:    s_waitcnt_vscnt null, 0x013694; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off glc13695; GFX11-NEXT:    s_waitcnt vmcnt(0)13696; GFX11-NEXT:    buffer_gl1_inv13697; GFX11-NEXT:    buffer_gl0_inv13698; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v413699; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s013700; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)13701; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013702; GFX11-NEXT:    s_cbranch_execnz .LBB46_113703; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end13704; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s013705; GFX11-NEXT:    v_mov_b32_e32 v0, v313706; GFX11-NEXT:    s_setpc_b64 s[30:31]13707;13708; GFX10-LABEL: global_agent_atomic_fmax_ret_v2f16__amdgpu_no_fine_grained_memory:13709; GFX10:       ; %bb.0:13710; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13711; GFX10-NEXT:    global_load_dword v3, v[0:1], off13712; GFX10-NEXT:    v_pk_max_f16 v2, v2, v213713; GFX10-NEXT:    s_mov_b32 s4, 013714; GFX10-NEXT:  .LBB46_1: ; %atomicrmw.start13715; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=113716; GFX10-NEXT:    s_waitcnt vmcnt(0)13717; GFX10-NEXT:    v_mov_b32_e32 v4, v313718; GFX10-NEXT:    v_pk_max_f16 v3, v4, v413719; GFX10-NEXT:    v_pk_max_f16 v3, v3, v213720; GFX10-NEXT:    s_waitcnt_vscnt null, 0x013721; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc13722; GFX10-NEXT:    s_waitcnt vmcnt(0)13723; GFX10-NEXT:    buffer_gl1_inv13724; GFX10-NEXT:    buffer_gl0_inv13725; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v413726; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s413727; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s413728; GFX10-NEXT:    s_cbranch_execnz .LBB46_113729; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end13730; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s413731; GFX10-NEXT:    v_mov_b32_e32 v0, v313732; GFX10-NEXT:    s_setpc_b64 s[30:31]13733;13734; GFX90A-LABEL: global_agent_atomic_fmax_ret_v2f16__amdgpu_no_fine_grained_memory:13735; GFX90A:       ; %bb.0:13736; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13737; GFX90A-NEXT:    global_load_dword v3, v[0:1], off13738; GFX90A-NEXT:    s_mov_b64 s[4:5], 013739; GFX90A-NEXT:    v_pk_max_f16 v4, v2, v213740; GFX90A-NEXT:  .LBB46_1: ; %atomicrmw.start13741; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=113742; GFX90A-NEXT:    s_waitcnt vmcnt(0)13743; GFX90A-NEXT:    v_pk_max_f16 v2, v3, v313744; GFX90A-NEXT:    v_pk_max_f16 v2, v2, v413745; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc13746; GFX90A-NEXT:    s_waitcnt vmcnt(0)13747; GFX90A-NEXT:    buffer_wbinvl113748; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313749; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13750; GFX90A-NEXT:    v_mov_b32_e32 v3, v213751; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]13752; GFX90A-NEXT:    s_cbranch_execnz .LBB46_113753; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end13754; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]13755; GFX90A-NEXT:    v_mov_b32_e32 v0, v213756; GFX90A-NEXT:    s_setpc_b64 s[30:31]13757;13758; GFX908-LABEL: global_agent_atomic_fmax_ret_v2f16__amdgpu_no_fine_grained_memory:13759; GFX908:       ; %bb.0:13760; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13761; GFX908-NEXT:    global_load_dword v3, v[0:1], off13762; GFX908-NEXT:    s_mov_b64 s[4:5], 013763; GFX908-NEXT:    v_pk_max_f16 v2, v2, v213764; GFX908-NEXT:  .LBB46_1: ; %atomicrmw.start13765; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=113766; GFX908-NEXT:    s_waitcnt vmcnt(0)13767; GFX908-NEXT:    v_mov_b32_e32 v4, v313768; GFX908-NEXT:    v_pk_max_f16 v3, v4, v413769; GFX908-NEXT:    v_pk_max_f16 v3, v3, v213770; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off glc13771; GFX908-NEXT:    s_waitcnt vmcnt(0)13772; GFX908-NEXT:    buffer_wbinvl113773; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v413774; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13775; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]13776; GFX908-NEXT:    s_cbranch_execnz .LBB46_113777; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end13778; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]13779; GFX908-NEXT:    v_mov_b32_e32 v0, v313780; GFX908-NEXT:    s_setpc_b64 s[30:31]13781;13782; GFX8-LABEL: global_agent_atomic_fmax_ret_v2f16__amdgpu_no_fine_grained_memory:13783; GFX8:       ; %bb.0:13784; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13785; GFX8-NEXT:    flat_load_dword v3, v[0:1]13786; GFX8-NEXT:    s_mov_b64 s[4:5], 013787; GFX8-NEXT:    v_max_f16_sdwa v4, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_113788; GFX8-NEXT:    v_max_f16_e32 v2, v2, v213789; GFX8-NEXT:  .LBB46_1: ; %atomicrmw.start13790; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=113791; GFX8-NEXT:    s_waitcnt vmcnt(0)13792; GFX8-NEXT:    v_mov_b32_e32 v6, v313793; GFX8-NEXT:    v_max_f16_sdwa v3, v6, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_113794; GFX8-NEXT:    v_max_f16_e32 v5, v6, v613795; GFX8-NEXT:    v_max_f16_sdwa v3, v3, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13796; GFX8-NEXT:    v_max_f16_e32 v5, v5, v213797; GFX8-NEXT:    v_or_b32_e32 v5, v5, v313798; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[5:6] glc13799; GFX8-NEXT:    s_waitcnt vmcnt(0)13800; GFX8-NEXT:    buffer_wbinvl113801; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v613802; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13803; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]13804; GFX8-NEXT:    s_cbranch_execnz .LBB46_113805; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end13806; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]13807; GFX8-NEXT:    v_mov_b32_e32 v0, v313808; GFX8-NEXT:    s_setpc_b64 s[30:31]13809;13810; GFX7-LABEL: global_agent_atomic_fmax_ret_v2f16__amdgpu_no_fine_grained_memory:13811; GFX7:       ; %bb.0:13812; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13813; GFX7-NEXT:    s_mov_b32 s6, 013814; GFX7-NEXT:    s_mov_b32 s7, 0xf00013815; GFX7-NEXT:    s_mov_b32 s4, s613816; GFX7-NEXT:    s_mov_b32 s5, s613817; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr6413818; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v313819; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v213820; GFX7-NEXT:    s_mov_b64 s[8:9], 013821; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v313822; GFX7-NEXT:    s_waitcnt vmcnt(0)13823; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v513824; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v513825; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v313826; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v613827; GFX7-NEXT:  .LBB46_1: ; %atomicrmw.start13828; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=113829; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v313830; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v213831; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v313832; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v213833; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v313834; GFX7-NEXT:    v_max_f32_e32 v6, v6, v413835; GFX7-NEXT:    v_max_f32_e32 v7, v7, v513836; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v613837; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v713838; GFX7-NEXT:    v_or_b32_e32 v7, v2, v313839; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v613840; GFX7-NEXT:    v_or_b32_e32 v6, v8, v213841; GFX7-NEXT:    v_mov_b32_e32 v9, v713842; GFX7-NEXT:    v_mov_b32_e32 v8, v613843; GFX7-NEXT:    buffer_atomic_cmpswap v[8:9], v[0:1], s[4:7], 0 addr64 glc13844; GFX7-NEXT:    s_waitcnt vmcnt(0)13845; GFX7-NEXT:    buffer_wbinvl113846; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v813847; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v813848; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v313849; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v8, v713850; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]13851; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]13852; GFX7-NEXT:    s_cbranch_execnz .LBB46_113853; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end13854; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]13855; GFX7-NEXT:    v_mov_b32_e32 v0, v213856; GFX7-NEXT:    v_mov_b32_e32 v1, v313857; GFX7-NEXT:    s_setpc_b64 s[30:31]13858;13859; GFX6-LABEL: global_agent_atomic_fmax_ret_v2f16__amdgpu_no_fine_grained_memory:13860; GFX6:       ; %bb.0:13861; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13862; GFX6-NEXT:    s_mov_b32 s6, 013863; GFX6-NEXT:    s_mov_b32 s7, 0xf00013864; GFX6-NEXT:    s_mov_b32 s4, s613865; GFX6-NEXT:    s_mov_b32 s5, s613866; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr6413867; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v313868; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v213869; GFX6-NEXT:    s_mov_b64 s[8:9], 013870; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v313871; GFX6-NEXT:    s_waitcnt vmcnt(0)13872; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v513873; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v513874; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v313875; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v613876; GFX6-NEXT:  .LBB46_1: ; %atomicrmw.start13877; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=113878; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v313879; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v213880; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v313881; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v213882; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v313883; GFX6-NEXT:    v_max_f32_e32 v6, v6, v413884; GFX6-NEXT:    v_max_f32_e32 v7, v7, v513885; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v613886; GFX6-NEXT:    s_waitcnt expcnt(0)13887; GFX6-NEXT:    v_cvt_f16_f32_e32 v8, v713888; GFX6-NEXT:    v_or_b32_e32 v7, v2, v313889; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v613890; GFX6-NEXT:    v_or_b32_e32 v6, v8, v213891; GFX6-NEXT:    v_mov_b32_e32 v9, v713892; GFX6-NEXT:    v_mov_b32_e32 v8, v613893; GFX6-NEXT:    buffer_atomic_cmpswap v[8:9], v[0:1], s[4:7], 0 addr64 glc13894; GFX6-NEXT:    s_waitcnt vmcnt(0)13895; GFX6-NEXT:    buffer_wbinvl113896; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v813897; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v813898; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v313899; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v8, v713900; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]13901; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]13902; GFX6-NEXT:    s_cbranch_execnz .LBB46_113903; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end13904; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]13905; GFX6-NEXT:    v_mov_b32_e32 v0, v213906; GFX6-NEXT:    v_mov_b32_e32 v1, v313907; GFX6-NEXT:    s_waitcnt expcnt(0)13908; GFX6-NEXT:    s_setpc_b64 s[30:31]13909  %result = atomicrmw fmax ptr addrspace(1) %ptr, <2 x half> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !013910  ret <2 x half> %result13911}13912 13913define <2 x half> @global_agent_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, <2 x half> %val) #0 {13914; GFX12-LABEL: global_agent_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:13915; GFX12:       ; %bb.0:13916; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x013917; GFX12-NEXT:    s_wait_expcnt 0x013918; GFX12-NEXT:    s_wait_samplecnt 0x013919; GFX12-NEXT:    s_wait_bvhcnt 0x013920; GFX12-NEXT:    s_wait_kmcnt 0x013921; GFX12-NEXT:    global_load_b32 v3, v[0:1], off offset:204413922; GFX12-NEXT:    v_pk_max_num_f16 v2, v2, v213923; GFX12-NEXT:    s_mov_b32 s0, 013924; GFX12-NEXT:  .LBB47_1: ; %atomicrmw.start13925; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=113926; GFX12-NEXT:    s_wait_loadcnt 0x013927; GFX12-NEXT:    v_mov_b32_e32 v4, v313928; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13929; GFX12-NEXT:    v_pk_max_num_f16 v3, v4, v413930; GFX12-NEXT:    v_pk_max_num_f16 v3, v3, v213931; GFX12-NEXT:    s_wait_storecnt 0x013932; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV13933; GFX12-NEXT:    s_wait_loadcnt 0x013934; GFX12-NEXT:    global_inv scope:SCOPE_DEV13935; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v413936; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)13937; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s013938; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)13939; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013940; GFX12-NEXT:    s_cbranch_execnz .LBB47_113941; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end13942; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s013943; GFX12-NEXT:    v_mov_b32_e32 v0, v313944; GFX12-NEXT:    s_wait_loadcnt 0x013945; GFX12-NEXT:    s_setpc_b64 s[30:31]13946;13947; GFX942-LABEL: global_agent_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:13948; GFX942:       ; %bb.0:13949; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13950; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:204413951; GFX942-NEXT:    s_mov_b64 s[0:1], 013952; GFX942-NEXT:    v_pk_max_f16 v4, v2, v213953; GFX942-NEXT:  .LBB47_1: ; %atomicrmw.start13954; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=113955; GFX942-NEXT:    s_waitcnt vmcnt(0)13956; GFX942-NEXT:    v_pk_max_f16 v2, v3, v313957; GFX942-NEXT:    s_nop 013958; GFX942-NEXT:    v_pk_max_f16 v2, v2, v413959; GFX942-NEXT:    buffer_wbl2 sc113960; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 sc013961; GFX942-NEXT:    s_waitcnt vmcnt(0)13962; GFX942-NEXT:    buffer_inv sc113963; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313964; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]13965; GFX942-NEXT:    v_mov_b32_e32 v3, v213966; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]13967; GFX942-NEXT:    s_cbranch_execnz .LBB47_113968; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end13969; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]13970; GFX942-NEXT:    v_mov_b32_e32 v0, v213971; GFX942-NEXT:    s_setpc_b64 s[30:31]13972;13973; GFX11-LABEL: global_agent_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:13974; GFX11:       ; %bb.0:13975; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13976; GFX11-NEXT:    global_load_b32 v3, v[0:1], off offset:204413977; GFX11-NEXT:    v_pk_max_f16 v2, v2, v213978; GFX11-NEXT:    s_mov_b32 s0, 013979; GFX11-NEXT:  .LBB47_1: ; %atomicrmw.start13980; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=113981; GFX11-NEXT:    s_waitcnt vmcnt(0)13982; GFX11-NEXT:    v_mov_b32_e32 v4, v313983; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13984; GFX11-NEXT:    v_pk_max_f16 v3, v4, v413985; GFX11-NEXT:    v_pk_max_f16 v3, v3, v213986; GFX11-NEXT:    s_waitcnt_vscnt null, 0x013987; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 glc13988; GFX11-NEXT:    s_waitcnt vmcnt(0)13989; GFX11-NEXT:    buffer_gl1_inv13990; GFX11-NEXT:    buffer_gl0_inv13991; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v413992; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s013993; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)13994; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013995; GFX11-NEXT:    s_cbranch_execnz .LBB47_113996; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end13997; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s013998; GFX11-NEXT:    v_mov_b32_e32 v0, v313999; GFX11-NEXT:    s_setpc_b64 s[30:31]14000;14001; GFX10-LABEL: global_agent_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14002; GFX10:       ; %bb.0:14003; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14004; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:204414005; GFX10-NEXT:    v_pk_max_f16 v2, v2, v214006; GFX10-NEXT:    s_mov_b32 s4, 014007; GFX10-NEXT:  .LBB47_1: ; %atomicrmw.start14008; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=114009; GFX10-NEXT:    s_waitcnt vmcnt(0)14010; GFX10-NEXT:    v_mov_b32_e32 v4, v314011; GFX10-NEXT:    v_pk_max_f16 v3, v4, v414012; GFX10-NEXT:    v_pk_max_f16 v3, v3, v214013; GFX10-NEXT:    s_waitcnt_vscnt null, 0x014014; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc14015; GFX10-NEXT:    s_waitcnt vmcnt(0)14016; GFX10-NEXT:    buffer_gl1_inv14017; GFX10-NEXT:    buffer_gl0_inv14018; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414019; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s414020; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s414021; GFX10-NEXT:    s_cbranch_execnz .LBB47_114022; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end14023; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s414024; GFX10-NEXT:    v_mov_b32_e32 v0, v314025; GFX10-NEXT:    s_setpc_b64 s[30:31]14026;14027; GFX90A-LABEL: global_agent_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14028; GFX90A:       ; %bb.0:14029; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14030; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:204414031; GFX90A-NEXT:    s_mov_b64 s[4:5], 014032; GFX90A-NEXT:    v_pk_max_f16 v4, v2, v214033; GFX90A-NEXT:  .LBB47_1: ; %atomicrmw.start14034; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=114035; GFX90A-NEXT:    s_waitcnt vmcnt(0)14036; GFX90A-NEXT:    v_pk_max_f16 v2, v3, v314037; GFX90A-NEXT:    v_pk_max_f16 v2, v2, v414038; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc14039; GFX90A-NEXT:    s_waitcnt vmcnt(0)14040; GFX90A-NEXT:    buffer_wbinvl114041; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v314042; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14043; GFX90A-NEXT:    v_mov_b32_e32 v3, v214044; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]14045; GFX90A-NEXT:    s_cbranch_execnz .LBB47_114046; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end14047; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]14048; GFX90A-NEXT:    v_mov_b32_e32 v0, v214049; GFX90A-NEXT:    s_setpc_b64 s[30:31]14050;14051; GFX908-LABEL: global_agent_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14052; GFX908:       ; %bb.0:14053; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14054; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:204414055; GFX908-NEXT:    s_mov_b64 s[4:5], 014056; GFX908-NEXT:    v_pk_max_f16 v2, v2, v214057; GFX908-NEXT:  .LBB47_1: ; %atomicrmw.start14058; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=114059; GFX908-NEXT:    s_waitcnt vmcnt(0)14060; GFX908-NEXT:    v_mov_b32_e32 v4, v314061; GFX908-NEXT:    v_pk_max_f16 v3, v4, v414062; GFX908-NEXT:    v_pk_max_f16 v3, v3, v214063; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc14064; GFX908-NEXT:    s_waitcnt vmcnt(0)14065; GFX908-NEXT:    buffer_wbinvl114066; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v414067; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14068; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]14069; GFX908-NEXT:    s_cbranch_execnz .LBB47_114070; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end14071; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]14072; GFX908-NEXT:    v_mov_b32_e32 v0, v314073; GFX908-NEXT:    s_setpc_b64 s[30:31]14074;14075; GFX8-LABEL: global_agent_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14076; GFX8:       ; %bb.0:14077; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14078; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v014079; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc14080; GFX8-NEXT:    flat_load_dword v0, v[3:4]14081; GFX8-NEXT:    s_mov_b64 s[4:5], 014082; GFX8-NEXT:    v_max_f16_sdwa v1, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_114083; GFX8-NEXT:    v_max_f16_e32 v2, v2, v214084; GFX8-NEXT:  .LBB47_1: ; %atomicrmw.start14085; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=114086; GFX8-NEXT:    s_waitcnt vmcnt(0)14087; GFX8-NEXT:    v_mov_b32_e32 v6, v014088; GFX8-NEXT:    v_max_f16_sdwa v0, v6, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_114089; GFX8-NEXT:    v_max_f16_e32 v5, v6, v614090; GFX8-NEXT:    v_max_f16_sdwa v0, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD14091; GFX8-NEXT:    v_max_f16_e32 v5, v5, v214092; GFX8-NEXT:    v_or_b32_e32 v5, v5, v014093; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc14094; GFX8-NEXT:    s_waitcnt vmcnt(0)14095; GFX8-NEXT:    buffer_wbinvl114096; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v614097; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14098; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]14099; GFX8-NEXT:    s_cbranch_execnz .LBB47_114100; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end14101; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]14102; GFX8-NEXT:    s_setpc_b64 s[30:31]14103;14104; GFX7-LABEL: global_agent_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14105; GFX7:       ; %bb.0:14106; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14107; GFX7-NEXT:    s_mov_b32 s6, 014108; GFX7-NEXT:    s_mov_b32 s7, 0xf00014109; GFX7-NEXT:    s_mov_b32 s4, s614110; GFX7-NEXT:    s_mov_b32 s5, s614111; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204414112; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v314113; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v214114; GFX7-NEXT:    s_mov_b64 s[8:9], 014115; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v314116; GFX7-NEXT:    s_waitcnt vmcnt(0)14117; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v514118; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v514119; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v314120; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v614121; GFX7-NEXT:  .LBB47_1: ; %atomicrmw.start14122; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=114123; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v314124; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v214125; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v314126; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v214127; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v314128; GFX7-NEXT:    v_max_f32_e32 v6, v6, v414129; GFX7-NEXT:    v_max_f32_e32 v7, v7, v514130; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v614131; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v714132; GFX7-NEXT:    v_or_b32_e32 v7, v2, v314133; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v614134; GFX7-NEXT:    v_or_b32_e32 v6, v8, v214135; GFX7-NEXT:    v_mov_b32_e32 v9, v714136; GFX7-NEXT:    v_mov_b32_e32 v8, v614137; GFX7-NEXT:    buffer_atomic_cmpswap v[8:9], v[0:1], s[4:7], 0 addr64 offset:2044 glc14138; GFX7-NEXT:    s_waitcnt vmcnt(0)14139; GFX7-NEXT:    buffer_wbinvl114140; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v814141; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v814142; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v314143; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v8, v714144; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]14145; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]14146; GFX7-NEXT:    s_cbranch_execnz .LBB47_114147; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end14148; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]14149; GFX7-NEXT:    v_mov_b32_e32 v0, v214150; GFX7-NEXT:    v_mov_b32_e32 v1, v314151; GFX7-NEXT:    s_setpc_b64 s[30:31]14152;14153; GFX6-LABEL: global_agent_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14154; GFX6:       ; %bb.0:14155; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14156; GFX6-NEXT:    s_mov_b32 s6, 014157; GFX6-NEXT:    s_mov_b32 s7, 0xf00014158; GFX6-NEXT:    s_mov_b32 s4, s614159; GFX6-NEXT:    s_mov_b32 s5, s614160; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204414161; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v314162; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v214163; GFX6-NEXT:    s_mov_b64 s[8:9], 014164; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v314165; GFX6-NEXT:    s_waitcnt vmcnt(0)14166; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v514167; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v514168; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v314169; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v614170; GFX6-NEXT:  .LBB47_1: ; %atomicrmw.start14171; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=114172; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v314173; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v214174; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v314175; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v214176; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v314177; GFX6-NEXT:    v_max_f32_e32 v6, v6, v414178; GFX6-NEXT:    v_max_f32_e32 v7, v7, v514179; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v614180; GFX6-NEXT:    s_waitcnt expcnt(0)14181; GFX6-NEXT:    v_cvt_f16_f32_e32 v8, v714182; GFX6-NEXT:    v_or_b32_e32 v7, v2, v314183; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v614184; GFX6-NEXT:    v_or_b32_e32 v6, v8, v214185; GFX6-NEXT:    v_mov_b32_e32 v9, v714186; GFX6-NEXT:    v_mov_b32_e32 v8, v614187; GFX6-NEXT:    buffer_atomic_cmpswap v[8:9], v[0:1], s[4:7], 0 addr64 offset:2044 glc14188; GFX6-NEXT:    s_waitcnt vmcnt(0)14189; GFX6-NEXT:    buffer_wbinvl114190; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v814191; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v814192; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v314193; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v8, v714194; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]14195; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]14196; GFX6-NEXT:    s_cbranch_execnz .LBB47_114197; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end14198; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]14199; GFX6-NEXT:    v_mov_b32_e32 v0, v214200; GFX6-NEXT:    v_mov_b32_e32 v1, v314201; GFX6-NEXT:    s_waitcnt expcnt(0)14202; GFX6-NEXT:    s_setpc_b64 s[30:31]14203  %gep = getelementptr <2 x half>, ptr addrspace(1) %ptr, i64 51114204  %result = atomicrmw fmax ptr addrspace(1) %gep, <2 x half> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !014205  ret <2 x half> %result14206}14207 14208define <2 x half> @global_agent_atomic_fmax_ret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, <2 x half> %val) #0 {14209; GFX12-LABEL: global_agent_atomic_fmax_ret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:14210; GFX12:       ; %bb.0:14211; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014212; GFX12-NEXT:    s_wait_expcnt 0x014213; GFX12-NEXT:    s_wait_samplecnt 0x014214; GFX12-NEXT:    s_wait_bvhcnt 0x014215; GFX12-NEXT:    s_wait_kmcnt 0x014216; GFX12-NEXT:    global_load_b32 v3, v[0:1], off offset:-204814217; GFX12-NEXT:    v_pk_max_num_f16 v2, v2, v214218; GFX12-NEXT:    s_mov_b32 s0, 014219; GFX12-NEXT:  .LBB48_1: ; %atomicrmw.start14220; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=114221; GFX12-NEXT:    s_wait_loadcnt 0x014222; GFX12-NEXT:    v_mov_b32_e32 v4, v314223; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14224; GFX12-NEXT:    v_pk_max_num_f16 v3, v4, v414225; GFX12-NEXT:    v_pk_max_num_f16 v3, v3, v214226; GFX12-NEXT:    s_wait_storecnt 0x014227; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV14228; GFX12-NEXT:    s_wait_loadcnt 0x014229; GFX12-NEXT:    global_inv scope:SCOPE_DEV14230; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414231; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14232; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s014233; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14234; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014235; GFX12-NEXT:    s_cbranch_execnz .LBB48_114236; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end14237; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s014238; GFX12-NEXT:    v_mov_b32_e32 v0, v314239; GFX12-NEXT:    s_wait_loadcnt 0x014240; GFX12-NEXT:    s_setpc_b64 s[30:31]14241;14242; GFX942-LABEL: global_agent_atomic_fmax_ret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:14243; GFX942:       ; %bb.0:14244; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14245; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:-204814246; GFX942-NEXT:    s_mov_b64 s[0:1], 014247; GFX942-NEXT:    v_pk_max_f16 v4, v2, v214248; GFX942-NEXT:  .LBB48_1: ; %atomicrmw.start14249; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=114250; GFX942-NEXT:    s_waitcnt vmcnt(0)14251; GFX942-NEXT:    v_pk_max_f16 v2, v3, v314252; GFX942-NEXT:    s_nop 014253; GFX942-NEXT:    v_pk_max_f16 v2, v2, v414254; GFX942-NEXT:    buffer_wbl2 sc114255; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 sc014256; GFX942-NEXT:    s_waitcnt vmcnt(0)14257; GFX942-NEXT:    buffer_inv sc114258; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v314259; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]14260; GFX942-NEXT:    v_mov_b32_e32 v3, v214261; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]14262; GFX942-NEXT:    s_cbranch_execnz .LBB48_114263; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end14264; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]14265; GFX942-NEXT:    v_mov_b32_e32 v0, v214266; GFX942-NEXT:    s_setpc_b64 s[30:31]14267;14268; GFX11-LABEL: global_agent_atomic_fmax_ret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:14269; GFX11:       ; %bb.0:14270; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14271; GFX11-NEXT:    global_load_b32 v3, v[0:1], off offset:-204814272; GFX11-NEXT:    v_pk_max_f16 v2, v2, v214273; GFX11-NEXT:    s_mov_b32 s0, 014274; GFX11-NEXT:  .LBB48_1: ; %atomicrmw.start14275; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=114276; GFX11-NEXT:    s_waitcnt vmcnt(0)14277; GFX11-NEXT:    v_mov_b32_e32 v4, v314278; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14279; GFX11-NEXT:    v_pk_max_f16 v3, v4, v414280; GFX11-NEXT:    v_pk_max_f16 v3, v3, v214281; GFX11-NEXT:    s_waitcnt_vscnt null, 0x014282; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:-2048 glc14283; GFX11-NEXT:    s_waitcnt vmcnt(0)14284; GFX11-NEXT:    buffer_gl1_inv14285; GFX11-NEXT:    buffer_gl0_inv14286; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414287; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s014288; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)14289; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014290; GFX11-NEXT:    s_cbranch_execnz .LBB48_114291; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end14292; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s014293; GFX11-NEXT:    v_mov_b32_e32 v0, v314294; GFX11-NEXT:    s_setpc_b64 s[30:31]14295;14296; GFX10-LABEL: global_agent_atomic_fmax_ret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:14297; GFX10:       ; %bb.0:14298; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14299; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:-204814300; GFX10-NEXT:    v_pk_max_f16 v2, v2, v214301; GFX10-NEXT:    s_mov_b32 s4, 014302; GFX10-NEXT:  .LBB48_1: ; %atomicrmw.start14303; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=114304; GFX10-NEXT:    s_waitcnt vmcnt(0)14305; GFX10-NEXT:    v_mov_b32_e32 v4, v314306; GFX10-NEXT:    v_pk_max_f16 v3, v4, v414307; GFX10-NEXT:    v_pk_max_f16 v3, v3, v214308; GFX10-NEXT:    s_waitcnt_vscnt null, 0x014309; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:-2048 glc14310; GFX10-NEXT:    s_waitcnt vmcnt(0)14311; GFX10-NEXT:    buffer_gl1_inv14312; GFX10-NEXT:    buffer_gl0_inv14313; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414314; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s414315; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s414316; GFX10-NEXT:    s_cbranch_execnz .LBB48_114317; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end14318; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s414319; GFX10-NEXT:    v_mov_b32_e32 v0, v314320; GFX10-NEXT:    s_setpc_b64 s[30:31]14321;14322; GFX90A-LABEL: global_agent_atomic_fmax_ret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:14323; GFX90A:       ; %bb.0:14324; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14325; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:-204814326; GFX90A-NEXT:    s_mov_b64 s[4:5], 014327; GFX90A-NEXT:    v_pk_max_f16 v4, v2, v214328; GFX90A-NEXT:  .LBB48_1: ; %atomicrmw.start14329; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=114330; GFX90A-NEXT:    s_waitcnt vmcnt(0)14331; GFX90A-NEXT:    v_pk_max_f16 v2, v3, v314332; GFX90A-NEXT:    v_pk_max_f16 v2, v2, v414333; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 glc14334; GFX90A-NEXT:    s_waitcnt vmcnt(0)14335; GFX90A-NEXT:    buffer_wbinvl114336; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v314337; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14338; GFX90A-NEXT:    v_mov_b32_e32 v3, v214339; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]14340; GFX90A-NEXT:    s_cbranch_execnz .LBB48_114341; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end14342; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]14343; GFX90A-NEXT:    v_mov_b32_e32 v0, v214344; GFX90A-NEXT:    s_setpc_b64 s[30:31]14345;14346; GFX908-LABEL: global_agent_atomic_fmax_ret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:14347; GFX908:       ; %bb.0:14348; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14349; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:-204814350; GFX908-NEXT:    s_mov_b64 s[4:5], 014351; GFX908-NEXT:    v_pk_max_f16 v2, v2, v214352; GFX908-NEXT:  .LBB48_1: ; %atomicrmw.start14353; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=114354; GFX908-NEXT:    s_waitcnt vmcnt(0)14355; GFX908-NEXT:    v_mov_b32_e32 v4, v314356; GFX908-NEXT:    v_pk_max_f16 v3, v4, v414357; GFX908-NEXT:    v_pk_max_f16 v3, v3, v214358; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:-2048 glc14359; GFX908-NEXT:    s_waitcnt vmcnt(0)14360; GFX908-NEXT:    buffer_wbinvl114361; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v414362; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14363; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]14364; GFX908-NEXT:    s_cbranch_execnz .LBB48_114365; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end14366; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]14367; GFX908-NEXT:    v_mov_b32_e32 v0, v314368; GFX908-NEXT:    s_setpc_b64 s[30:31]14369;14370; GFX8-LABEL: global_agent_atomic_fmax_ret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:14371; GFX8:       ; %bb.0:14372; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14373; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v014374; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, -1, v1, vcc14375; GFX8-NEXT:    flat_load_dword v0, v[3:4]14376; GFX8-NEXT:    s_mov_b64 s[4:5], 014377; GFX8-NEXT:    v_max_f16_sdwa v1, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_114378; GFX8-NEXT:    v_max_f16_e32 v2, v2, v214379; GFX8-NEXT:  .LBB48_1: ; %atomicrmw.start14380; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=114381; GFX8-NEXT:    s_waitcnt vmcnt(0)14382; GFX8-NEXT:    v_mov_b32_e32 v6, v014383; GFX8-NEXT:    v_max_f16_sdwa v0, v6, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_114384; GFX8-NEXT:    v_max_f16_e32 v5, v6, v614385; GFX8-NEXT:    v_max_f16_sdwa v0, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD14386; GFX8-NEXT:    v_max_f16_e32 v5, v5, v214387; GFX8-NEXT:    v_or_b32_e32 v5, v5, v014388; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc14389; GFX8-NEXT:    s_waitcnt vmcnt(0)14390; GFX8-NEXT:    buffer_wbinvl114391; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v614392; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14393; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]14394; GFX8-NEXT:    s_cbranch_execnz .LBB48_114395; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end14396; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]14397; GFX8-NEXT:    s_setpc_b64 s[30:31]14398;14399; GFX7-LABEL: global_agent_atomic_fmax_ret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:14400; GFX7:       ; %bb.0:14401; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14402; GFX7-NEXT:    s_movk_i32 s4, 0xf80014403; GFX7-NEXT:    s_mov_b32 s5, -114404; GFX7-NEXT:    s_mov_b32 s7, 0xf00014405; GFX7-NEXT:    s_mov_b32 s6, 014406; GFX7-NEXT:    buffer_load_dword v6, v[0:1], s[4:7], 0 addr6414407; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v014408; GFX7-NEXT:    v_cvt_f16_f32_e32 v0, v314409; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v214410; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, -1, v1, vcc14411; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v014412; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v314413; GFX7-NEXT:    s_mov_b64 s[8:9], 014414; GFX7-NEXT:    s_mov_b32 s4, s614415; GFX7-NEXT:    s_mov_b32 s5, s614416; GFX7-NEXT:    s_waitcnt vmcnt(0)14417; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v614418; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v614419; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v114420; GFX7-NEXT:  .LBB48_1: ; %atomicrmw.start14421; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=114422; GFX7-NEXT:    v_cvt_f16_f32_e32 v1, v114423; GFX7-NEXT:    v_cvt_f16_f32_e32 v0, v014424; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v114425; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v014426; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v114427; GFX7-NEXT:    v_max_f32_e32 v6, v6, v214428; GFX7-NEXT:    v_max_f32_e32 v7, v7, v314429; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v614430; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v714431; GFX7-NEXT:    v_or_b32_e32 v7, v0, v114432; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v614433; GFX7-NEXT:    v_or_b32_e32 v6, v8, v014434; GFX7-NEXT:    v_mov_b32_e32 v9, v714435; GFX7-NEXT:    v_mov_b32_e32 v8, v614436; GFX7-NEXT:    buffer_atomic_cmpswap v[8:9], v[4:5], s[4:7], 0 addr64 glc14437; GFX7-NEXT:    s_waitcnt vmcnt(0)14438; GFX7-NEXT:    buffer_wbinvl114439; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v814440; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v814441; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v114442; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v8, v714443; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]14444; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]14445; GFX7-NEXT:    s_cbranch_execnz .LBB48_114446; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end14447; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]14448; GFX7-NEXT:    s_setpc_b64 s[30:31]14449;14450; GFX6-LABEL: global_agent_atomic_fmax_ret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:14451; GFX6:       ; %bb.0:14452; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14453; GFX6-NEXT:    s_movk_i32 s4, 0xf80014454; GFX6-NEXT:    s_mov_b32 s5, -114455; GFX6-NEXT:    s_mov_b32 s7, 0xf00014456; GFX6-NEXT:    s_mov_b32 s6, 014457; GFX6-NEXT:    buffer_load_dword v6, v[0:1], s[4:7], 0 addr6414458; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v014459; GFX6-NEXT:    v_cvt_f16_f32_e32 v0, v314460; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v214461; GFX6-NEXT:    v_addc_u32_e32 v5, vcc, -1, v1, vcc14462; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v014463; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v314464; GFX6-NEXT:    s_mov_b64 s[8:9], 014465; GFX6-NEXT:    s_mov_b32 s4, s614466; GFX6-NEXT:    s_mov_b32 s5, s614467; GFX6-NEXT:    s_waitcnt vmcnt(0)14468; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v614469; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v614470; GFX6-NEXT:    v_cvt_f32_f16_e32 v1, v114471; GFX6-NEXT:  .LBB48_1: ; %atomicrmw.start14472; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=114473; GFX6-NEXT:    v_cvt_f16_f32_e32 v1, v114474; GFX6-NEXT:    v_cvt_f16_f32_e32 v0, v014475; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v114476; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v014477; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 16, v114478; GFX6-NEXT:    v_max_f32_e32 v6, v6, v214479; GFX6-NEXT:    v_max_f32_e32 v7, v7, v314480; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v614481; GFX6-NEXT:    s_waitcnt expcnt(0)14482; GFX6-NEXT:    v_cvt_f16_f32_e32 v8, v714483; GFX6-NEXT:    v_or_b32_e32 v7, v0, v114484; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v614485; GFX6-NEXT:    v_or_b32_e32 v6, v8, v014486; GFX6-NEXT:    v_mov_b32_e32 v9, v714487; GFX6-NEXT:    v_mov_b32_e32 v8, v614488; GFX6-NEXT:    buffer_atomic_cmpswap v[8:9], v[4:5], s[4:7], 0 addr64 glc14489; GFX6-NEXT:    s_waitcnt vmcnt(0)14490; GFX6-NEXT:    buffer_wbinvl114491; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v814492; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v814493; GFX6-NEXT:    v_cvt_f32_f16_e32 v1, v114494; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v8, v714495; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]14496; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]14497; GFX6-NEXT:    s_cbranch_execnz .LBB48_114498; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end14499; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]14500; GFX6-NEXT:    s_waitcnt expcnt(0)14501; GFX6-NEXT:    s_setpc_b64 s[30:31]14502  %gep = getelementptr <2 x half>, ptr addrspace(1) %ptr, i64 -51214503  %result = atomicrmw fmax ptr addrspace(1) %gep, <2 x half> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !014504  ret <2 x half> %result14505}14506 14507define void @global_agent_atomic_fmax_noret_v2f16__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, <2 x half> %val) #0 {14508; GFX12-LABEL: global_agent_atomic_fmax_noret_v2f16__amdgpu_no_fine_grained_memory:14509; GFX12:       ; %bb.0:14510; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014511; GFX12-NEXT:    s_wait_expcnt 0x014512; GFX12-NEXT:    s_wait_samplecnt 0x014513; GFX12-NEXT:    s_wait_bvhcnt 0x014514; GFX12-NEXT:    s_wait_kmcnt 0x014515; GFX12-NEXT:    global_load_b32 v3, v[0:1], off14516; GFX12-NEXT:    v_pk_max_num_f16 v4, v2, v214517; GFX12-NEXT:    s_mov_b32 s0, 014518; GFX12-NEXT:  .LBB49_1: ; %atomicrmw.start14519; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=114520; GFX12-NEXT:    s_wait_loadcnt 0x014521; GFX12-NEXT:    v_pk_max_num_f16 v2, v3, v314522; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)14523; GFX12-NEXT:    v_pk_max_num_f16 v2, v2, v414524; GFX12-NEXT:    s_wait_storecnt 0x014525; GFX12-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV14526; GFX12-NEXT:    s_wait_loadcnt 0x014527; GFX12-NEXT:    global_inv scope:SCOPE_DEV14528; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v314529; GFX12-NEXT:    v_mov_b32_e32 v3, v214530; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14531; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s014532; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14533; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014534; GFX12-NEXT:    s_cbranch_execnz .LBB49_114535; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end14536; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s014537; GFX12-NEXT:    s_wait_loadcnt 0x014538; GFX12-NEXT:    s_setpc_b64 s[30:31]14539;14540; GFX942-LABEL: global_agent_atomic_fmax_noret_v2f16__amdgpu_no_fine_grained_memory:14541; GFX942:       ; %bb.0:14542; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14543; GFX942-NEXT:    global_load_dword v3, v[0:1], off14544; GFX942-NEXT:    s_mov_b64 s[0:1], 014545; GFX942-NEXT:    v_pk_max_f16 v4, v2, v214546; GFX942-NEXT:  .LBB49_1: ; %atomicrmw.start14547; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=114548; GFX942-NEXT:    s_waitcnt vmcnt(0)14549; GFX942-NEXT:    v_pk_max_f16 v2, v3, v314550; GFX942-NEXT:    s_nop 014551; GFX942-NEXT:    v_pk_max_f16 v2, v2, v414552; GFX942-NEXT:    buffer_wbl2 sc114553; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc014554; GFX942-NEXT:    s_waitcnt vmcnt(0)14555; GFX942-NEXT:    buffer_inv sc114556; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v314557; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]14558; GFX942-NEXT:    v_mov_b32_e32 v3, v214559; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]14560; GFX942-NEXT:    s_cbranch_execnz .LBB49_114561; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end14562; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]14563; GFX942-NEXT:    s_setpc_b64 s[30:31]14564;14565; GFX11-LABEL: global_agent_atomic_fmax_noret_v2f16__amdgpu_no_fine_grained_memory:14566; GFX11:       ; %bb.0:14567; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14568; GFX11-NEXT:    global_load_b32 v3, v[0:1], off14569; GFX11-NEXT:    v_pk_max_f16 v4, v2, v214570; GFX11-NEXT:    s_mov_b32 s0, 014571; GFX11-NEXT:  .LBB49_1: ; %atomicrmw.start14572; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=114573; GFX11-NEXT:    s_waitcnt vmcnt(0)14574; GFX11-NEXT:    v_pk_max_f16 v2, v3, v314575; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)14576; GFX11-NEXT:    v_pk_max_f16 v2, v2, v414577; GFX11-NEXT:    s_waitcnt_vscnt null, 0x014578; GFX11-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off glc14579; GFX11-NEXT:    s_waitcnt vmcnt(0)14580; GFX11-NEXT:    buffer_gl1_inv14581; GFX11-NEXT:    buffer_gl0_inv14582; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v314583; GFX11-NEXT:    v_mov_b32_e32 v3, v214584; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s014585; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)14586; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014587; GFX11-NEXT:    s_cbranch_execnz .LBB49_114588; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end14589; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s014590; GFX11-NEXT:    s_setpc_b64 s[30:31]14591;14592; GFX10-LABEL: global_agent_atomic_fmax_noret_v2f16__amdgpu_no_fine_grained_memory:14593; GFX10:       ; %bb.0:14594; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14595; GFX10-NEXT:    global_load_dword v3, v[0:1], off14596; GFX10-NEXT:    v_pk_max_f16 v4, v2, v214597; GFX10-NEXT:    s_mov_b32 s4, 014598; GFX10-NEXT:  .LBB49_1: ; %atomicrmw.start14599; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=114600; GFX10-NEXT:    s_waitcnt vmcnt(0)14601; GFX10-NEXT:    v_pk_max_f16 v2, v3, v314602; GFX10-NEXT:    v_pk_max_f16 v2, v2, v414603; GFX10-NEXT:    s_waitcnt_vscnt null, 0x014604; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc14605; GFX10-NEXT:    s_waitcnt vmcnt(0)14606; GFX10-NEXT:    buffer_gl1_inv14607; GFX10-NEXT:    buffer_gl0_inv14608; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v314609; GFX10-NEXT:    v_mov_b32_e32 v3, v214610; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s414611; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s414612; GFX10-NEXT:    s_cbranch_execnz .LBB49_114613; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end14614; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s414615; GFX10-NEXT:    s_setpc_b64 s[30:31]14616;14617; GFX90A-LABEL: global_agent_atomic_fmax_noret_v2f16__amdgpu_no_fine_grained_memory:14618; GFX90A:       ; %bb.0:14619; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14620; GFX90A-NEXT:    global_load_dword v3, v[0:1], off14621; GFX90A-NEXT:    s_mov_b64 s[4:5], 014622; GFX90A-NEXT:    v_pk_max_f16 v4, v2, v214623; GFX90A-NEXT:  .LBB49_1: ; %atomicrmw.start14624; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=114625; GFX90A-NEXT:    s_waitcnt vmcnt(0)14626; GFX90A-NEXT:    v_pk_max_f16 v2, v3, v314627; GFX90A-NEXT:    v_pk_max_f16 v2, v2, v414628; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc14629; GFX90A-NEXT:    s_waitcnt vmcnt(0)14630; GFX90A-NEXT:    buffer_wbinvl114631; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v314632; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14633; GFX90A-NEXT:    v_mov_b32_e32 v3, v214634; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]14635; GFX90A-NEXT:    s_cbranch_execnz .LBB49_114636; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end14637; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]14638; GFX90A-NEXT:    s_setpc_b64 s[30:31]14639;14640; GFX908-LABEL: global_agent_atomic_fmax_noret_v2f16__amdgpu_no_fine_grained_memory:14641; GFX908:       ; %bb.0:14642; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14643; GFX908-NEXT:    global_load_dword v3, v[0:1], off14644; GFX908-NEXT:    s_mov_b64 s[4:5], 014645; GFX908-NEXT:    v_pk_max_f16 v4, v2, v214646; GFX908-NEXT:  .LBB49_1: ; %atomicrmw.start14647; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=114648; GFX908-NEXT:    s_waitcnt vmcnt(0)14649; GFX908-NEXT:    v_pk_max_f16 v2, v3, v314650; GFX908-NEXT:    v_pk_max_f16 v2, v2, v414651; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc14652; GFX908-NEXT:    s_waitcnt vmcnt(0)14653; GFX908-NEXT:    buffer_wbinvl114654; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v314655; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14656; GFX908-NEXT:    v_mov_b32_e32 v3, v214657; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]14658; GFX908-NEXT:    s_cbranch_execnz .LBB49_114659; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end14660; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]14661; GFX908-NEXT:    s_setpc_b64 s[30:31]14662;14663; GFX8-LABEL: global_agent_atomic_fmax_noret_v2f16__amdgpu_no_fine_grained_memory:14664; GFX8:       ; %bb.0:14665; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14666; GFX8-NEXT:    flat_load_dword v3, v[0:1]14667; GFX8-NEXT:    s_mov_b64 s[4:5], 014668; GFX8-NEXT:    v_max_f16_sdwa v4, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_114669; GFX8-NEXT:    v_max_f16_e32 v5, v2, v214670; GFX8-NEXT:  .LBB49_1: ; %atomicrmw.start14671; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=114672; GFX8-NEXT:    s_waitcnt vmcnt(0)14673; GFX8-NEXT:    v_max_f16_sdwa v2, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_114674; GFX8-NEXT:    v_max_f16_e32 v6, v3, v314675; GFX8-NEXT:    v_max_f16_sdwa v2, v2, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD14676; GFX8-NEXT:    v_max_f16_e32 v6, v6, v514677; GFX8-NEXT:    v_or_b32_e32 v2, v6, v214678; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc14679; GFX8-NEXT:    s_waitcnt vmcnt(0)14680; GFX8-NEXT:    buffer_wbinvl114681; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v314682; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14683; GFX8-NEXT:    v_mov_b32_e32 v3, v214684; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]14685; GFX8-NEXT:    s_cbranch_execnz .LBB49_114686; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end14687; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]14688; GFX8-NEXT:    s_setpc_b64 s[30:31]14689;14690; GFX7-LABEL: global_agent_atomic_fmax_noret_v2f16__amdgpu_no_fine_grained_memory:14691; GFX7:       ; %bb.0:14692; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14693; GFX7-NEXT:    s_mov_b32 s6, 014694; GFX7-NEXT:    s_mov_b32 s7, 0xf00014695; GFX7-NEXT:    s_mov_b32 s4, s614696; GFX7-NEXT:    s_mov_b32 s5, s614697; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr6414698; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v314699; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v214700; GFX7-NEXT:    s_mov_b64 s[8:9], 014701; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v314702; GFX7-NEXT:    s_waitcnt vmcnt(0)14703; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v514704; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v514705; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v314706; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v614707; GFX7-NEXT:  .LBB49_1: ; %atomicrmw.start14708; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=114709; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v514710; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v414711; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v514712; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v414713; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v514714; GFX7-NEXT:    v_max_f32_e32 v6, v6, v214715; GFX7-NEXT:    v_max_f32_e32 v7, v7, v314716; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v614717; GFX7-NEXT:    v_cvt_f16_f32_e32 v7, v714718; GFX7-NEXT:    v_or_b32_e32 v6, v4, v514719; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v814720; GFX7-NEXT:    v_or_b32_e32 v5, v7, v414721; GFX7-NEXT:    v_mov_b32_e32 v8, v614722; GFX7-NEXT:    v_mov_b32_e32 v7, v514723; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc14724; GFX7-NEXT:    s_waitcnt vmcnt(0)14725; GFX7-NEXT:    buffer_wbinvl114726; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v714727; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v714728; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v514729; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v614730; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]14731; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]14732; GFX7-NEXT:    s_cbranch_execnz .LBB49_114733; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end14734; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]14735; GFX7-NEXT:    s_setpc_b64 s[30:31]14736;14737; GFX6-LABEL: global_agent_atomic_fmax_noret_v2f16__amdgpu_no_fine_grained_memory:14738; GFX6:       ; %bb.0:14739; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14740; GFX6-NEXT:    s_mov_b32 s6, 014741; GFX6-NEXT:    s_mov_b32 s7, 0xf00014742; GFX6-NEXT:    s_mov_b32 s4, s614743; GFX6-NEXT:    s_mov_b32 s5, s614744; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr6414745; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v314746; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v214747; GFX6-NEXT:    s_mov_b64 s[8:9], 014748; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v314749; GFX6-NEXT:    s_waitcnt vmcnt(0)14750; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v514751; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v514752; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v314753; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v614754; GFX6-NEXT:  .LBB49_1: ; %atomicrmw.start14755; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=114756; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v514757; GFX6-NEXT:    v_cvt_f16_f32_e32 v4, v414758; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v514759; GFX6-NEXT:    s_waitcnt expcnt(0)14760; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v414761; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 16, v514762; GFX6-NEXT:    v_max_f32_e32 v6, v6, v214763; GFX6-NEXT:    v_max_f32_e32 v7, v7, v314764; GFX6-NEXT:    v_cvt_f16_f32_e32 v8, v614765; GFX6-NEXT:    v_cvt_f16_f32_e32 v7, v714766; GFX6-NEXT:    v_or_b32_e32 v6, v4, v514767; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v814768; GFX6-NEXT:    v_or_b32_e32 v5, v7, v414769; GFX6-NEXT:    v_mov_b32_e32 v8, v614770; GFX6-NEXT:    v_mov_b32_e32 v7, v514771; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc14772; GFX6-NEXT:    s_waitcnt vmcnt(0)14773; GFX6-NEXT:    buffer_wbinvl114774; GFX6-NEXT:    v_lshrrev_b32_e32 v5, 16, v714775; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v714776; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v514777; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v614778; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]14779; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]14780; GFX6-NEXT:    s_cbranch_execnz .LBB49_114781; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end14782; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]14783; GFX6-NEXT:    s_waitcnt expcnt(0)14784; GFX6-NEXT:    s_setpc_b64 s[30:31]14785  %unused = atomicrmw fmax ptr addrspace(1) %ptr, <2 x half> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !014786  ret void14787}14788 14789define void @global_agent_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, <2 x half> %val) #0 {14790; GFX12-LABEL: global_agent_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14791; GFX12:       ; %bb.0:14792; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014793; GFX12-NEXT:    s_wait_expcnt 0x014794; GFX12-NEXT:    s_wait_samplecnt 0x014795; GFX12-NEXT:    s_wait_bvhcnt 0x014796; GFX12-NEXT:    s_wait_kmcnt 0x014797; GFX12-NEXT:    global_load_b32 v3, v[0:1], off offset:204414798; GFX12-NEXT:    v_pk_max_num_f16 v4, v2, v214799; GFX12-NEXT:    s_mov_b32 s0, 014800; GFX12-NEXT:  .LBB50_1: ; %atomicrmw.start14801; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=114802; GFX12-NEXT:    s_wait_loadcnt 0x014803; GFX12-NEXT:    v_pk_max_num_f16 v2, v3, v314804; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)14805; GFX12-NEXT:    v_pk_max_num_f16 v2, v2, v414806; GFX12-NEXT:    s_wait_storecnt 0x014807; GFX12-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV14808; GFX12-NEXT:    s_wait_loadcnt 0x014809; GFX12-NEXT:    global_inv scope:SCOPE_DEV14810; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v314811; GFX12-NEXT:    v_mov_b32_e32 v3, v214812; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14813; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s014814; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14815; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014816; GFX12-NEXT:    s_cbranch_execnz .LBB50_114817; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end14818; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s014819; GFX12-NEXT:    s_wait_loadcnt 0x014820; GFX12-NEXT:    s_setpc_b64 s[30:31]14821;14822; GFX942-LABEL: global_agent_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14823; GFX942:       ; %bb.0:14824; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14825; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:204414826; GFX942-NEXT:    s_mov_b64 s[0:1], 014827; GFX942-NEXT:    v_pk_max_f16 v4, v2, v214828; GFX942-NEXT:  .LBB50_1: ; %atomicrmw.start14829; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=114830; GFX942-NEXT:    s_waitcnt vmcnt(0)14831; GFX942-NEXT:    v_pk_max_f16 v2, v3, v314832; GFX942-NEXT:    s_nop 014833; GFX942-NEXT:    v_pk_max_f16 v2, v2, v414834; GFX942-NEXT:    buffer_wbl2 sc114835; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 sc014836; GFX942-NEXT:    s_waitcnt vmcnt(0)14837; GFX942-NEXT:    buffer_inv sc114838; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v314839; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]14840; GFX942-NEXT:    v_mov_b32_e32 v3, v214841; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]14842; GFX942-NEXT:    s_cbranch_execnz .LBB50_114843; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end14844; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]14845; GFX942-NEXT:    s_setpc_b64 s[30:31]14846;14847; GFX11-LABEL: global_agent_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14848; GFX11:       ; %bb.0:14849; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14850; GFX11-NEXT:    global_load_b32 v3, v[0:1], off offset:204414851; GFX11-NEXT:    v_pk_max_f16 v4, v2, v214852; GFX11-NEXT:    s_mov_b32 s0, 014853; GFX11-NEXT:  .LBB50_1: ; %atomicrmw.start14854; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=114855; GFX11-NEXT:    s_waitcnt vmcnt(0)14856; GFX11-NEXT:    v_pk_max_f16 v2, v3, v314857; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)14858; GFX11-NEXT:    v_pk_max_f16 v2, v2, v414859; GFX11-NEXT:    s_waitcnt_vscnt null, 0x014860; GFX11-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2044 glc14861; GFX11-NEXT:    s_waitcnt vmcnt(0)14862; GFX11-NEXT:    buffer_gl1_inv14863; GFX11-NEXT:    buffer_gl0_inv14864; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v314865; GFX11-NEXT:    v_mov_b32_e32 v3, v214866; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s014867; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)14868; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014869; GFX11-NEXT:    s_cbranch_execnz .LBB50_114870; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end14871; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s014872; GFX11-NEXT:    s_setpc_b64 s[30:31]14873;14874; GFX10-LABEL: global_agent_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14875; GFX10:       ; %bb.0:14876; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14877; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:204414878; GFX10-NEXT:    v_pk_max_f16 v4, v2, v214879; GFX10-NEXT:    s_mov_b32 s4, 014880; GFX10-NEXT:  .LBB50_1: ; %atomicrmw.start14881; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=114882; GFX10-NEXT:    s_waitcnt vmcnt(0)14883; GFX10-NEXT:    v_pk_max_f16 v2, v3, v314884; GFX10-NEXT:    v_pk_max_f16 v2, v2, v414885; GFX10-NEXT:    s_waitcnt_vscnt null, 0x014886; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc14887; GFX10-NEXT:    s_waitcnt vmcnt(0)14888; GFX10-NEXT:    buffer_gl1_inv14889; GFX10-NEXT:    buffer_gl0_inv14890; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v314891; GFX10-NEXT:    v_mov_b32_e32 v3, v214892; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s414893; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s414894; GFX10-NEXT:    s_cbranch_execnz .LBB50_114895; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end14896; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s414897; GFX10-NEXT:    s_setpc_b64 s[30:31]14898;14899; GFX90A-LABEL: global_agent_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14900; GFX90A:       ; %bb.0:14901; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14902; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:204414903; GFX90A-NEXT:    s_mov_b64 s[4:5], 014904; GFX90A-NEXT:    v_pk_max_f16 v4, v2, v214905; GFX90A-NEXT:  .LBB50_1: ; %atomicrmw.start14906; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=114907; GFX90A-NEXT:    s_waitcnt vmcnt(0)14908; GFX90A-NEXT:    v_pk_max_f16 v2, v3, v314909; GFX90A-NEXT:    v_pk_max_f16 v2, v2, v414910; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc14911; GFX90A-NEXT:    s_waitcnt vmcnt(0)14912; GFX90A-NEXT:    buffer_wbinvl114913; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v314914; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14915; GFX90A-NEXT:    v_mov_b32_e32 v3, v214916; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]14917; GFX90A-NEXT:    s_cbranch_execnz .LBB50_114918; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end14919; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]14920; GFX90A-NEXT:    s_setpc_b64 s[30:31]14921;14922; GFX908-LABEL: global_agent_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14923; GFX908:       ; %bb.0:14924; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14925; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:204414926; GFX908-NEXT:    s_mov_b64 s[4:5], 014927; GFX908-NEXT:    v_pk_max_f16 v4, v2, v214928; GFX908-NEXT:  .LBB50_1: ; %atomicrmw.start14929; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=114930; GFX908-NEXT:    s_waitcnt vmcnt(0)14931; GFX908-NEXT:    v_pk_max_f16 v2, v3, v314932; GFX908-NEXT:    v_pk_max_f16 v2, v2, v414933; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc14934; GFX908-NEXT:    s_waitcnt vmcnt(0)14935; GFX908-NEXT:    buffer_wbinvl114936; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v314937; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14938; GFX908-NEXT:    v_mov_b32_e32 v3, v214939; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]14940; GFX908-NEXT:    s_cbranch_execnz .LBB50_114941; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end14942; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]14943; GFX908-NEXT:    s_setpc_b64 s[30:31]14944;14945; GFX8-LABEL: global_agent_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14946; GFX8:       ; %bb.0:14947; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14948; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v014949; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc14950; GFX8-NEXT:    flat_load_dword v3, v[0:1]14951; GFX8-NEXT:    s_mov_b64 s[4:5], 014952; GFX8-NEXT:    v_max_f16_sdwa v4, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_114953; GFX8-NEXT:    v_max_f16_e32 v5, v2, v214954; GFX8-NEXT:  .LBB50_1: ; %atomicrmw.start14955; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=114956; GFX8-NEXT:    s_waitcnt vmcnt(0)14957; GFX8-NEXT:    v_max_f16_sdwa v2, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_114958; GFX8-NEXT:    v_max_f16_e32 v6, v3, v314959; GFX8-NEXT:    v_max_f16_sdwa v2, v2, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD14960; GFX8-NEXT:    v_max_f16_e32 v6, v6, v514961; GFX8-NEXT:    v_or_b32_e32 v2, v6, v214962; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc14963; GFX8-NEXT:    s_waitcnt vmcnt(0)14964; GFX8-NEXT:    buffer_wbinvl114965; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v314966; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14967; GFX8-NEXT:    v_mov_b32_e32 v3, v214968; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]14969; GFX8-NEXT:    s_cbranch_execnz .LBB50_114970; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end14971; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]14972; GFX8-NEXT:    s_setpc_b64 s[30:31]14973;14974; GFX7-LABEL: global_agent_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14975; GFX7:       ; %bb.0:14976; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14977; GFX7-NEXT:    s_mov_b32 s6, 014978; GFX7-NEXT:    s_mov_b32 s7, 0xf00014979; GFX7-NEXT:    s_mov_b32 s4, s614980; GFX7-NEXT:    s_mov_b32 s5, s614981; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204414982; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v314983; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v214984; GFX7-NEXT:    s_mov_b64 s[8:9], 014985; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v314986; GFX7-NEXT:    s_waitcnt vmcnt(0)14987; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v514988; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v514989; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v314990; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v614991; GFX7-NEXT:  .LBB50_1: ; %atomicrmw.start14992; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=114993; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v514994; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v414995; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v514996; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v414997; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v514998; GFX7-NEXT:    v_max_f32_e32 v6, v6, v214999; GFX7-NEXT:    v_max_f32_e32 v7, v7, v315000; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v615001; GFX7-NEXT:    v_cvt_f16_f32_e32 v7, v715002; GFX7-NEXT:    v_or_b32_e32 v6, v4, v515003; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v815004; GFX7-NEXT:    v_or_b32_e32 v5, v7, v415005; GFX7-NEXT:    v_mov_b32_e32 v8, v615006; GFX7-NEXT:    v_mov_b32_e32 v7, v515007; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 offset:2044 glc15008; GFX7-NEXT:    s_waitcnt vmcnt(0)15009; GFX7-NEXT:    buffer_wbinvl115010; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v715011; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v715012; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v515013; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v615014; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]15015; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]15016; GFX7-NEXT:    s_cbranch_execnz .LBB50_115017; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end15018; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]15019; GFX7-NEXT:    s_setpc_b64 s[30:31]15020;15021; GFX6-LABEL: global_agent_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15022; GFX6:       ; %bb.0:15023; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15024; GFX6-NEXT:    s_mov_b32 s6, 015025; GFX6-NEXT:    s_mov_b32 s7, 0xf00015026; GFX6-NEXT:    s_mov_b32 s4, s615027; GFX6-NEXT:    s_mov_b32 s5, s615028; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204415029; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v315030; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v215031; GFX6-NEXT:    s_mov_b64 s[8:9], 015032; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v315033; GFX6-NEXT:    s_waitcnt vmcnt(0)15034; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v515035; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v515036; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v315037; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v615038; GFX6-NEXT:  .LBB50_1: ; %atomicrmw.start15039; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=115040; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v515041; GFX6-NEXT:    v_cvt_f16_f32_e32 v4, v415042; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v515043; GFX6-NEXT:    s_waitcnt expcnt(0)15044; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v415045; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 16, v515046; GFX6-NEXT:    v_max_f32_e32 v6, v6, v215047; GFX6-NEXT:    v_max_f32_e32 v7, v7, v315048; GFX6-NEXT:    v_cvt_f16_f32_e32 v8, v615049; GFX6-NEXT:    v_cvt_f16_f32_e32 v7, v715050; GFX6-NEXT:    v_or_b32_e32 v6, v4, v515051; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v815052; GFX6-NEXT:    v_or_b32_e32 v5, v7, v415053; GFX6-NEXT:    v_mov_b32_e32 v8, v615054; GFX6-NEXT:    v_mov_b32_e32 v7, v515055; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 offset:2044 glc15056; GFX6-NEXT:    s_waitcnt vmcnt(0)15057; GFX6-NEXT:    buffer_wbinvl115058; GFX6-NEXT:    v_lshrrev_b32_e32 v5, 16, v715059; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v715060; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v515061; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v615062; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]15063; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]15064; GFX6-NEXT:    s_cbranch_execnz .LBB50_115065; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end15066; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]15067; GFX6-NEXT:    s_waitcnt expcnt(0)15068; GFX6-NEXT:    s_setpc_b64 s[30:31]15069  %gep = getelementptr <2 x half>, ptr addrspace(1) %ptr, i64 51115070  %unused = atomicrmw fmax ptr addrspace(1) %gep, <2 x half> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !015071  ret void15072}15073 15074define void @global_agent_atomic_fmax_noret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, <2 x half> %val) #0 {15075; GFX12-LABEL: global_agent_atomic_fmax_noret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:15076; GFX12:       ; %bb.0:15077; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015078; GFX12-NEXT:    s_wait_expcnt 0x015079; GFX12-NEXT:    s_wait_samplecnt 0x015080; GFX12-NEXT:    s_wait_bvhcnt 0x015081; GFX12-NEXT:    s_wait_kmcnt 0x015082; GFX12-NEXT:    global_load_b32 v3, v[0:1], off offset:-204815083; GFX12-NEXT:    v_pk_max_num_f16 v4, v2, v215084; GFX12-NEXT:    s_mov_b32 s0, 015085; GFX12-NEXT:  .LBB51_1: ; %atomicrmw.start15086; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=115087; GFX12-NEXT:    s_wait_loadcnt 0x015088; GFX12-NEXT:    v_pk_max_num_f16 v2, v3, v315089; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)15090; GFX12-NEXT:    v_pk_max_num_f16 v2, v2, v415091; GFX12-NEXT:    s_wait_storecnt 0x015092; GFX12-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV15093; GFX12-NEXT:    s_wait_loadcnt 0x015094; GFX12-NEXT:    global_inv scope:SCOPE_DEV15095; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v315096; GFX12-NEXT:    v_mov_b32_e32 v3, v215097; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15098; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s015099; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15100; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015101; GFX12-NEXT:    s_cbranch_execnz .LBB51_115102; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end15103; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s015104; GFX12-NEXT:    s_wait_loadcnt 0x015105; GFX12-NEXT:    s_setpc_b64 s[30:31]15106;15107; GFX942-LABEL: global_agent_atomic_fmax_noret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:15108; GFX942:       ; %bb.0:15109; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15110; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:-204815111; GFX942-NEXT:    s_mov_b64 s[0:1], 015112; GFX942-NEXT:    v_pk_max_f16 v4, v2, v215113; GFX942-NEXT:  .LBB51_1: ; %atomicrmw.start15114; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=115115; GFX942-NEXT:    s_waitcnt vmcnt(0)15116; GFX942-NEXT:    v_pk_max_f16 v2, v3, v315117; GFX942-NEXT:    s_nop 015118; GFX942-NEXT:    v_pk_max_f16 v2, v2, v415119; GFX942-NEXT:    buffer_wbl2 sc115120; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 sc015121; GFX942-NEXT:    s_waitcnt vmcnt(0)15122; GFX942-NEXT:    buffer_inv sc115123; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315124; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]15125; GFX942-NEXT:    v_mov_b32_e32 v3, v215126; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]15127; GFX942-NEXT:    s_cbranch_execnz .LBB51_115128; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end15129; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]15130; GFX942-NEXT:    s_setpc_b64 s[30:31]15131;15132; GFX11-LABEL: global_agent_atomic_fmax_noret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:15133; GFX11:       ; %bb.0:15134; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15135; GFX11-NEXT:    global_load_b32 v3, v[0:1], off offset:-204815136; GFX11-NEXT:    v_pk_max_f16 v4, v2, v215137; GFX11-NEXT:    s_mov_b32 s0, 015138; GFX11-NEXT:  .LBB51_1: ; %atomicrmw.start15139; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=115140; GFX11-NEXT:    s_waitcnt vmcnt(0)15141; GFX11-NEXT:    v_pk_max_f16 v2, v3, v315142; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)15143; GFX11-NEXT:    v_pk_max_f16 v2, v2, v415144; GFX11-NEXT:    s_waitcnt_vscnt null, 0x015145; GFX11-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:-2048 glc15146; GFX11-NEXT:    s_waitcnt vmcnt(0)15147; GFX11-NEXT:    buffer_gl1_inv15148; GFX11-NEXT:    buffer_gl0_inv15149; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v315150; GFX11-NEXT:    v_mov_b32_e32 v3, v215151; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s015152; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15153; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015154; GFX11-NEXT:    s_cbranch_execnz .LBB51_115155; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end15156; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s015157; GFX11-NEXT:    s_setpc_b64 s[30:31]15158;15159; GFX10-LABEL: global_agent_atomic_fmax_noret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:15160; GFX10:       ; %bb.0:15161; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15162; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:-204815163; GFX10-NEXT:    v_pk_max_f16 v4, v2, v215164; GFX10-NEXT:    s_mov_b32 s4, 015165; GFX10-NEXT:  .LBB51_1: ; %atomicrmw.start15166; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=115167; GFX10-NEXT:    s_waitcnt vmcnt(0)15168; GFX10-NEXT:    v_pk_max_f16 v2, v3, v315169; GFX10-NEXT:    v_pk_max_f16 v2, v2, v415170; GFX10-NEXT:    s_waitcnt_vscnt null, 0x015171; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 glc15172; GFX10-NEXT:    s_waitcnt vmcnt(0)15173; GFX10-NEXT:    buffer_gl1_inv15174; GFX10-NEXT:    buffer_gl0_inv15175; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v315176; GFX10-NEXT:    v_mov_b32_e32 v3, v215177; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s415178; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s415179; GFX10-NEXT:    s_cbranch_execnz .LBB51_115180; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end15181; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s415182; GFX10-NEXT:    s_setpc_b64 s[30:31]15183;15184; GFX90A-LABEL: global_agent_atomic_fmax_noret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:15185; GFX90A:       ; %bb.0:15186; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15187; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:-204815188; GFX90A-NEXT:    s_mov_b64 s[4:5], 015189; GFX90A-NEXT:    v_pk_max_f16 v4, v2, v215190; GFX90A-NEXT:  .LBB51_1: ; %atomicrmw.start15191; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=115192; GFX90A-NEXT:    s_waitcnt vmcnt(0)15193; GFX90A-NEXT:    v_pk_max_f16 v2, v3, v315194; GFX90A-NEXT:    v_pk_max_f16 v2, v2, v415195; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 glc15196; GFX90A-NEXT:    s_waitcnt vmcnt(0)15197; GFX90A-NEXT:    buffer_wbinvl115198; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315199; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15200; GFX90A-NEXT:    v_mov_b32_e32 v3, v215201; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]15202; GFX90A-NEXT:    s_cbranch_execnz .LBB51_115203; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end15204; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]15205; GFX90A-NEXT:    s_setpc_b64 s[30:31]15206;15207; GFX908-LABEL: global_agent_atomic_fmax_noret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:15208; GFX908:       ; %bb.0:15209; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15210; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:-204815211; GFX908-NEXT:    s_mov_b64 s[4:5], 015212; GFX908-NEXT:    v_pk_max_f16 v4, v2, v215213; GFX908-NEXT:  .LBB51_1: ; %atomicrmw.start15214; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=115215; GFX908-NEXT:    s_waitcnt vmcnt(0)15216; GFX908-NEXT:    v_pk_max_f16 v2, v3, v315217; GFX908-NEXT:    v_pk_max_f16 v2, v2, v415218; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 glc15219; GFX908-NEXT:    s_waitcnt vmcnt(0)15220; GFX908-NEXT:    buffer_wbinvl115221; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315222; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15223; GFX908-NEXT:    v_mov_b32_e32 v3, v215224; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]15225; GFX908-NEXT:    s_cbranch_execnz .LBB51_115226; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end15227; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]15228; GFX908-NEXT:    s_setpc_b64 s[30:31]15229;15230; GFX8-LABEL: global_agent_atomic_fmax_noret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:15231; GFX8:       ; %bb.0:15232; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15233; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffff800, v015234; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc15235; GFX8-NEXT:    flat_load_dword v3, v[0:1]15236; GFX8-NEXT:    s_mov_b64 s[4:5], 015237; GFX8-NEXT:    v_max_f16_sdwa v4, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_115238; GFX8-NEXT:    v_max_f16_e32 v5, v2, v215239; GFX8-NEXT:  .LBB51_1: ; %atomicrmw.start15240; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=115241; GFX8-NEXT:    s_waitcnt vmcnt(0)15242; GFX8-NEXT:    v_max_f16_sdwa v2, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_115243; GFX8-NEXT:    v_max_f16_e32 v6, v3, v315244; GFX8-NEXT:    v_max_f16_sdwa v2, v2, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD15245; GFX8-NEXT:    v_max_f16_e32 v6, v6, v515246; GFX8-NEXT:    v_or_b32_e32 v2, v6, v215247; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc15248; GFX8-NEXT:    s_waitcnt vmcnt(0)15249; GFX8-NEXT:    buffer_wbinvl115250; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315251; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15252; GFX8-NEXT:    v_mov_b32_e32 v3, v215253; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]15254; GFX8-NEXT:    s_cbranch_execnz .LBB51_115255; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end15256; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]15257; GFX8-NEXT:    s_setpc_b64 s[30:31]15258;15259; GFX7-LABEL: global_agent_atomic_fmax_noret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:15260; GFX7:       ; %bb.0:15261; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15262; GFX7-NEXT:    s_movk_i32 s4, 0xf80015263; GFX7-NEXT:    s_mov_b32 s5, -115264; GFX7-NEXT:    s_mov_b32 s7, 0xf00015265; GFX7-NEXT:    s_mov_b32 s6, 015266; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr6415267; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v315268; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v215269; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v015270; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v315271; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc15272; GFX7-NEXT:    s_mov_b64 s[8:9], 015273; GFX7-NEXT:    s_mov_b32 s4, s615274; GFX7-NEXT:    s_mov_b32 s5, s615275; GFX7-NEXT:    s_waitcnt vmcnt(0)15276; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v515277; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v515278; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v315279; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v615280; GFX7-NEXT:  .LBB51_1: ; %atomicrmw.start15281; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=115282; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v515283; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v415284; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v515285; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v415286; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v515287; GFX7-NEXT:    v_max_f32_e32 v6, v6, v215288; GFX7-NEXT:    v_max_f32_e32 v7, v7, v315289; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v615290; GFX7-NEXT:    v_cvt_f16_f32_e32 v7, v715291; GFX7-NEXT:    v_or_b32_e32 v6, v4, v515292; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v815293; GFX7-NEXT:    v_or_b32_e32 v5, v7, v415294; GFX7-NEXT:    v_mov_b32_e32 v8, v615295; GFX7-NEXT:    v_mov_b32_e32 v7, v515296; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc15297; GFX7-NEXT:    s_waitcnt vmcnt(0)15298; GFX7-NEXT:    buffer_wbinvl115299; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v715300; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v715301; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v515302; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v615303; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]15304; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]15305; GFX7-NEXT:    s_cbranch_execnz .LBB51_115306; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end15307; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]15308; GFX7-NEXT:    s_setpc_b64 s[30:31]15309;15310; GFX6-LABEL: global_agent_atomic_fmax_noret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:15311; GFX6:       ; %bb.0:15312; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15313; GFX6-NEXT:    s_movk_i32 s4, 0xf80015314; GFX6-NEXT:    s_mov_b32 s5, -115315; GFX6-NEXT:    s_mov_b32 s7, 0xf00015316; GFX6-NEXT:    s_mov_b32 s6, 015317; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr6415318; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v315319; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v215320; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v015321; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v315322; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc15323; GFX6-NEXT:    s_mov_b64 s[8:9], 015324; GFX6-NEXT:    s_mov_b32 s4, s615325; GFX6-NEXT:    s_mov_b32 s5, s615326; GFX6-NEXT:    s_waitcnt vmcnt(0)15327; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v515328; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v515329; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v315330; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v615331; GFX6-NEXT:  .LBB51_1: ; %atomicrmw.start15332; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=115333; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v515334; GFX6-NEXT:    v_cvt_f16_f32_e32 v4, v415335; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v515336; GFX6-NEXT:    s_waitcnt expcnt(0)15337; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v415338; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 16, v515339; GFX6-NEXT:    v_max_f32_e32 v6, v6, v215340; GFX6-NEXT:    v_max_f32_e32 v7, v7, v315341; GFX6-NEXT:    v_cvt_f16_f32_e32 v8, v615342; GFX6-NEXT:    v_cvt_f16_f32_e32 v7, v715343; GFX6-NEXT:    v_or_b32_e32 v6, v4, v515344; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v815345; GFX6-NEXT:    v_or_b32_e32 v5, v7, v415346; GFX6-NEXT:    v_mov_b32_e32 v8, v615347; GFX6-NEXT:    v_mov_b32_e32 v7, v515348; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 glc15349; GFX6-NEXT:    s_waitcnt vmcnt(0)15350; GFX6-NEXT:    buffer_wbinvl115351; GFX6-NEXT:    v_lshrrev_b32_e32 v5, 16, v715352; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v715353; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v515354; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v615355; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]15356; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]15357; GFX6-NEXT:    s_cbranch_execnz .LBB51_115358; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end15359; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]15360; GFX6-NEXT:    s_waitcnt expcnt(0)15361; GFX6-NEXT:    s_setpc_b64 s[30:31]15362  %gep = getelementptr <2 x half>, ptr addrspace(1) %ptr, i64 -51215363  %unused = atomicrmw fmax ptr addrspace(1) %gep, <2 x half> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !015364  ret void15365}15366 15367define <2 x half> @global_system_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, <2 x half> %val) #0 {15368; GFX12-LABEL: global_system_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15369; GFX12:       ; %bb.0:15370; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015371; GFX12-NEXT:    s_wait_expcnt 0x015372; GFX12-NEXT:    s_wait_samplecnt 0x015373; GFX12-NEXT:    s_wait_bvhcnt 0x015374; GFX12-NEXT:    s_wait_kmcnt 0x015375; GFX12-NEXT:    global_load_b32 v3, v[0:1], off offset:204415376; GFX12-NEXT:    v_pk_max_num_f16 v2, v2, v215377; GFX12-NEXT:    s_mov_b32 s0, 015378; GFX12-NEXT:  .LBB52_1: ; %atomicrmw.start15379; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=115380; GFX12-NEXT:    s_wait_loadcnt 0x015381; GFX12-NEXT:    v_mov_b32_e32 v4, v315382; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15383; GFX12-NEXT:    v_pk_max_num_f16 v3, v4, v415384; GFX12-NEXT:    v_pk_max_num_f16 v3, v3, v215385; GFX12-NEXT:    global_wb scope:SCOPE_SYS15386; GFX12-NEXT:    s_wait_storecnt 0x015387; GFX12-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS15388; GFX12-NEXT:    s_wait_loadcnt 0x015389; GFX12-NEXT:    global_inv scope:SCOPE_SYS15390; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v415391; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15392; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s015393; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15394; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015395; GFX12-NEXT:    s_cbranch_execnz .LBB52_115396; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end15397; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s015398; GFX12-NEXT:    v_mov_b32_e32 v0, v315399; GFX12-NEXT:    s_wait_loadcnt 0x015400; GFX12-NEXT:    s_setpc_b64 s[30:31]15401;15402; GFX942-LABEL: global_system_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15403; GFX942:       ; %bb.0:15404; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15405; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:204415406; GFX942-NEXT:    s_mov_b64 s[0:1], 015407; GFX942-NEXT:    v_pk_max_f16 v4, v2, v215408; GFX942-NEXT:  .LBB52_1: ; %atomicrmw.start15409; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=115410; GFX942-NEXT:    s_waitcnt vmcnt(0)15411; GFX942-NEXT:    v_pk_max_f16 v2, v3, v315412; GFX942-NEXT:    s_nop 015413; GFX942-NEXT:    v_pk_max_f16 v2, v2, v415414; GFX942-NEXT:    buffer_wbl2 sc0 sc115415; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 sc0 sc115416; GFX942-NEXT:    s_waitcnt vmcnt(0)15417; GFX942-NEXT:    buffer_inv sc0 sc115418; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315419; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]15420; GFX942-NEXT:    v_mov_b32_e32 v3, v215421; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]15422; GFX942-NEXT:    s_cbranch_execnz .LBB52_115423; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end15424; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]15425; GFX942-NEXT:    v_mov_b32_e32 v0, v215426; GFX942-NEXT:    s_setpc_b64 s[30:31]15427;15428; GFX11-LABEL: global_system_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15429; GFX11:       ; %bb.0:15430; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15431; GFX11-NEXT:    global_load_b32 v3, v[0:1], off offset:204415432; GFX11-NEXT:    v_pk_max_f16 v2, v2, v215433; GFX11-NEXT:    s_mov_b32 s0, 015434; GFX11-NEXT:  .LBB52_1: ; %atomicrmw.start15435; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=115436; GFX11-NEXT:    s_waitcnt vmcnt(0)15437; GFX11-NEXT:    v_mov_b32_e32 v4, v315438; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15439; GFX11-NEXT:    v_pk_max_f16 v3, v4, v415440; GFX11-NEXT:    v_pk_max_f16 v3, v3, v215441; GFX11-NEXT:    s_waitcnt_vscnt null, 0x015442; GFX11-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[3:4], off offset:2044 glc15443; GFX11-NEXT:    s_waitcnt vmcnt(0)15444; GFX11-NEXT:    buffer_gl1_inv15445; GFX11-NEXT:    buffer_gl0_inv15446; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v415447; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s015448; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15449; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015450; GFX11-NEXT:    s_cbranch_execnz .LBB52_115451; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end15452; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s015453; GFX11-NEXT:    v_mov_b32_e32 v0, v315454; GFX11-NEXT:    s_setpc_b64 s[30:31]15455;15456; GFX10-LABEL: global_system_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15457; GFX10:       ; %bb.0:15458; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15459; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:204415460; GFX10-NEXT:    v_pk_max_f16 v2, v2, v215461; GFX10-NEXT:    s_mov_b32 s4, 015462; GFX10-NEXT:  .LBB52_1: ; %atomicrmw.start15463; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=115464; GFX10-NEXT:    s_waitcnt vmcnt(0)15465; GFX10-NEXT:    v_mov_b32_e32 v4, v315466; GFX10-NEXT:    v_pk_max_f16 v3, v4, v415467; GFX10-NEXT:    v_pk_max_f16 v3, v3, v215468; GFX10-NEXT:    s_waitcnt_vscnt null, 0x015469; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc15470; GFX10-NEXT:    s_waitcnt vmcnt(0)15471; GFX10-NEXT:    buffer_gl1_inv15472; GFX10-NEXT:    buffer_gl0_inv15473; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v415474; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s415475; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s415476; GFX10-NEXT:    s_cbranch_execnz .LBB52_115477; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end15478; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s415479; GFX10-NEXT:    v_mov_b32_e32 v0, v315480; GFX10-NEXT:    s_setpc_b64 s[30:31]15481;15482; GFX90A-LABEL: global_system_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15483; GFX90A:       ; %bb.0:15484; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15485; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:204415486; GFX90A-NEXT:    s_mov_b64 s[4:5], 015487; GFX90A-NEXT:    v_pk_max_f16 v4, v2, v215488; GFX90A-NEXT:  .LBB52_1: ; %atomicrmw.start15489; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=115490; GFX90A-NEXT:    s_waitcnt vmcnt(0)15491; GFX90A-NEXT:    v_pk_max_f16 v2, v3, v315492; GFX90A-NEXT:    v_pk_max_f16 v2, v2, v415493; GFX90A-NEXT:    buffer_wbl215494; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc15495; GFX90A-NEXT:    s_waitcnt vmcnt(0)15496; GFX90A-NEXT:    buffer_invl215497; GFX90A-NEXT:    buffer_wbinvl115498; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315499; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15500; GFX90A-NEXT:    v_mov_b32_e32 v3, v215501; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]15502; GFX90A-NEXT:    s_cbranch_execnz .LBB52_115503; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end15504; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]15505; GFX90A-NEXT:    v_mov_b32_e32 v0, v215506; GFX90A-NEXT:    s_setpc_b64 s[30:31]15507;15508; GFX908-LABEL: global_system_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15509; GFX908:       ; %bb.0:15510; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15511; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:204415512; GFX908-NEXT:    s_mov_b64 s[4:5], 015513; GFX908-NEXT:    v_pk_max_f16 v2, v2, v215514; GFX908-NEXT:  .LBB52_1: ; %atomicrmw.start15515; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=115516; GFX908-NEXT:    s_waitcnt vmcnt(0)15517; GFX908-NEXT:    v_mov_b32_e32 v4, v315518; GFX908-NEXT:    v_pk_max_f16 v3, v4, v415519; GFX908-NEXT:    v_pk_max_f16 v3, v3, v215520; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[3:4], off offset:2044 glc15521; GFX908-NEXT:    s_waitcnt vmcnt(0)15522; GFX908-NEXT:    buffer_wbinvl115523; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v415524; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15525; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]15526; GFX908-NEXT:    s_cbranch_execnz .LBB52_115527; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end15528; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]15529; GFX908-NEXT:    v_mov_b32_e32 v0, v315530; GFX908-NEXT:    s_setpc_b64 s[30:31]15531;15532; GFX8-LABEL: global_system_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15533; GFX8:       ; %bb.0:15534; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15535; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v015536; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc15537; GFX8-NEXT:    flat_load_dword v0, v[3:4]15538; GFX8-NEXT:    s_mov_b64 s[4:5], 015539; GFX8-NEXT:    v_max_f16_sdwa v1, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_115540; GFX8-NEXT:    v_max_f16_e32 v2, v2, v215541; GFX8-NEXT:  .LBB52_1: ; %atomicrmw.start15542; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=115543; GFX8-NEXT:    s_waitcnt vmcnt(0)15544; GFX8-NEXT:    v_mov_b32_e32 v6, v015545; GFX8-NEXT:    v_max_f16_sdwa v0, v6, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_115546; GFX8-NEXT:    v_max_f16_e32 v5, v6, v615547; GFX8-NEXT:    v_max_f16_sdwa v0, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD15548; GFX8-NEXT:    v_max_f16_e32 v5, v5, v215549; GFX8-NEXT:    v_or_b32_e32 v5, v5, v015550; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc15551; GFX8-NEXT:    s_waitcnt vmcnt(0)15552; GFX8-NEXT:    buffer_wbinvl115553; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v615554; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15555; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]15556; GFX8-NEXT:    s_cbranch_execnz .LBB52_115557; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end15558; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]15559; GFX8-NEXT:    s_setpc_b64 s[30:31]15560;15561; GFX7-LABEL: global_system_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15562; GFX7:       ; %bb.0:15563; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15564; GFX7-NEXT:    s_mov_b32 s6, 015565; GFX7-NEXT:    s_mov_b32 s7, 0xf00015566; GFX7-NEXT:    s_mov_b32 s4, s615567; GFX7-NEXT:    s_mov_b32 s5, s615568; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204415569; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v315570; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v215571; GFX7-NEXT:    s_mov_b64 s[8:9], 015572; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v315573; GFX7-NEXT:    s_waitcnt vmcnt(0)15574; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v515575; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v515576; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v315577; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v615578; GFX7-NEXT:  .LBB52_1: ; %atomicrmw.start15579; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=115580; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v315581; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v215582; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v315583; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v215584; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v315585; GFX7-NEXT:    v_max_f32_e32 v6, v6, v415586; GFX7-NEXT:    v_max_f32_e32 v7, v7, v515587; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v615588; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v715589; GFX7-NEXT:    v_or_b32_e32 v7, v2, v315590; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v615591; GFX7-NEXT:    v_or_b32_e32 v6, v8, v215592; GFX7-NEXT:    v_mov_b32_e32 v9, v715593; GFX7-NEXT:    v_mov_b32_e32 v8, v615594; GFX7-NEXT:    buffer_atomic_cmpswap v[8:9], v[0:1], s[4:7], 0 addr64 offset:2044 glc15595; GFX7-NEXT:    s_waitcnt vmcnt(0)15596; GFX7-NEXT:    buffer_wbinvl115597; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v815598; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v815599; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v315600; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v8, v715601; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]15602; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]15603; GFX7-NEXT:    s_cbranch_execnz .LBB52_115604; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end15605; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]15606; GFX7-NEXT:    v_mov_b32_e32 v0, v215607; GFX7-NEXT:    v_mov_b32_e32 v1, v315608; GFX7-NEXT:    s_setpc_b64 s[30:31]15609;15610; GFX6-LABEL: global_system_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15611; GFX6:       ; %bb.0:15612; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15613; GFX6-NEXT:    s_mov_b32 s6, 015614; GFX6-NEXT:    s_mov_b32 s7, 0xf00015615; GFX6-NEXT:    s_mov_b32 s4, s615616; GFX6-NEXT:    s_mov_b32 s5, s615617; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204415618; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v315619; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v215620; GFX6-NEXT:    s_mov_b64 s[8:9], 015621; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v315622; GFX6-NEXT:    s_waitcnt vmcnt(0)15623; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v515624; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v515625; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v315626; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v615627; GFX6-NEXT:  .LBB52_1: ; %atomicrmw.start15628; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=115629; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v315630; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v215631; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v315632; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v215633; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v315634; GFX6-NEXT:    v_max_f32_e32 v6, v6, v415635; GFX6-NEXT:    v_max_f32_e32 v7, v7, v515636; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v615637; GFX6-NEXT:    s_waitcnt expcnt(0)15638; GFX6-NEXT:    v_cvt_f16_f32_e32 v8, v715639; GFX6-NEXT:    v_or_b32_e32 v7, v2, v315640; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v615641; GFX6-NEXT:    v_or_b32_e32 v6, v8, v215642; GFX6-NEXT:    v_mov_b32_e32 v9, v715643; GFX6-NEXT:    v_mov_b32_e32 v8, v615644; GFX6-NEXT:    buffer_atomic_cmpswap v[8:9], v[0:1], s[4:7], 0 addr64 offset:2044 glc15645; GFX6-NEXT:    s_waitcnt vmcnt(0)15646; GFX6-NEXT:    buffer_wbinvl115647; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v815648; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v815649; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v315650; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v8, v715651; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]15652; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]15653; GFX6-NEXT:    s_cbranch_execnz .LBB52_115654; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end15655; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]15656; GFX6-NEXT:    v_mov_b32_e32 v0, v215657; GFX6-NEXT:    v_mov_b32_e32 v1, v315658; GFX6-NEXT:    s_waitcnt expcnt(0)15659; GFX6-NEXT:    s_setpc_b64 s[30:31]15660  %gep = getelementptr <2 x half>, ptr addrspace(1) %ptr, i64 51115661  %result = atomicrmw fmax ptr addrspace(1) %gep, <2 x half> %val seq_cst, !amdgpu.no.fine.grained.memory !015662  ret <2 x half> %result15663}15664 15665define void @global_system_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, <2 x half> %val) #0 {15666; GFX12-LABEL: global_system_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15667; GFX12:       ; %bb.0:15668; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015669; GFX12-NEXT:    s_wait_expcnt 0x015670; GFX12-NEXT:    s_wait_samplecnt 0x015671; GFX12-NEXT:    s_wait_bvhcnt 0x015672; GFX12-NEXT:    s_wait_kmcnt 0x015673; GFX12-NEXT:    global_load_b32 v3, v[0:1], off offset:204415674; GFX12-NEXT:    v_pk_max_num_f16 v4, v2, v215675; GFX12-NEXT:    s_mov_b32 s0, 015676; GFX12-NEXT:  .LBB53_1: ; %atomicrmw.start15677; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=115678; GFX12-NEXT:    s_wait_loadcnt 0x015679; GFX12-NEXT:    v_pk_max_num_f16 v2, v3, v315680; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)15681; GFX12-NEXT:    v_pk_max_num_f16 v2, v2, v415682; GFX12-NEXT:    global_wb scope:SCOPE_SYS15683; GFX12-NEXT:    s_wait_storecnt 0x015684; GFX12-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS15685; GFX12-NEXT:    s_wait_loadcnt 0x015686; GFX12-NEXT:    global_inv scope:SCOPE_SYS15687; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v315688; GFX12-NEXT:    v_mov_b32_e32 v3, v215689; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15690; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s015691; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15692; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015693; GFX12-NEXT:    s_cbranch_execnz .LBB53_115694; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end15695; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s015696; GFX12-NEXT:    s_wait_loadcnt 0x015697; GFX12-NEXT:    s_setpc_b64 s[30:31]15698;15699; GFX942-LABEL: global_system_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15700; GFX942:       ; %bb.0:15701; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15702; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:204415703; GFX942-NEXT:    s_mov_b64 s[0:1], 015704; GFX942-NEXT:    v_pk_max_f16 v4, v2, v215705; GFX942-NEXT:  .LBB53_1: ; %atomicrmw.start15706; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=115707; GFX942-NEXT:    s_waitcnt vmcnt(0)15708; GFX942-NEXT:    v_pk_max_f16 v2, v3, v315709; GFX942-NEXT:    s_nop 015710; GFX942-NEXT:    v_pk_max_f16 v2, v2, v415711; GFX942-NEXT:    buffer_wbl2 sc0 sc115712; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 sc0 sc115713; GFX942-NEXT:    s_waitcnt vmcnt(0)15714; GFX942-NEXT:    buffer_inv sc0 sc115715; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315716; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]15717; GFX942-NEXT:    v_mov_b32_e32 v3, v215718; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]15719; GFX942-NEXT:    s_cbranch_execnz .LBB53_115720; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end15721; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]15722; GFX942-NEXT:    s_setpc_b64 s[30:31]15723;15724; GFX11-LABEL: global_system_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15725; GFX11:       ; %bb.0:15726; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15727; GFX11-NEXT:    global_load_b32 v3, v[0:1], off offset:204415728; GFX11-NEXT:    v_pk_max_f16 v4, v2, v215729; GFX11-NEXT:    s_mov_b32 s0, 015730; GFX11-NEXT:  .LBB53_1: ; %atomicrmw.start15731; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=115732; GFX11-NEXT:    s_waitcnt vmcnt(0)15733; GFX11-NEXT:    v_pk_max_f16 v2, v3, v315734; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)15735; GFX11-NEXT:    v_pk_max_f16 v2, v2, v415736; GFX11-NEXT:    s_waitcnt_vscnt null, 0x015737; GFX11-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2044 glc15738; GFX11-NEXT:    s_waitcnt vmcnt(0)15739; GFX11-NEXT:    buffer_gl1_inv15740; GFX11-NEXT:    buffer_gl0_inv15741; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v315742; GFX11-NEXT:    v_mov_b32_e32 v3, v215743; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s015744; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15745; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015746; GFX11-NEXT:    s_cbranch_execnz .LBB53_115747; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end15748; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s015749; GFX11-NEXT:    s_setpc_b64 s[30:31]15750;15751; GFX10-LABEL: global_system_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15752; GFX10:       ; %bb.0:15753; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15754; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:204415755; GFX10-NEXT:    v_pk_max_f16 v4, v2, v215756; GFX10-NEXT:    s_mov_b32 s4, 015757; GFX10-NEXT:  .LBB53_1: ; %atomicrmw.start15758; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=115759; GFX10-NEXT:    s_waitcnt vmcnt(0)15760; GFX10-NEXT:    v_pk_max_f16 v2, v3, v315761; GFX10-NEXT:    v_pk_max_f16 v2, v2, v415762; GFX10-NEXT:    s_waitcnt_vscnt null, 0x015763; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc15764; GFX10-NEXT:    s_waitcnt vmcnt(0)15765; GFX10-NEXT:    buffer_gl1_inv15766; GFX10-NEXT:    buffer_gl0_inv15767; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v315768; GFX10-NEXT:    v_mov_b32_e32 v3, v215769; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s415770; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s415771; GFX10-NEXT:    s_cbranch_execnz .LBB53_115772; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end15773; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s415774; GFX10-NEXT:    s_setpc_b64 s[30:31]15775;15776; GFX90A-LABEL: global_system_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15777; GFX90A:       ; %bb.0:15778; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15779; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:204415780; GFX90A-NEXT:    s_mov_b64 s[4:5], 015781; GFX90A-NEXT:    v_pk_max_f16 v4, v2, v215782; GFX90A-NEXT:  .LBB53_1: ; %atomicrmw.start15783; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=115784; GFX90A-NEXT:    s_waitcnt vmcnt(0)15785; GFX90A-NEXT:    v_pk_max_f16 v2, v3, v315786; GFX90A-NEXT:    v_pk_max_f16 v2, v2, v415787; GFX90A-NEXT:    buffer_wbl215788; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc15789; GFX90A-NEXT:    s_waitcnt vmcnt(0)15790; GFX90A-NEXT:    buffer_invl215791; GFX90A-NEXT:    buffer_wbinvl115792; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315793; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15794; GFX90A-NEXT:    v_mov_b32_e32 v3, v215795; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]15796; GFX90A-NEXT:    s_cbranch_execnz .LBB53_115797; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end15798; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]15799; GFX90A-NEXT:    s_setpc_b64 s[30:31]15800;15801; GFX908-LABEL: global_system_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15802; GFX908:       ; %bb.0:15803; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15804; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:204415805; GFX908-NEXT:    s_mov_b64 s[4:5], 015806; GFX908-NEXT:    v_pk_max_f16 v4, v2, v215807; GFX908-NEXT:  .LBB53_1: ; %atomicrmw.start15808; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=115809; GFX908-NEXT:    s_waitcnt vmcnt(0)15810; GFX908-NEXT:    v_pk_max_f16 v2, v3, v315811; GFX908-NEXT:    v_pk_max_f16 v2, v2, v415812; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc15813; GFX908-NEXT:    s_waitcnt vmcnt(0)15814; GFX908-NEXT:    buffer_wbinvl115815; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315816; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15817; GFX908-NEXT:    v_mov_b32_e32 v3, v215818; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]15819; GFX908-NEXT:    s_cbranch_execnz .LBB53_115820; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end15821; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]15822; GFX908-NEXT:    s_setpc_b64 s[30:31]15823;15824; GFX8-LABEL: global_system_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15825; GFX8:       ; %bb.0:15826; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15827; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v015828; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc15829; GFX8-NEXT:    flat_load_dword v3, v[0:1]15830; GFX8-NEXT:    s_mov_b64 s[4:5], 015831; GFX8-NEXT:    v_max_f16_sdwa v4, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_115832; GFX8-NEXT:    v_max_f16_e32 v5, v2, v215833; GFX8-NEXT:  .LBB53_1: ; %atomicrmw.start15834; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=115835; GFX8-NEXT:    s_waitcnt vmcnt(0)15836; GFX8-NEXT:    v_max_f16_sdwa v2, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_115837; GFX8-NEXT:    v_max_f16_e32 v6, v3, v315838; GFX8-NEXT:    v_max_f16_sdwa v2, v2, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD15839; GFX8-NEXT:    v_max_f16_e32 v6, v6, v515840; GFX8-NEXT:    v_or_b32_e32 v2, v6, v215841; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc15842; GFX8-NEXT:    s_waitcnt vmcnt(0)15843; GFX8-NEXT:    buffer_wbinvl115844; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315845; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15846; GFX8-NEXT:    v_mov_b32_e32 v3, v215847; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]15848; GFX8-NEXT:    s_cbranch_execnz .LBB53_115849; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end15850; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]15851; GFX8-NEXT:    s_setpc_b64 s[30:31]15852;15853; GFX7-LABEL: global_system_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15854; GFX7:       ; %bb.0:15855; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15856; GFX7-NEXT:    s_mov_b32 s6, 015857; GFX7-NEXT:    s_mov_b32 s7, 0xf00015858; GFX7-NEXT:    s_mov_b32 s4, s615859; GFX7-NEXT:    s_mov_b32 s5, s615860; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204415861; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v315862; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v215863; GFX7-NEXT:    s_mov_b64 s[8:9], 015864; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v315865; GFX7-NEXT:    s_waitcnt vmcnt(0)15866; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v515867; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v515868; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v315869; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v615870; GFX7-NEXT:  .LBB53_1: ; %atomicrmw.start15871; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=115872; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v515873; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v415874; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v515875; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v415876; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v515877; GFX7-NEXT:    v_max_f32_e32 v6, v6, v215878; GFX7-NEXT:    v_max_f32_e32 v7, v7, v315879; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v615880; GFX7-NEXT:    v_cvt_f16_f32_e32 v7, v715881; GFX7-NEXT:    v_or_b32_e32 v6, v4, v515882; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v815883; GFX7-NEXT:    v_or_b32_e32 v5, v7, v415884; GFX7-NEXT:    v_mov_b32_e32 v8, v615885; GFX7-NEXT:    v_mov_b32_e32 v7, v515886; GFX7-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 offset:2044 glc15887; GFX7-NEXT:    s_waitcnt vmcnt(0)15888; GFX7-NEXT:    buffer_wbinvl115889; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v715890; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v715891; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v515892; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v615893; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]15894; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]15895; GFX7-NEXT:    s_cbranch_execnz .LBB53_115896; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end15897; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]15898; GFX7-NEXT:    s_setpc_b64 s[30:31]15899;15900; GFX6-LABEL: global_system_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15901; GFX6:       ; %bb.0:15902; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15903; GFX6-NEXT:    s_mov_b32 s6, 015904; GFX6-NEXT:    s_mov_b32 s7, 0xf00015905; GFX6-NEXT:    s_mov_b32 s4, s615906; GFX6-NEXT:    s_mov_b32 s5, s615907; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204415908; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v315909; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v215910; GFX6-NEXT:    s_mov_b64 s[8:9], 015911; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v315912; GFX6-NEXT:    s_waitcnt vmcnt(0)15913; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v515914; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v515915; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v315916; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v615917; GFX6-NEXT:  .LBB53_1: ; %atomicrmw.start15918; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=115919; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v515920; GFX6-NEXT:    v_cvt_f16_f32_e32 v4, v415921; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v515922; GFX6-NEXT:    s_waitcnt expcnt(0)15923; GFX6-NEXT:    v_cvt_f32_f16_e32 v7, v415924; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 16, v515925; GFX6-NEXT:    v_max_f32_e32 v6, v6, v215926; GFX6-NEXT:    v_max_f32_e32 v7, v7, v315927; GFX6-NEXT:    v_cvt_f16_f32_e32 v8, v615928; GFX6-NEXT:    v_cvt_f16_f32_e32 v7, v715929; GFX6-NEXT:    v_or_b32_e32 v6, v4, v515930; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v815931; GFX6-NEXT:    v_or_b32_e32 v5, v7, v415932; GFX6-NEXT:    v_mov_b32_e32 v8, v615933; GFX6-NEXT:    v_mov_b32_e32 v7, v515934; GFX6-NEXT:    buffer_atomic_cmpswap v[7:8], v[0:1], s[4:7], 0 addr64 offset:2044 glc15935; GFX6-NEXT:    s_waitcnt vmcnt(0)15936; GFX6-NEXT:    buffer_wbinvl115937; GFX6-NEXT:    v_lshrrev_b32_e32 v5, 16, v715938; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v715939; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v515940; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v615941; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]15942; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]15943; GFX6-NEXT:    s_cbranch_execnz .LBB53_115944; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end15945; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]15946; GFX6-NEXT:    s_waitcnt expcnt(0)15947; GFX6-NEXT:    s_setpc_b64 s[30:31]15948  %gep = getelementptr <2 x half>, ptr addrspace(1) %ptr, i64 51115949  %unused = atomicrmw fmax ptr addrspace(1) %gep, <2 x half> %val seq_cst, !amdgpu.no.fine.grained.memory !015950  ret void15951}15952 15953; --------------------------------------------------------------------15954; <2 x bfloat>15955; --------------------------------------------------------------------15956 15957define <2 x bfloat> @global_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, <2 x bfloat> %val) #0 {15958; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory:15959; GFX12-TRUE16:       ; %bb.0:15960; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x015961; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x015962; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x015963; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x015964; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x015965; GFX12-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off15966; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v215967; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v215968; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 015969; GFX12-TRUE16-NEXT:  .LBB54_1: ; %atomicrmw.start15970; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=115971; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x015972; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v315973; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15974; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v615975; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v5, v5, v415976; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v615977; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)15978; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 115979; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v3, v3, v215980; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v515981; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)15982; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff15983; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 115984; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v315985; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v315986; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)15987; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff15988; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)15989; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo15990; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v515991; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)15992; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo15993; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)15994; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h15995; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x015996; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV15997; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x015998; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV15999; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616000; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16001; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s016002; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16003; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s016004; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB54_116005; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end16006; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s016007; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v316008; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x016009; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]16010;16011; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory:16012; GFX12-FAKE16:       ; %bb.0:16013; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x016014; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x016015; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x016016; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x016017; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x016018; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off16019; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v216020; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216021; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 016022; GFX12-FAKE16-NEXT:  .LBB54_1: ; %atomicrmw.start16023; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=116024; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x016025; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v316026; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16027; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616028; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v5, v5, v216029; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616030; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16031; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 116032; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v3, v3, v416033; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516034; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516035; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16036; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16037; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 116038; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316039; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v316040; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)16041; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16042; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16043; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)16044; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16045; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s016046; GFX12-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030216047; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x016048; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV16049; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x016050; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV16051; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616052; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16053; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s116054; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16055; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s116056; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB54_116057; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end16058; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s116059; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v316060; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x016061; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]16062;16063; GFX942-LABEL: global_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory:16064; GFX942:       ; %bb.0:16065; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16066; GFX942-NEXT:    global_load_dword v3, v[0:1], off16067; GFX942-NEXT:    s_mov_b64 s[2:3], 016068; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v216069; GFX942-NEXT:    s_movk_i32 s4, 0x7fff16070; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v216071; GFX942-NEXT:    s_mov_b32 s5, 0x706030216072; GFX942-NEXT:  .LBB54_1: ; %atomicrmw.start16073; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=116074; GFX942-NEXT:    s_waitcnt vmcnt(0)16075; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v316076; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v316077; GFX942-NEXT:    v_max_f32_e32 v2, v2, v416078; GFX942-NEXT:    v_max_f32_e32 v6, v6, v516079; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 116080; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 116081; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v216082; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v616083; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s416084; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s416085; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v616086; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v216087; GFX942-NEXT:    s_nop 016088; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc16089; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]16090; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s516091; GFX942-NEXT:    buffer_wbl2 sc116092; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc016093; GFX942-NEXT:    s_waitcnt vmcnt(0)16094; GFX942-NEXT:    buffer_inv sc116095; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v316096; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]16097; GFX942-NEXT:    v_mov_b32_e32 v3, v216098; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]16099; GFX942-NEXT:    s_cbranch_execnz .LBB54_116100; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end16101; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]16102; GFX942-NEXT:    v_mov_b32_e32 v0, v216103; GFX942-NEXT:    s_setpc_b64 s[30:31]16104;16105; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory:16106; GFX11-TRUE16:       ; %bb.0:16107; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16108; GFX11-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off16109; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v216110; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v216111; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 016112; GFX11-TRUE16-NEXT:    .p2align 616113; GFX11-TRUE16-NEXT:  .LBB54_1: ; %atomicrmw.start16114; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=116115; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)16116; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v316117; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16118; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616119; GFX11-TRUE16-NEXT:    v_max_f32_e32 v5, v5, v416120; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616121; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16122; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 116123; GFX11-TRUE16-NEXT:    v_max_f32_e32 v3, v3, v216124; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516125; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)16126; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16127; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 116128; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316129; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v316130; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)16131; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16132; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo16133; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516134; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16135; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)16136; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h16137; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x016138; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off glc16139; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)16140; GFX11-TRUE16-NEXT:    buffer_gl1_inv16141; GFX11-TRUE16-NEXT:    buffer_gl0_inv16142; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616143; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s016144; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)16145; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s016146; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB54_116147; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end16148; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s016149; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, v316150; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]16151;16152; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory:16153; GFX11-FAKE16:       ; %bb.0:16154; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16155; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off16156; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v216157; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216158; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 016159; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x116160; GFX11-FAKE16-NEXT:    .p2align 616161; GFX11-FAKE16-NEXT:  .LBB54_1: ; %atomicrmw.start16162; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=116163; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)16164; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v316165; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16166; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616167; GFX11-FAKE16-NEXT:    v_max_f32_e32 v5, v5, v216168; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616169; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16170; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 116171; GFX11-FAKE16-NEXT:    v_max_f32_e32 v3, v3, v416172; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516173; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516174; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16175; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16176; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 116177; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316178; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v316179; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16180; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16181; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16182; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16183; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s016184; GFX11-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030216185; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x016186; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off glc16187; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)16188; GFX11-FAKE16-NEXT:    buffer_gl1_inv16189; GFX11-FAKE16-NEXT:    buffer_gl0_inv16190; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616191; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s116192; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)16193; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s116194; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB54_116195; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end16196; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x216197; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s116198; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v316199; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]16200;16201; GFX10-LABEL: global_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory:16202; GFX10:       ; %bb.0:16203; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16204; GFX10-NEXT:    global_load_dword v3, v[0:1], off16205; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v216206; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216207; GFX10-NEXT:    s_mov_b32 s5, 016208; GFX10-NEXT:  .LBB54_1: ; %atomicrmw.start16209; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=116210; GFX10-NEXT:    s_waitcnt vmcnt(0)16211; GFX10-NEXT:    v_mov_b32_e32 v6, v316212; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 16, v616213; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616214; GFX10-NEXT:    v_max_f32_e32 v3, v3, v416215; GFX10-NEXT:    v_max_f32_e32 v5, v5, v216216; GFX10-NEXT:    v_bfe_u32 v7, v3, 16, 116217; GFX10-NEXT:    v_bfe_u32 v8, v5, 16, 116218; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v316219; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v516220; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516221; GFX10-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16222; GFX10-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16223; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v3, v316224; GFX10-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16225; GFX10-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s416226; GFX10-NEXT:    v_perm_b32 v5, v5, v3, 0x706030216227; GFX10-NEXT:    s_waitcnt_vscnt null, 0x016228; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[5:6], off glc16229; GFX10-NEXT:    s_waitcnt vmcnt(0)16230; GFX10-NEXT:    buffer_gl1_inv16231; GFX10-NEXT:    buffer_gl0_inv16232; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616233; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s516234; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s516235; GFX10-NEXT:    s_cbranch_execnz .LBB54_116236; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end16237; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s516238; GFX10-NEXT:    v_mov_b32_e32 v0, v316239; GFX10-NEXT:    s_setpc_b64 s[30:31]16240;16241; GFX90A-LABEL: global_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory:16242; GFX90A:       ; %bb.0:16243; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16244; GFX90A-NEXT:    global_load_dword v3, v[0:1], off16245; GFX90A-NEXT:    s_mov_b64 s[6:7], 016246; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v216247; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff16248; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v216249; GFX90A-NEXT:    s_mov_b32 s9, 0x706030216250; GFX90A-NEXT:  .LBB54_1: ; %atomicrmw.start16251; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=116252; GFX90A-NEXT:    s_waitcnt vmcnt(0)16253; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v316254; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v316255; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v416256; GFX90A-NEXT:    v_max_f32_e32 v6, v6, v516257; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 116258; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 116259; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v216260; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v616261; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s816262; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s816263; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v616264; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v216265; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]16266; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc16267; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s916268; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc16269; GFX90A-NEXT:    s_waitcnt vmcnt(0)16270; GFX90A-NEXT:    buffer_wbinvl116271; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v316272; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]16273; GFX90A-NEXT:    v_mov_b32_e32 v3, v216274; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]16275; GFX90A-NEXT:    s_cbranch_execnz .LBB54_116276; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end16277; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]16278; GFX90A-NEXT:    v_mov_b32_e32 v0, v216279; GFX90A-NEXT:    s_setpc_b64 s[30:31]16280;16281; GFX908-LABEL: global_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory:16282; GFX908:       ; %bb.0:16283; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16284; GFX908-NEXT:    global_load_dword v3, v[0:1], off16285; GFX908-NEXT:    s_mov_b64 s[6:7], 016286; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v216287; GFX908-NEXT:    s_movk_i32 s8, 0x7fff16288; GFX908-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216289; GFX908-NEXT:    s_mov_b32 s9, 0x706030216290; GFX908-NEXT:  .LBB54_1: ; %atomicrmw.start16291; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=116292; GFX908-NEXT:    s_waitcnt vmcnt(0)16293; GFX908-NEXT:    v_mov_b32_e32 v6, v316294; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v616295; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616296; GFX908-NEXT:    v_max_f32_e32 v3, v3, v416297; GFX908-NEXT:    v_max_f32_e32 v5, v5, v216298; GFX908-NEXT:    v_bfe_u32 v7, v3, 16, 116299; GFX908-NEXT:    v_bfe_u32 v9, v5, 16, 116300; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v316301; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v516302; GFX908-NEXT:    v_add3_u32 v7, v7, v3, s816303; GFX908-NEXT:    v_add3_u32 v9, v9, v5, s816304; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v516305; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v3, v316306; GFX908-NEXT:    v_cndmask_b32_e64 v3, v7, v8, s[4:5]16307; GFX908-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc16308; GFX908-NEXT:    v_perm_b32 v5, v5, v3, s916309; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[5:6], off glc16310; GFX908-NEXT:    s_waitcnt vmcnt(0)16311; GFX908-NEXT:    buffer_wbinvl116312; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v616313; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]16314; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]16315; GFX908-NEXT:    s_cbranch_execnz .LBB54_116316; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end16317; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]16318; GFX908-NEXT:    v_mov_b32_e32 v0, v316319; GFX908-NEXT:    s_setpc_b64 s[30:31]16320;16321; GFX8-LABEL: global_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory:16322; GFX8:       ; %bb.0:16323; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16324; GFX8-NEXT:    flat_load_dword v3, v[0:1]16325; GFX8-NEXT:    s_mov_b64 s[6:7], 016326; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v216327; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216328; GFX8-NEXT:  .LBB54_1: ; %atomicrmw.start16329; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=116330; GFX8-NEXT:    s_waitcnt vmcnt(0)16331; GFX8-NEXT:    v_mov_b32_e32 v6, v316332; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 16, v616333; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616334; GFX8-NEXT:    v_max_f32_e32 v3, v3, v416335; GFX8-NEXT:    v_max_f32_e32 v5, v5, v216336; GFX8-NEXT:    v_bfe_u32 v7, v3, 16, 116337; GFX8-NEXT:    v_bfe_u32 v9, v5, 16, 116338; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v316339; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v516340; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v716341; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v916342; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v516343; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v516344; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v316345; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v3, v316346; GFX8-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc16347; GFX8-NEXT:    v_cndmask_b32_e64 v3, v7, v8, s[4:5]16348; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v516349; GFX8-NEXT:    v_alignbit_b32 v5, v5, v3, 1616350; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[5:6] glc16351; GFX8-NEXT:    s_waitcnt vmcnt(0)16352; GFX8-NEXT:    buffer_wbinvl116353; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v616354; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]16355; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]16356; GFX8-NEXT:    s_cbranch_execnz .LBB54_116357; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end16358; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]16359; GFX8-NEXT:    v_mov_b32_e32 v0, v316360; GFX8-NEXT:    s_setpc_b64 s[30:31]16361;16362; GFX7-LABEL: global_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory:16363; GFX7:       ; %bb.0:16364; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16365; GFX7-NEXT:    s_mov_b32 s6, 016366; GFX7-NEXT:    s_mov_b32 s7, 0xf00016367; GFX7-NEXT:    s_mov_b32 s4, s616368; GFX7-NEXT:    s_mov_b32 s5, s616369; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr6416370; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v316371; GFX7-NEXT:    v_mul_f32_e32 v6, 1.0, v216372; GFX7-NEXT:    s_mov_b64 s[8:9], 016373; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v316374; GFX7-NEXT:    s_waitcnt vmcnt(0)16375; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v516376; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v516377; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616378; GFX7-NEXT:  .LBB54_1: ; %atomicrmw.start16379; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=116380; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v216381; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v316382; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v216383; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v316384; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v216385; GFX7-NEXT:    v_max_f32_e32 v6, v6, v416386; GFX7-NEXT:    v_max_f32_e32 v7, v7, v516387; GFX7-NEXT:    v_alignbit_b32 v3, v2, v3, 1616388; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v616389; GFX7-NEXT:    v_alignbit_b32 v2, v2, v7, 1616390; GFX7-NEXT:    v_mov_b32_e32 v7, v316391; GFX7-NEXT:    v_mov_b32_e32 v6, v216392; GFX7-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 glc16393; GFX7-NEXT:    s_waitcnt vmcnt(0)16394; GFX7-NEXT:    buffer_wbinvl116395; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v316396; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v616397; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]16398; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v616399; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]16400; GFX7-NEXT:    s_cbranch_execnz .LBB54_116401; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end16402; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]16403; GFX7-NEXT:    v_mov_b32_e32 v0, v316404; GFX7-NEXT:    v_mov_b32_e32 v1, v216405; GFX7-NEXT:    s_setpc_b64 s[30:31]16406;16407; GFX6-LABEL: global_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory:16408; GFX6:       ; %bb.0:16409; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16410; GFX6-NEXT:    s_mov_b32 s6, 016411; GFX6-NEXT:    s_mov_b32 s7, 0xf00016412; GFX6-NEXT:    s_mov_b32 s4, s616413; GFX6-NEXT:    s_mov_b32 s5, s616414; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr6416415; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v316416; GFX6-NEXT:    v_mul_f32_e32 v6, 1.0, v216417; GFX6-NEXT:    s_mov_b64 s[8:9], 016418; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v316419; GFX6-NEXT:    s_waitcnt vmcnt(0)16420; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v516421; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v516422; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616423; GFX6-NEXT:  .LBB54_1: ; %atomicrmw.start16424; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=116425; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v216426; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v316427; GFX6-NEXT:    s_waitcnt expcnt(0)16428; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v216429; GFX6-NEXT:    v_and_b32_e32 v7, 0xffff0000, v316430; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v216431; GFX6-NEXT:    v_max_f32_e32 v6, v6, v416432; GFX6-NEXT:    v_max_f32_e32 v7, v7, v516433; GFX6-NEXT:    v_alignbit_b32 v3, v2, v3, 1616434; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v616435; GFX6-NEXT:    v_alignbit_b32 v2, v2, v7, 1616436; GFX6-NEXT:    v_mov_b32_e32 v7, v316437; GFX6-NEXT:    v_mov_b32_e32 v6, v216438; GFX6-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 glc16439; GFX6-NEXT:    s_waitcnt vmcnt(0)16440; GFX6-NEXT:    buffer_wbinvl116441; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v316442; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v616443; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]16444; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v616445; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]16446; GFX6-NEXT:    s_cbranch_execnz .LBB54_116447; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end16448; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]16449; GFX6-NEXT:    v_mov_b32_e32 v0, v316450; GFX6-NEXT:    v_mov_b32_e32 v1, v216451; GFX6-NEXT:    s_waitcnt expcnt(0)16452; GFX6-NEXT:    s_setpc_b64 s[30:31]16453  %result = atomicrmw fmax ptr addrspace(1) %ptr, <2 x bfloat> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !016454  ret <2 x bfloat> %result16455}16456 16457define <2 x bfloat> @global_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, <2 x bfloat> %val) #0 {16458; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:16459; GFX12-TRUE16:       ; %bb.0:16460; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x016461; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x016462; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x016463; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x016464; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x016465; GFX12-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204416466; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v216467; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v216468; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 016469; GFX12-TRUE16-NEXT:  .LBB55_1: ; %atomicrmw.start16470; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=116471; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x016472; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v316473; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16474; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616475; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v5, v5, v416476; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616477; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16478; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 116479; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v3, v3, v216480; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516481; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)16482; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16483; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 116484; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316485; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v316486; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)16487; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16488; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)16489; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo16490; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516491; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)16492; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16493; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)16494; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h16495; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x016496; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV16497; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x016498; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV16499; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616500; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16501; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s016502; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16503; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s016504; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB55_116505; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end16506; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s016507; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v316508; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x016509; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]16510;16511; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:16512; GFX12-FAKE16:       ; %bb.0:16513; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x016514; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x016515; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x016516; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x016517; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x016518; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204416519; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v216520; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216521; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 016522; GFX12-FAKE16-NEXT:  .LBB55_1: ; %atomicrmw.start16523; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=116524; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x016525; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v316526; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16527; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616528; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v5, v5, v216529; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616530; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16531; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 116532; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v3, v3, v416533; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516534; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516535; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16536; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16537; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 116538; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316539; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v316540; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)16541; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16542; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16543; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)16544; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16545; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s016546; GFX12-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030216547; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x016548; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV16549; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x016550; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV16551; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616552; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16553; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s116554; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16555; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s116556; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB55_116557; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end16558; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s116559; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v316560; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x016561; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]16562;16563; GFX942-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:16564; GFX942:       ; %bb.0:16565; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16566; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:204416567; GFX942-NEXT:    s_mov_b64 s[2:3], 016568; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v216569; GFX942-NEXT:    s_movk_i32 s4, 0x7fff16570; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v216571; GFX942-NEXT:    s_mov_b32 s5, 0x706030216572; GFX942-NEXT:  .LBB55_1: ; %atomicrmw.start16573; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=116574; GFX942-NEXT:    s_waitcnt vmcnt(0)16575; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v316576; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v316577; GFX942-NEXT:    v_max_f32_e32 v2, v2, v416578; GFX942-NEXT:    v_max_f32_e32 v6, v6, v516579; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 116580; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 116581; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v216582; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v616583; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s416584; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s416585; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v616586; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v216587; GFX942-NEXT:    s_nop 016588; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc16589; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]16590; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s516591; GFX942-NEXT:    buffer_wbl2 sc116592; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 sc016593; GFX942-NEXT:    s_waitcnt vmcnt(0)16594; GFX942-NEXT:    buffer_inv sc116595; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v316596; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]16597; GFX942-NEXT:    v_mov_b32_e32 v3, v216598; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]16599; GFX942-NEXT:    s_cbranch_execnz .LBB55_116600; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end16601; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]16602; GFX942-NEXT:    v_mov_b32_e32 v0, v216603; GFX942-NEXT:    s_setpc_b64 s[30:31]16604;16605; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:16606; GFX11-TRUE16:       ; %bb.0:16607; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16608; GFX11-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204416609; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v216610; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v216611; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 016612; GFX11-TRUE16-NEXT:    .p2align 616613; GFX11-TRUE16-NEXT:  .LBB55_1: ; %atomicrmw.start16614; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=116615; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)16616; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v316617; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16618; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616619; GFX11-TRUE16-NEXT:    v_max_f32_e32 v5, v5, v416620; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616621; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16622; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 116623; GFX11-TRUE16-NEXT:    v_max_f32_e32 v3, v3, v216624; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516625; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)16626; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16627; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 116628; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316629; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v316630; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)16631; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16632; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo16633; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516634; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16635; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)16636; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h16637; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x016638; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:2044 glc16639; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)16640; GFX11-TRUE16-NEXT:    buffer_gl1_inv16641; GFX11-TRUE16-NEXT:    buffer_gl0_inv16642; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616643; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s016644; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)16645; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s016646; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB55_116647; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end16648; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s016649; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, v316650; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]16651;16652; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:16653; GFX11-FAKE16:       ; %bb.0:16654; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16655; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204416656; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v216657; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216658; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 016659; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x116660; GFX11-FAKE16-NEXT:    .p2align 616661; GFX11-FAKE16-NEXT:  .LBB55_1: ; %atomicrmw.start16662; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=116663; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)16664; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v316665; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16666; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616667; GFX11-FAKE16-NEXT:    v_max_f32_e32 v5, v5, v216668; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616669; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16670; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 116671; GFX11-FAKE16-NEXT:    v_max_f32_e32 v3, v3, v416672; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516673; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516674; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16675; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16676; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 116677; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316678; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v316679; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16680; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16681; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16682; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16683; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s016684; GFX11-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030216685; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x016686; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:2044 glc16687; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)16688; GFX11-FAKE16-NEXT:    buffer_gl1_inv16689; GFX11-FAKE16-NEXT:    buffer_gl0_inv16690; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616691; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s116692; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)16693; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s116694; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB55_116695; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end16696; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x216697; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s116698; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v316699; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]16700;16701; GFX10-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:16702; GFX10:       ; %bb.0:16703; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16704; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:204416705; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v216706; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216707; GFX10-NEXT:    s_mov_b32 s5, 016708; GFX10-NEXT:  .LBB55_1: ; %atomicrmw.start16709; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=116710; GFX10-NEXT:    s_waitcnt vmcnt(0)16711; GFX10-NEXT:    v_mov_b32_e32 v6, v316712; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 16, v616713; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616714; GFX10-NEXT:    v_max_f32_e32 v3, v3, v416715; GFX10-NEXT:    v_max_f32_e32 v5, v5, v216716; GFX10-NEXT:    v_bfe_u32 v7, v3, 16, 116717; GFX10-NEXT:    v_bfe_u32 v8, v5, 16, 116718; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v316719; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v516720; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516721; GFX10-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16722; GFX10-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16723; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v3, v316724; GFX10-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16725; GFX10-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s416726; GFX10-NEXT:    v_perm_b32 v5, v5, v3, 0x706030216727; GFX10-NEXT:    s_waitcnt_vscnt null, 0x016728; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[5:6], off offset:2044 glc16729; GFX10-NEXT:    s_waitcnt vmcnt(0)16730; GFX10-NEXT:    buffer_gl1_inv16731; GFX10-NEXT:    buffer_gl0_inv16732; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616733; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s516734; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s516735; GFX10-NEXT:    s_cbranch_execnz .LBB55_116736; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end16737; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s516738; GFX10-NEXT:    v_mov_b32_e32 v0, v316739; GFX10-NEXT:    s_setpc_b64 s[30:31]16740;16741; GFX90A-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:16742; GFX90A:       ; %bb.0:16743; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16744; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:204416745; GFX90A-NEXT:    s_mov_b64 s[6:7], 016746; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v216747; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff16748; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v216749; GFX90A-NEXT:    s_mov_b32 s9, 0x706030216750; GFX90A-NEXT:  .LBB55_1: ; %atomicrmw.start16751; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=116752; GFX90A-NEXT:    s_waitcnt vmcnt(0)16753; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v316754; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v316755; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v416756; GFX90A-NEXT:    v_max_f32_e32 v6, v6, v516757; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 116758; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 116759; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v216760; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v616761; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s816762; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s816763; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v616764; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v216765; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]16766; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc16767; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s916768; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc16769; GFX90A-NEXT:    s_waitcnt vmcnt(0)16770; GFX90A-NEXT:    buffer_wbinvl116771; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v316772; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]16773; GFX90A-NEXT:    v_mov_b32_e32 v3, v216774; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]16775; GFX90A-NEXT:    s_cbranch_execnz .LBB55_116776; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end16777; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]16778; GFX90A-NEXT:    v_mov_b32_e32 v0, v216779; GFX90A-NEXT:    s_setpc_b64 s[30:31]16780;16781; GFX908-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:16782; GFX908:       ; %bb.0:16783; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16784; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:204416785; GFX908-NEXT:    s_mov_b64 s[6:7], 016786; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v216787; GFX908-NEXT:    s_movk_i32 s8, 0x7fff16788; GFX908-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216789; GFX908-NEXT:    s_mov_b32 s9, 0x706030216790; GFX908-NEXT:  .LBB55_1: ; %atomicrmw.start16791; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=116792; GFX908-NEXT:    s_waitcnt vmcnt(0)16793; GFX908-NEXT:    v_mov_b32_e32 v6, v316794; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v616795; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616796; GFX908-NEXT:    v_max_f32_e32 v3, v3, v416797; GFX908-NEXT:    v_max_f32_e32 v5, v5, v216798; GFX908-NEXT:    v_bfe_u32 v7, v3, 16, 116799; GFX908-NEXT:    v_bfe_u32 v9, v5, 16, 116800; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v316801; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v516802; GFX908-NEXT:    v_add3_u32 v7, v7, v3, s816803; GFX908-NEXT:    v_add3_u32 v9, v9, v5, s816804; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v516805; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v3, v316806; GFX908-NEXT:    v_cndmask_b32_e64 v3, v7, v8, s[4:5]16807; GFX908-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc16808; GFX908-NEXT:    v_perm_b32 v5, v5, v3, s916809; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[5:6], off offset:2044 glc16810; GFX908-NEXT:    s_waitcnt vmcnt(0)16811; GFX908-NEXT:    buffer_wbinvl116812; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v616813; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]16814; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]16815; GFX908-NEXT:    s_cbranch_execnz .LBB55_116816; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end16817; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]16818; GFX908-NEXT:    v_mov_b32_e32 v0, v316819; GFX908-NEXT:    s_setpc_b64 s[30:31]16820;16821; GFX8-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:16822; GFX8:       ; %bb.0:16823; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16824; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v016825; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc16826; GFX8-NEXT:    flat_load_dword v0, v[3:4]16827; GFX8-NEXT:    s_mov_b64 s[6:7], 016828; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 16, v216829; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216830; GFX8-NEXT:  .LBB55_1: ; %atomicrmw.start16831; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=116832; GFX8-NEXT:    s_waitcnt vmcnt(0)16833; GFX8-NEXT:    v_mov_b32_e32 v6, v016834; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 16, v616835; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616836; GFX8-NEXT:    v_max_f32_e32 v0, v0, v116837; GFX8-NEXT:    v_max_f32_e32 v5, v5, v216838; GFX8-NEXT:    v_bfe_u32 v7, v0, 16, 116839; GFX8-NEXT:    v_bfe_u32 v9, v5, 16, 116840; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v016841; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v516842; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v716843; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v916844; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v516845; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v516846; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v016847; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v0, v016848; GFX8-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc16849; GFX8-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[4:5]16850; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v516851; GFX8-NEXT:    v_alignbit_b32 v5, v5, v0, 1616852; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc16853; GFX8-NEXT:    s_waitcnt vmcnt(0)16854; GFX8-NEXT:    buffer_wbinvl116855; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v616856; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]16857; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]16858; GFX8-NEXT:    s_cbranch_execnz .LBB55_116859; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end16860; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]16861; GFX8-NEXT:    s_setpc_b64 s[30:31]16862;16863; GFX7-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:16864; GFX7:       ; %bb.0:16865; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16866; GFX7-NEXT:    s_mov_b32 s6, 016867; GFX7-NEXT:    s_mov_b32 s7, 0xf00016868; GFX7-NEXT:    s_mov_b32 s4, s616869; GFX7-NEXT:    s_mov_b32 s5, s616870; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204416871; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v316872; GFX7-NEXT:    v_mul_f32_e32 v6, 1.0, v216873; GFX7-NEXT:    s_mov_b64 s[8:9], 016874; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v316875; GFX7-NEXT:    s_waitcnt vmcnt(0)16876; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v516877; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v516878; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616879; GFX7-NEXT:  .LBB55_1: ; %atomicrmw.start16880; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=116881; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v216882; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v316883; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v216884; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v316885; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v216886; GFX7-NEXT:    v_max_f32_e32 v6, v6, v416887; GFX7-NEXT:    v_max_f32_e32 v7, v7, v516888; GFX7-NEXT:    v_alignbit_b32 v3, v2, v3, 1616889; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v616890; GFX7-NEXT:    v_alignbit_b32 v2, v2, v7, 1616891; GFX7-NEXT:    v_mov_b32_e32 v7, v316892; GFX7-NEXT:    v_mov_b32_e32 v6, v216893; GFX7-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 offset:2044 glc16894; GFX7-NEXT:    s_waitcnt vmcnt(0)16895; GFX7-NEXT:    buffer_wbinvl116896; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v316897; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v616898; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]16899; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v616900; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]16901; GFX7-NEXT:    s_cbranch_execnz .LBB55_116902; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end16903; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]16904; GFX7-NEXT:    v_mov_b32_e32 v0, v316905; GFX7-NEXT:    v_mov_b32_e32 v1, v216906; GFX7-NEXT:    s_setpc_b64 s[30:31]16907;16908; GFX6-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:16909; GFX6:       ; %bb.0:16910; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16911; GFX6-NEXT:    s_mov_b32 s6, 016912; GFX6-NEXT:    s_mov_b32 s7, 0xf00016913; GFX6-NEXT:    s_mov_b32 s4, s616914; GFX6-NEXT:    s_mov_b32 s5, s616915; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204416916; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v316917; GFX6-NEXT:    v_mul_f32_e32 v6, 1.0, v216918; GFX6-NEXT:    s_mov_b64 s[8:9], 016919; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v316920; GFX6-NEXT:    s_waitcnt vmcnt(0)16921; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v516922; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v516923; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616924; GFX6-NEXT:  .LBB55_1: ; %atomicrmw.start16925; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=116926; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v216927; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v316928; GFX6-NEXT:    s_waitcnt expcnt(0)16929; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v216930; GFX6-NEXT:    v_and_b32_e32 v7, 0xffff0000, v316931; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v216932; GFX6-NEXT:    v_max_f32_e32 v6, v6, v416933; GFX6-NEXT:    v_max_f32_e32 v7, v7, v516934; GFX6-NEXT:    v_alignbit_b32 v3, v2, v3, 1616935; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v616936; GFX6-NEXT:    v_alignbit_b32 v2, v2, v7, 1616937; GFX6-NEXT:    v_mov_b32_e32 v7, v316938; GFX6-NEXT:    v_mov_b32_e32 v6, v216939; GFX6-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 offset:2044 glc16940; GFX6-NEXT:    s_waitcnt vmcnt(0)16941; GFX6-NEXT:    buffer_wbinvl116942; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v316943; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v616944; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]16945; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v616946; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]16947; GFX6-NEXT:    s_cbranch_execnz .LBB55_116948; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end16949; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]16950; GFX6-NEXT:    v_mov_b32_e32 v0, v316951; GFX6-NEXT:    v_mov_b32_e32 v1, v216952; GFX6-NEXT:    s_waitcnt expcnt(0)16953; GFX6-NEXT:    s_setpc_b64 s[30:31]16954  %gep = getelementptr <2 x bfloat>, ptr addrspace(1) %ptr, i64 51116955  %result = atomicrmw fmax ptr addrspace(1) %gep, <2 x bfloat> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !016956  ret <2 x bfloat> %result16957}16958 16959define <2 x bfloat> @global_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, <2 x bfloat> %val) #0 {16960; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:16961; GFX12-TRUE16:       ; %bb.0:16962; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x016963; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x016964; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x016965; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x016966; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x016967; GFX12-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:-204816968; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v216969; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v216970; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 016971; GFX12-TRUE16-NEXT:  .LBB56_1: ; %atomicrmw.start16972; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=116973; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x016974; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v316975; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16976; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616977; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v5, v5, v416978; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616979; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16980; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 116981; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v3, v3, v216982; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516983; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)16984; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16985; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 116986; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316987; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v316988; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)16989; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16990; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)16991; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo16992; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516993; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)16994; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16995; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)16996; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h16997; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x016998; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV16999; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x017000; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV17001; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v617002; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17003; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s017004; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17005; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s017006; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB56_117007; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end17008; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s017009; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v317010; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x017011; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]17012;17013; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:17014; GFX12-FAKE16:       ; %bb.0:17015; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x017016; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x017017; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x017018; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x017019; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x017020; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:-204817021; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v217022; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217023; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 017024; GFX12-FAKE16-NEXT:  .LBB56_1: ; %atomicrmw.start17025; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=117026; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x017027; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v317028; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17029; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617030; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v5, v5, v217031; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v617032; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17033; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 117034; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v3, v3, v417035; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v517036; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v517037; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)17038; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff17039; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 117040; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v317041; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v317042; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)17043; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo17044; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff17045; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)17046; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17047; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s017048; GFX12-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030217049; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x017050; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV17051; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x017052; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV17053; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v617054; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17055; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s117056; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17057; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s117058; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB56_117059; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end17060; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s117061; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v317062; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x017063; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]17064;17065; GFX942-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:17066; GFX942:       ; %bb.0:17067; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17068; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:-204817069; GFX942-NEXT:    s_mov_b64 s[2:3], 017070; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v217071; GFX942-NEXT:    s_movk_i32 s4, 0x7fff17072; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217073; GFX942-NEXT:    s_mov_b32 s5, 0x706030217074; GFX942-NEXT:  .LBB56_1: ; %atomicrmw.start17075; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=117076; GFX942-NEXT:    s_waitcnt vmcnt(0)17077; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v317078; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317079; GFX942-NEXT:    v_max_f32_e32 v2, v2, v417080; GFX942-NEXT:    v_max_f32_e32 v6, v6, v517081; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 117082; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 117083; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v217084; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v617085; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s417086; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s417087; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617088; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v217089; GFX942-NEXT:    s_nop 017090; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17091; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]17092; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s517093; GFX942-NEXT:    buffer_wbl2 sc117094; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 sc017095; GFX942-NEXT:    s_waitcnt vmcnt(0)17096; GFX942-NEXT:    buffer_inv sc117097; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317098; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]17099; GFX942-NEXT:    v_mov_b32_e32 v3, v217100; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]17101; GFX942-NEXT:    s_cbranch_execnz .LBB56_117102; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end17103; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]17104; GFX942-NEXT:    v_mov_b32_e32 v0, v217105; GFX942-NEXT:    s_setpc_b64 s[30:31]17106;17107; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:17108; GFX11-TRUE16:       ; %bb.0:17109; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17110; GFX11-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:-204817111; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v217112; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v217113; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 017114; GFX11-TRUE16-NEXT:    .p2align 617115; GFX11-TRUE16-NEXT:  .LBB56_1: ; %atomicrmw.start17116; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=117117; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)17118; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v317119; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17120; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617121; GFX11-TRUE16-NEXT:    v_max_f32_e32 v5, v5, v417122; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v617123; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17124; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 117125; GFX11-TRUE16-NEXT:    v_max_f32_e32 v3, v3, v217126; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v517127; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)17128; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff17129; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 117130; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v317131; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v317132; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)17133; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff17134; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo17135; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v517136; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo17137; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)17138; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h17139; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x017140; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:-2048 glc17141; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)17142; GFX11-TRUE16-NEXT:    buffer_gl1_inv17143; GFX11-TRUE16-NEXT:    buffer_gl0_inv17144; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v617145; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s017146; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17147; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s017148; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB56_117149; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end17150; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s017151; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, v317152; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]17153;17154; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:17155; GFX11-FAKE16:       ; %bb.0:17156; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17157; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:-204817158; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v217159; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217160; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 017161; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x117162; GFX11-FAKE16-NEXT:    .p2align 617163; GFX11-FAKE16-NEXT:  .LBB56_1: ; %atomicrmw.start17164; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=117165; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)17166; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v317167; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17168; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617169; GFX11-FAKE16-NEXT:    v_max_f32_e32 v5, v5, v217170; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v617171; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17172; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 117173; GFX11-FAKE16-NEXT:    v_max_f32_e32 v3, v3, v417174; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v517175; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v517176; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)17177; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff17178; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 117179; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v317180; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v317181; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)17182; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo17183; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff17184; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17185; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s017186; GFX11-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030217187; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x017188; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:-2048 glc17189; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)17190; GFX11-FAKE16-NEXT:    buffer_gl1_inv17191; GFX11-FAKE16-NEXT:    buffer_gl0_inv17192; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v617193; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s117194; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17195; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s117196; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB56_117197; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end17198; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x217199; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s117200; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v317201; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]17202;17203; GFX10-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:17204; GFX10:       ; %bb.0:17205; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17206; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:-204817207; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v217208; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217209; GFX10-NEXT:    s_mov_b32 s5, 017210; GFX10-NEXT:  .LBB56_1: ; %atomicrmw.start17211; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=117212; GFX10-NEXT:    s_waitcnt vmcnt(0)17213; GFX10-NEXT:    v_mov_b32_e32 v6, v317214; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 16, v617215; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617216; GFX10-NEXT:    v_max_f32_e32 v3, v3, v417217; GFX10-NEXT:    v_max_f32_e32 v5, v5, v217218; GFX10-NEXT:    v_bfe_u32 v7, v3, 16, 117219; GFX10-NEXT:    v_bfe_u32 v8, v5, 16, 117220; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v317221; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v517222; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v517223; GFX10-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff17224; GFX10-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff17225; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v3, v317226; GFX10-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo17227; GFX10-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s417228; GFX10-NEXT:    v_perm_b32 v5, v5, v3, 0x706030217229; GFX10-NEXT:    s_waitcnt_vscnt null, 0x017230; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[5:6], off offset:-2048 glc17231; GFX10-NEXT:    s_waitcnt vmcnt(0)17232; GFX10-NEXT:    buffer_gl1_inv17233; GFX10-NEXT:    buffer_gl0_inv17234; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v617235; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s517236; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s517237; GFX10-NEXT:    s_cbranch_execnz .LBB56_117238; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end17239; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s517240; GFX10-NEXT:    v_mov_b32_e32 v0, v317241; GFX10-NEXT:    s_setpc_b64 s[30:31]17242;17243; GFX90A-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:17244; GFX90A:       ; %bb.0:17245; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17246; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:-204817247; GFX90A-NEXT:    s_mov_b64 s[6:7], 017248; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v217249; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff17250; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217251; GFX90A-NEXT:    s_mov_b32 s9, 0x706030217252; GFX90A-NEXT:  .LBB56_1: ; %atomicrmw.start17253; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=117254; GFX90A-NEXT:    s_waitcnt vmcnt(0)17255; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v317256; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317257; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v417258; GFX90A-NEXT:    v_max_f32_e32 v6, v6, v517259; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 117260; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 117261; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v217262; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v617263; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s817264; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s817265; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617266; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v217267; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]17268; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17269; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s917270; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 glc17271; GFX90A-NEXT:    s_waitcnt vmcnt(0)17272; GFX90A-NEXT:    buffer_wbinvl117273; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317274; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17275; GFX90A-NEXT:    v_mov_b32_e32 v3, v217276; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]17277; GFX90A-NEXT:    s_cbranch_execnz .LBB56_117278; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end17279; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]17280; GFX90A-NEXT:    v_mov_b32_e32 v0, v217281; GFX90A-NEXT:    s_setpc_b64 s[30:31]17282;17283; GFX908-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:17284; GFX908:       ; %bb.0:17285; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17286; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:-204817287; GFX908-NEXT:    s_mov_b64 s[6:7], 017288; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v217289; GFX908-NEXT:    s_movk_i32 s8, 0x7fff17290; GFX908-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217291; GFX908-NEXT:    s_mov_b32 s9, 0x706030217292; GFX908-NEXT:  .LBB56_1: ; %atomicrmw.start17293; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=117294; GFX908-NEXT:    s_waitcnt vmcnt(0)17295; GFX908-NEXT:    v_mov_b32_e32 v6, v317296; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v617297; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617298; GFX908-NEXT:    v_max_f32_e32 v3, v3, v417299; GFX908-NEXT:    v_max_f32_e32 v5, v5, v217300; GFX908-NEXT:    v_bfe_u32 v7, v3, 16, 117301; GFX908-NEXT:    v_bfe_u32 v9, v5, 16, 117302; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v317303; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v517304; GFX908-NEXT:    v_add3_u32 v7, v7, v3, s817305; GFX908-NEXT:    v_add3_u32 v9, v9, v5, s817306; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v517307; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v3, v317308; GFX908-NEXT:    v_cndmask_b32_e64 v3, v7, v8, s[4:5]17309; GFX908-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc17310; GFX908-NEXT:    v_perm_b32 v5, v5, v3, s917311; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[5:6], off offset:-2048 glc17312; GFX908-NEXT:    s_waitcnt vmcnt(0)17313; GFX908-NEXT:    buffer_wbinvl117314; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v617315; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17316; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]17317; GFX908-NEXT:    s_cbranch_execnz .LBB56_117318; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end17319; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]17320; GFX908-NEXT:    v_mov_b32_e32 v0, v317321; GFX908-NEXT:    s_setpc_b64 s[30:31]17322;17323; GFX8-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:17324; GFX8:       ; %bb.0:17325; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17326; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v017327; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, -1, v1, vcc17328; GFX8-NEXT:    flat_load_dword v0, v[3:4]17329; GFX8-NEXT:    s_mov_b64 s[6:7], 017330; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 16, v217331; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217332; GFX8-NEXT:  .LBB56_1: ; %atomicrmw.start17333; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=117334; GFX8-NEXT:    s_waitcnt vmcnt(0)17335; GFX8-NEXT:    v_mov_b32_e32 v6, v017336; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 16, v617337; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617338; GFX8-NEXT:    v_max_f32_e32 v0, v0, v117339; GFX8-NEXT:    v_max_f32_e32 v5, v5, v217340; GFX8-NEXT:    v_bfe_u32 v7, v0, 16, 117341; GFX8-NEXT:    v_bfe_u32 v9, v5, 16, 117342; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v017343; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v517344; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v717345; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v917346; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v517347; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v517348; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v017349; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v0, v017350; GFX8-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc17351; GFX8-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[4:5]17352; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v517353; GFX8-NEXT:    v_alignbit_b32 v5, v5, v0, 1617354; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc17355; GFX8-NEXT:    s_waitcnt vmcnt(0)17356; GFX8-NEXT:    buffer_wbinvl117357; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v617358; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17359; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]17360; GFX8-NEXT:    s_cbranch_execnz .LBB56_117361; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end17362; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]17363; GFX8-NEXT:    s_setpc_b64 s[30:31]17364;17365; GFX7-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:17366; GFX7:       ; %bb.0:17367; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17368; GFX7-NEXT:    s_movk_i32 s4, 0xf80017369; GFX7-NEXT:    s_mov_b32 s5, -117370; GFX7-NEXT:    s_mov_b32 s7, 0xf00017371; GFX7-NEXT:    s_mov_b32 s6, 017372; GFX7-NEXT:    buffer_load_dword v6, v[0:1], s[4:7], 0 addr6417373; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v017374; GFX7-NEXT:    v_mul_f32_e32 v0, 1.0, v317375; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v217376; GFX7-NEXT:    s_mov_b64 s[8:9], 017377; GFX7-NEXT:    s_mov_b32 s4, s617378; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, -1, v1, vcc17379; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v017380; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v317381; GFX7-NEXT:    s_mov_b32 s5, s617382; GFX7-NEXT:    s_waitcnt vmcnt(0)17383; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v617384; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v617385; GFX7-NEXT:  .LBB56_1: ; %atomicrmw.start17386; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=117387; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v117388; GFX7-NEXT:    v_mul_f32_e32 v0, 1.0, v017389; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v117390; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v017391; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v117392; GFX7-NEXT:    v_max_f32_e32 v6, v6, v217393; GFX7-NEXT:    v_max_f32_e32 v7, v7, v317394; GFX7-NEXT:    v_alignbit_b32 v1, v1, v0, 1617395; GFX7-NEXT:    v_lshrrev_b32_e32 v0, 16, v617396; GFX7-NEXT:    v_alignbit_b32 v0, v0, v7, 1617397; GFX7-NEXT:    v_mov_b32_e32 v7, v117398; GFX7-NEXT:    v_mov_b32_e32 v6, v017399; GFX7-NEXT:    buffer_atomic_cmpswap v[6:7], v[4:5], s[4:7], 0 addr64 glc17400; GFX7-NEXT:    s_waitcnt vmcnt(0)17401; GFX7-NEXT:    buffer_wbinvl117402; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v117403; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v617404; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]17405; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v617406; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]17407; GFX7-NEXT:    s_cbranch_execnz .LBB56_117408; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end17409; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]17410; GFX7-NEXT:    s_setpc_b64 s[30:31]17411;17412; GFX6-LABEL: global_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:17413; GFX6:       ; %bb.0:17414; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17415; GFX6-NEXT:    s_movk_i32 s4, 0xf80017416; GFX6-NEXT:    s_mov_b32 s5, -117417; GFX6-NEXT:    s_mov_b32 s7, 0xf00017418; GFX6-NEXT:    s_mov_b32 s6, 017419; GFX6-NEXT:    buffer_load_dword v6, v[0:1], s[4:7], 0 addr6417420; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v017421; GFX6-NEXT:    v_mul_f32_e32 v0, 1.0, v317422; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v217423; GFX6-NEXT:    s_mov_b64 s[8:9], 017424; GFX6-NEXT:    s_mov_b32 s4, s617425; GFX6-NEXT:    v_addc_u32_e32 v5, vcc, -1, v1, vcc17426; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v017427; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v317428; GFX6-NEXT:    s_mov_b32 s5, s617429; GFX6-NEXT:    s_waitcnt vmcnt(0)17430; GFX6-NEXT:    v_and_b32_e32 v1, 0xffff0000, v617431; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v617432; GFX6-NEXT:  .LBB56_1: ; %atomicrmw.start17433; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=117434; GFX6-NEXT:    v_mul_f32_e32 v1, 1.0, v117435; GFX6-NEXT:    v_mul_f32_e32 v0, 1.0, v017436; GFX6-NEXT:    s_waitcnt expcnt(0)17437; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v117438; GFX6-NEXT:    v_and_b32_e32 v7, 0xffff0000, v017439; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v117440; GFX6-NEXT:    v_max_f32_e32 v6, v6, v217441; GFX6-NEXT:    v_max_f32_e32 v7, v7, v317442; GFX6-NEXT:    v_alignbit_b32 v1, v1, v0, 1617443; GFX6-NEXT:    v_lshrrev_b32_e32 v0, 16, v617444; GFX6-NEXT:    v_alignbit_b32 v0, v0, v7, 1617445; GFX6-NEXT:    v_mov_b32_e32 v7, v117446; GFX6-NEXT:    v_mov_b32_e32 v6, v017447; GFX6-NEXT:    buffer_atomic_cmpswap v[6:7], v[4:5], s[4:7], 0 addr64 glc17448; GFX6-NEXT:    s_waitcnt vmcnt(0)17449; GFX6-NEXT:    buffer_wbinvl117450; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v117451; GFX6-NEXT:    v_and_b32_e32 v1, 0xffff0000, v617452; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]17453; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v617454; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]17455; GFX6-NEXT:    s_cbranch_execnz .LBB56_117456; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end17457; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]17458; GFX6-NEXT:    s_waitcnt expcnt(0)17459; GFX6-NEXT:    s_setpc_b64 s[30:31]17460  %gep = getelementptr <2 x bfloat>, ptr addrspace(1) %ptr, i64 -51217461  %result = atomicrmw fmax ptr addrspace(1) %gep, <2 x bfloat> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !017462  ret <2 x bfloat> %result17463}17464 17465define void @global_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, <2 x bfloat> %val) #0 {17466; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory:17467; GFX12-TRUE16:       ; %bb.0:17468; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x017469; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x017470; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x017471; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x017472; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x017473; GFX12-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off17474; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v217475; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v217476; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 017477; GFX12-TRUE16-NEXT:  .LBB57_1: ; %atomicrmw.start17478; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=117479; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x017480; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317481; GFX12-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317482; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17483; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v2, v2, v517484; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v6, v6, v417485; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17486; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 117487; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 117488; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217489; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v217490; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617491; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17492; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17493; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)17494; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_3)17495; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo17496; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617497; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)17498; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo17499; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h17500; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x017501; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV17502; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x017503; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV17504; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317505; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v217506; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17507; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s017508; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17509; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s017510; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB57_117511; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end17512; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s017513; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x017514; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]17515;17516; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory:17517; GFX12-FAKE16:       ; %bb.0:17518; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x017519; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x017520; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x017521; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x017522; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x017523; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off17524; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v217525; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217526; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 017527; GFX12-FAKE16-NEXT:  .LBB57_1: ; %atomicrmw.start17528; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=117529; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x017530; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317531; GFX12-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317532; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17533; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v2, v2, v417534; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v6, v6, v517535; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17536; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 117537; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 117538; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217539; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617540; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617541; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17542; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17543; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v217544; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)17545; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)17546; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo17547; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)17548; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s017549; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)17550; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030217551; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x017552; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off th:TH_ATOMIC_RETURN scope:SCOPE_DEV17553; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x017554; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV17555; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317556; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v217557; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17558; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s117559; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17560; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s117561; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB57_117562; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end17563; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s117564; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x017565; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]17566;17567; GFX942-LABEL: global_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory:17568; GFX942:       ; %bb.0:17569; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17570; GFX942-NEXT:    global_load_dword v3, v[0:1], off17571; GFX942-NEXT:    s_mov_b64 s[2:3], 017572; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v217573; GFX942-NEXT:    s_movk_i32 s4, 0x7fff17574; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217575; GFX942-NEXT:    s_mov_b32 s5, 0x706030217576; GFX942-NEXT:  .LBB57_1: ; %atomicrmw.start17577; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=117578; GFX942-NEXT:    s_waitcnt vmcnt(0)17579; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v317580; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317581; GFX942-NEXT:    v_max_f32_e32 v2, v2, v417582; GFX942-NEXT:    v_max_f32_e32 v6, v6, v517583; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 117584; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 117585; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v217586; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v617587; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s417588; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s417589; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617590; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v217591; GFX942-NEXT:    s_nop 017592; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17593; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]17594; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s517595; GFX942-NEXT:    buffer_wbl2 sc117596; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off sc017597; GFX942-NEXT:    s_waitcnt vmcnt(0)17598; GFX942-NEXT:    buffer_inv sc117599; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317600; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]17601; GFX942-NEXT:    v_mov_b32_e32 v3, v217602; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]17603; GFX942-NEXT:    s_cbranch_execnz .LBB57_117604; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end17605; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]17606; GFX942-NEXT:    s_setpc_b64 s[30:31]17607;17608; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory:17609; GFX11-TRUE16:       ; %bb.0:17610; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17611; GFX11-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off17612; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v217613; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v217614; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 017615; GFX11-TRUE16-NEXT:    .p2align 617616; GFX11-TRUE16-NEXT:  .LBB57_1: ; %atomicrmw.start17617; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=117618; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)17619; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317620; GFX11-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317621; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17622; GFX11-TRUE16-NEXT:    v_max_f32_e32 v2, v2, v517623; GFX11-TRUE16-NEXT:    v_max_f32_e32 v6, v6, v417624; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17625; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 117626; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 117627; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217628; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v217629; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617630; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17631; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17632; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)17633; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo17634; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617635; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo17636; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)17637; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h17638; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x017639; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off glc17640; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)17641; GFX11-TRUE16-NEXT:    buffer_gl1_inv17642; GFX11-TRUE16-NEXT:    buffer_gl0_inv17643; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317644; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v217645; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s017646; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17647; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s017648; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB57_117649; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end17650; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s017651; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]17652;17653; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory:17654; GFX11-FAKE16:       ; %bb.0:17655; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17656; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off17657; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v217658; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217659; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 017660; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x117661; GFX11-FAKE16-NEXT:    .p2align 617662; GFX11-FAKE16-NEXT:  .LBB57_1: ; %atomicrmw.start17663; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=117664; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)17665; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317666; GFX11-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317667; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17668; GFX11-FAKE16-NEXT:    v_max_f32_e32 v2, v2, v417669; GFX11-FAKE16-NEXT:    v_max_f32_e32 v6, v6, v517670; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17671; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 117672; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 117673; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217674; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617675; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617676; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17677; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17678; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v217679; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17680; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo17681; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s017682; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)17683; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030217684; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x017685; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off glc17686; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)17687; GFX11-FAKE16-NEXT:    buffer_gl1_inv17688; GFX11-FAKE16-NEXT:    buffer_gl0_inv17689; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317690; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v217691; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s117692; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17693; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s117694; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB57_117695; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end17696; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x217697; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s117698; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]17699;17700; GFX10-LABEL: global_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory:17701; GFX10:       ; %bb.0:17702; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17703; GFX10-NEXT:    global_load_dword v3, v[0:1], off17704; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v217705; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217706; GFX10-NEXT:    s_mov_b32 s5, 017707; GFX10-NEXT:  .LBB57_1: ; %atomicrmw.start17708; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=117709; GFX10-NEXT:    s_waitcnt vmcnt(0)17710; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v317711; GFX10-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317712; GFX10-NEXT:    v_max_f32_e32 v2, v2, v417713; GFX10-NEXT:    v_max_f32_e32 v6, v6, v517714; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 117715; GFX10-NEXT:    v_bfe_u32 v8, v6, 16, 117716; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v217717; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v617718; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617719; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17720; GFX10-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17721; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v2, v217722; GFX10-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo17723; GFX10-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s417724; GFX10-NEXT:    v_perm_b32 v2, v6, v2, 0x706030217725; GFX10-NEXT:    s_waitcnt_vscnt null, 0x017726; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc17727; GFX10-NEXT:    s_waitcnt vmcnt(0)17728; GFX10-NEXT:    buffer_gl1_inv17729; GFX10-NEXT:    buffer_gl0_inv17730; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317731; GFX10-NEXT:    v_mov_b32_e32 v3, v217732; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s517733; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s517734; GFX10-NEXT:    s_cbranch_execnz .LBB57_117735; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end17736; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s517737; GFX10-NEXT:    s_setpc_b64 s[30:31]17738;17739; GFX90A-LABEL: global_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory:17740; GFX90A:       ; %bb.0:17741; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17742; GFX90A-NEXT:    global_load_dword v3, v[0:1], off17743; GFX90A-NEXT:    s_mov_b64 s[6:7], 017744; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v217745; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff17746; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217747; GFX90A-NEXT:    s_mov_b32 s9, 0x706030217748; GFX90A-NEXT:  .LBB57_1: ; %atomicrmw.start17749; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=117750; GFX90A-NEXT:    s_waitcnt vmcnt(0)17751; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v317752; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317753; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v417754; GFX90A-NEXT:    v_max_f32_e32 v6, v6, v517755; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 117756; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 117757; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v217758; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v617759; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s817760; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s817761; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617762; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v217763; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]17764; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17765; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s917766; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc17767; GFX90A-NEXT:    s_waitcnt vmcnt(0)17768; GFX90A-NEXT:    buffer_wbinvl117769; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317770; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17771; GFX90A-NEXT:    v_mov_b32_e32 v3, v217772; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]17773; GFX90A-NEXT:    s_cbranch_execnz .LBB57_117774; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end17775; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]17776; GFX90A-NEXT:    s_setpc_b64 s[30:31]17777;17778; GFX908-LABEL: global_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory:17779; GFX908:       ; %bb.0:17780; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17781; GFX908-NEXT:    global_load_dword v3, v[0:1], off17782; GFX908-NEXT:    s_mov_b64 s[6:7], 017783; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v217784; GFX908-NEXT:    s_movk_i32 s8, 0x7fff17785; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217786; GFX908-NEXT:    s_mov_b32 s9, 0x706030217787; GFX908-NEXT:  .LBB57_1: ; %atomicrmw.start17788; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=117789; GFX908-NEXT:    s_waitcnt vmcnt(0)17790; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v317791; GFX908-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317792; GFX908-NEXT:    v_max_f32_e32 v2, v2, v417793; GFX908-NEXT:    v_max_f32_e32 v6, v6, v517794; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 117795; GFX908-NEXT:    v_bfe_u32 v9, v6, 16, 117796; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v217797; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v617798; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s817799; GFX908-NEXT:    v_add3_u32 v9, v9, v6, s817800; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617801; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v217802; GFX908-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]17803; GFX908-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17804; GFX908-NEXT:    v_perm_b32 v2, v6, v2, s917805; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off glc17806; GFX908-NEXT:    s_waitcnt vmcnt(0)17807; GFX908-NEXT:    buffer_wbinvl117808; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317809; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17810; GFX908-NEXT:    v_mov_b32_e32 v3, v217811; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]17812; GFX908-NEXT:    s_cbranch_execnz .LBB57_117813; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end17814; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]17815; GFX908-NEXT:    s_setpc_b64 s[30:31]17816;17817; GFX8-LABEL: global_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory:17818; GFX8:       ; %bb.0:17819; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17820; GFX8-NEXT:    flat_load_dword v3, v[0:1]17821; GFX8-NEXT:    s_mov_b64 s[6:7], 017822; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v217823; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217824; GFX8-NEXT:  .LBB57_1: ; %atomicrmw.start17825; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=117826; GFX8-NEXT:    s_waitcnt vmcnt(0)17827; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v317828; GFX8-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317829; GFX8-NEXT:    v_max_f32_e32 v2, v2, v417830; GFX8-NEXT:    v_max_f32_e32 v6, v6, v517831; GFX8-NEXT:    v_bfe_u32 v7, v2, 16, 117832; GFX8-NEXT:    v_bfe_u32 v9, v6, 16, 117833; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v217834; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v617835; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v717836; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v917837; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v617838; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617839; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v217840; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v217841; GFX8-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17842; GFX8-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]17843; GFX8-NEXT:    v_lshrrev_b32_e32 v6, 16, v617844; GFX8-NEXT:    v_alignbit_b32 v2, v6, v2, 1617845; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc17846; GFX8-NEXT:    s_waitcnt vmcnt(0)17847; GFX8-NEXT:    buffer_wbinvl117848; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317849; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17850; GFX8-NEXT:    v_mov_b32_e32 v3, v217851; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]17852; GFX8-NEXT:    s_cbranch_execnz .LBB57_117853; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end17854; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]17855; GFX8-NEXT:    s_setpc_b64 s[30:31]17856;17857; GFX7-LABEL: global_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory:17858; GFX7:       ; %bb.0:17859; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17860; GFX7-NEXT:    s_mov_b32 s6, 017861; GFX7-NEXT:    s_mov_b32 s7, 0xf00017862; GFX7-NEXT:    s_mov_b32 s4, s617863; GFX7-NEXT:    s_mov_b32 s5, s617864; GFX7-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr6417865; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v317866; GFX7-NEXT:    v_mul_f32_e32 v6, 1.0, v217867; GFX7-NEXT:    s_mov_b64 s[8:9], 017868; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v317869; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v617870; GFX7-NEXT:    s_waitcnt vmcnt(0)17871; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v417872; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v417873; GFX7-NEXT:  .LBB57_1: ; %atomicrmw.start17874; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=117875; GFX7-NEXT:    v_mul_f32_e32 v5, 1.0, v517876; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v417877; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v517878; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v417879; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v517880; GFX7-NEXT:    v_max_f32_e32 v6, v6, v217881; GFX7-NEXT:    v_max_f32_e32 v7, v7, v317882; GFX7-NEXT:    v_alignbit_b32 v5, v5, v4, 1617883; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v617884; GFX7-NEXT:    v_alignbit_b32 v4, v4, v7, 1617885; GFX7-NEXT:    v_mov_b32_e32 v7, v517886; GFX7-NEXT:    v_mov_b32_e32 v6, v417887; GFX7-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 glc17888; GFX7-NEXT:    s_waitcnt vmcnt(0)17889; GFX7-NEXT:    buffer_wbinvl117890; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v517891; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617892; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]17893; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v617894; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]17895; GFX7-NEXT:    s_cbranch_execnz .LBB57_117896; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end17897; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]17898; GFX7-NEXT:    s_setpc_b64 s[30:31]17899;17900; GFX6-LABEL: global_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory:17901; GFX6:       ; %bb.0:17902; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17903; GFX6-NEXT:    s_mov_b32 s6, 017904; GFX6-NEXT:    s_mov_b32 s7, 0xf00017905; GFX6-NEXT:    s_mov_b32 s4, s617906; GFX6-NEXT:    s_mov_b32 s5, s617907; GFX6-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr6417908; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v317909; GFX6-NEXT:    v_mul_f32_e32 v6, 1.0, v217910; GFX6-NEXT:    s_mov_b64 s[8:9], 017911; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v317912; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v617913; GFX6-NEXT:    s_waitcnt vmcnt(0)17914; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v417915; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v417916; GFX6-NEXT:  .LBB57_1: ; %atomicrmw.start17917; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=117918; GFX6-NEXT:    v_mul_f32_e32 v5, 1.0, v517919; GFX6-NEXT:    v_mul_f32_e32 v4, 1.0, v417920; GFX6-NEXT:    s_waitcnt expcnt(0)17921; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v517922; GFX6-NEXT:    v_and_b32_e32 v7, 0xffff0000, v417923; GFX6-NEXT:    v_lshrrev_b32_e32 v5, 16, v517924; GFX6-NEXT:    v_max_f32_e32 v6, v6, v217925; GFX6-NEXT:    v_max_f32_e32 v7, v7, v317926; GFX6-NEXT:    v_alignbit_b32 v5, v5, v4, 1617927; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v617928; GFX6-NEXT:    v_alignbit_b32 v4, v4, v7, 1617929; GFX6-NEXT:    v_mov_b32_e32 v7, v517930; GFX6-NEXT:    v_mov_b32_e32 v6, v417931; GFX6-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 glc17932; GFX6-NEXT:    s_waitcnt vmcnt(0)17933; GFX6-NEXT:    buffer_wbinvl117934; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v517935; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617936; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]17937; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v617938; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]17939; GFX6-NEXT:    s_cbranch_execnz .LBB57_117940; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end17941; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]17942; GFX6-NEXT:    s_waitcnt expcnt(0)17943; GFX6-NEXT:    s_setpc_b64 s[30:31]17944  %unused = atomicrmw fmax ptr addrspace(1) %ptr, <2 x bfloat> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !017945  ret void17946}17947 17948define void @global_agent_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, <2 x bfloat> %val) #0 {17949; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:17950; GFX12-TRUE16:       ; %bb.0:17951; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x017952; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x017953; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x017954; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x017955; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x017956; GFX12-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204417957; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v217958; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v217959; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 017960; GFX12-TRUE16-NEXT:  .LBB58_1: ; %atomicrmw.start17961; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=117962; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x017963; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317964; GFX12-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317965; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17966; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v2, v2, v517967; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v6, v6, v417968; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17969; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 117970; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 117971; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217972; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v217973; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617974; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17975; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17976; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)17977; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_3)17978; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo17979; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617980; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)17981; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo17982; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h17983; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x017984; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV17985; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x017986; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV17987; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317988; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v217989; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17990; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s017991; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17992; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s017993; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB58_117994; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end17995; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s017996; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x017997; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]17998;17999; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:18000; GFX12-FAKE16:       ; %bb.0:18001; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x018002; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x018003; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x018004; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x018005; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x018006; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204418007; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v218008; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218009; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 018010; GFX12-FAKE16-NEXT:  .LBB58_1: ; %atomicrmw.start18011; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=118012; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x018013; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318014; GFX12-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318015; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18016; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v2, v2, v418017; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v6, v6, v518018; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18019; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 118020; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 118021; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218022; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618023; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618024; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18025; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18026; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v218027; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)18028; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)18029; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18030; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)18031; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s018032; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)18033; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218034; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x018035; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV18036; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x018037; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV18038; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318039; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v218040; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18041; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s118042; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18043; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s118044; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB58_118045; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end18046; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s118047; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x018048; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]18049;18050; GFX942-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:18051; GFX942:       ; %bb.0:18052; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18053; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:204418054; GFX942-NEXT:    s_mov_b64 s[2:3], 018055; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v218056; GFX942-NEXT:    s_movk_i32 s4, 0x7fff18057; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218058; GFX942-NEXT:    s_mov_b32 s5, 0x706030218059; GFX942-NEXT:  .LBB58_1: ; %atomicrmw.start18060; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=118061; GFX942-NEXT:    s_waitcnt vmcnt(0)18062; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v318063; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318064; GFX942-NEXT:    v_max_f32_e32 v2, v2, v418065; GFX942-NEXT:    v_max_f32_e32 v6, v6, v518066; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 118067; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 118068; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v218069; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v618070; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s418071; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s418072; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618073; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v218074; GFX942-NEXT:    s_nop 018075; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18076; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]18077; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s518078; GFX942-NEXT:    buffer_wbl2 sc118079; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 sc018080; GFX942-NEXT:    s_waitcnt vmcnt(0)18081; GFX942-NEXT:    buffer_inv sc118082; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318083; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]18084; GFX942-NEXT:    v_mov_b32_e32 v3, v218085; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]18086; GFX942-NEXT:    s_cbranch_execnz .LBB58_118087; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end18088; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]18089; GFX942-NEXT:    s_setpc_b64 s[30:31]18090;18091; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:18092; GFX11-TRUE16:       ; %bb.0:18093; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18094; GFX11-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204418095; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v218096; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v218097; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 018098; GFX11-TRUE16-NEXT:    .p2align 618099; GFX11-TRUE16-NEXT:  .LBB58_1: ; %atomicrmw.start18100; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=118101; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)18102; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318103; GFX11-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318104; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18105; GFX11-TRUE16-NEXT:    v_max_f32_e32 v2, v2, v518106; GFX11-TRUE16-NEXT:    v_max_f32_e32 v6, v6, v418107; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18108; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 118109; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 118110; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218111; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v218112; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618113; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18114; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18115; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)18116; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo18117; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618118; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo18119; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)18120; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h18121; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x018122; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2044 glc18123; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)18124; GFX11-TRUE16-NEXT:    buffer_gl1_inv18125; GFX11-TRUE16-NEXT:    buffer_gl0_inv18126; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318127; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v218128; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s018129; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)18130; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s018131; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB58_118132; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end18133; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s018134; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]18135;18136; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:18137; GFX11-FAKE16:       ; %bb.0:18138; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18139; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204418140; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v218141; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218142; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 018143; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x118144; GFX11-FAKE16-NEXT:    .p2align 618145; GFX11-FAKE16-NEXT:  .LBB58_1: ; %atomicrmw.start18146; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=118147; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)18148; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318149; GFX11-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318150; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18151; GFX11-FAKE16-NEXT:    v_max_f32_e32 v2, v2, v418152; GFX11-FAKE16-NEXT:    v_max_f32_e32 v6, v6, v518153; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18154; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 118155; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 118156; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218157; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618158; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618159; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18160; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18161; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v218162; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18163; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18164; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s018165; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)18166; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218167; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x018168; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2044 glc18169; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)18170; GFX11-FAKE16-NEXT:    buffer_gl1_inv18171; GFX11-FAKE16-NEXT:    buffer_gl0_inv18172; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318173; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v218174; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s118175; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)18176; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s118177; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB58_118178; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end18179; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x218180; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s118181; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]18182;18183; GFX10-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:18184; GFX10:       ; %bb.0:18185; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18186; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:204418187; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v218188; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218189; GFX10-NEXT:    s_mov_b32 s5, 018190; GFX10-NEXT:  .LBB58_1: ; %atomicrmw.start18191; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=118192; GFX10-NEXT:    s_waitcnt vmcnt(0)18193; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v318194; GFX10-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318195; GFX10-NEXT:    v_max_f32_e32 v2, v2, v418196; GFX10-NEXT:    v_max_f32_e32 v6, v6, v518197; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 118198; GFX10-NEXT:    v_bfe_u32 v8, v6, 16, 118199; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v218200; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v618201; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618202; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18203; GFX10-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18204; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v2, v218205; GFX10-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18206; GFX10-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s418207; GFX10-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218208; GFX10-NEXT:    s_waitcnt_vscnt null, 0x018209; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc18210; GFX10-NEXT:    s_waitcnt vmcnt(0)18211; GFX10-NEXT:    buffer_gl1_inv18212; GFX10-NEXT:    buffer_gl0_inv18213; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318214; GFX10-NEXT:    v_mov_b32_e32 v3, v218215; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s518216; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s518217; GFX10-NEXT:    s_cbranch_execnz .LBB58_118218; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end18219; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s518220; GFX10-NEXT:    s_setpc_b64 s[30:31]18221;18222; GFX90A-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:18223; GFX90A:       ; %bb.0:18224; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18225; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:204418226; GFX90A-NEXT:    s_mov_b64 s[6:7], 018227; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v218228; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff18229; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218230; GFX90A-NEXT:    s_mov_b32 s9, 0x706030218231; GFX90A-NEXT:  .LBB58_1: ; %atomicrmw.start18232; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=118233; GFX90A-NEXT:    s_waitcnt vmcnt(0)18234; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v318235; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318236; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v418237; GFX90A-NEXT:    v_max_f32_e32 v6, v6, v518238; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 118239; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 118240; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v218241; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v618242; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s818243; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s818244; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618245; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v218246; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]18247; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18248; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s918249; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc18250; GFX90A-NEXT:    s_waitcnt vmcnt(0)18251; GFX90A-NEXT:    buffer_wbinvl118252; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318253; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]18254; GFX90A-NEXT:    v_mov_b32_e32 v3, v218255; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]18256; GFX90A-NEXT:    s_cbranch_execnz .LBB58_118257; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end18258; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]18259; GFX90A-NEXT:    s_setpc_b64 s[30:31]18260;18261; GFX908-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:18262; GFX908:       ; %bb.0:18263; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18264; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:204418265; GFX908-NEXT:    s_mov_b64 s[6:7], 018266; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v218267; GFX908-NEXT:    s_movk_i32 s8, 0x7fff18268; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218269; GFX908-NEXT:    s_mov_b32 s9, 0x706030218270; GFX908-NEXT:  .LBB58_1: ; %atomicrmw.start18271; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=118272; GFX908-NEXT:    s_waitcnt vmcnt(0)18273; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v318274; GFX908-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318275; GFX908-NEXT:    v_max_f32_e32 v2, v2, v418276; GFX908-NEXT:    v_max_f32_e32 v6, v6, v518277; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 118278; GFX908-NEXT:    v_bfe_u32 v9, v6, 16, 118279; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v218280; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v618281; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s818282; GFX908-NEXT:    v_add3_u32 v9, v9, v6, s818283; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618284; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v218285; GFX908-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]18286; GFX908-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18287; GFX908-NEXT:    v_perm_b32 v2, v6, v2, s918288; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc18289; GFX908-NEXT:    s_waitcnt vmcnt(0)18290; GFX908-NEXT:    buffer_wbinvl118291; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318292; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]18293; GFX908-NEXT:    v_mov_b32_e32 v3, v218294; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]18295; GFX908-NEXT:    s_cbranch_execnz .LBB58_118296; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end18297; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]18298; GFX908-NEXT:    s_setpc_b64 s[30:31]18299;18300; GFX8-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:18301; GFX8:       ; %bb.0:18302; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18303; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v018304; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc18305; GFX8-NEXT:    flat_load_dword v3, v[0:1]18306; GFX8-NEXT:    s_mov_b64 s[6:7], 018307; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v218308; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218309; GFX8-NEXT:  .LBB58_1: ; %atomicrmw.start18310; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=118311; GFX8-NEXT:    s_waitcnt vmcnt(0)18312; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v318313; GFX8-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318314; GFX8-NEXT:    v_max_f32_e32 v2, v2, v418315; GFX8-NEXT:    v_max_f32_e32 v6, v6, v518316; GFX8-NEXT:    v_bfe_u32 v7, v2, 16, 118317; GFX8-NEXT:    v_bfe_u32 v9, v6, 16, 118318; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v218319; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v618320; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v718321; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v918322; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v618323; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618324; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v218325; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v218326; GFX8-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18327; GFX8-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]18328; GFX8-NEXT:    v_lshrrev_b32_e32 v6, 16, v618329; GFX8-NEXT:    v_alignbit_b32 v2, v6, v2, 1618330; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc18331; GFX8-NEXT:    s_waitcnt vmcnt(0)18332; GFX8-NEXT:    buffer_wbinvl118333; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318334; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]18335; GFX8-NEXT:    v_mov_b32_e32 v3, v218336; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]18337; GFX8-NEXT:    s_cbranch_execnz .LBB58_118338; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end18339; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]18340; GFX8-NEXT:    s_setpc_b64 s[30:31]18341;18342; GFX7-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:18343; GFX7:       ; %bb.0:18344; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18345; GFX7-NEXT:    s_mov_b32 s6, 018346; GFX7-NEXT:    s_mov_b32 s7, 0xf00018347; GFX7-NEXT:    s_mov_b32 s4, s618348; GFX7-NEXT:    s_mov_b32 s5, s618349; GFX7-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr64 offset:204418350; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v318351; GFX7-NEXT:    v_mul_f32_e32 v6, 1.0, v218352; GFX7-NEXT:    s_mov_b64 s[8:9], 018353; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v318354; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v618355; GFX7-NEXT:    s_waitcnt vmcnt(0)18356; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v418357; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v418358; GFX7-NEXT:  .LBB58_1: ; %atomicrmw.start18359; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=118360; GFX7-NEXT:    v_mul_f32_e32 v5, 1.0, v518361; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v418362; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v518363; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v418364; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v518365; GFX7-NEXT:    v_max_f32_e32 v6, v6, v218366; GFX7-NEXT:    v_max_f32_e32 v7, v7, v318367; GFX7-NEXT:    v_alignbit_b32 v5, v5, v4, 1618368; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v618369; GFX7-NEXT:    v_alignbit_b32 v4, v4, v7, 1618370; GFX7-NEXT:    v_mov_b32_e32 v7, v518371; GFX7-NEXT:    v_mov_b32_e32 v6, v418372; GFX7-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 offset:2044 glc18373; GFX7-NEXT:    s_waitcnt vmcnt(0)18374; GFX7-NEXT:    buffer_wbinvl118375; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v518376; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v618377; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]18378; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v618379; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]18380; GFX7-NEXT:    s_cbranch_execnz .LBB58_118381; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end18382; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]18383; GFX7-NEXT:    s_setpc_b64 s[30:31]18384;18385; GFX6-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:18386; GFX6:       ; %bb.0:18387; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18388; GFX6-NEXT:    s_mov_b32 s6, 018389; GFX6-NEXT:    s_mov_b32 s7, 0xf00018390; GFX6-NEXT:    s_mov_b32 s4, s618391; GFX6-NEXT:    s_mov_b32 s5, s618392; GFX6-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr64 offset:204418393; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v318394; GFX6-NEXT:    v_mul_f32_e32 v6, 1.0, v218395; GFX6-NEXT:    s_mov_b64 s[8:9], 018396; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v318397; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v618398; GFX6-NEXT:    s_waitcnt vmcnt(0)18399; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v418400; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v418401; GFX6-NEXT:  .LBB58_1: ; %atomicrmw.start18402; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=118403; GFX6-NEXT:    v_mul_f32_e32 v5, 1.0, v518404; GFX6-NEXT:    v_mul_f32_e32 v4, 1.0, v418405; GFX6-NEXT:    s_waitcnt expcnt(0)18406; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v518407; GFX6-NEXT:    v_and_b32_e32 v7, 0xffff0000, v418408; GFX6-NEXT:    v_lshrrev_b32_e32 v5, 16, v518409; GFX6-NEXT:    v_max_f32_e32 v6, v6, v218410; GFX6-NEXT:    v_max_f32_e32 v7, v7, v318411; GFX6-NEXT:    v_alignbit_b32 v5, v5, v4, 1618412; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v618413; GFX6-NEXT:    v_alignbit_b32 v4, v4, v7, 1618414; GFX6-NEXT:    v_mov_b32_e32 v7, v518415; GFX6-NEXT:    v_mov_b32_e32 v6, v418416; GFX6-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 offset:2044 glc18417; GFX6-NEXT:    s_waitcnt vmcnt(0)18418; GFX6-NEXT:    buffer_wbinvl118419; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v518420; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v618421; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]18422; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v618423; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]18424; GFX6-NEXT:    s_cbranch_execnz .LBB58_118425; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end18426; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]18427; GFX6-NEXT:    s_waitcnt expcnt(0)18428; GFX6-NEXT:    s_setpc_b64 s[30:31]18429  %gep = getelementptr <2 x bfloat>, ptr addrspace(1) %ptr, i64 51118430  %unused = atomicrmw fmax ptr addrspace(1) %gep, <2 x bfloat> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !018431  ret void18432}18433 18434define void @global_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, <2 x bfloat> %val) #0 {18435; GFX12-TRUE16-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:18436; GFX12-TRUE16:       ; %bb.0:18437; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x018438; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x018439; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x018440; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x018441; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x018442; GFX12-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:-204818443; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v218444; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v218445; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 018446; GFX12-TRUE16-NEXT:  .LBB59_1: ; %atomicrmw.start18447; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=118448; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x018449; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318450; GFX12-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318451; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18452; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v2, v2, v518453; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v6, v6, v418454; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18455; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 118456; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 118457; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218458; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v218459; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618460; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18461; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18462; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)18463; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_3)18464; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo18465; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618466; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)18467; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo18468; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h18469; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x018470; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV18471; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x018472; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV18473; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318474; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v218475; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18476; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s018477; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18478; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s018479; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB59_118480; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end18481; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s018482; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x018483; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]18484;18485; GFX12-FAKE16-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:18486; GFX12-FAKE16:       ; %bb.0:18487; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x018488; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x018489; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x018490; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x018491; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x018492; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:-204818493; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v218494; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218495; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 018496; GFX12-FAKE16-NEXT:  .LBB59_1: ; %atomicrmw.start18497; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=118498; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x018499; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318500; GFX12-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318501; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18502; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v2, v2, v418503; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v6, v6, v518504; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18505; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 118506; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 118507; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218508; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618509; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618510; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18511; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18512; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v218513; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)18514; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)18515; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18516; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)18517; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s018518; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)18519; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218520; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x018521; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV18522; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x018523; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV18524; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318525; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v218526; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18527; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s118528; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18529; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s118530; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB59_118531; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end18532; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s118533; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x018534; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]18535;18536; GFX942-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:18537; GFX942:       ; %bb.0:18538; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18539; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:-204818540; GFX942-NEXT:    s_mov_b64 s[2:3], 018541; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v218542; GFX942-NEXT:    s_movk_i32 s4, 0x7fff18543; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218544; GFX942-NEXT:    s_mov_b32 s5, 0x706030218545; GFX942-NEXT:  .LBB59_1: ; %atomicrmw.start18546; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=118547; GFX942-NEXT:    s_waitcnt vmcnt(0)18548; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v318549; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318550; GFX942-NEXT:    v_max_f32_e32 v2, v2, v418551; GFX942-NEXT:    v_max_f32_e32 v6, v6, v518552; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 118553; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 118554; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v218555; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v618556; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s418557; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s418558; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618559; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v218560; GFX942-NEXT:    s_nop 018561; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18562; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]18563; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s518564; GFX942-NEXT:    buffer_wbl2 sc118565; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 sc018566; GFX942-NEXT:    s_waitcnt vmcnt(0)18567; GFX942-NEXT:    buffer_inv sc118568; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318569; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]18570; GFX942-NEXT:    v_mov_b32_e32 v3, v218571; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]18572; GFX942-NEXT:    s_cbranch_execnz .LBB59_118573; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end18574; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]18575; GFX942-NEXT:    s_setpc_b64 s[30:31]18576;18577; GFX11-TRUE16-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:18578; GFX11-TRUE16:       ; %bb.0:18579; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18580; GFX11-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:-204818581; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v218582; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v218583; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 018584; GFX11-TRUE16-NEXT:    .p2align 618585; GFX11-TRUE16-NEXT:  .LBB59_1: ; %atomicrmw.start18586; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=118587; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)18588; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318589; GFX11-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318590; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18591; GFX11-TRUE16-NEXT:    v_max_f32_e32 v2, v2, v518592; GFX11-TRUE16-NEXT:    v_max_f32_e32 v6, v6, v418593; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18594; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 118595; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 118596; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218597; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v218598; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618599; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18600; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18601; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)18602; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo18603; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618604; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo18605; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)18606; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h18607; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x018608; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:-2048 glc18609; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)18610; GFX11-TRUE16-NEXT:    buffer_gl1_inv18611; GFX11-TRUE16-NEXT:    buffer_gl0_inv18612; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318613; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v218614; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s018615; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)18616; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s018617; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB59_118618; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end18619; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s018620; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]18621;18622; GFX11-FAKE16-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:18623; GFX11-FAKE16:       ; %bb.0:18624; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18625; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:-204818626; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v218627; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218628; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 018629; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x118630; GFX11-FAKE16-NEXT:    .p2align 618631; GFX11-FAKE16-NEXT:  .LBB59_1: ; %atomicrmw.start18632; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=118633; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)18634; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318635; GFX11-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318636; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18637; GFX11-FAKE16-NEXT:    v_max_f32_e32 v2, v2, v418638; GFX11-FAKE16-NEXT:    v_max_f32_e32 v6, v6, v518639; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18640; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 118641; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 118642; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218643; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618644; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618645; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18646; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18647; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v218648; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18649; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18650; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s018651; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)18652; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218653; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x018654; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:-2048 glc18655; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)18656; GFX11-FAKE16-NEXT:    buffer_gl1_inv18657; GFX11-FAKE16-NEXT:    buffer_gl0_inv18658; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318659; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v218660; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s118661; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)18662; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s118663; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB59_118664; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end18665; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x218666; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s118667; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]18668;18669; GFX10-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:18670; GFX10:       ; %bb.0:18671; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18672; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:-204818673; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v218674; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218675; GFX10-NEXT:    s_mov_b32 s5, 018676; GFX10-NEXT:  .LBB59_1: ; %atomicrmw.start18677; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=118678; GFX10-NEXT:    s_waitcnt vmcnt(0)18679; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v318680; GFX10-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318681; GFX10-NEXT:    v_max_f32_e32 v2, v2, v418682; GFX10-NEXT:    v_max_f32_e32 v6, v6, v518683; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 118684; GFX10-NEXT:    v_bfe_u32 v8, v6, 16, 118685; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v218686; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v618687; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618688; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18689; GFX10-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18690; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v2, v218691; GFX10-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18692; GFX10-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s418693; GFX10-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218694; GFX10-NEXT:    s_waitcnt_vscnt null, 0x018695; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 glc18696; GFX10-NEXT:    s_waitcnt vmcnt(0)18697; GFX10-NEXT:    buffer_gl1_inv18698; GFX10-NEXT:    buffer_gl0_inv18699; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318700; GFX10-NEXT:    v_mov_b32_e32 v3, v218701; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s518702; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s518703; GFX10-NEXT:    s_cbranch_execnz .LBB59_118704; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end18705; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s518706; GFX10-NEXT:    s_setpc_b64 s[30:31]18707;18708; GFX90A-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:18709; GFX90A:       ; %bb.0:18710; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18711; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:-204818712; GFX90A-NEXT:    s_mov_b64 s[6:7], 018713; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v218714; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff18715; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218716; GFX90A-NEXT:    s_mov_b32 s9, 0x706030218717; GFX90A-NEXT:  .LBB59_1: ; %atomicrmw.start18718; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=118719; GFX90A-NEXT:    s_waitcnt vmcnt(0)18720; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v318721; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318722; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v418723; GFX90A-NEXT:    v_max_f32_e32 v6, v6, v518724; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 118725; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 118726; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v218727; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v618728; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s818729; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s818730; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618731; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v218732; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]18733; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18734; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s918735; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 glc18736; GFX90A-NEXT:    s_waitcnt vmcnt(0)18737; GFX90A-NEXT:    buffer_wbinvl118738; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318739; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]18740; GFX90A-NEXT:    v_mov_b32_e32 v3, v218741; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]18742; GFX90A-NEXT:    s_cbranch_execnz .LBB59_118743; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end18744; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]18745; GFX90A-NEXT:    s_setpc_b64 s[30:31]18746;18747; GFX908-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:18748; GFX908:       ; %bb.0:18749; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18750; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:-204818751; GFX908-NEXT:    s_mov_b64 s[6:7], 018752; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v218753; GFX908-NEXT:    s_movk_i32 s8, 0x7fff18754; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218755; GFX908-NEXT:    s_mov_b32 s9, 0x706030218756; GFX908-NEXT:  .LBB59_1: ; %atomicrmw.start18757; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=118758; GFX908-NEXT:    s_waitcnt vmcnt(0)18759; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v318760; GFX908-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318761; GFX908-NEXT:    v_max_f32_e32 v2, v2, v418762; GFX908-NEXT:    v_max_f32_e32 v6, v6, v518763; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 118764; GFX908-NEXT:    v_bfe_u32 v9, v6, 16, 118765; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v218766; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v618767; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s818768; GFX908-NEXT:    v_add3_u32 v9, v9, v6, s818769; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618770; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v218771; GFX908-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]18772; GFX908-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18773; GFX908-NEXT:    v_perm_b32 v2, v6, v2, s918774; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:-2048 glc18775; GFX908-NEXT:    s_waitcnt vmcnt(0)18776; GFX908-NEXT:    buffer_wbinvl118777; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318778; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]18779; GFX908-NEXT:    v_mov_b32_e32 v3, v218780; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]18781; GFX908-NEXT:    s_cbranch_execnz .LBB59_118782; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end18783; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]18784; GFX908-NEXT:    s_setpc_b64 s[30:31]18785;18786; GFX8-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:18787; GFX8:       ; %bb.0:18788; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18789; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffff800, v018790; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc18791; GFX8-NEXT:    flat_load_dword v3, v[0:1]18792; GFX8-NEXT:    s_mov_b64 s[6:7], 018793; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v218794; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218795; GFX8-NEXT:  .LBB59_1: ; %atomicrmw.start18796; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=118797; GFX8-NEXT:    s_waitcnt vmcnt(0)18798; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v318799; GFX8-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318800; GFX8-NEXT:    v_max_f32_e32 v2, v2, v418801; GFX8-NEXT:    v_max_f32_e32 v6, v6, v518802; GFX8-NEXT:    v_bfe_u32 v7, v2, 16, 118803; GFX8-NEXT:    v_bfe_u32 v9, v6, 16, 118804; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v218805; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v618806; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v718807; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v918808; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v618809; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618810; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v218811; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v218812; GFX8-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18813; GFX8-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]18814; GFX8-NEXT:    v_lshrrev_b32_e32 v6, 16, v618815; GFX8-NEXT:    v_alignbit_b32 v2, v6, v2, 1618816; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc18817; GFX8-NEXT:    s_waitcnt vmcnt(0)18818; GFX8-NEXT:    buffer_wbinvl118819; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318820; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]18821; GFX8-NEXT:    v_mov_b32_e32 v3, v218822; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]18823; GFX8-NEXT:    s_cbranch_execnz .LBB59_118824; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end18825; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]18826; GFX8-NEXT:    s_setpc_b64 s[30:31]18827;18828; GFX7-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:18829; GFX7:       ; %bb.0:18830; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18831; GFX7-NEXT:    s_movk_i32 s4, 0xf80018832; GFX7-NEXT:    s_mov_b32 s5, -118833; GFX7-NEXT:    s_mov_b32 s7, 0xf00018834; GFX7-NEXT:    s_mov_b32 s6, 018835; GFX7-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr6418836; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v018837; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v318838; GFX7-NEXT:    v_mul_f32_e32 v5, 1.0, v218839; GFX7-NEXT:    s_mov_b64 s[8:9], 018840; GFX7-NEXT:    s_mov_b32 s4, s618841; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc18842; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v318843; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v518844; GFX7-NEXT:    s_mov_b32 s5, s618845; GFX7-NEXT:    s_waitcnt vmcnt(0)18846; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v418847; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v418848; GFX7-NEXT:  .LBB59_1: ; %atomicrmw.start18849; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=118850; GFX7-NEXT:    v_mul_f32_e32 v5, 1.0, v518851; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v418852; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v518853; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v418854; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v518855; GFX7-NEXT:    v_max_f32_e32 v6, v6, v218856; GFX7-NEXT:    v_max_f32_e32 v7, v7, v318857; GFX7-NEXT:    v_alignbit_b32 v5, v5, v4, 1618858; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v618859; GFX7-NEXT:    v_alignbit_b32 v4, v4, v7, 1618860; GFX7-NEXT:    v_mov_b32_e32 v7, v518861; GFX7-NEXT:    v_mov_b32_e32 v6, v418862; GFX7-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 glc18863; GFX7-NEXT:    s_waitcnt vmcnt(0)18864; GFX7-NEXT:    buffer_wbinvl118865; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v518866; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v618867; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]18868; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v618869; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]18870; GFX7-NEXT:    s_cbranch_execnz .LBB59_118871; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end18872; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]18873; GFX7-NEXT:    s_setpc_b64 s[30:31]18874;18875; GFX6-LABEL: global_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:18876; GFX6:       ; %bb.0:18877; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18878; GFX6-NEXT:    s_movk_i32 s4, 0xf80018879; GFX6-NEXT:    s_mov_b32 s5, -118880; GFX6-NEXT:    s_mov_b32 s7, 0xf00018881; GFX6-NEXT:    s_mov_b32 s6, 018882; GFX6-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr6418883; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v018884; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v318885; GFX6-NEXT:    v_mul_f32_e32 v5, 1.0, v218886; GFX6-NEXT:    s_mov_b64 s[8:9], 018887; GFX6-NEXT:    s_mov_b32 s4, s618888; GFX6-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc18889; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v318890; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v518891; GFX6-NEXT:    s_mov_b32 s5, s618892; GFX6-NEXT:    s_waitcnt vmcnt(0)18893; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v418894; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v418895; GFX6-NEXT:  .LBB59_1: ; %atomicrmw.start18896; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=118897; GFX6-NEXT:    v_mul_f32_e32 v5, 1.0, v518898; GFX6-NEXT:    v_mul_f32_e32 v4, 1.0, v418899; GFX6-NEXT:    s_waitcnt expcnt(0)18900; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v518901; GFX6-NEXT:    v_and_b32_e32 v7, 0xffff0000, v418902; GFX6-NEXT:    v_lshrrev_b32_e32 v5, 16, v518903; GFX6-NEXT:    v_max_f32_e32 v6, v6, v218904; GFX6-NEXT:    v_max_f32_e32 v7, v7, v318905; GFX6-NEXT:    v_alignbit_b32 v5, v5, v4, 1618906; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v618907; GFX6-NEXT:    v_alignbit_b32 v4, v4, v7, 1618908; GFX6-NEXT:    v_mov_b32_e32 v7, v518909; GFX6-NEXT:    v_mov_b32_e32 v6, v418910; GFX6-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 glc18911; GFX6-NEXT:    s_waitcnt vmcnt(0)18912; GFX6-NEXT:    buffer_wbinvl118913; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v518914; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v618915; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]18916; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v618917; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]18918; GFX6-NEXT:    s_cbranch_execnz .LBB59_118919; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end18920; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]18921; GFX6-NEXT:    s_waitcnt expcnt(0)18922; GFX6-NEXT:    s_setpc_b64 s[30:31]18923  %gep = getelementptr <2 x bfloat>, ptr addrspace(1) %ptr, i64 -51218924  %unused = atomicrmw fmax ptr addrspace(1) %gep, <2 x bfloat> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !018925  ret void18926}18927 18928define <2 x bfloat> @global_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, <2 x bfloat> %val) #0 {18929; GFX12-TRUE16-LABEL: global_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:18930; GFX12-TRUE16:       ; %bb.0:18931; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x018932; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x018933; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x018934; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x018935; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x018936; GFX12-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204418937; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v218938; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v218939; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 018940; GFX12-TRUE16-NEXT:  .LBB60_1: ; %atomicrmw.start18941; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=118942; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x018943; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v318944; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18945; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v618946; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v5, v5, v418947; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v618948; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18949; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 118950; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v3, v3, v218951; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v518952; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)18953; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff18954; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 118955; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v318956; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v318957; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)18958; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff18959; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)18960; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo18961; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v518962; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)18963; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo18964; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)18965; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h18966; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS18967; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x018968; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS18969; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x018970; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS18971; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v618972; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18973; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s018974; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18975; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s018976; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB60_118977; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end18978; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s018979; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v318980; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x018981; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]18982;18983; GFX12-FAKE16-LABEL: global_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:18984; GFX12-FAKE16:       ; %bb.0:18985; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x018986; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x018987; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x018988; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x018989; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x018990; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204418991; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v218992; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v218993; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 018994; GFX12-FAKE16-NEXT:  .LBB60_1: ; %atomicrmw.start18995; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=118996; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x018997; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v318998; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18999; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619000; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v5, v5, v219001; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v619002; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19003; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 119004; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v3, v3, v419005; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v519006; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v519007; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)19008; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff19009; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 119010; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v319011; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v319012; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)19013; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo19014; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff19015; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)19016; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)19017; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s019018; GFX12-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030219019; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS19020; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x019021; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS19022; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x019023; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS19024; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v619025; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)19026; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s119027; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)19028; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s119029; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB60_119030; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end19031; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s119032; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v319033; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x019034; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]19035;19036; GFX942-LABEL: global_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19037; GFX942:       ; %bb.0:19038; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19039; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:204419040; GFX942-NEXT:    s_mov_b64 s[2:3], 019041; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v219042; GFX942-NEXT:    s_movk_i32 s4, 0x7fff19043; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219044; GFX942-NEXT:    s_mov_b32 s5, 0x706030219045; GFX942-NEXT:  .LBB60_1: ; %atomicrmw.start19046; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=119047; GFX942-NEXT:    s_waitcnt vmcnt(0)19048; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v319049; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319050; GFX942-NEXT:    v_max_f32_e32 v2, v2, v419051; GFX942-NEXT:    v_max_f32_e32 v6, v6, v519052; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 119053; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 119054; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v219055; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v619056; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s419057; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s419058; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v619059; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v219060; GFX942-NEXT:    s_nop 019061; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc19062; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]19063; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s519064; GFX942-NEXT:    buffer_wbl2 sc0 sc119065; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 sc0 sc119066; GFX942-NEXT:    s_waitcnt vmcnt(0)19067; GFX942-NEXT:    buffer_inv sc0 sc119068; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v319069; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]19070; GFX942-NEXT:    v_mov_b32_e32 v3, v219071; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]19072; GFX942-NEXT:    s_cbranch_execnz .LBB60_119073; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end19074; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]19075; GFX942-NEXT:    v_mov_b32_e32 v0, v219076; GFX942-NEXT:    s_setpc_b64 s[30:31]19077;19078; GFX11-TRUE16-LABEL: global_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19079; GFX11-TRUE16:       ; %bb.0:19080; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19081; GFX11-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204419082; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v219083; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v219084; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 019085; GFX11-TRUE16-NEXT:    .p2align 619086; GFX11-TRUE16-NEXT:  .LBB60_1: ; %atomicrmw.start19087; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=119088; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)19089; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v319090; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)19091; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619092; GFX11-TRUE16-NEXT:    v_max_f32_e32 v5, v5, v419093; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v619094; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19095; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 119096; GFX11-TRUE16-NEXT:    v_max_f32_e32 v3, v3, v219097; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v519098; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)19099; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff19100; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 119101; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v319102; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v319103; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)19104; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff19105; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo19106; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v519107; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo19108; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)19109; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h19110; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x019111; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:2044 glc19112; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)19113; GFX11-TRUE16-NEXT:    buffer_gl1_inv19114; GFX11-TRUE16-NEXT:    buffer_gl0_inv19115; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v619116; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s019117; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)19118; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s019119; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB60_119120; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end19121; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s019122; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, v319123; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]19124;19125; GFX11-FAKE16-LABEL: global_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19126; GFX11-FAKE16:       ; %bb.0:19127; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19128; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204419129; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v219130; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v219131; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 019132; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x119133; GFX11-FAKE16-NEXT:    .p2align 619134; GFX11-FAKE16-NEXT:  .LBB60_1: ; %atomicrmw.start19135; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=119136; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)19137; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v319138; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)19139; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619140; GFX11-FAKE16-NEXT:    v_max_f32_e32 v5, v5, v219141; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v619142; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19143; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 119144; GFX11-FAKE16-NEXT:    v_max_f32_e32 v3, v3, v419145; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v519146; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v519147; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)19148; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff19149; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 119150; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v319151; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v319152; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)19153; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo19154; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff19155; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)19156; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s019157; GFX11-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030219158; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x019159; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v3, v[0:1], v[5:6], off offset:2044 glc19160; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)19161; GFX11-FAKE16-NEXT:    buffer_gl1_inv19162; GFX11-FAKE16-NEXT:    buffer_gl0_inv19163; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v619164; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s119165; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)19166; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s119167; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB60_119168; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end19169; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x219170; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s119171; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v319172; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]19173;19174; GFX10-LABEL: global_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19175; GFX10:       ; %bb.0:19176; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19177; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:204419178; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v219179; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff0000, v219180; GFX10-NEXT:    s_mov_b32 s5, 019181; GFX10-NEXT:  .LBB60_1: ; %atomicrmw.start19182; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=119183; GFX10-NEXT:    s_waitcnt vmcnt(0)19184; GFX10-NEXT:    v_mov_b32_e32 v6, v319185; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 16, v619186; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619187; GFX10-NEXT:    v_max_f32_e32 v3, v3, v419188; GFX10-NEXT:    v_max_f32_e32 v5, v5, v219189; GFX10-NEXT:    v_bfe_u32 v7, v3, 16, 119190; GFX10-NEXT:    v_bfe_u32 v8, v5, 16, 119191; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v319192; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v519193; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v519194; GFX10-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff19195; GFX10-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff19196; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v3, v319197; GFX10-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo19198; GFX10-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s419199; GFX10-NEXT:    v_perm_b32 v5, v5, v3, 0x706030219200; GFX10-NEXT:    s_waitcnt_vscnt null, 0x019201; GFX10-NEXT:    global_atomic_cmpswap v3, v[0:1], v[5:6], off offset:2044 glc19202; GFX10-NEXT:    s_waitcnt vmcnt(0)19203; GFX10-NEXT:    buffer_gl1_inv19204; GFX10-NEXT:    buffer_gl0_inv19205; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v619206; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s519207; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s519208; GFX10-NEXT:    s_cbranch_execnz .LBB60_119209; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end19210; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s519211; GFX10-NEXT:    v_mov_b32_e32 v0, v319212; GFX10-NEXT:    s_setpc_b64 s[30:31]19213;19214; GFX90A-LABEL: global_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19215; GFX90A:       ; %bb.0:19216; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19217; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:204419218; GFX90A-NEXT:    s_mov_b64 s[6:7], 019219; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v219220; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff19221; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219222; GFX90A-NEXT:    s_mov_b32 s9, 0x706030219223; GFX90A-NEXT:  .LBB60_1: ; %atomicrmw.start19224; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=119225; GFX90A-NEXT:    s_waitcnt vmcnt(0)19226; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v319227; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319228; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v419229; GFX90A-NEXT:    v_max_f32_e32 v6, v6, v519230; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 119231; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 119232; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v219233; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v619234; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s819235; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s819236; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v619237; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v219238; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]19239; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc19240; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s919241; GFX90A-NEXT:    buffer_wbl219242; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc19243; GFX90A-NEXT:    s_waitcnt vmcnt(0)19244; GFX90A-NEXT:    buffer_invl219245; GFX90A-NEXT:    buffer_wbinvl119246; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v319247; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]19248; GFX90A-NEXT:    v_mov_b32_e32 v3, v219249; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]19250; GFX90A-NEXT:    s_cbranch_execnz .LBB60_119251; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end19252; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]19253; GFX90A-NEXT:    v_mov_b32_e32 v0, v219254; GFX90A-NEXT:    s_setpc_b64 s[30:31]19255;19256; GFX908-LABEL: global_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19257; GFX908:       ; %bb.0:19258; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19259; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:204419260; GFX908-NEXT:    s_mov_b64 s[6:7], 019261; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v219262; GFX908-NEXT:    s_movk_i32 s8, 0x7fff19263; GFX908-NEXT:    v_and_b32_e32 v2, 0xffff0000, v219264; GFX908-NEXT:    s_mov_b32 s9, 0x706030219265; GFX908-NEXT:  .LBB60_1: ; %atomicrmw.start19266; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=119267; GFX908-NEXT:    s_waitcnt vmcnt(0)19268; GFX908-NEXT:    v_mov_b32_e32 v6, v319269; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v619270; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619271; GFX908-NEXT:    v_max_f32_e32 v3, v3, v419272; GFX908-NEXT:    v_max_f32_e32 v5, v5, v219273; GFX908-NEXT:    v_bfe_u32 v7, v3, 16, 119274; GFX908-NEXT:    v_bfe_u32 v9, v5, 16, 119275; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v319276; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v519277; GFX908-NEXT:    v_add3_u32 v7, v7, v3, s819278; GFX908-NEXT:    v_add3_u32 v9, v9, v5, s819279; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v519280; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v3, v319281; GFX908-NEXT:    v_cndmask_b32_e64 v3, v7, v8, s[4:5]19282; GFX908-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc19283; GFX908-NEXT:    v_perm_b32 v5, v5, v3, s919284; GFX908-NEXT:    global_atomic_cmpswap v3, v[0:1], v[5:6], off offset:2044 glc19285; GFX908-NEXT:    s_waitcnt vmcnt(0)19286; GFX908-NEXT:    buffer_wbinvl119287; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v619288; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]19289; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]19290; GFX908-NEXT:    s_cbranch_execnz .LBB60_119291; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end19292; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]19293; GFX908-NEXT:    v_mov_b32_e32 v0, v319294; GFX908-NEXT:    s_setpc_b64 s[30:31]19295;19296; GFX8-LABEL: global_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19297; GFX8:       ; %bb.0:19298; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19299; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v019300; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc19301; GFX8-NEXT:    flat_load_dword v0, v[3:4]19302; GFX8-NEXT:    s_mov_b64 s[6:7], 019303; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 16, v219304; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v219305; GFX8-NEXT:  .LBB60_1: ; %atomicrmw.start19306; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=119307; GFX8-NEXT:    s_waitcnt vmcnt(0)19308; GFX8-NEXT:    v_mov_b32_e32 v6, v019309; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 16, v619310; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619311; GFX8-NEXT:    v_max_f32_e32 v0, v0, v119312; GFX8-NEXT:    v_max_f32_e32 v5, v5, v219313; GFX8-NEXT:    v_bfe_u32 v7, v0, 16, 119314; GFX8-NEXT:    v_bfe_u32 v9, v5, 16, 119315; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v019316; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v519317; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v719318; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v919319; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v519320; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v519321; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v019322; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v0, v019323; GFX8-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc19324; GFX8-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[4:5]19325; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v519326; GFX8-NEXT:    v_alignbit_b32 v5, v5, v0, 1619327; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc19328; GFX8-NEXT:    s_waitcnt vmcnt(0)19329; GFX8-NEXT:    buffer_wbinvl119330; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v619331; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]19332; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]19333; GFX8-NEXT:    s_cbranch_execnz .LBB60_119334; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end19335; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]19336; GFX8-NEXT:    s_setpc_b64 s[30:31]19337;19338; GFX7-LABEL: global_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19339; GFX7:       ; %bb.0:19340; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19341; GFX7-NEXT:    s_mov_b32 s6, 019342; GFX7-NEXT:    s_mov_b32 s7, 0xf00019343; GFX7-NEXT:    s_mov_b32 s4, s619344; GFX7-NEXT:    s_mov_b32 s5, s619345; GFX7-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204419346; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v319347; GFX7-NEXT:    v_mul_f32_e32 v6, 1.0, v219348; GFX7-NEXT:    s_mov_b64 s[8:9], 019349; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v319350; GFX7-NEXT:    s_waitcnt vmcnt(0)19351; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v519352; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v519353; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619354; GFX7-NEXT:  .LBB60_1: ; %atomicrmw.start19355; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=119356; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v219357; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v319358; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v219359; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v319360; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v219361; GFX7-NEXT:    v_max_f32_e32 v6, v6, v419362; GFX7-NEXT:    v_max_f32_e32 v7, v7, v519363; GFX7-NEXT:    v_alignbit_b32 v3, v2, v3, 1619364; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v619365; GFX7-NEXT:    v_alignbit_b32 v2, v2, v7, 1619366; GFX7-NEXT:    v_mov_b32_e32 v7, v319367; GFX7-NEXT:    v_mov_b32_e32 v6, v219368; GFX7-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 offset:2044 glc19369; GFX7-NEXT:    s_waitcnt vmcnt(0)19370; GFX7-NEXT:    buffer_wbinvl119371; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v319372; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v619373; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]19374; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v619375; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]19376; GFX7-NEXT:    s_cbranch_execnz .LBB60_119377; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end19378; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]19379; GFX7-NEXT:    v_mov_b32_e32 v0, v319380; GFX7-NEXT:    v_mov_b32_e32 v1, v219381; GFX7-NEXT:    s_setpc_b64 s[30:31]19382;19383; GFX6-LABEL: global_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19384; GFX6:       ; %bb.0:19385; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19386; GFX6-NEXT:    s_mov_b32 s6, 019387; GFX6-NEXT:    s_mov_b32 s7, 0xf00019388; GFX6-NEXT:    s_mov_b32 s4, s619389; GFX6-NEXT:    s_mov_b32 s5, s619390; GFX6-NEXT:    buffer_load_dword v5, v[0:1], s[4:7], 0 addr64 offset:204419391; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v319392; GFX6-NEXT:    v_mul_f32_e32 v6, 1.0, v219393; GFX6-NEXT:    s_mov_b64 s[8:9], 019394; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v319395; GFX6-NEXT:    s_waitcnt vmcnt(0)19396; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v519397; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v519398; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619399; GFX6-NEXT:  .LBB60_1: ; %atomicrmw.start19400; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=119401; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v219402; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v319403; GFX6-NEXT:    s_waitcnt expcnt(0)19404; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v219405; GFX6-NEXT:    v_and_b32_e32 v7, 0xffff0000, v319406; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v219407; GFX6-NEXT:    v_max_f32_e32 v6, v6, v419408; GFX6-NEXT:    v_max_f32_e32 v7, v7, v519409; GFX6-NEXT:    v_alignbit_b32 v3, v2, v3, 1619410; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v619411; GFX6-NEXT:    v_alignbit_b32 v2, v2, v7, 1619412; GFX6-NEXT:    v_mov_b32_e32 v7, v319413; GFX6-NEXT:    v_mov_b32_e32 v6, v219414; GFX6-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 offset:2044 glc19415; GFX6-NEXT:    s_waitcnt vmcnt(0)19416; GFX6-NEXT:    buffer_wbinvl119417; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v319418; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v619419; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]19420; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v619421; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]19422; GFX6-NEXT:    s_cbranch_execnz .LBB60_119423; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end19424; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]19425; GFX6-NEXT:    v_mov_b32_e32 v0, v319426; GFX6-NEXT:    v_mov_b32_e32 v1, v219427; GFX6-NEXT:    s_waitcnt expcnt(0)19428; GFX6-NEXT:    s_setpc_b64 s[30:31]19429  %gep = getelementptr <2 x bfloat>, ptr addrspace(1) %ptr, i64 51119430  %result = atomicrmw fmax ptr addrspace(1) %gep, <2 x bfloat> %val seq_cst, !amdgpu.no.fine.grained.memory !019431  ret <2 x bfloat> %result19432}19433 19434define void @global_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr addrspace(1) %ptr, <2 x bfloat> %val) #0 {19435; GFX12-TRUE16-LABEL: global_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19436; GFX12-TRUE16:       ; %bb.0:19437; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x019438; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x019439; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x019440; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x019441; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x019442; GFX12-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204419443; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v219444; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v219445; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 019446; GFX12-TRUE16-NEXT:  .LBB61_1: ; %atomicrmw.start19447; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=119448; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x019449; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v319450; GFX12-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319451; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19452; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v2, v2, v519453; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v6, v6, v419454; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19455; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 119456; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 119457; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v219458; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v219459; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v619460; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff19461; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff19462; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)19463; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_3)19464; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo19465; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v619466; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)19467; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo19468; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h19469; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS19470; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x019471; GFX12-TRUE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS19472; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x019473; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS19474; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v319475; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v219476; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)19477; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s019478; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)19479; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s019480; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB61_119481; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end19482; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s019483; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x019484; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]19485;19486; GFX12-FAKE16-LABEL: global_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19487; GFX12-FAKE16:       ; %bb.0:19488; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x019489; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x019490; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x019491; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x019492; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x019493; GFX12-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204419494; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v219495; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219496; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 019497; GFX12-FAKE16-NEXT:  .LBB61_1: ; %atomicrmw.start19498; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=119499; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x019500; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v319501; GFX12-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319502; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19503; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v2, v2, v419504; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v6, v6, v519505; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19506; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 119507; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 119508; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v219509; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v619510; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v619511; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff19512; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff19513; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v219514; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)19515; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)19516; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo19517; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)19518; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s019519; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)19520; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030219521; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS19522; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x019523; GFX12-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS19524; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x019525; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS19526; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v319527; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v219528; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)19529; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s119530; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)19531; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s119532; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB61_119533; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end19534; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s119535; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x019536; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]19537;19538; GFX942-LABEL: global_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19539; GFX942:       ; %bb.0:19540; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19541; GFX942-NEXT:    global_load_dword v3, v[0:1], off offset:204419542; GFX942-NEXT:    s_mov_b64 s[2:3], 019543; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v219544; GFX942-NEXT:    s_movk_i32 s4, 0x7fff19545; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219546; GFX942-NEXT:    s_mov_b32 s5, 0x706030219547; GFX942-NEXT:  .LBB61_1: ; %atomicrmw.start19548; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=119549; GFX942-NEXT:    s_waitcnt vmcnt(0)19550; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v319551; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319552; GFX942-NEXT:    v_max_f32_e32 v2, v2, v419553; GFX942-NEXT:    v_max_f32_e32 v6, v6, v519554; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 119555; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 119556; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v219557; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v619558; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s419559; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s419560; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v619561; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v219562; GFX942-NEXT:    s_nop 019563; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc19564; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]19565; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s519566; GFX942-NEXT:    buffer_wbl2 sc0 sc119567; GFX942-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 sc0 sc119568; GFX942-NEXT:    s_waitcnt vmcnt(0)19569; GFX942-NEXT:    buffer_inv sc0 sc119570; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v319571; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]19572; GFX942-NEXT:    v_mov_b32_e32 v3, v219573; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]19574; GFX942-NEXT:    s_cbranch_execnz .LBB61_119575; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end19576; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]19577; GFX942-NEXT:    s_setpc_b64 s[30:31]19578;19579; GFX11-TRUE16-LABEL: global_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19580; GFX11-TRUE16:       ; %bb.0:19581; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19582; GFX11-TRUE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204419583; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v219584; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v219585; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 019586; GFX11-TRUE16-NEXT:    .p2align 619587; GFX11-TRUE16-NEXT:  .LBB61_1: ; %atomicrmw.start19588; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=119589; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)19590; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v319591; GFX11-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319592; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19593; GFX11-TRUE16-NEXT:    v_max_f32_e32 v2, v2, v519594; GFX11-TRUE16-NEXT:    v_max_f32_e32 v6, v6, v419595; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19596; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 119597; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 119598; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v219599; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v219600; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v619601; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff19602; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff19603; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)19604; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo19605; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v619606; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo19607; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)19608; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h19609; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x019610; GFX11-TRUE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2044 glc19611; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)19612; GFX11-TRUE16-NEXT:    buffer_gl1_inv19613; GFX11-TRUE16-NEXT:    buffer_gl0_inv19614; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v319615; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v219616; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s019617; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)19618; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s019619; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB61_119620; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end19621; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s019622; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]19623;19624; GFX11-FAKE16-LABEL: global_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19625; GFX11-FAKE16:       ; %bb.0:19626; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19627; GFX11-FAKE16-NEXT:    global_load_b32 v3, v[0:1], off offset:204419628; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v219629; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219630; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 019631; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x119632; GFX11-FAKE16-NEXT:    .p2align 619633; GFX11-FAKE16-NEXT:  .LBB61_1: ; %atomicrmw.start19634; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=119635; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)19636; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v319637; GFX11-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319638; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19639; GFX11-FAKE16-NEXT:    v_max_f32_e32 v2, v2, v419640; GFX11-FAKE16-NEXT:    v_max_f32_e32 v6, v6, v519641; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19642; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 119643; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 119644; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v219645; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v619646; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v619647; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff19648; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff19649; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v219650; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19651; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo19652; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s019653; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)19654; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030219655; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x019656; GFX11-FAKE16-NEXT:    global_atomic_cmpswap_b32 v2, v[0:1], v[2:3], off offset:2044 glc19657; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)19658; GFX11-FAKE16-NEXT:    buffer_gl1_inv19659; GFX11-FAKE16-NEXT:    buffer_gl0_inv19660; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v319661; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v219662; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s119663; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)19664; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s119665; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB61_119666; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end19667; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x219668; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s119669; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]19670;19671; GFX10-LABEL: global_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19672; GFX10:       ; %bb.0:19673; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19674; GFX10-NEXT:    global_load_dword v3, v[0:1], off offset:204419675; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v219676; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219677; GFX10-NEXT:    s_mov_b32 s5, 019678; GFX10-NEXT:  .LBB61_1: ; %atomicrmw.start19679; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=119680; GFX10-NEXT:    s_waitcnt vmcnt(0)19681; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v319682; GFX10-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319683; GFX10-NEXT:    v_max_f32_e32 v2, v2, v419684; GFX10-NEXT:    v_max_f32_e32 v6, v6, v519685; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 119686; GFX10-NEXT:    v_bfe_u32 v8, v6, 16, 119687; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v219688; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v619689; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v619690; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff19691; GFX10-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff19692; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v2, v219693; GFX10-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo19694; GFX10-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s419695; GFX10-NEXT:    v_perm_b32 v2, v6, v2, 0x706030219696; GFX10-NEXT:    s_waitcnt_vscnt null, 0x019697; GFX10-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc19698; GFX10-NEXT:    s_waitcnt vmcnt(0)19699; GFX10-NEXT:    buffer_gl1_inv19700; GFX10-NEXT:    buffer_gl0_inv19701; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v319702; GFX10-NEXT:    v_mov_b32_e32 v3, v219703; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s519704; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s519705; GFX10-NEXT:    s_cbranch_execnz .LBB61_119706; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end19707; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s519708; GFX10-NEXT:    s_setpc_b64 s[30:31]19709;19710; GFX90A-LABEL: global_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19711; GFX90A:       ; %bb.0:19712; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19713; GFX90A-NEXT:    global_load_dword v3, v[0:1], off offset:204419714; GFX90A-NEXT:    s_mov_b64 s[6:7], 019715; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v219716; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff19717; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219718; GFX90A-NEXT:    s_mov_b32 s9, 0x706030219719; GFX90A-NEXT:  .LBB61_1: ; %atomicrmw.start19720; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=119721; GFX90A-NEXT:    s_waitcnt vmcnt(0)19722; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v319723; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319724; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v419725; GFX90A-NEXT:    v_max_f32_e32 v6, v6, v519726; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 119727; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 119728; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v219729; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v619730; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s819731; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s819732; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v619733; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v219734; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]19735; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc19736; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s919737; GFX90A-NEXT:    buffer_wbl219738; GFX90A-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc19739; GFX90A-NEXT:    s_waitcnt vmcnt(0)19740; GFX90A-NEXT:    buffer_invl219741; GFX90A-NEXT:    buffer_wbinvl119742; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v319743; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]19744; GFX90A-NEXT:    v_mov_b32_e32 v3, v219745; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]19746; GFX90A-NEXT:    s_cbranch_execnz .LBB61_119747; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end19748; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]19749; GFX90A-NEXT:    s_setpc_b64 s[30:31]19750;19751; GFX908-LABEL: global_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19752; GFX908:       ; %bb.0:19753; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19754; GFX908-NEXT:    global_load_dword v3, v[0:1], off offset:204419755; GFX908-NEXT:    s_mov_b64 s[6:7], 019756; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v219757; GFX908-NEXT:    s_movk_i32 s8, 0x7fff19758; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219759; GFX908-NEXT:    s_mov_b32 s9, 0x706030219760; GFX908-NEXT:  .LBB61_1: ; %atomicrmw.start19761; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=119762; GFX908-NEXT:    s_waitcnt vmcnt(0)19763; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v319764; GFX908-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319765; GFX908-NEXT:    v_max_f32_e32 v2, v2, v419766; GFX908-NEXT:    v_max_f32_e32 v6, v6, v519767; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 119768; GFX908-NEXT:    v_bfe_u32 v9, v6, 16, 119769; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v219770; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v619771; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s819772; GFX908-NEXT:    v_add3_u32 v9, v9, v6, s819773; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v6, v619774; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v219775; GFX908-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]19776; GFX908-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc19777; GFX908-NEXT:    v_perm_b32 v2, v6, v2, s919778; GFX908-NEXT:    global_atomic_cmpswap v2, v[0:1], v[2:3], off offset:2044 glc19779; GFX908-NEXT:    s_waitcnt vmcnt(0)19780; GFX908-NEXT:    buffer_wbinvl119781; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v319782; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]19783; GFX908-NEXT:    v_mov_b32_e32 v3, v219784; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]19785; GFX908-NEXT:    s_cbranch_execnz .LBB61_119786; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end19787; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]19788; GFX908-NEXT:    s_setpc_b64 s[30:31]19789;19790; GFX8-LABEL: global_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19791; GFX8:       ; %bb.0:19792; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19793; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v019794; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc19795; GFX8-NEXT:    flat_load_dword v3, v[0:1]19796; GFX8-NEXT:    s_mov_b64 s[6:7], 019797; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v219798; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219799; GFX8-NEXT:  .LBB61_1: ; %atomicrmw.start19800; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=119801; GFX8-NEXT:    s_waitcnt vmcnt(0)19802; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v319803; GFX8-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319804; GFX8-NEXT:    v_max_f32_e32 v2, v2, v419805; GFX8-NEXT:    v_max_f32_e32 v6, v6, v519806; GFX8-NEXT:    v_bfe_u32 v7, v2, 16, 119807; GFX8-NEXT:    v_bfe_u32 v9, v6, 16, 119808; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v219809; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v619810; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v719811; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v919812; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v619813; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v6, v619814; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v219815; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v219816; GFX8-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc19817; GFX8-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]19818; GFX8-NEXT:    v_lshrrev_b32_e32 v6, 16, v619819; GFX8-NEXT:    v_alignbit_b32 v2, v6, v2, 1619820; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc19821; GFX8-NEXT:    s_waitcnt vmcnt(0)19822; GFX8-NEXT:    buffer_wbinvl119823; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v319824; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]19825; GFX8-NEXT:    v_mov_b32_e32 v3, v219826; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]19827; GFX8-NEXT:    s_cbranch_execnz .LBB61_119828; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end19829; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]19830; GFX8-NEXT:    s_setpc_b64 s[30:31]19831;19832; GFX7-LABEL: global_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19833; GFX7:       ; %bb.0:19834; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19835; GFX7-NEXT:    s_mov_b32 s6, 019836; GFX7-NEXT:    s_mov_b32 s7, 0xf00019837; GFX7-NEXT:    s_mov_b32 s4, s619838; GFX7-NEXT:    s_mov_b32 s5, s619839; GFX7-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr64 offset:204419840; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v319841; GFX7-NEXT:    v_mul_f32_e32 v6, 1.0, v219842; GFX7-NEXT:    s_mov_b64 s[8:9], 019843; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v319844; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v619845; GFX7-NEXT:    s_waitcnt vmcnt(0)19846; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v419847; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v419848; GFX7-NEXT:  .LBB61_1: ; %atomicrmw.start19849; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=119850; GFX7-NEXT:    v_mul_f32_e32 v5, 1.0, v519851; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v419852; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v519853; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v419854; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v519855; GFX7-NEXT:    v_max_f32_e32 v6, v6, v219856; GFX7-NEXT:    v_max_f32_e32 v7, v7, v319857; GFX7-NEXT:    v_alignbit_b32 v5, v5, v4, 1619858; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v619859; GFX7-NEXT:    v_alignbit_b32 v4, v4, v7, 1619860; GFX7-NEXT:    v_mov_b32_e32 v7, v519861; GFX7-NEXT:    v_mov_b32_e32 v6, v419862; GFX7-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 offset:2044 glc19863; GFX7-NEXT:    s_waitcnt vmcnt(0)19864; GFX7-NEXT:    buffer_wbinvl119865; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v519866; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619867; GFX7-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]19868; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v619869; GFX7-NEXT:    s_andn2_b64 exec, exec, s[8:9]19870; GFX7-NEXT:    s_cbranch_execnz .LBB61_119871; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end19872; GFX7-NEXT:    s_or_b64 exec, exec, s[8:9]19873; GFX7-NEXT:    s_setpc_b64 s[30:31]19874;19875; GFX6-LABEL: global_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19876; GFX6:       ; %bb.0:19877; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19878; GFX6-NEXT:    s_mov_b32 s6, 019879; GFX6-NEXT:    s_mov_b32 s7, 0xf00019880; GFX6-NEXT:    s_mov_b32 s4, s619881; GFX6-NEXT:    s_mov_b32 s5, s619882; GFX6-NEXT:    buffer_load_dword v4, v[0:1], s[4:7], 0 addr64 offset:204419883; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v319884; GFX6-NEXT:    v_mul_f32_e32 v6, 1.0, v219885; GFX6-NEXT:    s_mov_b64 s[8:9], 019886; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v319887; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v619888; GFX6-NEXT:    s_waitcnt vmcnt(0)19889; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v419890; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v419891; GFX6-NEXT:  .LBB61_1: ; %atomicrmw.start19892; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=119893; GFX6-NEXT:    v_mul_f32_e32 v5, 1.0, v519894; GFX6-NEXT:    v_mul_f32_e32 v4, 1.0, v419895; GFX6-NEXT:    s_waitcnt expcnt(0)19896; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v519897; GFX6-NEXT:    v_and_b32_e32 v7, 0xffff0000, v419898; GFX6-NEXT:    v_lshrrev_b32_e32 v5, 16, v519899; GFX6-NEXT:    v_max_f32_e32 v6, v6, v219900; GFX6-NEXT:    v_max_f32_e32 v7, v7, v319901; GFX6-NEXT:    v_alignbit_b32 v5, v5, v4, 1619902; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v619903; GFX6-NEXT:    v_alignbit_b32 v4, v4, v7, 1619904; GFX6-NEXT:    v_mov_b32_e32 v7, v519905; GFX6-NEXT:    v_mov_b32_e32 v6, v419906; GFX6-NEXT:    buffer_atomic_cmpswap v[6:7], v[0:1], s[4:7], 0 addr64 offset:2044 glc19907; GFX6-NEXT:    s_waitcnt vmcnt(0)19908; GFX6-NEXT:    buffer_wbinvl119909; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v519910; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619911; GFX6-NEXT:    s_or_b64 s[8:9], vcc, s[8:9]19912; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v619913; GFX6-NEXT:    s_andn2_b64 exec, exec, s[8:9]19914; GFX6-NEXT:    s_cbranch_execnz .LBB61_119915; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end19916; GFX6-NEXT:    s_or_b64 exec, exec, s[8:9]19917; GFX6-NEXT:    s_waitcnt expcnt(0)19918; GFX6-NEXT:    s_setpc_b64 s[30:31]19919  %gep = getelementptr <2 x bfloat>, ptr addrspace(1) %ptr, i64 51119920  %unused = atomicrmw fmax ptr addrspace(1) %gep, <2 x bfloat> %val seq_cst, !amdgpu.no.fine.grained.memory !019921  ret void19922}19923 19924attributes #0 = { nounwind }19925attributes #1 = { nounwind "denormal-fp-math-f32"="preserve-sign,preserve-sign" }19926 19927!0 = !{}19928