brintos

brintos / llvm-project-archived public Read only

0
0
Text · 932.2 KiB · 8aa1a35 Raw
19747 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1200 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-TRUE16 %s3; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1200 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-FAKE16 %s4; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx942 < %s | FileCheck -check-prefix=GFX942 %s5; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-TRUE16 %s6; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1100 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-FAKE16 %s7; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1010 < %s | FileCheck -check-prefix=GFX10 %s8; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx90a < %s | FileCheck -check-prefix=GFX90A %s9; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx908 < %s | FileCheck -check-prefix=GFX908 %s10; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=tonga < %s | FileCheck -check-prefix=GFX8 %s11; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=hawaii < %s | FileCheck -check-prefix=GFX7 %s12 13; --------------------------------------------------------------------14; float15; --------------------------------------------------------------------16 17define float @flat_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory(ptr %ptr, float %val) #0 {18; GFX12-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory:19; GFX12:       ; %bb.0:20; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x021; GFX12-NEXT:    s_wait_expcnt 0x022; GFX12-NEXT:    s_wait_samplecnt 0x023; GFX12-NEXT:    s_wait_bvhcnt 0x024; GFX12-NEXT:    s_wait_kmcnt 0x025; GFX12-NEXT:    s_wait_storecnt 0x026; GFX12-NEXT:    flat_atomic_max_num_f32 v0, v[0:1], v2 th:TH_ATOMIC_RETURN scope:SCOPE_DEV27; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x028; GFX12-NEXT:    global_inv scope:SCOPE_DEV29; GFX12-NEXT:    s_wait_loadcnt 0x030; GFX12-NEXT:    s_setpc_b64 s[30:31]31;32; GFX942-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory:33; GFX942:       ; %bb.0:34; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)35; GFX942-NEXT:    flat_load_dword v3, v[0:1]36; GFX942-NEXT:    s_mov_b64 s[0:1], 037; GFX942-NEXT:    v_max_f32_e32 v4, v2, v238; GFX942-NEXT:  .LBB0_1: ; %atomicrmw.start39; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=140; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)41; GFX942-NEXT:    v_max_f32_e32 v2, v3, v342; GFX942-NEXT:    v_max_f32_e32 v2, v2, v443; GFX942-NEXT:    buffer_wbl2 sc144; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc045; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)46; GFX942-NEXT:    buffer_inv sc147; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v348; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]49; GFX942-NEXT:    v_mov_b32_e32 v3, v250; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]51; GFX942-NEXT:    s_cbranch_execnz .LBB0_152; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end53; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]54; GFX942-NEXT:    v_mov_b32_e32 v0, v255; GFX942-NEXT:    s_setpc_b64 s[30:31]56;57; GFX11-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory:58; GFX11:       ; %bb.0:59; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)60; GFX11-NEXT:    s_waitcnt_vscnt null, 0x061; GFX11-NEXT:    flat_atomic_max_f32 v0, v[0:1], v2 glc62; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)63; GFX11-NEXT:    buffer_gl1_inv64; GFX11-NEXT:    buffer_gl0_inv65; GFX11-NEXT:    s_setpc_b64 s[30:31]66;67; GFX10-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory:68; GFX10:       ; %bb.0:69; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)70; GFX10-NEXT:    s_waitcnt_vscnt null, 0x071; GFX10-NEXT:    flat_atomic_fmax v0, v[0:1], v2 glc72; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)73; GFX10-NEXT:    buffer_gl1_inv74; GFX10-NEXT:    buffer_gl0_inv75; GFX10-NEXT:    s_setpc_b64 s[30:31]76;77; GFX90A-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory:78; GFX90A:       ; %bb.0:79; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)80; GFX90A-NEXT:    flat_load_dword v3, v[0:1]81; GFX90A-NEXT:    s_mov_b64 s[4:5], 082; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v283; GFX90A-NEXT:  .LBB0_1: ; %atomicrmw.start84; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=185; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)86; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v387; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v488; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc89; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)90; GFX90A-NEXT:    buffer_wbinvl191; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v392; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]93; GFX90A-NEXT:    v_mov_b32_e32 v3, v294; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]95; GFX90A-NEXT:    s_cbranch_execnz .LBB0_196; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end97; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]98; GFX90A-NEXT:    v_mov_b32_e32 v0, v299; GFX90A-NEXT:    s_setpc_b64 s[30:31]100;101; GFX908-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory:102; GFX908:       ; %bb.0:103; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)104; GFX908-NEXT:    flat_load_dword v3, v[0:1]105; GFX908-NEXT:    s_mov_b64 s[4:5], 0106; GFX908-NEXT:    v_max_f32_e32 v2, v2, v2107; GFX908-NEXT:  .LBB0_1: ; %atomicrmw.start108; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1109; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)110; GFX908-NEXT:    v_mov_b32_e32 v4, v3111; GFX908-NEXT:    v_max_f32_e32 v3, v4, v4112; GFX908-NEXT:    v_max_f32_e32 v3, v3, v2113; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc114; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)115; GFX908-NEXT:    buffer_wbinvl1116; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4117; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]118; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]119; GFX908-NEXT:    s_cbranch_execnz .LBB0_1120; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end121; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]122; GFX908-NEXT:    v_mov_b32_e32 v0, v3123; GFX908-NEXT:    s_setpc_b64 s[30:31]124;125; GFX8-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory:126; GFX8:       ; %bb.0:127; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)128; GFX8-NEXT:    flat_load_dword v3, v[0:1]129; GFX8-NEXT:    s_mov_b64 s[4:5], 0130; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v2131; GFX8-NEXT:  .LBB0_1: ; %atomicrmw.start132; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1133; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)134; GFX8-NEXT:    v_mov_b32_e32 v4, v3135; GFX8-NEXT:    v_mul_f32_e32 v3, 1.0, v4136; GFX8-NEXT:    v_max_f32_e32 v3, v3, v2137; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc138; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)139; GFX8-NEXT:    buffer_wbinvl1140; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4141; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]142; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]143; GFX8-NEXT:    s_cbranch_execnz .LBB0_1144; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end145; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]146; GFX8-NEXT:    v_mov_b32_e32 v0, v3147; GFX8-NEXT:    s_setpc_b64 s[30:31]148;149; GFX7-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory:150; GFX7:       ; %bb.0:151; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)152; GFX7-NEXT:    flat_atomic_fmax v0, v[0:1], v2 glc153; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)154; GFX7-NEXT:    buffer_wbinvl1155; GFX7-NEXT:    s_setpc_b64 s[30:31]156  %result = atomicrmw fmax ptr %ptr, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0157  ret float %result158}159 160define float @flat_agent_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, float %val) #0 {161; GFX12-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:162; GFX12:       ; %bb.0:163; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0164; GFX12-NEXT:    s_wait_expcnt 0x0165; GFX12-NEXT:    s_wait_samplecnt 0x0166; GFX12-NEXT:    s_wait_bvhcnt 0x0167; GFX12-NEXT:    s_wait_kmcnt 0x0168; GFX12-NEXT:    s_wait_storecnt 0x0169; GFX12-NEXT:    flat_atomic_max_num_f32 v0, v[0:1], v2 offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV170; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0171; GFX12-NEXT:    global_inv scope:SCOPE_DEV172; GFX12-NEXT:    s_wait_loadcnt 0x0173; GFX12-NEXT:    s_setpc_b64 s[30:31]174;175; GFX942-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:176; GFX942:       ; %bb.0:177; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)178; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:2044179; GFX942-NEXT:    s_mov_b64 s[0:1], 0180; GFX942-NEXT:    v_max_f32_e32 v4, v2, v2181; GFX942-NEXT:  .LBB1_1: ; %atomicrmw.start182; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1183; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)184; GFX942-NEXT:    v_max_f32_e32 v2, v3, v3185; GFX942-NEXT:    v_max_f32_e32 v2, v2, v4186; GFX942-NEXT:    buffer_wbl2 sc1187; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 sc0188; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)189; GFX942-NEXT:    buffer_inv sc1190; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3191; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]192; GFX942-NEXT:    v_mov_b32_e32 v3, v2193; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]194; GFX942-NEXT:    s_cbranch_execnz .LBB1_1195; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end196; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]197; GFX942-NEXT:    v_mov_b32_e32 v0, v2198; GFX942-NEXT:    s_setpc_b64 s[30:31]199;200; GFX11-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:201; GFX11:       ; %bb.0:202; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)203; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0204; GFX11-NEXT:    flat_atomic_max_f32 v0, v[0:1], v2 offset:2044 glc205; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)206; GFX11-NEXT:    buffer_gl1_inv207; GFX11-NEXT:    buffer_gl0_inv208; GFX11-NEXT:    s_setpc_b64 s[30:31]209;210; GFX10-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:211; GFX10:       ; %bb.0:212; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)213; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fc, v0214; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo215; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0216; GFX10-NEXT:    flat_atomic_fmax v0, v[0:1], v2 glc217; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)218; GFX10-NEXT:    buffer_gl1_inv219; GFX10-NEXT:    buffer_gl0_inv220; GFX10-NEXT:    s_setpc_b64 s[30:31]221;222; GFX90A-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:223; GFX90A:       ; %bb.0:224; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)225; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:2044226; GFX90A-NEXT:    s_mov_b64 s[4:5], 0227; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v2228; GFX90A-NEXT:  .LBB1_1: ; %atomicrmw.start229; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1230; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)231; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v3232; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v4233; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc234; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)235; GFX90A-NEXT:    buffer_wbinvl1236; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3237; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]238; GFX90A-NEXT:    v_mov_b32_e32 v3, v2239; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]240; GFX90A-NEXT:    s_cbranch_execnz .LBB1_1241; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end242; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]243; GFX90A-NEXT:    v_mov_b32_e32 v0, v2244; GFX90A-NEXT:    s_setpc_b64 s[30:31]245;246; GFX908-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:247; GFX908:       ; %bb.0:248; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)249; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:2044250; GFX908-NEXT:    s_mov_b64 s[4:5], 0251; GFX908-NEXT:    v_max_f32_e32 v2, v2, v2252; GFX908-NEXT:  .LBB1_1: ; %atomicrmw.start253; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1254; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)255; GFX908-NEXT:    v_mov_b32_e32 v4, v3256; GFX908-NEXT:    v_max_f32_e32 v3, v4, v4257; GFX908-NEXT:    v_max_f32_e32 v3, v3, v2258; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2044 glc259; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)260; GFX908-NEXT:    buffer_wbinvl1261; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v4262; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]263; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]264; GFX908-NEXT:    s_cbranch_execnz .LBB1_1265; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end266; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]267; GFX908-NEXT:    v_mov_b32_e32 v0, v3268; GFX908-NEXT:    s_setpc_b64 s[30:31]269;270; GFX8-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:271; GFX8:       ; %bb.0:272; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)273; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v0274; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc275; GFX8-NEXT:    flat_load_dword v0, v[3:4]276; GFX8-NEXT:    s_mov_b64 s[4:5], 0277; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v2278; GFX8-NEXT:  .LBB1_1: ; %atomicrmw.start279; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1280; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)281; GFX8-NEXT:    v_mov_b32_e32 v6, v0282; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v6283; GFX8-NEXT:    v_max_f32_e32 v5, v0, v1284; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc285; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)286; GFX8-NEXT:    buffer_wbinvl1287; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v6288; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]289; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]290; GFX8-NEXT:    s_cbranch_execnz .LBB1_1291; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end292; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]293; GFX8-NEXT:    s_setpc_b64 s[30:31]294;295; GFX7-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:296; GFX7:       ; %bb.0:297; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)298; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fc, v0299; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc300; GFX7-NEXT:    flat_atomic_fmax v0, v[0:1], v2 glc301; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)302; GFX7-NEXT:    buffer_wbinvl1303; GFX7-NEXT:    s_setpc_b64 s[30:31]304  %gep = getelementptr inbounds float, ptr %ptr, i64 511305  %result = atomicrmw fmax ptr %gep, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0306  ret float %result307}308 309define float @flat_agent_atomic_fmax_ret_f32__offset12b_neg__amdgpu_no_fine_grained_memory(ptr %ptr, float %val) #0 {310; GFX12-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:311; GFX12:       ; %bb.0:312; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0313; GFX12-NEXT:    s_wait_expcnt 0x0314; GFX12-NEXT:    s_wait_samplecnt 0x0315; GFX12-NEXT:    s_wait_bvhcnt 0x0316; GFX12-NEXT:    s_wait_kmcnt 0x0317; GFX12-NEXT:    s_wait_storecnt 0x0318; GFX12-NEXT:    flat_atomic_max_num_f32 v0, v[0:1], v2 offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV319; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0320; GFX12-NEXT:    global_inv scope:SCOPE_DEV321; GFX12-NEXT:    s_wait_loadcnt 0x0322; GFX12-NEXT:    s_setpc_b64 s[30:31]323;324; GFX942-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:325; GFX942:       ; %bb.0:326; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)327; GFX942-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v0328; GFX942-NEXT:    s_movk_i32 s0, 0xf800329; GFX942-NEXT:    s_nop 0330; GFX942-NEXT:    v_addc_co_u32_e32 v5, vcc, -1, v1, vcc331; GFX942-NEXT:    flat_load_dword v3, v[4:5]332; GFX942-NEXT:    s_mov_b32 s1, -1333; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]334; GFX942-NEXT:    s_mov_b64 s[0:1], 0335; GFX942-NEXT:    v_max_f32_e32 v1, v2, v2336; GFX942-NEXT:  .LBB2_1: ; %atomicrmw.start337; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1338; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)339; GFX942-NEXT:    v_max_f32_e32 v0, v3, v3340; GFX942-NEXT:    v_max_f32_e32 v2, v0, v1341; GFX942-NEXT:    buffer_wbl2 sc1342; GFX942-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[2:3] sc0343; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)344; GFX942-NEXT:    buffer_inv sc1345; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v3346; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]347; GFX942-NEXT:    v_mov_b32_e32 v3, v0348; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]349; GFX942-NEXT:    s_cbranch_execnz .LBB2_1350; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end351; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]352; GFX942-NEXT:    s_setpc_b64 s[30:31]353;354; GFX11-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:355; GFX11:       ; %bb.0:356; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)357; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v0358; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)359; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo360; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0361; GFX11-NEXT:    flat_atomic_max_f32 v0, v[0:1], v2 glc362; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)363; GFX11-NEXT:    buffer_gl1_inv364; GFX11-NEXT:    buffer_gl0_inv365; GFX11-NEXT:    s_setpc_b64 s[30:31]366;367; GFX10-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:368; GFX10:       ; %bb.0:369; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)370; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v0371; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo372; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0373; GFX10-NEXT:    flat_atomic_fmax v0, v[0:1], v2 glc374; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)375; GFX10-NEXT:    buffer_gl1_inv376; GFX10-NEXT:    buffer_gl0_inv377; GFX10-NEXT:    s_setpc_b64 s[30:31]378;379; GFX90A-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:380; GFX90A:       ; %bb.0:381; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)382; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v0383; GFX90A-NEXT:    s_mov_b64 s[4:5], vcc384; GFX90A-NEXT:    v_addc_co_u32_e64 v5, s[4:5], -1, v1, s[4:5]385; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc386; GFX90A-NEXT:    v_mov_b32_e32 v0, v4387; GFX90A-NEXT:    flat_load_dword v1, v[0:1]388; GFX90A-NEXT:    s_mov_b64 s[4:5], 0389; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v2390; GFX90A-NEXT:  .LBB2_1: ; %atomicrmw.start391; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1392; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)393; GFX90A-NEXT:    v_max_f32_e32 v0, v1, v1394; GFX90A-NEXT:    v_max_f32_e32 v0, v0, v2395; GFX90A-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc396; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)397; GFX90A-NEXT:    buffer_wbinvl1398; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1399; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]400; GFX90A-NEXT:    v_mov_b32_e32 v1, v0401; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]402; GFX90A-NEXT:    s_cbranch_execnz .LBB2_1403; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end404; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]405; GFX90A-NEXT:    s_setpc_b64 s[30:31]406;407; GFX908-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:408; GFX908:       ; %bb.0:409; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)410; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v0411; GFX908-NEXT:    s_mov_b64 s[4:5], vcc412; GFX908-NEXT:    v_addc_co_u32_e64 v4, s[4:5], -1, v1, s[4:5]413; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc414; GFX908-NEXT:    v_mov_b32_e32 v0, v3415; GFX908-NEXT:    flat_load_dword v0, v[0:1]416; GFX908-NEXT:    s_mov_b64 s[4:5], 0417; GFX908-NEXT:    v_max_f32_e32 v1, v2, v2418; GFX908-NEXT:  .LBB2_1: ; %atomicrmw.start419; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1420; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)421; GFX908-NEXT:    v_mov_b32_e32 v6, v0422; GFX908-NEXT:    v_max_f32_e32 v0, v6, v6423; GFX908-NEXT:    v_max_f32_e32 v5, v0, v1424; GFX908-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc425; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)426; GFX908-NEXT:    buffer_wbinvl1427; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v6428; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]429; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]430; GFX908-NEXT:    s_cbranch_execnz .LBB2_1431; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end432; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]433; GFX908-NEXT:    s_setpc_b64 s[30:31]434;435; GFX8-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:436; GFX8:       ; %bb.0:437; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)438; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v0439; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, -1, v1, vcc440; GFX8-NEXT:    flat_load_dword v0, v[3:4]441; GFX8-NEXT:    s_mov_b64 s[4:5], 0442; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v2443; GFX8-NEXT:  .LBB2_1: ; %atomicrmw.start444; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1445; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)446; GFX8-NEXT:    v_mov_b32_e32 v6, v0447; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v6448; GFX8-NEXT:    v_max_f32_e32 v5, v0, v1449; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc450; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)451; GFX8-NEXT:    buffer_wbinvl1452; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v6453; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]454; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]455; GFX8-NEXT:    s_cbranch_execnz .LBB2_1456; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end457; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]458; GFX8-NEXT:    s_setpc_b64 s[30:31]459;460; GFX7-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:461; GFX7:       ; %bb.0:462; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)463; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v0464; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc465; GFX7-NEXT:    flat_atomic_fmax v0, v[0:1], v2 glc466; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)467; GFX7-NEXT:    buffer_wbinvl1468; GFX7-NEXT:    s_setpc_b64 s[30:31]469  %gep = getelementptr inbounds float, ptr %ptr, i64 -512470  %result = atomicrmw fmax ptr %gep, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0471  ret float %result472}473 474define void @flat_agent_atomic_fmax_noret_f32__amdgpu_no_fine_grained_memory(ptr %ptr, float %val) #0 {475; GFX12-LABEL: flat_agent_atomic_fmax_noret_f32__amdgpu_no_fine_grained_memory:476; GFX12:       ; %bb.0:477; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0478; GFX12-NEXT:    s_wait_expcnt 0x0479; GFX12-NEXT:    s_wait_samplecnt 0x0480; GFX12-NEXT:    s_wait_bvhcnt 0x0481; GFX12-NEXT:    s_wait_kmcnt 0x0482; GFX12-NEXT:    s_wait_storecnt 0x0483; GFX12-NEXT:    flat_atomic_max_num_f32 v[0:1], v2 scope:SCOPE_DEV484; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0485; GFX12-NEXT:    global_inv scope:SCOPE_DEV486; GFX12-NEXT:    s_wait_loadcnt 0x0487; GFX12-NEXT:    s_setpc_b64 s[30:31]488;489; GFX942-LABEL: flat_agent_atomic_fmax_noret_f32__amdgpu_no_fine_grained_memory:490; GFX942:       ; %bb.0:491; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)492; GFX942-NEXT:    flat_load_dword v3, v[0:1]493; GFX942-NEXT:    s_mov_b64 s[0:1], 0494; GFX942-NEXT:    v_max_f32_e32 v4, v2, v2495; GFX942-NEXT:  .LBB3_1: ; %atomicrmw.start496; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1497; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)498; GFX942-NEXT:    v_max_f32_e32 v2, v3, v3499; GFX942-NEXT:    v_max_f32_e32 v2, v2, v4500; GFX942-NEXT:    buffer_wbl2 sc1501; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc0502; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)503; GFX942-NEXT:    buffer_inv sc1504; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3505; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]506; GFX942-NEXT:    v_mov_b32_e32 v3, v2507; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]508; GFX942-NEXT:    s_cbranch_execnz .LBB3_1509; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end510; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]511; GFX942-NEXT:    s_setpc_b64 s[30:31]512;513; GFX11-LABEL: flat_agent_atomic_fmax_noret_f32__amdgpu_no_fine_grained_memory:514; GFX11:       ; %bb.0:515; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)516; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0517; GFX11-NEXT:    flat_atomic_max_f32 v[0:1], v2518; GFX11-NEXT:    s_waitcnt lgkmcnt(0)519; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0520; GFX11-NEXT:    buffer_gl1_inv521; GFX11-NEXT:    buffer_gl0_inv522; GFX11-NEXT:    s_setpc_b64 s[30:31]523;524; GFX10-LABEL: flat_agent_atomic_fmax_noret_f32__amdgpu_no_fine_grained_memory:525; GFX10:       ; %bb.0:526; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)527; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0528; GFX10-NEXT:    flat_atomic_fmax v[0:1], v2529; GFX10-NEXT:    s_waitcnt lgkmcnt(0)530; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0531; GFX10-NEXT:    buffer_gl1_inv532; GFX10-NEXT:    buffer_gl0_inv533; GFX10-NEXT:    s_setpc_b64 s[30:31]534;535; GFX90A-LABEL: flat_agent_atomic_fmax_noret_f32__amdgpu_no_fine_grained_memory:536; GFX90A:       ; %bb.0:537; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)538; GFX90A-NEXT:    flat_load_dword v3, v[0:1]539; GFX90A-NEXT:    s_mov_b64 s[4:5], 0540; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v2541; GFX90A-NEXT:  .LBB3_1: ; %atomicrmw.start542; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1543; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)544; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v3545; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v4546; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc547; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)548; GFX90A-NEXT:    buffer_wbinvl1549; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3550; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]551; GFX90A-NEXT:    v_mov_b32_e32 v3, v2552; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]553; GFX90A-NEXT:    s_cbranch_execnz .LBB3_1554; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end555; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]556; GFX90A-NEXT:    s_setpc_b64 s[30:31]557;558; GFX908-LABEL: flat_agent_atomic_fmax_noret_f32__amdgpu_no_fine_grained_memory:559; GFX908:       ; %bb.0:560; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)561; GFX908-NEXT:    flat_load_dword v3, v[0:1]562; GFX908-NEXT:    s_mov_b64 s[4:5], 0563; GFX908-NEXT:    v_max_f32_e32 v4, v2, v2564; GFX908-NEXT:  .LBB3_1: ; %atomicrmw.start565; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1566; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)567; GFX908-NEXT:    v_max_f32_e32 v2, v3, v3568; GFX908-NEXT:    v_max_f32_e32 v2, v2, v4569; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc570; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)571; GFX908-NEXT:    buffer_wbinvl1572; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3573; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]574; GFX908-NEXT:    v_mov_b32_e32 v3, v2575; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]576; GFX908-NEXT:    s_cbranch_execnz .LBB3_1577; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end578; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]579; GFX908-NEXT:    s_setpc_b64 s[30:31]580;581; GFX8-LABEL: flat_agent_atomic_fmax_noret_f32__amdgpu_no_fine_grained_memory:582; GFX8:       ; %bb.0:583; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)584; GFX8-NEXT:    flat_load_dword v3, v[0:1]585; GFX8-NEXT:    s_mov_b64 s[4:5], 0586; GFX8-NEXT:    v_mul_f32_e32 v4, 1.0, v2587; GFX8-NEXT:  .LBB3_1: ; %atomicrmw.start588; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1589; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)590; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v3591; GFX8-NEXT:    v_max_f32_e32 v2, v2, v4592; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc593; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)594; GFX8-NEXT:    buffer_wbinvl1595; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3596; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]597; GFX8-NEXT:    v_mov_b32_e32 v3, v2598; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]599; GFX8-NEXT:    s_cbranch_execnz .LBB3_1600; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end601; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]602; GFX8-NEXT:    s_setpc_b64 s[30:31]603;604; GFX7-LABEL: flat_agent_atomic_fmax_noret_f32__amdgpu_no_fine_grained_memory:605; GFX7:       ; %bb.0:606; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)607; GFX7-NEXT:    flat_atomic_fmax v[0:1], v2608; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)609; GFX7-NEXT:    buffer_wbinvl1610; GFX7-NEXT:    s_setpc_b64 s[30:31]611  %unused = atomicrmw fmax ptr %ptr, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0612  ret void613}614 615define void @flat_agent_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, float %val) #0 {616; GFX12-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:617; GFX12:       ; %bb.0:618; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0619; GFX12-NEXT:    s_wait_expcnt 0x0620; GFX12-NEXT:    s_wait_samplecnt 0x0621; GFX12-NEXT:    s_wait_bvhcnt 0x0622; GFX12-NEXT:    s_wait_kmcnt 0x0623; GFX12-NEXT:    s_wait_storecnt 0x0624; GFX12-NEXT:    flat_atomic_max_num_f32 v[0:1], v2 offset:2044 scope:SCOPE_DEV625; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0626; GFX12-NEXT:    global_inv scope:SCOPE_DEV627; GFX12-NEXT:    s_wait_loadcnt 0x0628; GFX12-NEXT:    s_setpc_b64 s[30:31]629;630; GFX942-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:631; GFX942:       ; %bb.0:632; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)633; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:2044634; GFX942-NEXT:    s_mov_b64 s[0:1], 0635; GFX942-NEXT:    v_max_f32_e32 v4, v2, v2636; GFX942-NEXT:  .LBB4_1: ; %atomicrmw.start637; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1638; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)639; GFX942-NEXT:    v_max_f32_e32 v2, v3, v3640; GFX942-NEXT:    v_max_f32_e32 v2, v2, v4641; GFX942-NEXT:    buffer_wbl2 sc1642; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 sc0643; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)644; GFX942-NEXT:    buffer_inv sc1645; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3646; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]647; GFX942-NEXT:    v_mov_b32_e32 v3, v2648; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]649; GFX942-NEXT:    s_cbranch_execnz .LBB4_1650; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end651; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]652; GFX942-NEXT:    s_setpc_b64 s[30:31]653;654; GFX11-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:655; GFX11:       ; %bb.0:656; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)657; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0658; GFX11-NEXT:    flat_atomic_max_f32 v[0:1], v2 offset:2044659; GFX11-NEXT:    s_waitcnt lgkmcnt(0)660; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0661; GFX11-NEXT:    buffer_gl1_inv662; GFX11-NEXT:    buffer_gl0_inv663; GFX11-NEXT:    s_setpc_b64 s[30:31]664;665; GFX10-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:666; GFX10:       ; %bb.0:667; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)668; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fc, v0669; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo670; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0671; GFX10-NEXT:    flat_atomic_fmax v[0:1], v2672; GFX10-NEXT:    s_waitcnt lgkmcnt(0)673; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0674; GFX10-NEXT:    buffer_gl1_inv675; GFX10-NEXT:    buffer_gl0_inv676; GFX10-NEXT:    s_setpc_b64 s[30:31]677;678; GFX90A-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:679; GFX90A:       ; %bb.0:680; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)681; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:2044682; GFX90A-NEXT:    s_mov_b64 s[4:5], 0683; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v2684; GFX90A-NEXT:  .LBB4_1: ; %atomicrmw.start685; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1686; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)687; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v3688; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v4689; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc690; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)691; GFX90A-NEXT:    buffer_wbinvl1692; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3693; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]694; GFX90A-NEXT:    v_mov_b32_e32 v3, v2695; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]696; GFX90A-NEXT:    s_cbranch_execnz .LBB4_1697; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end698; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]699; GFX90A-NEXT:    s_setpc_b64 s[30:31]700;701; GFX908-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:702; GFX908:       ; %bb.0:703; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)704; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:2044705; GFX908-NEXT:    s_mov_b64 s[4:5], 0706; GFX908-NEXT:    v_max_f32_e32 v4, v2, v2707; GFX908-NEXT:  .LBB4_1: ; %atomicrmw.start708; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1709; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)710; GFX908-NEXT:    v_max_f32_e32 v2, v3, v3711; GFX908-NEXT:    v_max_f32_e32 v2, v2, v4712; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc713; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)714; GFX908-NEXT:    buffer_wbinvl1715; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3716; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]717; GFX908-NEXT:    v_mov_b32_e32 v3, v2718; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]719; GFX908-NEXT:    s_cbranch_execnz .LBB4_1720; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end721; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]722; GFX908-NEXT:    s_setpc_b64 s[30:31]723;724; GFX8-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:725; GFX8:       ; %bb.0:726; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)727; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v0728; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc729; GFX8-NEXT:    flat_load_dword v3, v[0:1]730; GFX8-NEXT:    s_mov_b64 s[4:5], 0731; GFX8-NEXT:    v_mul_f32_e32 v4, 1.0, v2732; GFX8-NEXT:  .LBB4_1: ; %atomicrmw.start733; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1734; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)735; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v3736; GFX8-NEXT:    v_max_f32_e32 v2, v2, v4737; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc738; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)739; GFX8-NEXT:    buffer_wbinvl1740; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3741; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]742; GFX8-NEXT:    v_mov_b32_e32 v3, v2743; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]744; GFX8-NEXT:    s_cbranch_execnz .LBB4_1745; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end746; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]747; GFX8-NEXT:    s_setpc_b64 s[30:31]748;749; GFX7-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:750; GFX7:       ; %bb.0:751; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)752; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fc, v0753; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc754; GFX7-NEXT:    flat_atomic_fmax v[0:1], v2755; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)756; GFX7-NEXT:    buffer_wbinvl1757; GFX7-NEXT:    s_setpc_b64 s[30:31]758  %gep = getelementptr inbounds float, ptr %ptr, i64 511759  %unused = atomicrmw fmax ptr %gep, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0760  ret void761}762 763define void @flat_agent_atomic_fmax_noret_f32__offset12b_neg__amdgpu_no_fine_grained_memory(ptr %ptr, float %val) #0 {764; GFX12-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:765; GFX12:       ; %bb.0:766; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0767; GFX12-NEXT:    s_wait_expcnt 0x0768; GFX12-NEXT:    s_wait_samplecnt 0x0769; GFX12-NEXT:    s_wait_bvhcnt 0x0770; GFX12-NEXT:    s_wait_kmcnt 0x0771; GFX12-NEXT:    s_wait_storecnt 0x0772; GFX12-NEXT:    flat_atomic_max_num_f32 v[0:1], v2 offset:-2048 scope:SCOPE_DEV773; GFX12-NEXT:    s_wait_storecnt_dscnt 0x0774; GFX12-NEXT:    global_inv scope:SCOPE_DEV775; GFX12-NEXT:    s_wait_loadcnt 0x0776; GFX12-NEXT:    s_setpc_b64 s[30:31]777;778; GFX942-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:779; GFX942:       ; %bb.0:780; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)781; GFX942-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v0782; GFX942-NEXT:    s_movk_i32 s0, 0xf800783; GFX942-NEXT:    s_nop 0784; GFX942-NEXT:    v_addc_co_u32_e32 v5, vcc, -1, v1, vcc785; GFX942-NEXT:    flat_load_dword v3, v[4:5]786; GFX942-NEXT:    s_mov_b32 s1, -1787; GFX942-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, s[0:1]788; GFX942-NEXT:    s_mov_b64 s[0:1], 0789; GFX942-NEXT:    v_max_f32_e32 v4, v2, v2790; GFX942-NEXT:  .LBB5_1: ; %atomicrmw.start791; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1792; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)793; GFX942-NEXT:    v_max_f32_e32 v2, v3, v3794; GFX942-NEXT:    v_max_f32_e32 v2, v2, v4795; GFX942-NEXT:    buffer_wbl2 sc1796; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc0797; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)798; GFX942-NEXT:    buffer_inv sc1799; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3800; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]801; GFX942-NEXT:    v_mov_b32_e32 v3, v2802; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]803; GFX942-NEXT:    s_cbranch_execnz .LBB5_1804; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end805; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]806; GFX942-NEXT:    s_setpc_b64 s[30:31]807;808; GFX11-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:809; GFX11:       ; %bb.0:810; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)811; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v0812; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)813; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo814; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0815; GFX11-NEXT:    flat_atomic_max_f32 v[0:1], v2816; GFX11-NEXT:    s_waitcnt lgkmcnt(0)817; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0818; GFX11-NEXT:    buffer_gl1_inv819; GFX11-NEXT:    buffer_gl0_inv820; GFX11-NEXT:    s_setpc_b64 s[30:31]821;822; GFX10-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:823; GFX10:       ; %bb.0:824; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)825; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v0826; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo827; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0828; GFX10-NEXT:    flat_atomic_fmax v[0:1], v2829; GFX10-NEXT:    s_waitcnt lgkmcnt(0)830; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0831; GFX10-NEXT:    buffer_gl1_inv832; GFX10-NEXT:    buffer_gl0_inv833; GFX10-NEXT:    s_setpc_b64 s[30:31]834;835; GFX90A-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:836; GFX90A:       ; %bb.0:837; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)838; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v0839; GFX90A-NEXT:    s_mov_b64 s[4:5], vcc840; GFX90A-NEXT:    v_addc_co_u32_e64 v5, s[4:5], -1, v1, s[4:5]841; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc842; GFX90A-NEXT:    v_mov_b32_e32 v0, v4843; GFX90A-NEXT:    flat_load_dword v1, v[0:1]844; GFX90A-NEXT:    s_mov_b64 s[4:5], 0845; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v2846; GFX90A-NEXT:  .LBB5_1: ; %atomicrmw.start847; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=1848; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)849; GFX90A-NEXT:    v_max_f32_e32 v0, v1, v1850; GFX90A-NEXT:    v_max_f32_e32 v0, v0, v2851; GFX90A-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc852; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)853; GFX90A-NEXT:    buffer_wbinvl1854; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1855; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]856; GFX90A-NEXT:    v_mov_b32_e32 v1, v0857; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]858; GFX90A-NEXT:    s_cbranch_execnz .LBB5_1859; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end860; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]861; GFX90A-NEXT:    s_setpc_b64 s[30:31]862;863; GFX908-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:864; GFX908:       ; %bb.0:865; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)866; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v0867; GFX908-NEXT:    s_mov_b64 s[4:5], vcc868; GFX908-NEXT:    v_addc_co_u32_e64 v4, s[4:5], -1, v1, s[4:5]869; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc870; GFX908-NEXT:    v_mov_b32_e32 v0, v3871; GFX908-NEXT:    flat_load_dword v1, v[0:1]872; GFX908-NEXT:    s_mov_b64 s[4:5], 0873; GFX908-NEXT:    v_max_f32_e32 v2, v2, v2874; GFX908-NEXT:  .LBB5_1: ; %atomicrmw.start875; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=1876; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)877; GFX908-NEXT:    v_max_f32_e32 v0, v1, v1878; GFX908-NEXT:    v_max_f32_e32 v0, v0, v2879; GFX908-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc880; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)881; GFX908-NEXT:    buffer_wbinvl1882; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1883; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]884; GFX908-NEXT:    v_mov_b32_e32 v1, v0885; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]886; GFX908-NEXT:    s_cbranch_execnz .LBB5_1887; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end888; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]889; GFX908-NEXT:    s_setpc_b64 s[30:31]890;891; GFX8-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:892; GFX8:       ; %bb.0:893; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)894; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffff800, v0895; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc896; GFX8-NEXT:    flat_load_dword v3, v[0:1]897; GFX8-NEXT:    s_mov_b64 s[4:5], 0898; GFX8-NEXT:    v_mul_f32_e32 v4, 1.0, v2899; GFX8-NEXT:  .LBB5_1: ; %atomicrmw.start900; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=1901; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)902; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v3903; GFX8-NEXT:    v_max_f32_e32 v2, v2, v4904; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc905; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)906; GFX8-NEXT:    buffer_wbinvl1907; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3908; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]909; GFX8-NEXT:    v_mov_b32_e32 v3, v2910; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]911; GFX8-NEXT:    s_cbranch_execnz .LBB5_1912; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end913; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]914; GFX8-NEXT:    s_setpc_b64 s[30:31]915;916; GFX7-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_neg__amdgpu_no_fine_grained_memory:917; GFX7:       ; %bb.0:918; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)919; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v0920; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc921; GFX7-NEXT:    flat_atomic_fmax v[0:1], v2922; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)923; GFX7-NEXT:    buffer_wbinvl1924; GFX7-NEXT:    s_setpc_b64 s[30:31]925  %gep = getelementptr inbounds float, ptr %ptr, i64 -512926  %unused = atomicrmw fmax ptr %gep, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0927  ret void928}929 930define float @flat_system_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, float %val) #0 {931; GFX12-LABEL: flat_system_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:932; GFX12:       ; %bb.0:933; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0934; GFX12-NEXT:    s_wait_expcnt 0x0935; GFX12-NEXT:    s_wait_samplecnt 0x0936; GFX12-NEXT:    s_wait_bvhcnt 0x0937; GFX12-NEXT:    s_wait_kmcnt 0x0938; GFX12-NEXT:    global_wb scope:SCOPE_SYS939; GFX12-NEXT:    s_wait_storecnt 0x0940; GFX12-NEXT:    flat_atomic_max_num_f32 v0, v[0:1], v2 offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS941; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0942; GFX12-NEXT:    global_inv scope:SCOPE_SYS943; GFX12-NEXT:    s_wait_loadcnt 0x0944; GFX12-NEXT:    s_setpc_b64 s[30:31]945;946; GFX942-LABEL: flat_system_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:947; GFX942:       ; %bb.0:948; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)949; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:2044950; GFX942-NEXT:    s_mov_b64 s[0:1], 0951; GFX942-NEXT:    v_max_f32_e32 v4, v2, v2952; GFX942-NEXT:  .LBB6_1: ; %atomicrmw.start953; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1954; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)955; GFX942-NEXT:    v_max_f32_e32 v2, v3, v3956; GFX942-NEXT:    v_max_f32_e32 v2, v2, v4957; GFX942-NEXT:    buffer_wbl2 sc0 sc1958; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 sc0 sc1959; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)960; GFX942-NEXT:    buffer_inv sc0 sc1961; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3962; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]963; GFX942-NEXT:    v_mov_b32_e32 v3, v2964; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]965; GFX942-NEXT:    s_cbranch_execnz .LBB6_1966; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end967; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]968; GFX942-NEXT:    v_mov_b32_e32 v0, v2969; GFX942-NEXT:    s_setpc_b64 s[30:31]970;971; GFX11-LABEL: flat_system_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:972; GFX11:       ; %bb.0:973; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)974; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0975; GFX11-NEXT:    flat_atomic_max_f32 v0, v[0:1], v2 offset:2044 glc976; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)977; GFX11-NEXT:    buffer_gl1_inv978; GFX11-NEXT:    buffer_gl0_inv979; GFX11-NEXT:    s_setpc_b64 s[30:31]980;981; GFX10-LABEL: flat_system_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:982; GFX10:       ; %bb.0:983; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)984; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fc, v0985; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo986; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0987; GFX10-NEXT:    flat_atomic_fmax v0, v[0:1], v2 glc988; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)989; GFX10-NEXT:    buffer_gl1_inv990; GFX10-NEXT:    buffer_gl0_inv991; GFX10-NEXT:    s_setpc_b64 s[30:31]992;993; GFX90A-LABEL: flat_system_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:994; GFX90A:       ; %bb.0:995; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)996; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:2044997; GFX90A-NEXT:    s_mov_b64 s[4:5], 0998; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v2999; GFX90A-NEXT:  .LBB6_1: ; %atomicrmw.start1000; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11001; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1002; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v31003; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v41004; GFX90A-NEXT:    buffer_wbl21005; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc1006; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1007; GFX90A-NEXT:    buffer_invl21008; GFX90A-NEXT:    buffer_wbinvl11009; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31010; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1011; GFX90A-NEXT:    v_mov_b32_e32 v3, v21012; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1013; GFX90A-NEXT:    s_cbranch_execnz .LBB6_11014; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1015; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1016; GFX90A-NEXT:    v_mov_b32_e32 v0, v21017; GFX90A-NEXT:    s_setpc_b64 s[30:31]1018;1019; GFX908-LABEL: flat_system_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1020; GFX908:       ; %bb.0:1021; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1022; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:20441023; GFX908-NEXT:    s_mov_b64 s[4:5], 01024; GFX908-NEXT:    v_max_f32_e32 v2, v2, v21025; GFX908-NEXT:  .LBB6_1: ; %atomicrmw.start1026; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11027; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1028; GFX908-NEXT:    v_mov_b32_e32 v4, v31029; GFX908-NEXT:    v_max_f32_e32 v3, v4, v41030; GFX908-NEXT:    v_max_f32_e32 v3, v3, v21031; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2044 glc1032; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1033; GFX908-NEXT:    buffer_wbinvl11034; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41035; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1036; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1037; GFX908-NEXT:    s_cbranch_execnz .LBB6_11038; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1039; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1040; GFX908-NEXT:    v_mov_b32_e32 v0, v31041; GFX908-NEXT:    s_setpc_b64 s[30:31]1042;1043; GFX8-LABEL: flat_system_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1044; GFX8:       ; %bb.0:1045; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1046; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v01047; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc1048; GFX8-NEXT:    flat_load_dword v0, v[3:4]1049; GFX8-NEXT:    s_mov_b64 s[4:5], 01050; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v21051; GFX8-NEXT:  .LBB6_1: ; %atomicrmw.start1052; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11053; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1054; GFX8-NEXT:    v_mov_b32_e32 v6, v01055; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v61056; GFX8-NEXT:    v_max_f32_e32 v5, v0, v11057; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc1058; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1059; GFX8-NEXT:    buffer_wbinvl11060; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v61061; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1062; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1063; GFX8-NEXT:    s_cbranch_execnz .LBB6_11064; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1065; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1066; GFX8-NEXT:    s_setpc_b64 s[30:31]1067;1068; GFX7-LABEL: flat_system_atomic_fmax_ret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1069; GFX7:       ; %bb.0:1070; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1071; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fc, v01072; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc1073; GFX7-NEXT:    flat_atomic_fmax v0, v[0:1], v2 glc1074; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1075; GFX7-NEXT:    buffer_wbinvl11076; GFX7-NEXT:    s_setpc_b64 s[30:31]1077  %gep = getelementptr inbounds float, ptr %ptr, i64 5111078  %result = atomicrmw fmax ptr %gep, float %val seq_cst, !amdgpu.no.fine.grained.memory !01079  ret float %result1080}1081 1082define void @flat_system_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, float %val) #0 {1083; GFX12-LABEL: flat_system_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1084; GFX12:       ; %bb.0:1085; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01086; GFX12-NEXT:    s_wait_expcnt 0x01087; GFX12-NEXT:    s_wait_samplecnt 0x01088; GFX12-NEXT:    s_wait_bvhcnt 0x01089; GFX12-NEXT:    s_wait_kmcnt 0x01090; GFX12-NEXT:    global_wb scope:SCOPE_SYS1091; GFX12-NEXT:    s_wait_storecnt 0x01092; GFX12-NEXT:    flat_atomic_max_num_f32 v[0:1], v2 offset:2044 scope:SCOPE_SYS1093; GFX12-NEXT:    s_wait_storecnt_dscnt 0x01094; GFX12-NEXT:    global_inv scope:SCOPE_SYS1095; GFX12-NEXT:    s_wait_loadcnt 0x01096; GFX12-NEXT:    s_setpc_b64 s[30:31]1097;1098; GFX942-LABEL: flat_system_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1099; GFX942:       ; %bb.0:1100; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1101; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:20441102; GFX942-NEXT:    s_mov_b64 s[0:1], 01103; GFX942-NEXT:    v_max_f32_e32 v4, v2, v21104; GFX942-NEXT:  .LBB7_1: ; %atomicrmw.start1105; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11106; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1107; GFX942-NEXT:    v_max_f32_e32 v2, v3, v31108; GFX942-NEXT:    v_max_f32_e32 v2, v2, v41109; GFX942-NEXT:    buffer_wbl2 sc0 sc11110; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 sc0 sc11111; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1112; GFX942-NEXT:    buffer_inv sc0 sc11113; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31114; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1115; GFX942-NEXT:    v_mov_b32_e32 v3, v21116; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1117; GFX942-NEXT:    s_cbranch_execnz .LBB7_11118; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1119; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1120; GFX942-NEXT:    s_setpc_b64 s[30:31]1121;1122; GFX11-LABEL: flat_system_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1123; GFX11:       ; %bb.0:1124; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1125; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01126; GFX11-NEXT:    flat_atomic_max_f32 v[0:1], v2 offset:20441127; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1128; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01129; GFX11-NEXT:    buffer_gl1_inv1130; GFX11-NEXT:    buffer_gl0_inv1131; GFX11-NEXT:    s_setpc_b64 s[30:31]1132;1133; GFX10-LABEL: flat_system_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1134; GFX10:       ; %bb.0:1135; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1136; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fc, v01137; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo1138; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01139; GFX10-NEXT:    flat_atomic_fmax v[0:1], v21140; GFX10-NEXT:    s_waitcnt lgkmcnt(0)1141; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01142; GFX10-NEXT:    buffer_gl1_inv1143; GFX10-NEXT:    buffer_gl0_inv1144; GFX10-NEXT:    s_setpc_b64 s[30:31]1145;1146; GFX90A-LABEL: flat_system_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1147; GFX90A:       ; %bb.0:1148; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1149; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:20441150; GFX90A-NEXT:    s_mov_b64 s[4:5], 01151; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v21152; GFX90A-NEXT:  .LBB7_1: ; %atomicrmw.start1153; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11154; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1155; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v31156; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v41157; GFX90A-NEXT:    buffer_wbl21158; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc1159; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1160; GFX90A-NEXT:    buffer_invl21161; GFX90A-NEXT:    buffer_wbinvl11162; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31163; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1164; GFX90A-NEXT:    v_mov_b32_e32 v3, v21165; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1166; GFX90A-NEXT:    s_cbranch_execnz .LBB7_11167; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1168; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1169; GFX90A-NEXT:    s_setpc_b64 s[30:31]1170;1171; GFX908-LABEL: flat_system_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1172; GFX908:       ; %bb.0:1173; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1174; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:20441175; GFX908-NEXT:    s_mov_b64 s[4:5], 01176; GFX908-NEXT:    v_max_f32_e32 v4, v2, v21177; GFX908-NEXT:  .LBB7_1: ; %atomicrmw.start1178; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11179; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1180; GFX908-NEXT:    v_max_f32_e32 v2, v3, v31181; GFX908-NEXT:    v_max_f32_e32 v2, v2, v41182; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc1183; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1184; GFX908-NEXT:    buffer_wbinvl11185; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31186; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1187; GFX908-NEXT:    v_mov_b32_e32 v3, v21188; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1189; GFX908-NEXT:    s_cbranch_execnz .LBB7_11190; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1191; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1192; GFX908-NEXT:    s_setpc_b64 s[30:31]1193;1194; GFX8-LABEL: flat_system_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1195; GFX8:       ; %bb.0:1196; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1197; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v01198; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc1199; GFX8-NEXT:    flat_load_dword v3, v[0:1]1200; GFX8-NEXT:    s_mov_b64 s[4:5], 01201; GFX8-NEXT:    v_mul_f32_e32 v4, 1.0, v21202; GFX8-NEXT:  .LBB7_1: ; %atomicrmw.start1203; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11204; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1205; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v31206; GFX8-NEXT:    v_max_f32_e32 v2, v2, v41207; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc1208; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1209; GFX8-NEXT:    buffer_wbinvl11210; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31211; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1212; GFX8-NEXT:    v_mov_b32_e32 v3, v21213; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1214; GFX8-NEXT:    s_cbranch_execnz .LBB7_11215; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1216; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1217; GFX8-NEXT:    s_setpc_b64 s[30:31]1218;1219; GFX7-LABEL: flat_system_atomic_fmax_noret_f32__offset12b_pos__amdgpu_no_fine_grained_memory:1220; GFX7:       ; %bb.0:1221; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1222; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fc, v01223; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc1224; GFX7-NEXT:    flat_atomic_fmax v[0:1], v21225; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1226; GFX7-NEXT:    buffer_wbinvl11227; GFX7-NEXT:    s_setpc_b64 s[30:31]1228  %gep = getelementptr inbounds float, ptr %ptr, i64 5111229  %unused = atomicrmw fmax ptr %gep, float %val seq_cst, !amdgpu.no.fine.grained.memory !01230  ret void1231}1232 1233define float @flat_agent_atomic_fmax_ret_f32__amdgpu_no_remote_memory(ptr %ptr, float %val) #0 {1234; GFX12-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_remote_memory:1235; GFX12:       ; %bb.0:1236; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01237; GFX12-NEXT:    s_wait_expcnt 0x01238; GFX12-NEXT:    s_wait_samplecnt 0x01239; GFX12-NEXT:    s_wait_bvhcnt 0x01240; GFX12-NEXT:    s_wait_kmcnt 0x01241; GFX12-NEXT:    s_wait_storecnt 0x01242; GFX12-NEXT:    flat_atomic_max_num_f32 v0, v[0:1], v2 th:TH_ATOMIC_RETURN scope:SCOPE_DEV1243; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01244; GFX12-NEXT:    global_inv scope:SCOPE_DEV1245; GFX12-NEXT:    s_wait_loadcnt 0x01246; GFX12-NEXT:    s_setpc_b64 s[30:31]1247;1248; GFX942-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_remote_memory:1249; GFX942:       ; %bb.0:1250; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1251; GFX942-NEXT:    flat_load_dword v3, v[0:1]1252; GFX942-NEXT:    s_mov_b64 s[0:1], 01253; GFX942-NEXT:    v_max_f32_e32 v4, v2, v21254; GFX942-NEXT:  .LBB8_1: ; %atomicrmw.start1255; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11256; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1257; GFX942-NEXT:    v_max_f32_e32 v2, v3, v31258; GFX942-NEXT:    v_max_f32_e32 v2, v2, v41259; GFX942-NEXT:    buffer_wbl2 sc11260; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc01261; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1262; GFX942-NEXT:    buffer_inv sc11263; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31264; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1265; GFX942-NEXT:    v_mov_b32_e32 v3, v21266; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1267; GFX942-NEXT:    s_cbranch_execnz .LBB8_11268; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1269; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1270; GFX942-NEXT:    v_mov_b32_e32 v0, v21271; GFX942-NEXT:    s_setpc_b64 s[30:31]1272;1273; GFX11-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_remote_memory:1274; GFX11:       ; %bb.0:1275; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1276; GFX11-NEXT:    flat_load_b32 v3, v[0:1]1277; GFX11-NEXT:    v_max_f32_e32 v2, v2, v21278; GFX11-NEXT:    s_mov_b32 s0, 01279; GFX11-NEXT:  .LBB8_1: ; %atomicrmw.start1280; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=11281; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1282; GFX11-NEXT:    v_mov_b32_e32 v4, v31283; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1284; GFX11-NEXT:    v_max_f32_e32 v3, v4, v41285; GFX11-NEXT:    v_max_f32_e32 v3, v3, v21286; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01287; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc1288; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1289; GFX11-NEXT:    buffer_gl1_inv1290; GFX11-NEXT:    buffer_gl0_inv1291; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41292; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s01293; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1294; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01295; GFX11-NEXT:    s_cbranch_execnz .LBB8_11296; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end1297; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s01298; GFX11-NEXT:    v_mov_b32_e32 v0, v31299; GFX11-NEXT:    s_setpc_b64 s[30:31]1300;1301; GFX10-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_remote_memory:1302; GFX10:       ; %bb.0:1303; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1304; GFX10-NEXT:    flat_load_dword v3, v[0:1]1305; GFX10-NEXT:    v_max_f32_e32 v2, v2, v21306; GFX10-NEXT:    s_mov_b32 s4, 01307; GFX10-NEXT:  .LBB8_1: ; %atomicrmw.start1308; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=11309; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1310; GFX10-NEXT:    v_mov_b32_e32 v4, v31311; GFX10-NEXT:    v_max_f32_e32 v3, v4, v41312; GFX10-NEXT:    v_max_f32_e32 v3, v3, v21313; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01314; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1315; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1316; GFX10-NEXT:    buffer_gl1_inv1317; GFX10-NEXT:    buffer_gl0_inv1318; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41319; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s41320; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s41321; GFX10-NEXT:    s_cbranch_execnz .LBB8_11322; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end1323; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s41324; GFX10-NEXT:    v_mov_b32_e32 v0, v31325; GFX10-NEXT:    s_setpc_b64 s[30:31]1326;1327; GFX90A-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_remote_memory:1328; GFX90A:       ; %bb.0:1329; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1330; GFX90A-NEXT:    flat_load_dword v3, v[0:1]1331; GFX90A-NEXT:    s_mov_b64 s[4:5], 01332; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v21333; GFX90A-NEXT:  .LBB8_1: ; %atomicrmw.start1334; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11335; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1336; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v31337; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v41338; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc1339; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1340; GFX90A-NEXT:    buffer_wbinvl11341; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31342; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1343; GFX90A-NEXT:    v_mov_b32_e32 v3, v21344; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1345; GFX90A-NEXT:    s_cbranch_execnz .LBB8_11346; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1347; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1348; GFX90A-NEXT:    v_mov_b32_e32 v0, v21349; GFX90A-NEXT:    s_setpc_b64 s[30:31]1350;1351; GFX908-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_remote_memory:1352; GFX908:       ; %bb.0:1353; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1354; GFX908-NEXT:    flat_load_dword v3, v[0:1]1355; GFX908-NEXT:    s_mov_b64 s[4:5], 01356; GFX908-NEXT:    v_max_f32_e32 v2, v2, v21357; GFX908-NEXT:  .LBB8_1: ; %atomicrmw.start1358; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11359; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1360; GFX908-NEXT:    v_mov_b32_e32 v4, v31361; GFX908-NEXT:    v_max_f32_e32 v3, v4, v41362; GFX908-NEXT:    v_max_f32_e32 v3, v3, v21363; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1364; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1365; GFX908-NEXT:    buffer_wbinvl11366; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41367; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1368; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1369; GFX908-NEXT:    s_cbranch_execnz .LBB8_11370; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1371; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1372; GFX908-NEXT:    v_mov_b32_e32 v0, v31373; GFX908-NEXT:    s_setpc_b64 s[30:31]1374;1375; GFX8-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_remote_memory:1376; GFX8:       ; %bb.0:1377; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1378; GFX8-NEXT:    flat_load_dword v3, v[0:1]1379; GFX8-NEXT:    s_mov_b64 s[4:5], 01380; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v21381; GFX8-NEXT:  .LBB8_1: ; %atomicrmw.start1382; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11383; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1384; GFX8-NEXT:    v_mov_b32_e32 v4, v31385; GFX8-NEXT:    v_mul_f32_e32 v3, 1.0, v41386; GFX8-NEXT:    v_max_f32_e32 v3, v3, v21387; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1388; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1389; GFX8-NEXT:    buffer_wbinvl11390; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41391; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1392; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1393; GFX8-NEXT:    s_cbranch_execnz .LBB8_11394; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1395; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1396; GFX8-NEXT:    v_mov_b32_e32 v0, v31397; GFX8-NEXT:    s_setpc_b64 s[30:31]1398;1399; GFX7-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_remote_memory:1400; GFX7:       ; %bb.0:1401; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1402; GFX7-NEXT:    flat_load_dword v3, v[0:1]1403; GFX7-NEXT:    s_mov_b64 s[4:5], 01404; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v21405; GFX7-NEXT:  .LBB8_1: ; %atomicrmw.start1406; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=11407; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1408; GFX7-NEXT:    v_mov_b32_e32 v4, v31409; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v41410; GFX7-NEXT:    v_max_f32_e32 v3, v3, v21411; GFX7-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1412; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1413; GFX7-NEXT:    buffer_wbinvl11414; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41415; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1416; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]1417; GFX7-NEXT:    s_cbranch_execnz .LBB8_11418; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end1419; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]1420; GFX7-NEXT:    v_mov_b32_e32 v0, v31421; GFX7-NEXT:    s_setpc_b64 s[30:31]1422  %result = atomicrmw fmax ptr %ptr, float %val syncscope("agent") seq_cst, !amdgpu.no.remote.memory !01423  ret float %result1424}1425 1426define float @flat_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory(ptr %ptr, float %val) #0 {1427; GFX12-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:1428; GFX12:       ; %bb.0:1429; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01430; GFX12-NEXT:    s_wait_expcnt 0x01431; GFX12-NEXT:    s_wait_samplecnt 0x01432; GFX12-NEXT:    s_wait_bvhcnt 0x01433; GFX12-NEXT:    s_wait_kmcnt 0x01434; GFX12-NEXT:    s_wait_storecnt 0x01435; GFX12-NEXT:    flat_atomic_max_num_f32 v0, v[0:1], v2 th:TH_ATOMIC_RETURN scope:SCOPE_DEV1436; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01437; GFX12-NEXT:    global_inv scope:SCOPE_DEV1438; GFX12-NEXT:    s_wait_loadcnt 0x01439; GFX12-NEXT:    s_setpc_b64 s[30:31]1440;1441; GFX942-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:1442; GFX942:       ; %bb.0:1443; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1444; GFX942-NEXT:    flat_load_dword v3, v[0:1]1445; GFX942-NEXT:    s_mov_b64 s[0:1], 01446; GFX942-NEXT:    v_max_f32_e32 v4, v2, v21447; GFX942-NEXT:  .LBB9_1: ; %atomicrmw.start1448; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11449; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1450; GFX942-NEXT:    v_max_f32_e32 v2, v3, v31451; GFX942-NEXT:    v_max_f32_e32 v2, v2, v41452; GFX942-NEXT:    buffer_wbl2 sc11453; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc01454; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1455; GFX942-NEXT:    buffer_inv sc11456; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31457; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1458; GFX942-NEXT:    v_mov_b32_e32 v3, v21459; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1460; GFX942-NEXT:    s_cbranch_execnz .LBB9_11461; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1462; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1463; GFX942-NEXT:    v_mov_b32_e32 v0, v21464; GFX942-NEXT:    s_setpc_b64 s[30:31]1465;1466; GFX11-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:1467; GFX11:       ; %bb.0:1468; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1469; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01470; GFX11-NEXT:    flat_atomic_max_f32 v0, v[0:1], v2 glc1471; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1472; GFX11-NEXT:    buffer_gl1_inv1473; GFX11-NEXT:    buffer_gl0_inv1474; GFX11-NEXT:    s_setpc_b64 s[30:31]1475;1476; GFX10-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:1477; GFX10:       ; %bb.0:1478; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1479; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01480; GFX10-NEXT:    flat_atomic_fmax v0, v[0:1], v2 glc1481; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1482; GFX10-NEXT:    buffer_gl1_inv1483; GFX10-NEXT:    buffer_gl0_inv1484; GFX10-NEXT:    s_setpc_b64 s[30:31]1485;1486; GFX90A-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:1487; GFX90A:       ; %bb.0:1488; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1489; GFX90A-NEXT:    flat_load_dword v3, v[0:1]1490; GFX90A-NEXT:    s_mov_b64 s[4:5], 01491; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v21492; GFX90A-NEXT:  .LBB9_1: ; %atomicrmw.start1493; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11494; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1495; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v31496; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v41497; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc1498; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1499; GFX90A-NEXT:    buffer_wbinvl11500; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31501; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1502; GFX90A-NEXT:    v_mov_b32_e32 v3, v21503; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1504; GFX90A-NEXT:    s_cbranch_execnz .LBB9_11505; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1506; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1507; GFX90A-NEXT:    v_mov_b32_e32 v0, v21508; GFX90A-NEXT:    s_setpc_b64 s[30:31]1509;1510; GFX908-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:1511; GFX908:       ; %bb.0:1512; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1513; GFX908-NEXT:    flat_load_dword v3, v[0:1]1514; GFX908-NEXT:    s_mov_b64 s[4:5], 01515; GFX908-NEXT:    v_max_f32_e32 v2, v2, v21516; GFX908-NEXT:  .LBB9_1: ; %atomicrmw.start1517; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11518; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1519; GFX908-NEXT:    v_mov_b32_e32 v4, v31520; GFX908-NEXT:    v_max_f32_e32 v3, v4, v41521; GFX908-NEXT:    v_max_f32_e32 v3, v3, v21522; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1523; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1524; GFX908-NEXT:    buffer_wbinvl11525; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41526; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1527; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1528; GFX908-NEXT:    s_cbranch_execnz .LBB9_11529; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1530; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1531; GFX908-NEXT:    v_mov_b32_e32 v0, v31532; GFX908-NEXT:    s_setpc_b64 s[30:31]1533;1534; GFX8-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:1535; GFX8:       ; %bb.0:1536; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1537; GFX8-NEXT:    flat_load_dword v3, v[0:1]1538; GFX8-NEXT:    s_mov_b64 s[4:5], 01539; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v21540; GFX8-NEXT:  .LBB9_1: ; %atomicrmw.start1541; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11542; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1543; GFX8-NEXT:    v_mov_b32_e32 v4, v31544; GFX8-NEXT:    v_mul_f32_e32 v3, 1.0, v41545; GFX8-NEXT:    v_max_f32_e32 v3, v3, v21546; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1547; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1548; GFX8-NEXT:    buffer_wbinvl11549; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41550; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1551; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1552; GFX8-NEXT:    s_cbranch_execnz .LBB9_11553; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1554; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1555; GFX8-NEXT:    v_mov_b32_e32 v0, v31556; GFX8-NEXT:    s_setpc_b64 s[30:31]1557;1558; GFX7-LABEL: flat_agent_atomic_fmax_ret_f32__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:1559; GFX7:       ; %bb.0:1560; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1561; GFX7-NEXT:    flat_atomic_fmax v0, v[0:1], v2 glc1562; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1563; GFX7-NEXT:    buffer_wbinvl11564; GFX7-NEXT:    s_setpc_b64 s[30:31]1565  %result = atomicrmw fmax ptr %ptr, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0, !amdgpu.no.remote.memory !01566  ret float %result1567}1568 1569; --------------------------------------------------------------------1570; float with ftz/daz1571; --------------------------------------------------------------------1572 1573define float @flat_agent_atomic_fmax_ret_f32__ftz__amdgpu_no_fine_grained_memory(ptr %ptr, float %val) #1 {1574; GFX12-LABEL: flat_agent_atomic_fmax_ret_f32__ftz__amdgpu_no_fine_grained_memory:1575; GFX12:       ; %bb.0:1576; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01577; GFX12-NEXT:    s_wait_expcnt 0x01578; GFX12-NEXT:    s_wait_samplecnt 0x01579; GFX12-NEXT:    s_wait_bvhcnt 0x01580; GFX12-NEXT:    s_wait_kmcnt 0x01581; GFX12-NEXT:    s_wait_storecnt 0x01582; GFX12-NEXT:    flat_atomic_max_num_f32 v0, v[0:1], v2 th:TH_ATOMIC_RETURN scope:SCOPE_DEV1583; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01584; GFX12-NEXT:    global_inv scope:SCOPE_DEV1585; GFX12-NEXT:    s_wait_loadcnt 0x01586; GFX12-NEXT:    s_setpc_b64 s[30:31]1587;1588; GFX942-LABEL: flat_agent_atomic_fmax_ret_f32__ftz__amdgpu_no_fine_grained_memory:1589; GFX942:       ; %bb.0:1590; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1591; GFX942-NEXT:    flat_load_dword v3, v[0:1]1592; GFX942-NEXT:    s_mov_b64 s[0:1], 01593; GFX942-NEXT:    v_max_f32_e32 v4, v2, v21594; GFX942-NEXT:  .LBB10_1: ; %atomicrmw.start1595; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11596; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1597; GFX942-NEXT:    v_max_f32_e32 v2, v3, v31598; GFX942-NEXT:    v_max_f32_e32 v2, v2, v41599; GFX942-NEXT:    buffer_wbl2 sc11600; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc01601; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1602; GFX942-NEXT:    buffer_inv sc11603; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31604; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1605; GFX942-NEXT:    v_mov_b32_e32 v3, v21606; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1607; GFX942-NEXT:    s_cbranch_execnz .LBB10_11608; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1609; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1610; GFX942-NEXT:    v_mov_b32_e32 v0, v21611; GFX942-NEXT:    s_setpc_b64 s[30:31]1612;1613; GFX11-LABEL: flat_agent_atomic_fmax_ret_f32__ftz__amdgpu_no_fine_grained_memory:1614; GFX11:       ; %bb.0:1615; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1616; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01617; GFX11-NEXT:    flat_atomic_max_f32 v0, v[0:1], v2 glc1618; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1619; GFX11-NEXT:    buffer_gl1_inv1620; GFX11-NEXT:    buffer_gl0_inv1621; GFX11-NEXT:    s_setpc_b64 s[30:31]1622;1623; GFX10-LABEL: flat_agent_atomic_fmax_ret_f32__ftz__amdgpu_no_fine_grained_memory:1624; GFX10:       ; %bb.0:1625; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1626; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01627; GFX10-NEXT:    flat_atomic_fmax v0, v[0:1], v2 glc1628; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1629; GFX10-NEXT:    buffer_gl1_inv1630; GFX10-NEXT:    buffer_gl0_inv1631; GFX10-NEXT:    s_setpc_b64 s[30:31]1632;1633; GFX90A-LABEL: flat_agent_atomic_fmax_ret_f32__ftz__amdgpu_no_fine_grained_memory:1634; GFX90A:       ; %bb.0:1635; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1636; GFX90A-NEXT:    flat_load_dword v3, v[0:1]1637; GFX90A-NEXT:    s_mov_b64 s[4:5], 01638; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v21639; GFX90A-NEXT:  .LBB10_1: ; %atomicrmw.start1640; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11641; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1642; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v31643; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v41644; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc1645; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1646; GFX90A-NEXT:    buffer_wbinvl11647; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31648; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1649; GFX90A-NEXT:    v_mov_b32_e32 v3, v21650; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1651; GFX90A-NEXT:    s_cbranch_execnz .LBB10_11652; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1653; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1654; GFX90A-NEXT:    v_mov_b32_e32 v0, v21655; GFX90A-NEXT:    s_setpc_b64 s[30:31]1656;1657; GFX908-LABEL: flat_agent_atomic_fmax_ret_f32__ftz__amdgpu_no_fine_grained_memory:1658; GFX908:       ; %bb.0:1659; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1660; GFX908-NEXT:    flat_load_dword v3, v[0:1]1661; GFX908-NEXT:    s_mov_b64 s[4:5], 01662; GFX908-NEXT:    v_max_f32_e32 v2, v2, v21663; GFX908-NEXT:  .LBB10_1: ; %atomicrmw.start1664; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11665; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1666; GFX908-NEXT:    v_mov_b32_e32 v4, v31667; GFX908-NEXT:    v_max_f32_e32 v3, v4, v41668; GFX908-NEXT:    v_max_f32_e32 v3, v3, v21669; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1670; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1671; GFX908-NEXT:    buffer_wbinvl11672; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41673; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1674; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1675; GFX908-NEXT:    s_cbranch_execnz .LBB10_11676; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1677; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1678; GFX908-NEXT:    v_mov_b32_e32 v0, v31679; GFX908-NEXT:    s_setpc_b64 s[30:31]1680;1681; GFX8-LABEL: flat_agent_atomic_fmax_ret_f32__ftz__amdgpu_no_fine_grained_memory:1682; GFX8:       ; %bb.0:1683; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1684; GFX8-NEXT:    flat_load_dword v3, v[0:1]1685; GFX8-NEXT:    s_mov_b64 s[4:5], 01686; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v21687; GFX8-NEXT:  .LBB10_1: ; %atomicrmw.start1688; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11689; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1690; GFX8-NEXT:    v_mov_b32_e32 v4, v31691; GFX8-NEXT:    v_mul_f32_e32 v3, 1.0, v41692; GFX8-NEXT:    v_max_f32_e32 v3, v3, v21693; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc1694; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1695; GFX8-NEXT:    buffer_wbinvl11696; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41697; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1698; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1699; GFX8-NEXT:    s_cbranch_execnz .LBB10_11700; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1701; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1702; GFX8-NEXT:    v_mov_b32_e32 v0, v31703; GFX8-NEXT:    s_setpc_b64 s[30:31]1704;1705; GFX7-LABEL: flat_agent_atomic_fmax_ret_f32__ftz__amdgpu_no_fine_grained_memory:1706; GFX7:       ; %bb.0:1707; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1708; GFX7-NEXT:    flat_atomic_fmax v0, v[0:1], v2 glc1709; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1710; GFX7-NEXT:    buffer_wbinvl11711; GFX7-NEXT:    s_setpc_b64 s[30:31]1712  %result = atomicrmw fmax ptr %ptr, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !01713  ret float %result1714}1715 1716define float @flat_agent_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory(ptr %ptr, float %val) #1 {1717; GFX12-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:1718; GFX12:       ; %bb.0:1719; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01720; GFX12-NEXT:    s_wait_expcnt 0x01721; GFX12-NEXT:    s_wait_samplecnt 0x01722; GFX12-NEXT:    s_wait_bvhcnt 0x01723; GFX12-NEXT:    s_wait_kmcnt 0x01724; GFX12-NEXT:    s_wait_storecnt 0x01725; GFX12-NEXT:    flat_atomic_max_num_f32 v0, v[0:1], v2 offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV1726; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01727; GFX12-NEXT:    global_inv scope:SCOPE_DEV1728; GFX12-NEXT:    s_wait_loadcnt 0x01729; GFX12-NEXT:    s_setpc_b64 s[30:31]1730;1731; GFX942-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:1732; GFX942:       ; %bb.0:1733; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1734; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:20441735; GFX942-NEXT:    s_mov_b64 s[0:1], 01736; GFX942-NEXT:    v_max_f32_e32 v4, v2, v21737; GFX942-NEXT:  .LBB11_1: ; %atomicrmw.start1738; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11739; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1740; GFX942-NEXT:    v_max_f32_e32 v2, v3, v31741; GFX942-NEXT:    v_max_f32_e32 v2, v2, v41742; GFX942-NEXT:    buffer_wbl2 sc11743; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 sc01744; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1745; GFX942-NEXT:    buffer_inv sc11746; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31747; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1748; GFX942-NEXT:    v_mov_b32_e32 v3, v21749; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1750; GFX942-NEXT:    s_cbranch_execnz .LBB11_11751; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1752; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1753; GFX942-NEXT:    v_mov_b32_e32 v0, v21754; GFX942-NEXT:    s_setpc_b64 s[30:31]1755;1756; GFX11-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:1757; GFX11:       ; %bb.0:1758; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1759; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01760; GFX11-NEXT:    flat_atomic_max_f32 v0, v[0:1], v2 offset:2044 glc1761; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1762; GFX11-NEXT:    buffer_gl1_inv1763; GFX11-NEXT:    buffer_gl0_inv1764; GFX11-NEXT:    s_setpc_b64 s[30:31]1765;1766; GFX10-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:1767; GFX10:       ; %bb.0:1768; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1769; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fc, v01770; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo1771; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01772; GFX10-NEXT:    flat_atomic_fmax v0, v[0:1], v2 glc1773; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1774; GFX10-NEXT:    buffer_gl1_inv1775; GFX10-NEXT:    buffer_gl0_inv1776; GFX10-NEXT:    s_setpc_b64 s[30:31]1777;1778; GFX90A-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:1779; GFX90A:       ; %bb.0:1780; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1781; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:20441782; GFX90A-NEXT:    s_mov_b64 s[4:5], 01783; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v21784; GFX90A-NEXT:  .LBB11_1: ; %atomicrmw.start1785; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11786; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1787; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v31788; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v41789; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc1790; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1791; GFX90A-NEXT:    buffer_wbinvl11792; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v31793; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1794; GFX90A-NEXT:    v_mov_b32_e32 v3, v21795; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1796; GFX90A-NEXT:    s_cbranch_execnz .LBB11_11797; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1798; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1799; GFX90A-NEXT:    v_mov_b32_e32 v0, v21800; GFX90A-NEXT:    s_setpc_b64 s[30:31]1801;1802; GFX908-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:1803; GFX908:       ; %bb.0:1804; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1805; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:20441806; GFX908-NEXT:    s_mov_b64 s[4:5], 01807; GFX908-NEXT:    v_max_f32_e32 v2, v2, v21808; GFX908-NEXT:  .LBB11_1: ; %atomicrmw.start1809; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11810; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1811; GFX908-NEXT:    v_mov_b32_e32 v4, v31812; GFX908-NEXT:    v_max_f32_e32 v3, v4, v41813; GFX908-NEXT:    v_max_f32_e32 v3, v3, v21814; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2044 glc1815; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1816; GFX908-NEXT:    buffer_wbinvl11817; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41818; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1819; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1820; GFX908-NEXT:    s_cbranch_execnz .LBB11_11821; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1822; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1823; GFX908-NEXT:    v_mov_b32_e32 v0, v31824; GFX908-NEXT:    s_setpc_b64 s[30:31]1825;1826; GFX8-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:1827; GFX8:       ; %bb.0:1828; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1829; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v01830; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc1831; GFX8-NEXT:    flat_load_dword v0, v[3:4]1832; GFX8-NEXT:    s_mov_b64 s[4:5], 01833; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v21834; GFX8-NEXT:  .LBB11_1: ; %atomicrmw.start1835; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11836; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1837; GFX8-NEXT:    v_mov_b32_e32 v6, v01838; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v61839; GFX8-NEXT:    v_max_f32_e32 v5, v0, v11840; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc1841; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1842; GFX8-NEXT:    buffer_wbinvl11843; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v61844; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1845; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1846; GFX8-NEXT:    s_cbranch_execnz .LBB11_11847; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1848; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1849; GFX8-NEXT:    s_setpc_b64 s[30:31]1850;1851; GFX7-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:1852; GFX7:       ; %bb.0:1853; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1854; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fc, v01855; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc1856; GFX7-NEXT:    flat_atomic_fmax v0, v[0:1], v2 glc1857; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1858; GFX7-NEXT:    buffer_wbinvl11859; GFX7-NEXT:    s_setpc_b64 s[30:31]1860  %gep = getelementptr inbounds float, ptr %ptr, i64 5111861  %result = atomicrmw fmax ptr %gep, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !01862  ret float %result1863}1864 1865define float @flat_agent_atomic_fmax_ret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory(ptr %ptr, float %val) #1 {1866; GFX12-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:1867; GFX12:       ; %bb.0:1868; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01869; GFX12-NEXT:    s_wait_expcnt 0x01870; GFX12-NEXT:    s_wait_samplecnt 0x01871; GFX12-NEXT:    s_wait_bvhcnt 0x01872; GFX12-NEXT:    s_wait_kmcnt 0x01873; GFX12-NEXT:    s_wait_storecnt 0x01874; GFX12-NEXT:    flat_atomic_max_num_f32 v0, v[0:1], v2 offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV1875; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x01876; GFX12-NEXT:    global_inv scope:SCOPE_DEV1877; GFX12-NEXT:    s_wait_loadcnt 0x01878; GFX12-NEXT:    s_setpc_b64 s[30:31]1879;1880; GFX942-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:1881; GFX942:       ; %bb.0:1882; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1883; GFX942-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v01884; GFX942-NEXT:    s_movk_i32 s0, 0xf8001885; GFX942-NEXT:    s_nop 01886; GFX942-NEXT:    v_addc_co_u32_e32 v5, vcc, -1, v1, vcc1887; GFX942-NEXT:    flat_load_dword v3, v[4:5]1888; GFX942-NEXT:    s_mov_b32 s1, -11889; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]1890; GFX942-NEXT:    s_mov_b64 s[0:1], 01891; GFX942-NEXT:    v_max_f32_e32 v1, v2, v21892; GFX942-NEXT:  .LBB12_1: ; %atomicrmw.start1893; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11894; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1895; GFX942-NEXT:    v_max_f32_e32 v0, v3, v31896; GFX942-NEXT:    v_max_f32_e32 v2, v0, v11897; GFX942-NEXT:    buffer_wbl2 sc11898; GFX942-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[2:3] sc01899; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1900; GFX942-NEXT:    buffer_inv sc11901; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v31902; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1903; GFX942-NEXT:    v_mov_b32_e32 v3, v01904; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1905; GFX942-NEXT:    s_cbranch_execnz .LBB12_11906; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1907; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1908; GFX942-NEXT:    s_setpc_b64 s[30:31]1909;1910; GFX11-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:1911; GFX11:       ; %bb.0:1912; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1913; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v01914; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1915; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo1916; GFX11-NEXT:    s_waitcnt_vscnt null, 0x01917; GFX11-NEXT:    flat_atomic_max_f32 v0, v[0:1], v2 glc1918; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1919; GFX11-NEXT:    buffer_gl1_inv1920; GFX11-NEXT:    buffer_gl0_inv1921; GFX11-NEXT:    s_setpc_b64 s[30:31]1922;1923; GFX10-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:1924; GFX10:       ; %bb.0:1925; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1926; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v01927; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo1928; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01929; GFX10-NEXT:    flat_atomic_fmax v0, v[0:1], v2 glc1930; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1931; GFX10-NEXT:    buffer_gl1_inv1932; GFX10-NEXT:    buffer_gl0_inv1933; GFX10-NEXT:    s_setpc_b64 s[30:31]1934;1935; GFX90A-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:1936; GFX90A:       ; %bb.0:1937; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1938; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v01939; GFX90A-NEXT:    s_mov_b64 s[4:5], vcc1940; GFX90A-NEXT:    v_addc_co_u32_e64 v5, s[4:5], -1, v1, s[4:5]1941; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc1942; GFX90A-NEXT:    v_mov_b32_e32 v0, v41943; GFX90A-NEXT:    flat_load_dword v1, v[0:1]1944; GFX90A-NEXT:    s_mov_b64 s[4:5], 01945; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v21946; GFX90A-NEXT:  .LBB12_1: ; %atomicrmw.start1947; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11948; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1949; GFX90A-NEXT:    v_max_f32_e32 v0, v1, v11950; GFX90A-NEXT:    v_max_f32_e32 v0, v0, v21951; GFX90A-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc1952; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1953; GFX90A-NEXT:    buffer_wbinvl11954; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v11955; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1956; GFX90A-NEXT:    v_mov_b32_e32 v1, v01957; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1958; GFX90A-NEXT:    s_cbranch_execnz .LBB12_11959; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1960; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1961; GFX90A-NEXT:    s_setpc_b64 s[30:31]1962;1963; GFX908-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:1964; GFX908:       ; %bb.0:1965; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1966; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v01967; GFX908-NEXT:    s_mov_b64 s[4:5], vcc1968; GFX908-NEXT:    v_addc_co_u32_e64 v4, s[4:5], -1, v1, s[4:5]1969; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc1970; GFX908-NEXT:    v_mov_b32_e32 v0, v31971; GFX908-NEXT:    flat_load_dword v0, v[0:1]1972; GFX908-NEXT:    s_mov_b64 s[4:5], 01973; GFX908-NEXT:    v_max_f32_e32 v1, v2, v21974; GFX908-NEXT:  .LBB12_1: ; %atomicrmw.start1975; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11976; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1977; GFX908-NEXT:    v_mov_b32_e32 v6, v01978; GFX908-NEXT:    v_max_f32_e32 v0, v6, v61979; GFX908-NEXT:    v_max_f32_e32 v5, v0, v11980; GFX908-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc1981; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1982; GFX908-NEXT:    buffer_wbinvl11983; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v61984; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1985; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1986; GFX908-NEXT:    s_cbranch_execnz .LBB12_11987; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1988; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1989; GFX908-NEXT:    s_setpc_b64 s[30:31]1990;1991; GFX8-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:1992; GFX8:       ; %bb.0:1993; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1994; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v01995; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, -1, v1, vcc1996; GFX8-NEXT:    flat_load_dword v0, v[3:4]1997; GFX8-NEXT:    s_mov_b64 s[4:5], 01998; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v21999; GFX8-NEXT:  .LBB12_1: ; %atomicrmw.start2000; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12001; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2002; GFX8-NEXT:    v_mov_b32_e32 v6, v02003; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v62004; GFX8-NEXT:    v_max_f32_e32 v5, v0, v12005; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc2006; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2007; GFX8-NEXT:    buffer_wbinvl12008; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v62009; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2010; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2011; GFX8-NEXT:    s_cbranch_execnz .LBB12_12012; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2013; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2014; GFX8-NEXT:    s_setpc_b64 s[30:31]2015;2016; GFX7-LABEL: flat_agent_atomic_fmax_ret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2017; GFX7:       ; %bb.0:2018; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2019; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v02020; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc2021; GFX7-NEXT:    flat_atomic_fmax v0, v[0:1], v2 glc2022; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2023; GFX7-NEXT:    buffer_wbinvl12024; GFX7-NEXT:    s_setpc_b64 s[30:31]2025  %gep = getelementptr inbounds float, ptr %ptr, i64 -5122026  %result = atomicrmw fmax ptr %gep, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !02027  ret float %result2028}2029 2030define void @flat_agent_atomic_fmax_noret_f32__ftz__amdgpu_no_fine_grained_memory(ptr %ptr, float %val) #1 {2031; GFX12-LABEL: flat_agent_atomic_fmax_noret_f32__ftz__amdgpu_no_fine_grained_memory:2032; GFX12:       ; %bb.0:2033; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02034; GFX12-NEXT:    s_wait_expcnt 0x02035; GFX12-NEXT:    s_wait_samplecnt 0x02036; GFX12-NEXT:    s_wait_bvhcnt 0x02037; GFX12-NEXT:    s_wait_kmcnt 0x02038; GFX12-NEXT:    s_wait_storecnt 0x02039; GFX12-NEXT:    flat_atomic_max_num_f32 v[0:1], v2 scope:SCOPE_DEV2040; GFX12-NEXT:    s_wait_storecnt_dscnt 0x02041; GFX12-NEXT:    global_inv scope:SCOPE_DEV2042; GFX12-NEXT:    s_wait_loadcnt 0x02043; GFX12-NEXT:    s_setpc_b64 s[30:31]2044;2045; GFX942-LABEL: flat_agent_atomic_fmax_noret_f32__ftz__amdgpu_no_fine_grained_memory:2046; GFX942:       ; %bb.0:2047; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2048; GFX942-NEXT:    flat_load_dword v3, v[0:1]2049; GFX942-NEXT:    s_mov_b64 s[0:1], 02050; GFX942-NEXT:    v_max_f32_e32 v4, v2, v22051; GFX942-NEXT:  .LBB13_1: ; %atomicrmw.start2052; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12053; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2054; GFX942-NEXT:    v_max_f32_e32 v2, v3, v32055; GFX942-NEXT:    v_max_f32_e32 v2, v2, v42056; GFX942-NEXT:    buffer_wbl2 sc12057; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc02058; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2059; GFX942-NEXT:    buffer_inv sc12060; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32061; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2062; GFX942-NEXT:    v_mov_b32_e32 v3, v22063; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2064; GFX942-NEXT:    s_cbranch_execnz .LBB13_12065; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2066; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2067; GFX942-NEXT:    s_setpc_b64 s[30:31]2068;2069; GFX11-LABEL: flat_agent_atomic_fmax_noret_f32__ftz__amdgpu_no_fine_grained_memory:2070; GFX11:       ; %bb.0:2071; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2072; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02073; GFX11-NEXT:    flat_atomic_max_f32 v[0:1], v22074; GFX11-NEXT:    s_waitcnt lgkmcnt(0)2075; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02076; GFX11-NEXT:    buffer_gl1_inv2077; GFX11-NEXT:    buffer_gl0_inv2078; GFX11-NEXT:    s_setpc_b64 s[30:31]2079;2080; GFX10-LABEL: flat_agent_atomic_fmax_noret_f32__ftz__amdgpu_no_fine_grained_memory:2081; GFX10:       ; %bb.0:2082; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2083; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02084; GFX10-NEXT:    flat_atomic_fmax v[0:1], v22085; GFX10-NEXT:    s_waitcnt lgkmcnt(0)2086; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02087; GFX10-NEXT:    buffer_gl1_inv2088; GFX10-NEXT:    buffer_gl0_inv2089; GFX10-NEXT:    s_setpc_b64 s[30:31]2090;2091; GFX90A-LABEL: flat_agent_atomic_fmax_noret_f32__ftz__amdgpu_no_fine_grained_memory:2092; GFX90A:       ; %bb.0:2093; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2094; GFX90A-NEXT:    flat_load_dword v3, v[0:1]2095; GFX90A-NEXT:    s_mov_b64 s[4:5], 02096; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v22097; GFX90A-NEXT:  .LBB13_1: ; %atomicrmw.start2098; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12099; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2100; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v32101; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v42102; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc2103; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2104; GFX90A-NEXT:    buffer_wbinvl12105; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32106; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2107; GFX90A-NEXT:    v_mov_b32_e32 v3, v22108; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2109; GFX90A-NEXT:    s_cbranch_execnz .LBB13_12110; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2111; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2112; GFX90A-NEXT:    s_setpc_b64 s[30:31]2113;2114; GFX908-LABEL: flat_agent_atomic_fmax_noret_f32__ftz__amdgpu_no_fine_grained_memory:2115; GFX908:       ; %bb.0:2116; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2117; GFX908-NEXT:    flat_load_dword v3, v[0:1]2118; GFX908-NEXT:    s_mov_b64 s[4:5], 02119; GFX908-NEXT:    v_max_f32_e32 v4, v2, v22120; GFX908-NEXT:  .LBB13_1: ; %atomicrmw.start2121; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12122; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2123; GFX908-NEXT:    v_max_f32_e32 v2, v3, v32124; GFX908-NEXT:    v_max_f32_e32 v2, v2, v42125; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc2126; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2127; GFX908-NEXT:    buffer_wbinvl12128; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32129; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2130; GFX908-NEXT:    v_mov_b32_e32 v3, v22131; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2132; GFX908-NEXT:    s_cbranch_execnz .LBB13_12133; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2134; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2135; GFX908-NEXT:    s_setpc_b64 s[30:31]2136;2137; GFX8-LABEL: flat_agent_atomic_fmax_noret_f32__ftz__amdgpu_no_fine_grained_memory:2138; GFX8:       ; %bb.0:2139; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2140; GFX8-NEXT:    flat_load_dword v3, v[0:1]2141; GFX8-NEXT:    s_mov_b64 s[4:5], 02142; GFX8-NEXT:    v_mul_f32_e32 v4, 1.0, v22143; GFX8-NEXT:  .LBB13_1: ; %atomicrmw.start2144; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12145; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2146; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v32147; GFX8-NEXT:    v_max_f32_e32 v2, v2, v42148; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc2149; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2150; GFX8-NEXT:    buffer_wbinvl12151; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32152; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2153; GFX8-NEXT:    v_mov_b32_e32 v3, v22154; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2155; GFX8-NEXT:    s_cbranch_execnz .LBB13_12156; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2157; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2158; GFX8-NEXT:    s_setpc_b64 s[30:31]2159;2160; GFX7-LABEL: flat_agent_atomic_fmax_noret_f32__ftz__amdgpu_no_fine_grained_memory:2161; GFX7:       ; %bb.0:2162; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2163; GFX7-NEXT:    flat_atomic_fmax v[0:1], v22164; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2165; GFX7-NEXT:    buffer_wbinvl12166; GFX7-NEXT:    s_setpc_b64 s[30:31]2167  %unused = atomicrmw fmax ptr %ptr, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !02168  ret void2169}2170 2171define void @flat_agent_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory(ptr %ptr, float %val) #1 {2172; GFX12-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2173; GFX12:       ; %bb.0:2174; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02175; GFX12-NEXT:    s_wait_expcnt 0x02176; GFX12-NEXT:    s_wait_samplecnt 0x02177; GFX12-NEXT:    s_wait_bvhcnt 0x02178; GFX12-NEXT:    s_wait_kmcnt 0x02179; GFX12-NEXT:    s_wait_storecnt 0x02180; GFX12-NEXT:    flat_atomic_max_num_f32 v[0:1], v2 offset:2044 scope:SCOPE_DEV2181; GFX12-NEXT:    s_wait_storecnt_dscnt 0x02182; GFX12-NEXT:    global_inv scope:SCOPE_DEV2183; GFX12-NEXT:    s_wait_loadcnt 0x02184; GFX12-NEXT:    s_setpc_b64 s[30:31]2185;2186; GFX942-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2187; GFX942:       ; %bb.0:2188; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2189; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:20442190; GFX942-NEXT:    s_mov_b64 s[0:1], 02191; GFX942-NEXT:    v_max_f32_e32 v4, v2, v22192; GFX942-NEXT:  .LBB14_1: ; %atomicrmw.start2193; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12194; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2195; GFX942-NEXT:    v_max_f32_e32 v2, v3, v32196; GFX942-NEXT:    v_max_f32_e32 v2, v2, v42197; GFX942-NEXT:    buffer_wbl2 sc12198; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 sc02199; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2200; GFX942-NEXT:    buffer_inv sc12201; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32202; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2203; GFX942-NEXT:    v_mov_b32_e32 v3, v22204; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2205; GFX942-NEXT:    s_cbranch_execnz .LBB14_12206; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2207; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2208; GFX942-NEXT:    s_setpc_b64 s[30:31]2209;2210; GFX11-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2211; GFX11:       ; %bb.0:2212; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2213; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02214; GFX11-NEXT:    flat_atomic_max_f32 v[0:1], v2 offset:20442215; GFX11-NEXT:    s_waitcnt lgkmcnt(0)2216; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02217; GFX11-NEXT:    buffer_gl1_inv2218; GFX11-NEXT:    buffer_gl0_inv2219; GFX11-NEXT:    s_setpc_b64 s[30:31]2220;2221; GFX10-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2222; GFX10:       ; %bb.0:2223; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2224; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fc, v02225; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo2226; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02227; GFX10-NEXT:    flat_atomic_fmax v[0:1], v22228; GFX10-NEXT:    s_waitcnt lgkmcnt(0)2229; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02230; GFX10-NEXT:    buffer_gl1_inv2231; GFX10-NEXT:    buffer_gl0_inv2232; GFX10-NEXT:    s_setpc_b64 s[30:31]2233;2234; GFX90A-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2235; GFX90A:       ; %bb.0:2236; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2237; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:20442238; GFX90A-NEXT:    s_mov_b64 s[4:5], 02239; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v22240; GFX90A-NEXT:  .LBB14_1: ; %atomicrmw.start2241; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12242; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2243; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v32244; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v42245; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc2246; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2247; GFX90A-NEXT:    buffer_wbinvl12248; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32249; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2250; GFX90A-NEXT:    v_mov_b32_e32 v3, v22251; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2252; GFX90A-NEXT:    s_cbranch_execnz .LBB14_12253; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2254; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2255; GFX90A-NEXT:    s_setpc_b64 s[30:31]2256;2257; GFX908-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2258; GFX908:       ; %bb.0:2259; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2260; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:20442261; GFX908-NEXT:    s_mov_b64 s[4:5], 02262; GFX908-NEXT:    v_max_f32_e32 v4, v2, v22263; GFX908-NEXT:  .LBB14_1: ; %atomicrmw.start2264; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12265; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2266; GFX908-NEXT:    v_max_f32_e32 v2, v3, v32267; GFX908-NEXT:    v_max_f32_e32 v2, v2, v42268; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc2269; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2270; GFX908-NEXT:    buffer_wbinvl12271; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32272; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2273; GFX908-NEXT:    v_mov_b32_e32 v3, v22274; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2275; GFX908-NEXT:    s_cbranch_execnz .LBB14_12276; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2277; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2278; GFX908-NEXT:    s_setpc_b64 s[30:31]2279;2280; GFX8-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2281; GFX8:       ; %bb.0:2282; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2283; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v02284; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2285; GFX8-NEXT:    flat_load_dword v3, v[0:1]2286; GFX8-NEXT:    s_mov_b64 s[4:5], 02287; GFX8-NEXT:    v_mul_f32_e32 v4, 1.0, v22288; GFX8-NEXT:  .LBB14_1: ; %atomicrmw.start2289; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12290; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2291; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v32292; GFX8-NEXT:    v_max_f32_e32 v2, v2, v42293; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc2294; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2295; GFX8-NEXT:    buffer_wbinvl12296; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32297; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2298; GFX8-NEXT:    v_mov_b32_e32 v3, v22299; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2300; GFX8-NEXT:    s_cbranch_execnz .LBB14_12301; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2302; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2303; GFX8-NEXT:    s_setpc_b64 s[30:31]2304;2305; GFX7-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2306; GFX7:       ; %bb.0:2307; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2308; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fc, v02309; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2310; GFX7-NEXT:    flat_atomic_fmax v[0:1], v22311; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2312; GFX7-NEXT:    buffer_wbinvl12313; GFX7-NEXT:    s_setpc_b64 s[30:31]2314  %gep = getelementptr inbounds float, ptr %ptr, i64 5112315  %unused = atomicrmw fmax ptr %gep, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !02316  ret void2317}2318 2319define void @flat_agent_atomic_fmax_noret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory(ptr %ptr, float %val) #1 {2320; GFX12-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2321; GFX12:       ; %bb.0:2322; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02323; GFX12-NEXT:    s_wait_expcnt 0x02324; GFX12-NEXT:    s_wait_samplecnt 0x02325; GFX12-NEXT:    s_wait_bvhcnt 0x02326; GFX12-NEXT:    s_wait_kmcnt 0x02327; GFX12-NEXT:    s_wait_storecnt 0x02328; GFX12-NEXT:    flat_atomic_max_num_f32 v[0:1], v2 offset:-2048 scope:SCOPE_DEV2329; GFX12-NEXT:    s_wait_storecnt_dscnt 0x02330; GFX12-NEXT:    global_inv scope:SCOPE_DEV2331; GFX12-NEXT:    s_wait_loadcnt 0x02332; GFX12-NEXT:    s_setpc_b64 s[30:31]2333;2334; GFX942-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2335; GFX942:       ; %bb.0:2336; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2337; GFX942-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v02338; GFX942-NEXT:    s_movk_i32 s0, 0xf8002339; GFX942-NEXT:    s_nop 02340; GFX942-NEXT:    v_addc_co_u32_e32 v5, vcc, -1, v1, vcc2341; GFX942-NEXT:    flat_load_dword v3, v[4:5]2342; GFX942-NEXT:    s_mov_b32 s1, -12343; GFX942-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, s[0:1]2344; GFX942-NEXT:    s_mov_b64 s[0:1], 02345; GFX942-NEXT:    v_max_f32_e32 v4, v2, v22346; GFX942-NEXT:  .LBB15_1: ; %atomicrmw.start2347; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12348; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2349; GFX942-NEXT:    v_max_f32_e32 v2, v3, v32350; GFX942-NEXT:    v_max_f32_e32 v2, v2, v42351; GFX942-NEXT:    buffer_wbl2 sc12352; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc02353; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2354; GFX942-NEXT:    buffer_inv sc12355; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32356; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2357; GFX942-NEXT:    v_mov_b32_e32 v3, v22358; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2359; GFX942-NEXT:    s_cbranch_execnz .LBB15_12360; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2361; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2362; GFX942-NEXT:    s_setpc_b64 s[30:31]2363;2364; GFX11-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2365; GFX11:       ; %bb.0:2366; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2367; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v02368; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2369; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo2370; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02371; GFX11-NEXT:    flat_atomic_max_f32 v[0:1], v22372; GFX11-NEXT:    s_waitcnt lgkmcnt(0)2373; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02374; GFX11-NEXT:    buffer_gl1_inv2375; GFX11-NEXT:    buffer_gl0_inv2376; GFX11-NEXT:    s_setpc_b64 s[30:31]2377;2378; GFX10-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2379; GFX10:       ; %bb.0:2380; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2381; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v02382; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo2383; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02384; GFX10-NEXT:    flat_atomic_fmax v[0:1], v22385; GFX10-NEXT:    s_waitcnt lgkmcnt(0)2386; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02387; GFX10-NEXT:    buffer_gl1_inv2388; GFX10-NEXT:    buffer_gl0_inv2389; GFX10-NEXT:    s_setpc_b64 s[30:31]2390;2391; GFX90A-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2392; GFX90A:       ; %bb.0:2393; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2394; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v02395; GFX90A-NEXT:    s_mov_b64 s[4:5], vcc2396; GFX90A-NEXT:    v_addc_co_u32_e64 v5, s[4:5], -1, v1, s[4:5]2397; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc2398; GFX90A-NEXT:    v_mov_b32_e32 v0, v42399; GFX90A-NEXT:    flat_load_dword v1, v[0:1]2400; GFX90A-NEXT:    s_mov_b64 s[4:5], 02401; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v22402; GFX90A-NEXT:  .LBB15_1: ; %atomicrmw.start2403; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12404; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2405; GFX90A-NEXT:    v_max_f32_e32 v0, v1, v12406; GFX90A-NEXT:    v_max_f32_e32 v0, v0, v22407; GFX90A-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc2408; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2409; GFX90A-NEXT:    buffer_wbinvl12410; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v12411; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2412; GFX90A-NEXT:    v_mov_b32_e32 v1, v02413; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2414; GFX90A-NEXT:    s_cbranch_execnz .LBB15_12415; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2416; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2417; GFX90A-NEXT:    s_setpc_b64 s[30:31]2418;2419; GFX908-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2420; GFX908:       ; %bb.0:2421; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2422; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v02423; GFX908-NEXT:    s_mov_b64 s[4:5], vcc2424; GFX908-NEXT:    v_addc_co_u32_e64 v4, s[4:5], -1, v1, s[4:5]2425; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc2426; GFX908-NEXT:    v_mov_b32_e32 v0, v32427; GFX908-NEXT:    flat_load_dword v1, v[0:1]2428; GFX908-NEXT:    s_mov_b64 s[4:5], 02429; GFX908-NEXT:    v_max_f32_e32 v2, v2, v22430; GFX908-NEXT:  .LBB15_1: ; %atomicrmw.start2431; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12432; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2433; GFX908-NEXT:    v_max_f32_e32 v0, v1, v12434; GFX908-NEXT:    v_max_f32_e32 v0, v0, v22435; GFX908-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc2436; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2437; GFX908-NEXT:    buffer_wbinvl12438; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v12439; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2440; GFX908-NEXT:    v_mov_b32_e32 v1, v02441; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2442; GFX908-NEXT:    s_cbranch_execnz .LBB15_12443; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2444; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2445; GFX908-NEXT:    s_setpc_b64 s[30:31]2446;2447; GFX8-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2448; GFX8:       ; %bb.0:2449; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2450; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffff800, v02451; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc2452; GFX8-NEXT:    flat_load_dword v3, v[0:1]2453; GFX8-NEXT:    s_mov_b64 s[4:5], 02454; GFX8-NEXT:    v_mul_f32_e32 v4, 1.0, v22455; GFX8-NEXT:  .LBB15_1: ; %atomicrmw.start2456; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12457; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2458; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v32459; GFX8-NEXT:    v_max_f32_e32 v2, v2, v42460; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc2461; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2462; GFX8-NEXT:    buffer_wbinvl12463; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32464; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2465; GFX8-NEXT:    v_mov_b32_e32 v3, v22466; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2467; GFX8-NEXT:    s_cbranch_execnz .LBB15_12468; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2469; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2470; GFX8-NEXT:    s_setpc_b64 s[30:31]2471;2472; GFX7-LABEL: flat_agent_atomic_fmax_noret_f32__offset12b_neg__ftz__amdgpu_no_fine_grained_memory:2473; GFX7:       ; %bb.0:2474; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2475; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v02476; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc2477; GFX7-NEXT:    flat_atomic_fmax v[0:1], v22478; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2479; GFX7-NEXT:    buffer_wbinvl12480; GFX7-NEXT:    s_setpc_b64 s[30:31]2481  %gep = getelementptr inbounds float, ptr %ptr, i64 -5122482  %unused = atomicrmw fmax ptr %gep, float %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !02483  ret void2484}2485 2486define float @flat_system_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory(ptr %ptr, float %val) #1 {2487; GFX12-LABEL: flat_system_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2488; GFX12:       ; %bb.0:2489; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02490; GFX12-NEXT:    s_wait_expcnt 0x02491; GFX12-NEXT:    s_wait_samplecnt 0x02492; GFX12-NEXT:    s_wait_bvhcnt 0x02493; GFX12-NEXT:    s_wait_kmcnt 0x02494; GFX12-NEXT:    global_wb scope:SCOPE_SYS2495; GFX12-NEXT:    s_wait_storecnt 0x02496; GFX12-NEXT:    flat_atomic_max_num_f32 v0, v[0:1], v2 offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS2497; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02498; GFX12-NEXT:    global_inv scope:SCOPE_SYS2499; GFX12-NEXT:    s_wait_loadcnt 0x02500; GFX12-NEXT:    s_setpc_b64 s[30:31]2501;2502; GFX942-LABEL: flat_system_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2503; GFX942:       ; %bb.0:2504; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2505; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:20442506; GFX942-NEXT:    s_mov_b64 s[0:1], 02507; GFX942-NEXT:    v_max_f32_e32 v4, v2, v22508; GFX942-NEXT:  .LBB16_1: ; %atomicrmw.start2509; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12510; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2511; GFX942-NEXT:    v_max_f32_e32 v2, v3, v32512; GFX942-NEXT:    v_max_f32_e32 v2, v2, v42513; GFX942-NEXT:    buffer_wbl2 sc0 sc12514; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 sc0 sc12515; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2516; GFX942-NEXT:    buffer_inv sc0 sc12517; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32518; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2519; GFX942-NEXT:    v_mov_b32_e32 v3, v22520; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2521; GFX942-NEXT:    s_cbranch_execnz .LBB16_12522; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2523; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2524; GFX942-NEXT:    v_mov_b32_e32 v0, v22525; GFX942-NEXT:    s_setpc_b64 s[30:31]2526;2527; GFX11-LABEL: flat_system_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2528; GFX11:       ; %bb.0:2529; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2530; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02531; GFX11-NEXT:    flat_atomic_max_f32 v0, v[0:1], v2 offset:2044 glc2532; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2533; GFX11-NEXT:    buffer_gl1_inv2534; GFX11-NEXT:    buffer_gl0_inv2535; GFX11-NEXT:    s_setpc_b64 s[30:31]2536;2537; GFX10-LABEL: flat_system_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2538; GFX10:       ; %bb.0:2539; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2540; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fc, v02541; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo2542; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02543; GFX10-NEXT:    flat_atomic_fmax v0, v[0:1], v2 glc2544; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2545; GFX10-NEXT:    buffer_gl1_inv2546; GFX10-NEXT:    buffer_gl0_inv2547; GFX10-NEXT:    s_setpc_b64 s[30:31]2548;2549; GFX90A-LABEL: flat_system_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2550; GFX90A:       ; %bb.0:2551; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2552; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:20442553; GFX90A-NEXT:    s_mov_b64 s[4:5], 02554; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v22555; GFX90A-NEXT:  .LBB16_1: ; %atomicrmw.start2556; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12557; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2558; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v32559; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v42560; GFX90A-NEXT:    buffer_wbl22561; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc2562; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2563; GFX90A-NEXT:    buffer_invl22564; GFX90A-NEXT:    buffer_wbinvl12565; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32566; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2567; GFX90A-NEXT:    v_mov_b32_e32 v3, v22568; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2569; GFX90A-NEXT:    s_cbranch_execnz .LBB16_12570; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2571; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2572; GFX90A-NEXT:    v_mov_b32_e32 v0, v22573; GFX90A-NEXT:    s_setpc_b64 s[30:31]2574;2575; GFX908-LABEL: flat_system_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2576; GFX908:       ; %bb.0:2577; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2578; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:20442579; GFX908-NEXT:    s_mov_b64 s[4:5], 02580; GFX908-NEXT:    v_max_f32_e32 v2, v2, v22581; GFX908-NEXT:  .LBB16_1: ; %atomicrmw.start2582; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12583; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2584; GFX908-NEXT:    v_mov_b32_e32 v4, v32585; GFX908-NEXT:    v_max_f32_e32 v3, v4, v42586; GFX908-NEXT:    v_max_f32_e32 v3, v3, v22587; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2044 glc2588; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2589; GFX908-NEXT:    buffer_wbinvl12590; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v42591; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2592; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2593; GFX908-NEXT:    s_cbranch_execnz .LBB16_12594; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2595; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2596; GFX908-NEXT:    v_mov_b32_e32 v0, v32597; GFX908-NEXT:    s_setpc_b64 s[30:31]2598;2599; GFX8-LABEL: flat_system_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2600; GFX8:       ; %bb.0:2601; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2602; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v02603; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc2604; GFX8-NEXT:    flat_load_dword v0, v[3:4]2605; GFX8-NEXT:    s_mov_b64 s[4:5], 02606; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v22607; GFX8-NEXT:  .LBB16_1: ; %atomicrmw.start2608; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12609; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2610; GFX8-NEXT:    v_mov_b32_e32 v6, v02611; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v62612; GFX8-NEXT:    v_max_f32_e32 v5, v0, v12613; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc2614; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2615; GFX8-NEXT:    buffer_wbinvl12616; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v62617; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2618; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2619; GFX8-NEXT:    s_cbranch_execnz .LBB16_12620; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2621; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2622; GFX8-NEXT:    s_setpc_b64 s[30:31]2623;2624; GFX7-LABEL: flat_system_atomic_fmax_ret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2625; GFX7:       ; %bb.0:2626; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2627; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fc, v02628; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2629; GFX7-NEXT:    flat_atomic_fmax v0, v[0:1], v2 glc2630; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2631; GFX7-NEXT:    buffer_wbinvl12632; GFX7-NEXT:    s_setpc_b64 s[30:31]2633  %gep = getelementptr inbounds float, ptr %ptr, i64 5112634  %result = atomicrmw fmax ptr %gep, float %val seq_cst, !amdgpu.no.fine.grained.memory !02635  ret float %result2636}2637 2638define void @flat_system_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory(ptr %ptr, float %val) #1 {2639; GFX12-LABEL: flat_system_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2640; GFX12:       ; %bb.0:2641; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02642; GFX12-NEXT:    s_wait_expcnt 0x02643; GFX12-NEXT:    s_wait_samplecnt 0x02644; GFX12-NEXT:    s_wait_bvhcnt 0x02645; GFX12-NEXT:    s_wait_kmcnt 0x02646; GFX12-NEXT:    global_wb scope:SCOPE_SYS2647; GFX12-NEXT:    s_wait_storecnt 0x02648; GFX12-NEXT:    flat_atomic_max_num_f32 v[0:1], v2 offset:2044 scope:SCOPE_SYS2649; GFX12-NEXT:    s_wait_storecnt_dscnt 0x02650; GFX12-NEXT:    global_inv scope:SCOPE_SYS2651; GFX12-NEXT:    s_wait_loadcnt 0x02652; GFX12-NEXT:    s_setpc_b64 s[30:31]2653;2654; GFX942-LABEL: flat_system_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2655; GFX942:       ; %bb.0:2656; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2657; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:20442658; GFX942-NEXT:    s_mov_b64 s[0:1], 02659; GFX942-NEXT:    v_max_f32_e32 v4, v2, v22660; GFX942-NEXT:  .LBB17_1: ; %atomicrmw.start2661; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12662; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2663; GFX942-NEXT:    v_max_f32_e32 v2, v3, v32664; GFX942-NEXT:    v_max_f32_e32 v2, v2, v42665; GFX942-NEXT:    buffer_wbl2 sc0 sc12666; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 sc0 sc12667; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2668; GFX942-NEXT:    buffer_inv sc0 sc12669; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32670; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2671; GFX942-NEXT:    v_mov_b32_e32 v3, v22672; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2673; GFX942-NEXT:    s_cbranch_execnz .LBB17_12674; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2675; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2676; GFX942-NEXT:    s_setpc_b64 s[30:31]2677;2678; GFX11-LABEL: flat_system_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2679; GFX11:       ; %bb.0:2680; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2681; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02682; GFX11-NEXT:    flat_atomic_max_f32 v[0:1], v2 offset:20442683; GFX11-NEXT:    s_waitcnt lgkmcnt(0)2684; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02685; GFX11-NEXT:    buffer_gl1_inv2686; GFX11-NEXT:    buffer_gl0_inv2687; GFX11-NEXT:    s_setpc_b64 s[30:31]2688;2689; GFX10-LABEL: flat_system_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2690; GFX10:       ; %bb.0:2691; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2692; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fc, v02693; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo2694; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02695; GFX10-NEXT:    flat_atomic_fmax v[0:1], v22696; GFX10-NEXT:    s_waitcnt lgkmcnt(0)2697; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02698; GFX10-NEXT:    buffer_gl1_inv2699; GFX10-NEXT:    buffer_gl0_inv2700; GFX10-NEXT:    s_setpc_b64 s[30:31]2701;2702; GFX90A-LABEL: flat_system_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2703; GFX90A:       ; %bb.0:2704; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2705; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:20442706; GFX90A-NEXT:    s_mov_b64 s[4:5], 02707; GFX90A-NEXT:    v_max_f32_e32 v4, v2, v22708; GFX90A-NEXT:  .LBB17_1: ; %atomicrmw.start2709; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12710; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2711; GFX90A-NEXT:    v_max_f32_e32 v2, v3, v32712; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v42713; GFX90A-NEXT:    buffer_wbl22714; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc2715; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2716; GFX90A-NEXT:    buffer_invl22717; GFX90A-NEXT:    buffer_wbinvl12718; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32719; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2720; GFX90A-NEXT:    v_mov_b32_e32 v3, v22721; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2722; GFX90A-NEXT:    s_cbranch_execnz .LBB17_12723; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2724; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2725; GFX90A-NEXT:    s_setpc_b64 s[30:31]2726;2727; GFX908-LABEL: flat_system_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2728; GFX908:       ; %bb.0:2729; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2730; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:20442731; GFX908-NEXT:    s_mov_b64 s[4:5], 02732; GFX908-NEXT:    v_max_f32_e32 v4, v2, v22733; GFX908-NEXT:  .LBB17_1: ; %atomicrmw.start2734; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12735; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2736; GFX908-NEXT:    v_max_f32_e32 v2, v3, v32737; GFX908-NEXT:    v_max_f32_e32 v2, v2, v42738; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc2739; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2740; GFX908-NEXT:    buffer_wbinvl12741; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32742; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2743; GFX908-NEXT:    v_mov_b32_e32 v3, v22744; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2745; GFX908-NEXT:    s_cbranch_execnz .LBB17_12746; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2747; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2748; GFX908-NEXT:    s_setpc_b64 s[30:31]2749;2750; GFX8-LABEL: flat_system_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2751; GFX8:       ; %bb.0:2752; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2753; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v02754; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2755; GFX8-NEXT:    flat_load_dword v3, v[0:1]2756; GFX8-NEXT:    s_mov_b64 s[4:5], 02757; GFX8-NEXT:    v_mul_f32_e32 v4, 1.0, v22758; GFX8-NEXT:  .LBB17_1: ; %atomicrmw.start2759; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12760; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2761; GFX8-NEXT:    v_mul_f32_e32 v2, 1.0, v32762; GFX8-NEXT:    v_max_f32_e32 v2, v2, v42763; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc2764; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2765; GFX8-NEXT:    buffer_wbinvl12766; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v32767; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2768; GFX8-NEXT:    v_mov_b32_e32 v3, v22769; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2770; GFX8-NEXT:    s_cbranch_execnz .LBB17_12771; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2772; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2773; GFX8-NEXT:    s_setpc_b64 s[30:31]2774;2775; GFX7-LABEL: flat_system_atomic_fmax_noret_f32__offset12b_pos__ftz__amdgpu_no_fine_grained_memory:2776; GFX7:       ; %bb.0:2777; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2778; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fc, v02779; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc2780; GFX7-NEXT:    flat_atomic_fmax v[0:1], v22781; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2782; GFX7-NEXT:    buffer_wbinvl12783; GFX7-NEXT:    s_setpc_b64 s[30:31]2784  %gep = getelementptr inbounds float, ptr %ptr, i64 5112785  %unused = atomicrmw fmax ptr %gep, float %val seq_cst, !amdgpu.no.fine.grained.memory !02786  ret void2787}2788 2789; --------------------------------------------------------------------2790; double2791; --------------------------------------------------------------------2792 2793define double @flat_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory(ptr %ptr, double %val) #0 {2794; GFX12-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory:2795; GFX12:       ; %bb.0:2796; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02797; GFX12-NEXT:    s_wait_expcnt 0x02798; GFX12-NEXT:    s_wait_samplecnt 0x02799; GFX12-NEXT:    s_wait_bvhcnt 0x02800; GFX12-NEXT:    s_wait_kmcnt 0x02801; GFX12-NEXT:    v_max_num_f64_e32 v[4:5], v[2:3], v[2:3]2802; GFX12-NEXT:    s_mov_b64 s[0:1], src_private_base2803; GFX12-NEXT:    s_mov_b32 s0, exec_lo2804; GFX12-NEXT:    ; implicit-def: $vgpr2_vgpr32805; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2806; GFX12-NEXT:    v_cmpx_ne_u32_e64 s1, v12807; GFX12-NEXT:    s_xor_b32 s0, exec_lo, s02808; GFX12-NEXT:    s_cbranch_execz .LBB18_42809; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global2810; GFX12-NEXT:    flat_load_b64 v[2:3], v[0:1]2811; GFX12-NEXT:    s_mov_b32 s1, 02812; GFX12-NEXT:  .LBB18_2: ; %atomicrmw.start2813; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=12814; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02815; GFX12-NEXT:    v_dual_mov_b32 v9, v3 :: v_dual_mov_b32 v8, v22816; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2817; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[8:9], v[8:9]2818; GFX12-NEXT:    v_max_num_f64_e32 v[6:7], v[2:3], v[4:5]2819; GFX12-NEXT:    s_wait_storecnt 0x02820; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[2:3], v[0:1], v[6:9] th:TH_ATOMIC_RETURN scope:SCOPE_DEV2821; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x02822; GFX12-NEXT:    global_inv scope:SCOPE_DEV2823; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[2:3], v[8:9]2824; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2825; GFX12-NEXT:    s_or_b32 s1, vcc_lo, s12826; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2827; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s12828; GFX12-NEXT:    s_cbranch_execnz .LBB18_22829; GFX12-NEXT:  ; %bb.3: ; %Flow2830; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s12831; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr12832; GFX12-NEXT:    ; implicit-def: $vgpr4_vgpr52833; GFX12-NEXT:  .LBB18_4: ; %Flow22834; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2835; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s02836; GFX12-NEXT:    s_cbranch_execz .LBB18_62837; GFX12-NEXT:  ; %bb.5: ; %atomicrmw.private2838; GFX12-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]2839; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)2840; GFX12-NEXT:    v_cndmask_b32_e32 v6, -1, v0, vcc_lo2841; GFX12-NEXT:    scratch_load_b64 v[2:3], v6, off2842; GFX12-NEXT:    s_wait_loadcnt 0x02843; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[2:3], v[2:3]2844; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)2845; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[4:5]2846; GFX12-NEXT:    scratch_store_b64 v6, v[0:1], off2847; GFX12-NEXT:  .LBB18_6: ; %atomicrmw.phi2848; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)2849; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s02850; GFX12-NEXT:    v_dual_mov_b32 v0, v2 :: v_dual_mov_b32 v1, v32851; GFX12-NEXT:    s_wait_loadcnt 0x02852; GFX12-NEXT:    s_setpc_b64 s[30:31]2853;2854; GFX942-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory:2855; GFX942:       ; %bb.0:2856; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2857; GFX942-NEXT:    v_mov_b32_e32 v5, v12858; GFX942-NEXT:    s_mov_b64 s[0:1], src_private_base2859; GFX942-NEXT:    v_mov_b32_e32 v4, v02860; GFX942-NEXT:    v_cmp_ne_u32_e32 vcc, s1, v52861; GFX942-NEXT:    ; implicit-def: $vgpr0_vgpr12862; GFX942-NEXT:    s_and_saveexec_b64 s[0:1], vcc2863; GFX942-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]2864; GFX942-NEXT:    s_cbranch_execnz .LBB18_32865; GFX942-NEXT:  ; %bb.1: ; %Flow2866; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]2867; GFX942-NEXT:    s_cbranch_execnz .LBB18_42868; GFX942-NEXT:  .LBB18_2: ; %atomicrmw.phi2869; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2870; GFX942-NEXT:    s_setpc_b64 s[30:31]2871; GFX942-NEXT:  .LBB18_3: ; %atomicrmw.global2872; GFX942-NEXT:    buffer_wbl2 sc12873; GFX942-NEXT:    flat_atomic_max_f64 v[0:1], v[4:5], v[2:3] sc02874; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2875; GFX942-NEXT:    buffer_inv sc12876; GFX942-NEXT:    ; implicit-def: $vgpr4_vgpr52877; GFX942-NEXT:    ; implicit-def: $vgpr2_vgpr32878; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]2879; GFX942-NEXT:    s_cbranch_execz .LBB18_22880; GFX942-NEXT:  .LBB18_4: ; %atomicrmw.private2881; GFX942-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]2882; GFX942-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]2883; GFX942-NEXT:    s_nop 02884; GFX942-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc2885; GFX942-NEXT:    scratch_load_dwordx2 v[0:1], v6, off2886; GFX942-NEXT:    s_waitcnt vmcnt(0)2887; GFX942-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]2888; GFX942-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]2889; GFX942-NEXT:    scratch_store_dwordx2 v6, v[2:3], off2890; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2891; GFX942-NEXT:    s_waitcnt vmcnt(0)2892; GFX942-NEXT:    s_setpc_b64 s[30:31]2893;2894; GFX11-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory:2895; GFX11:       ; %bb.0:2896; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2897; GFX11-NEXT:    v_max_f64 v[4:5], v[2:3], v[2:3]2898; GFX11-NEXT:    s_mov_b64 s[0:1], src_private_base2899; GFX11-NEXT:    s_mov_b32 s0, exec_lo2900; GFX11-NEXT:    ; implicit-def: $vgpr2_vgpr32901; GFX11-NEXT:    v_cmpx_ne_u32_e64 s1, v12902; GFX11-NEXT:    s_xor_b32 s0, exec_lo, s02903; GFX11-NEXT:    s_cbranch_execz .LBB18_42904; GFX11-NEXT:  ; %bb.1: ; %atomicrmw.global2905; GFX11-NEXT:    flat_load_b64 v[2:3], v[0:1]2906; GFX11-NEXT:    s_mov_b32 s1, 02907; GFX11-NEXT:  .LBB18_2: ; %atomicrmw.start2908; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=12909; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2910; GFX11-NEXT:    v_dual_mov_b32 v9, v3 :: v_dual_mov_b32 v8, v22911; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2912; GFX11-NEXT:    v_max_f64 v[2:3], v[8:9], v[8:9]2913; GFX11-NEXT:    v_max_f64 v[6:7], v[2:3], v[4:5]2914; GFX11-NEXT:    s_waitcnt_vscnt null, 0x02915; GFX11-NEXT:    flat_atomic_cmpswap_b64 v[2:3], v[0:1], v[6:9] glc2916; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2917; GFX11-NEXT:    buffer_gl1_inv2918; GFX11-NEXT:    buffer_gl0_inv2919; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[2:3], v[8:9]2920; GFX11-NEXT:    s_or_b32 s1, vcc_lo, s12921; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2922; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s12923; GFX11-NEXT:    s_cbranch_execnz .LBB18_22924; GFX11-NEXT:  ; %bb.3: ; %Flow2925; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s12926; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr12927; GFX11-NEXT:    ; implicit-def: $vgpr4_vgpr52928; GFX11-NEXT:  .LBB18_4: ; %Flow22929; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s02930; GFX11-NEXT:    s_cbranch_execz .LBB18_62931; GFX11-NEXT:  ; %bb.5: ; %atomicrmw.private2932; GFX11-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]2933; GFX11-NEXT:    v_cndmask_b32_e32 v6, -1, v0, vcc_lo2934; GFX11-NEXT:    scratch_load_b64 v[2:3], v6, off2935; GFX11-NEXT:    s_waitcnt vmcnt(0)2936; GFX11-NEXT:    v_max_f64 v[0:1], v[2:3], v[2:3]2937; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2938; GFX11-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]2939; GFX11-NEXT:    scratch_store_b64 v6, v[0:1], off2940; GFX11-NEXT:  .LBB18_6: ; %atomicrmw.phi2941; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s02942; GFX11-NEXT:    v_dual_mov_b32 v0, v2 :: v_dual_mov_b32 v1, v32943; GFX11-NEXT:    s_setpc_b64 s[30:31]2944;2945; GFX10-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory:2946; GFX10:       ; %bb.0:2947; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2948; GFX10-NEXT:    v_mov_b32_e32 v5, v12949; GFX10-NEXT:    s_mov_b64 s[4:5], src_private_base2950; GFX10-NEXT:    v_mov_b32_e32 v4, v02951; GFX10-NEXT:    ; implicit-def: $vgpr0_vgpr12952; GFX10-NEXT:    v_cmp_ne_u32_e32 vcc_lo, s5, v52953; GFX10-NEXT:    s_and_saveexec_b32 s4, vcc_lo2954; GFX10-NEXT:    s_xor_b32 s4, exec_lo, s42955; GFX10-NEXT:    s_cbranch_execnz .LBB18_32956; GFX10-NEXT:  ; %bb.1: ; %Flow2957; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s42958; GFX10-NEXT:    s_cbranch_execnz .LBB18_42959; GFX10-NEXT:  .LBB18_2: ; %atomicrmw.phi2960; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)2961; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s42962; GFX10-NEXT:    s_setpc_b64 s[30:31]2963; GFX10-NEXT:  .LBB18_3: ; %atomicrmw.global2964; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02965; GFX10-NEXT:    flat_atomic_fmax_x2 v[0:1], v[4:5], v[2:3] glc2966; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2967; GFX10-NEXT:    buffer_gl1_inv2968; GFX10-NEXT:    buffer_gl0_inv2969; GFX10-NEXT:    ; implicit-def: $vgpr4_vgpr52970; GFX10-NEXT:    ; implicit-def: $vgpr2_vgpr32971; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s42972; GFX10-NEXT:    s_cbranch_execz .LBB18_22973; GFX10-NEXT:  .LBB18_4: ; %atomicrmw.private2974; GFX10-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[4:5]2975; GFX10-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]2976; GFX10-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc_lo2977; GFX10-NEXT:    s_clause 0x12978; GFX10-NEXT:    buffer_load_dword v0, v6, s[0:3], 0 offen2979; GFX10-NEXT:    buffer_load_dword v1, v6, s[0:3], 0 offen offset:42980; GFX10-NEXT:    s_waitcnt vmcnt(0)2981; GFX10-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]2982; GFX10-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]2983; GFX10-NEXT:    buffer_store_dword v2, v6, s[0:3], 0 offen2984; GFX10-NEXT:    buffer_store_dword v3, v6, s[0:3], 0 offen offset:42985; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)2986; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s42987; GFX10-NEXT:    s_setpc_b64 s[30:31]2988;2989; GFX90A-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory:2990; GFX90A:       ; %bb.0:2991; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2992; GFX90A-NEXT:    v_mov_b32_e32 v5, v12993; GFX90A-NEXT:    s_mov_b64 s[4:5], src_private_base2994; GFX90A-NEXT:    v_mov_b32_e32 v4, v02995; GFX90A-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v52996; GFX90A-NEXT:    ; implicit-def: $vgpr0_vgpr12997; GFX90A-NEXT:    s_and_saveexec_b64 s[4:5], vcc2998; GFX90A-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]2999; GFX90A-NEXT:    s_cbranch_execnz .LBB18_33000; GFX90A-NEXT:  ; %bb.1: ; %Flow3001; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3002; GFX90A-NEXT:    s_cbranch_execnz .LBB18_43003; GFX90A-NEXT:  .LBB18_2: ; %atomicrmw.phi3004; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]3005; GFX90A-NEXT:    s_setpc_b64 s[30:31]3006; GFX90A-NEXT:  .LBB18_3: ; %atomicrmw.global3007; GFX90A-NEXT:    flat_atomic_max_f64 v[0:1], v[4:5], v[2:3] glc3008; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3009; GFX90A-NEXT:    buffer_wbinvl13010; GFX90A-NEXT:    ; implicit-def: $vgpr4_vgpr53011; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr33012; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3013; GFX90A-NEXT:    s_cbranch_execz .LBB18_23014; GFX90A-NEXT:  .LBB18_4: ; %atomicrmw.private3015; GFX90A-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]3016; GFX90A-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc3017; GFX90A-NEXT:    buffer_load_dword v0, v6, s[0:3], 0 offen3018; GFX90A-NEXT:    buffer_load_dword v1, v6, s[0:3], 0 offen offset:43019; GFX90A-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3020; GFX90A-NEXT:    s_waitcnt vmcnt(0)3021; GFX90A-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]3022; GFX90A-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]3023; GFX90A-NEXT:    buffer_store_dword v2, v6, s[0:3], 0 offen3024; GFX90A-NEXT:    buffer_store_dword v3, v6, s[0:3], 0 offen offset:43025; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]3026; GFX90A-NEXT:    s_waitcnt vmcnt(0)3027; GFX90A-NEXT:    s_setpc_b64 s[30:31]3028;3029; GFX908-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory:3030; GFX908:       ; %bb.0:3031; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3032; GFX908-NEXT:    v_max_f64 v[4:5], v[2:3], v[2:3]3033; GFX908-NEXT:    s_mov_b64 s[4:5], src_private_base3034; GFX908-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v13035; GFX908-NEXT:    ; implicit-def: $vgpr2_vgpr33036; GFX908-NEXT:    s_and_saveexec_b64 s[4:5], vcc3037; GFX908-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]3038; GFX908-NEXT:    s_cbranch_execz .LBB18_43039; GFX908-NEXT:  ; %bb.1: ; %atomicrmw.global3040; GFX908-NEXT:    flat_load_dwordx2 v[2:3], v[0:1]3041; GFX908-NEXT:    s_mov_b64 s[6:7], 03042; GFX908-NEXT:  .LBB18_2: ; %atomicrmw.start3043; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=13044; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3045; GFX908-NEXT:    v_mov_b32_e32 v9, v33046; GFX908-NEXT:    v_mov_b32_e32 v8, v23047; GFX908-NEXT:    v_max_f64 v[2:3], v[8:9], v[8:9]3048; GFX908-NEXT:    v_max_f64 v[6:7], v[2:3], v[4:5]3049; GFX908-NEXT:    flat_atomic_cmpswap_x2 v[2:3], v[0:1], v[6:9] glc3050; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3051; GFX908-NEXT:    buffer_wbinvl13052; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[2:3], v[8:9]3053; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]3054; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]3055; GFX908-NEXT:    s_cbranch_execnz .LBB18_23056; GFX908-NEXT:  ; %bb.3: ; %Flow3057; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]3058; GFX908-NEXT:    ; implicit-def: $vgpr0_vgpr13059; GFX908-NEXT:    ; implicit-def: $vgpr4_vgpr53060; GFX908-NEXT:  .LBB18_4: ; %Flow23061; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3062; GFX908-NEXT:    s_cbranch_execz .LBB18_63063; GFX908-NEXT:  ; %bb.5: ; %atomicrmw.private3064; GFX908-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]3065; GFX908-NEXT:    v_cndmask_b32_e32 v6, -1, v0, vcc3066; GFX908-NEXT:    buffer_load_dword v2, v6, s[0:3], 0 offen3067; GFX908-NEXT:    buffer_load_dword v3, v6, s[0:3], 0 offen offset:43068; GFX908-NEXT:    s_waitcnt vmcnt(0)3069; GFX908-NEXT:    v_max_f64 v[0:1], v[2:3], v[2:3]3070; GFX908-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]3071; GFX908-NEXT:    buffer_store_dword v0, v6, s[0:3], 0 offen3072; GFX908-NEXT:    buffer_store_dword v1, v6, s[0:3], 0 offen offset:43073; GFX908-NEXT:  .LBB18_6: ; %atomicrmw.phi3074; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3075; GFX908-NEXT:    v_mov_b32_e32 v0, v23076; GFX908-NEXT:    v_mov_b32_e32 v1, v33077; GFX908-NEXT:    s_waitcnt vmcnt(0)3078; GFX908-NEXT:    s_setpc_b64 s[30:31]3079;3080; GFX8-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory:3081; GFX8:       ; %bb.0:3082; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3083; GFX8-NEXT:    v_max_f64 v[4:5], v[2:3], v[2:3]3084; GFX8-NEXT:    s_mov_b64 s[4:5], 0xc03085; GFX8-NEXT:    s_load_dword s4, s[4:5], 0x03086; GFX8-NEXT:    ; implicit-def: $vgpr2_vgpr33087; GFX8-NEXT:    s_waitcnt lgkmcnt(0)3088; GFX8-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v13089; GFX8-NEXT:    s_and_saveexec_b64 s[4:5], vcc3090; GFX8-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]3091; GFX8-NEXT:    s_cbranch_execz .LBB18_43092; GFX8-NEXT:  ; %bb.1: ; %atomicrmw.global3093; GFX8-NEXT:    v_add_u32_e32 v2, vcc, 4, v03094; GFX8-NEXT:    v_addc_u32_e32 v3, vcc, 0, v1, vcc3095; GFX8-NEXT:    flat_load_dword v3, v[2:3]3096; GFX8-NEXT:    flat_load_dword v2, v[0:1]3097; GFX8-NEXT:    s_mov_b64 s[6:7], 03098; GFX8-NEXT:  .LBB18_2: ; %atomicrmw.start3099; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=13100; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3101; GFX8-NEXT:    v_mov_b32_e32 v9, v33102; GFX8-NEXT:    v_mov_b32_e32 v8, v23103; GFX8-NEXT:    v_max_f64 v[2:3], v[8:9], v[8:9]3104; GFX8-NEXT:    v_max_f64 v[6:7], v[2:3], v[4:5]3105; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[2:3], v[0:1], v[6:9] glc3106; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3107; GFX8-NEXT:    buffer_wbinvl13108; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[2:3], v[8:9]3109; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]3110; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]3111; GFX8-NEXT:    s_cbranch_execnz .LBB18_23112; GFX8-NEXT:  ; %bb.3: ; %Flow3113; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]3114; GFX8-NEXT:    ; implicit-def: $vgpr0_vgpr13115; GFX8-NEXT:    ; implicit-def: $vgpr4_vgpr53116; GFX8-NEXT:  .LBB18_4: ; %Flow23117; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3118; GFX8-NEXT:    s_cbranch_execz .LBB18_63119; GFX8-NEXT:  ; %bb.5: ; %atomicrmw.private3120; GFX8-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]3121; GFX8-NEXT:    v_cndmask_b32_e32 v6, -1, v0, vcc3122; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 4, v63123; GFX8-NEXT:    buffer_load_dword v2, v6, s[0:3], 0 offen3124; GFX8-NEXT:    buffer_load_dword v3, v7, s[0:3], 0 offen3125; GFX8-NEXT:    s_waitcnt vmcnt(0)3126; GFX8-NEXT:    v_max_f64 v[0:1], v[2:3], v[2:3]3127; GFX8-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]3128; GFX8-NEXT:    buffer_store_dword v0, v6, s[0:3], 0 offen3129; GFX8-NEXT:    buffer_store_dword v1, v7, s[0:3], 0 offen3130; GFX8-NEXT:  .LBB18_6: ; %atomicrmw.phi3131; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3132; GFX8-NEXT:    v_mov_b32_e32 v0, v23133; GFX8-NEXT:    v_mov_b32_e32 v1, v33134; GFX8-NEXT:    s_waitcnt vmcnt(0)3135; GFX8-NEXT:    s_setpc_b64 s[30:31]3136;3137; GFX7-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory:3138; GFX7:       ; %bb.0:3139; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3140; GFX7-NEXT:    s_mov_b64 s[4:5], 0xc03141; GFX7-NEXT:    s_load_dword s4, s[4:5], 0x03142; GFX7-NEXT:    v_mov_b32_e32 v5, v13143; GFX7-NEXT:    v_mov_b32_e32 v4, v03144; GFX7-NEXT:    ; implicit-def: $vgpr0_vgpr13145; GFX7-NEXT:    s_waitcnt lgkmcnt(0)3146; GFX7-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v53147; GFX7-NEXT:    s_and_saveexec_b64 s[4:5], vcc3148; GFX7-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]3149; GFX7-NEXT:    s_cbranch_execnz .LBB18_33150; GFX7-NEXT:  ; %bb.1: ; %Flow3151; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3152; GFX7-NEXT:    s_cbranch_execnz .LBB18_43153; GFX7-NEXT:  .LBB18_2: ; %atomicrmw.phi3154; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]3155; GFX7-NEXT:    s_setpc_b64 s[30:31]3156; GFX7-NEXT:  .LBB18_3: ; %atomicrmw.global3157; GFX7-NEXT:    flat_atomic_fmax_x2 v[0:1], v[4:5], v[2:3] glc3158; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3159; GFX7-NEXT:    buffer_wbinvl13160; GFX7-NEXT:    ; implicit-def: $vgpr4_vgpr53161; GFX7-NEXT:    ; implicit-def: $vgpr2_vgpr33162; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3163; GFX7-NEXT:    s_cbranch_execz .LBB18_23164; GFX7-NEXT:  .LBB18_4: ; %atomicrmw.private3165; GFX7-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]3166; GFX7-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3167; GFX7-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc3168; GFX7-NEXT:    v_add_i32_e32 v7, vcc, 4, v63169; GFX7-NEXT:    buffer_load_dword v0, v6, s[0:3], 0 offen3170; GFX7-NEXT:    buffer_load_dword v1, v7, s[0:3], 0 offen3171; GFX7-NEXT:    s_waitcnt vmcnt(0)3172; GFX7-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]3173; GFX7-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]3174; GFX7-NEXT:    buffer_store_dword v2, v6, s[0:3], 0 offen3175; GFX7-NEXT:    buffer_store_dword v3, v7, s[0:3], 0 offen3176; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]3177; GFX7-NEXT:    s_waitcnt vmcnt(0)3178; GFX7-NEXT:    s_setpc_b64 s[30:31]3179  %result = atomicrmw fmax ptr %ptr, double %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !03180  ret double %result3181}3182 3183define double @flat_agent_atomic_fmax_ret_f64__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, double %val) #0 {3184; GFX12-LABEL: flat_agent_atomic_fmax_ret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3185; GFX12:       ; %bb.0:3186; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03187; GFX12-NEXT:    s_wait_expcnt 0x03188; GFX12-NEXT:    s_wait_samplecnt 0x03189; GFX12-NEXT:    s_wait_bvhcnt 0x03190; GFX12-NEXT:    s_wait_kmcnt 0x03191; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[2:3]3192; GFX12-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7f8, v03193; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)3194; GFX12-NEXT:    v_add_co_ci_u32_e64 v5, null, 0, v1, vcc_lo3195; GFX12-NEXT:    s_mov_b64 s[0:1], src_private_base3196; GFX12-NEXT:    s_mov_b32 s0, exec_lo3197; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr13198; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3199; GFX12-NEXT:    v_cmpx_ne_u32_e64 s1, v53200; GFX12-NEXT:    s_xor_b32 s0, exec_lo, s03201; GFX12-NEXT:    s_cbranch_execnz .LBB19_33202; GFX12-NEXT:  ; %bb.1: ; %Flow23203; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3204; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s03205; GFX12-NEXT:    s_cbranch_execnz .LBB19_63206; GFX12-NEXT:  .LBB19_2: ; %atomicrmw.phi3207; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3208; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s03209; GFX12-NEXT:    s_wait_loadcnt 0x03210; GFX12-NEXT:    s_setpc_b64 s[30:31]3211; GFX12-NEXT:  .LBB19_3: ; %atomicrmw.global3212; GFX12-NEXT:    flat_load_b64 v[0:1], v[4:5]3213; GFX12-NEXT:    s_mov_b32 s1, 03214; GFX12-NEXT:  .LBB19_4: ; %atomicrmw.start3215; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=13216; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03217; GFX12-NEXT:    v_dual_mov_b32 v9, v1 :: v_dual_mov_b32 v8, v03218; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3219; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[8:9], v[8:9]3220; GFX12-NEXT:    v_max_num_f64_e32 v[6:7], v[0:1], v[2:3]3221; GFX12-NEXT:    s_wait_storecnt 0x03222; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[0:1], v[4:5], v[6:9] th:TH_ATOMIC_RETURN scope:SCOPE_DEV3223; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03224; GFX12-NEXT:    global_inv scope:SCOPE_DEV3225; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[8:9]3226; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3227; GFX12-NEXT:    s_or_b32 s1, vcc_lo, s13228; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3229; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s13230; GFX12-NEXT:    s_cbranch_execnz .LBB19_43231; GFX12-NEXT:  ; %bb.5: ; %Flow3232; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s13233; GFX12-NEXT:    ; implicit-def: $vgpr4_vgpr53234; GFX12-NEXT:    ; implicit-def: $vgpr2_vgpr33235; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s03236; GFX12-NEXT:    s_cbranch_execz .LBB19_23237; GFX12-NEXT:  .LBB19_6: ; %atomicrmw.private3238; GFX12-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[4:5]3239; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)3240; GFX12-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc_lo3241; GFX12-NEXT:    scratch_load_b64 v[0:1], v6, off3242; GFX12-NEXT:    s_wait_loadcnt 0x03243; GFX12-NEXT:    v_max_num_f64_e32 v[4:5], v[0:1], v[0:1]3244; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)3245; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[4:5], v[2:3]3246; GFX12-NEXT:    scratch_store_b64 v6, v[2:3], off3247; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3248; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s03249; GFX12-NEXT:    s_setpc_b64 s[30:31]3250;3251; GFX942-LABEL: flat_agent_atomic_fmax_ret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3252; GFX942:       ; %bb.0:3253; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3254; GFX942-NEXT:    s_mov_b64 s[2:3], 0x7f83255; GFX942-NEXT:    s_mov_b64 s[0:1], src_private_base3256; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[2:3]3257; GFX942-NEXT:    v_cmp_ne_u32_e32 vcc, s1, v53258; GFX942-NEXT:    ; implicit-def: $vgpr0_vgpr13259; GFX942-NEXT:    s_and_saveexec_b64 s[0:1], vcc3260; GFX942-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]3261; GFX942-NEXT:    s_cbranch_execnz .LBB19_33262; GFX942-NEXT:  ; %bb.1: ; %Flow3263; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]3264; GFX942-NEXT:    s_cbranch_execnz .LBB19_43265; GFX942-NEXT:  .LBB19_2: ; %atomicrmw.phi3266; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]3267; GFX942-NEXT:    s_setpc_b64 s[30:31]3268; GFX942-NEXT:  .LBB19_3: ; %atomicrmw.global3269; GFX942-NEXT:    buffer_wbl2 sc13270; GFX942-NEXT:    flat_atomic_max_f64 v[0:1], v[4:5], v[2:3] sc03271; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3272; GFX942-NEXT:    buffer_inv sc13273; GFX942-NEXT:    ; implicit-def: $vgpr4_vgpr53274; GFX942-NEXT:    ; implicit-def: $vgpr2_vgpr33275; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]3276; GFX942-NEXT:    s_cbranch_execz .LBB19_23277; GFX942-NEXT:  .LBB19_4: ; %atomicrmw.private3278; GFX942-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]3279; GFX942-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3280; GFX942-NEXT:    s_nop 03281; GFX942-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc3282; GFX942-NEXT:    scratch_load_dwordx2 v[0:1], v6, off3283; GFX942-NEXT:    s_waitcnt vmcnt(0)3284; GFX942-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]3285; GFX942-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]3286; GFX942-NEXT:    scratch_store_dwordx2 v6, v[2:3], off3287; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]3288; GFX942-NEXT:    s_waitcnt vmcnt(0)3289; GFX942-NEXT:    s_setpc_b64 s[30:31]3290;3291; GFX11-LABEL: flat_agent_atomic_fmax_ret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3292; GFX11:       ; %bb.0:3293; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3294; GFX11-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3295; GFX11-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7f8, v03296; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)3297; GFX11-NEXT:    v_add_co_ci_u32_e64 v5, null, 0, v1, vcc_lo3298; GFX11-NEXT:    s_mov_b64 s[0:1], src_private_base3299; GFX11-NEXT:    s_mov_b32 s0, exec_lo3300; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr13301; GFX11-NEXT:    v_cmpx_ne_u32_e64 s1, v53302; GFX11-NEXT:    s_xor_b32 s0, exec_lo, s03303; GFX11-NEXT:    s_cbranch_execnz .LBB19_33304; GFX11-NEXT:  ; %bb.1: ; %Flow23305; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s03306; GFX11-NEXT:    s_cbranch_execnz .LBB19_63307; GFX11-NEXT:  .LBB19_2: ; %atomicrmw.phi3308; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s03309; GFX11-NEXT:    s_setpc_b64 s[30:31]3310; GFX11-NEXT:  .LBB19_3: ; %atomicrmw.global3311; GFX11-NEXT:    flat_load_b64 v[0:1], v[4:5]3312; GFX11-NEXT:    s_mov_b32 s1, 03313; GFX11-NEXT:  .LBB19_4: ; %atomicrmw.start3314; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=13315; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3316; GFX11-NEXT:    v_dual_mov_b32 v9, v1 :: v_dual_mov_b32 v8, v03317; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3318; GFX11-NEXT:    v_max_f64 v[0:1], v[8:9], v[8:9]3319; GFX11-NEXT:    v_max_f64 v[6:7], v[0:1], v[2:3]3320; GFX11-NEXT:    s_waitcnt_vscnt null, 0x03321; GFX11-NEXT:    flat_atomic_cmpswap_b64 v[0:1], v[4:5], v[6:9] glc3322; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3323; GFX11-NEXT:    buffer_gl1_inv3324; GFX11-NEXT:    buffer_gl0_inv3325; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[8:9]3326; GFX11-NEXT:    s_or_b32 s1, vcc_lo, s13327; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3328; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s13329; GFX11-NEXT:    s_cbranch_execnz .LBB19_43330; GFX11-NEXT:  ; %bb.5: ; %Flow3331; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s13332; GFX11-NEXT:    ; implicit-def: $vgpr4_vgpr53333; GFX11-NEXT:    ; implicit-def: $vgpr2_vgpr33334; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s03335; GFX11-NEXT:    s_cbranch_execz .LBB19_23336; GFX11-NEXT:  .LBB19_6: ; %atomicrmw.private3337; GFX11-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[4:5]3338; GFX11-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc_lo3339; GFX11-NEXT:    scratch_load_b64 v[0:1], v6, off3340; GFX11-NEXT:    s_waitcnt vmcnt(0)3341; GFX11-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]3342; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)3343; GFX11-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]3344; GFX11-NEXT:    scratch_store_b64 v6, v[2:3], off3345; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s03346; GFX11-NEXT:    s_setpc_b64 s[30:31]3347;3348; GFX10-LABEL: flat_agent_atomic_fmax_ret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3349; GFX10:       ; %bb.0:3350; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3351; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7f8, v03352; GFX10-NEXT:    v_add_co_ci_u32_e32 v5, vcc_lo, 0, v1, vcc_lo3353; GFX10-NEXT:    s_mov_b64 s[4:5], src_private_base3354; GFX10-NEXT:    ; implicit-def: $vgpr0_vgpr13355; GFX10-NEXT:    v_cmp_ne_u32_e32 vcc_lo, s5, v53356; GFX10-NEXT:    s_and_saveexec_b32 s4, vcc_lo3357; GFX10-NEXT:    s_xor_b32 s4, exec_lo, s43358; GFX10-NEXT:    s_cbranch_execnz .LBB19_33359; GFX10-NEXT:  ; %bb.1: ; %Flow3360; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s43361; GFX10-NEXT:    s_cbranch_execnz .LBB19_43362; GFX10-NEXT:  .LBB19_2: ; %atomicrmw.phi3363; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)3364; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s43365; GFX10-NEXT:    s_setpc_b64 s[30:31]3366; GFX10-NEXT:  .LBB19_3: ; %atomicrmw.global3367; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03368; GFX10-NEXT:    flat_atomic_fmax_x2 v[0:1], v[4:5], v[2:3] glc3369; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3370; GFX10-NEXT:    buffer_gl1_inv3371; GFX10-NEXT:    buffer_gl0_inv3372; GFX10-NEXT:    ; implicit-def: $vgpr4_vgpr53373; GFX10-NEXT:    ; implicit-def: $vgpr2_vgpr33374; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s43375; GFX10-NEXT:    s_cbranch_execz .LBB19_23376; GFX10-NEXT:  .LBB19_4: ; %atomicrmw.private3377; GFX10-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[4:5]3378; GFX10-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3379; GFX10-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc_lo3380; GFX10-NEXT:    s_clause 0x13381; GFX10-NEXT:    buffer_load_dword v0, v6, s[0:3], 0 offen3382; GFX10-NEXT:    buffer_load_dword v1, v6, s[0:3], 0 offen offset:43383; GFX10-NEXT:    s_waitcnt vmcnt(0)3384; GFX10-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]3385; GFX10-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]3386; GFX10-NEXT:    buffer_store_dword v2, v6, s[0:3], 0 offen3387; GFX10-NEXT:    buffer_store_dword v3, v6, s[0:3], 0 offen offset:43388; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)3389; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s43390; GFX10-NEXT:    s_setpc_b64 s[30:31]3391;3392; GFX90A-LABEL: flat_agent_atomic_fmax_ret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3393; GFX90A:       ; %bb.0:3394; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3395; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7f8, v03396; GFX90A-NEXT:    s_mov_b64 s[4:5], src_private_base3397; GFX90A-NEXT:    v_addc_co_u32_e32 v5, vcc, 0, v1, vcc3398; GFX90A-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v53399; GFX90A-NEXT:    ; implicit-def: $vgpr0_vgpr13400; GFX90A-NEXT:    s_and_saveexec_b64 s[4:5], vcc3401; GFX90A-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]3402; GFX90A-NEXT:    s_cbranch_execnz .LBB19_33403; GFX90A-NEXT:  ; %bb.1: ; %Flow3404; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3405; GFX90A-NEXT:    s_cbranch_execnz .LBB19_43406; GFX90A-NEXT:  .LBB19_2: ; %atomicrmw.phi3407; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]3408; GFX90A-NEXT:    s_setpc_b64 s[30:31]3409; GFX90A-NEXT:  .LBB19_3: ; %atomicrmw.global3410; GFX90A-NEXT:    flat_atomic_max_f64 v[0:1], v[4:5], v[2:3] glc3411; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3412; GFX90A-NEXT:    buffer_wbinvl13413; GFX90A-NEXT:    ; implicit-def: $vgpr4_vgpr53414; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr33415; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3416; GFX90A-NEXT:    s_cbranch_execz .LBB19_23417; GFX90A-NEXT:  .LBB19_4: ; %atomicrmw.private3418; GFX90A-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]3419; GFX90A-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc3420; GFX90A-NEXT:    buffer_load_dword v0, v6, s[0:3], 0 offen3421; GFX90A-NEXT:    buffer_load_dword v1, v6, s[0:3], 0 offen offset:43422; GFX90A-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3423; GFX90A-NEXT:    s_waitcnt vmcnt(0)3424; GFX90A-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]3425; GFX90A-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]3426; GFX90A-NEXT:    buffer_store_dword v2, v6, s[0:3], 0 offen3427; GFX90A-NEXT:    buffer_store_dword v3, v6, s[0:3], 0 offen offset:43428; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]3429; GFX90A-NEXT:    s_waitcnt vmcnt(0)3430; GFX90A-NEXT:    s_setpc_b64 s[30:31]3431;3432; GFX908-LABEL: flat_agent_atomic_fmax_ret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3433; GFX908:       ; %bb.0:3434; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3435; GFX908-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3436; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7f8, v03437; GFX908-NEXT:    s_mov_b64 s[4:5], src_private_base3438; GFX908-NEXT:    v_addc_co_u32_e32 v5, vcc, 0, v1, vcc3439; GFX908-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v53440; GFX908-NEXT:    ; implicit-def: $vgpr0_vgpr13441; GFX908-NEXT:    s_and_saveexec_b64 s[4:5], vcc3442; GFX908-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]3443; GFX908-NEXT:    s_cbranch_execnz .LBB19_33444; GFX908-NEXT:  ; %bb.1: ; %Flow23445; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3446; GFX908-NEXT:    s_cbranch_execnz .LBB19_63447; GFX908-NEXT:  .LBB19_2: ; %atomicrmw.phi3448; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3449; GFX908-NEXT:    s_setpc_b64 s[30:31]3450; GFX908-NEXT:  .LBB19_3: ; %atomicrmw.global3451; GFX908-NEXT:    flat_load_dwordx2 v[0:1], v[4:5]3452; GFX908-NEXT:    s_mov_b64 s[6:7], 03453; GFX908-NEXT:  .LBB19_4: ; %atomicrmw.start3454; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=13455; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3456; GFX908-NEXT:    v_mov_b32_e32 v9, v13457; GFX908-NEXT:    v_mov_b32_e32 v8, v03458; GFX908-NEXT:    v_max_f64 v[0:1], v[8:9], v[8:9]3459; GFX908-NEXT:    v_max_f64 v[6:7], v[0:1], v[2:3]3460; GFX908-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[6:9] glc3461; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3462; GFX908-NEXT:    buffer_wbinvl13463; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[8:9]3464; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]3465; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]3466; GFX908-NEXT:    s_cbranch_execnz .LBB19_43467; GFX908-NEXT:  ; %bb.5: ; %Flow3468; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]3469; GFX908-NEXT:    ; implicit-def: $vgpr4_vgpr53470; GFX908-NEXT:    ; implicit-def: $vgpr2_vgpr33471; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3472; GFX908-NEXT:    s_cbranch_execz .LBB19_23473; GFX908-NEXT:  .LBB19_6: ; %atomicrmw.private3474; GFX908-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]3475; GFX908-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc3476; GFX908-NEXT:    buffer_load_dword v0, v6, s[0:3], 0 offen3477; GFX908-NEXT:    buffer_load_dword v1, v6, s[0:3], 0 offen offset:43478; GFX908-NEXT:    s_waitcnt vmcnt(0)3479; GFX908-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]3480; GFX908-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]3481; GFX908-NEXT:    buffer_store_dword v2, v6, s[0:3], 0 offen3482; GFX908-NEXT:    buffer_store_dword v3, v6, s[0:3], 0 offen offset:43483; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3484; GFX908-NEXT:    s_waitcnt vmcnt(0)3485; GFX908-NEXT:    s_setpc_b64 s[30:31]3486;3487; GFX8-LABEL: flat_agent_atomic_fmax_ret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3488; GFX8:       ; %bb.0:3489; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3490; GFX8-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3491; GFX8-NEXT:    s_mov_b64 s[4:5], 0xc03492; GFX8-NEXT:    s_load_dword s4, s[4:5], 0x03493; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0x7f8, v03494; GFX8-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc3495; GFX8-NEXT:    s_waitcnt lgkmcnt(0)3496; GFX8-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v53497; GFX8-NEXT:    ; implicit-def: $vgpr0_vgpr13498; GFX8-NEXT:    s_and_saveexec_b64 s[4:5], vcc3499; GFX8-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]3500; GFX8-NEXT:    s_cbranch_execnz .LBB19_33501; GFX8-NEXT:  ; %bb.1: ; %Flow23502; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3503; GFX8-NEXT:    s_cbranch_execnz .LBB19_63504; GFX8-NEXT:  .LBB19_2: ; %atomicrmw.phi3505; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3506; GFX8-NEXT:    s_setpc_b64 s[30:31]3507; GFX8-NEXT:  .LBB19_3: ; %atomicrmw.global3508; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 4, v43509; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v5, vcc3510; GFX8-NEXT:    flat_load_dword v1, v[0:1]3511; GFX8-NEXT:    flat_load_dword v0, v[4:5]3512; GFX8-NEXT:    s_mov_b64 s[6:7], 03513; GFX8-NEXT:  .LBB19_4: ; %atomicrmw.start3514; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=13515; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3516; GFX8-NEXT:    v_mov_b32_e32 v9, v13517; GFX8-NEXT:    v_mov_b32_e32 v8, v03518; GFX8-NEXT:    v_max_f64 v[0:1], v[8:9], v[8:9]3519; GFX8-NEXT:    v_max_f64 v[6:7], v[0:1], v[2:3]3520; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[6:9] glc3521; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3522; GFX8-NEXT:    buffer_wbinvl13523; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[8:9]3524; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]3525; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]3526; GFX8-NEXT:    s_cbranch_execnz .LBB19_43527; GFX8-NEXT:  ; %bb.5: ; %Flow3528; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]3529; GFX8-NEXT:    ; implicit-def: $vgpr4_vgpr53530; GFX8-NEXT:    ; implicit-def: $vgpr2_vgpr33531; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3532; GFX8-NEXT:    s_cbranch_execz .LBB19_23533; GFX8-NEXT:  .LBB19_6: ; %atomicrmw.private3534; GFX8-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]3535; GFX8-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc3536; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 4, v63537; GFX8-NEXT:    buffer_load_dword v0, v6, s[0:3], 0 offen3538; GFX8-NEXT:    buffer_load_dword v1, v7, s[0:3], 0 offen3539; GFX8-NEXT:    s_waitcnt vmcnt(0)3540; GFX8-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]3541; GFX8-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]3542; GFX8-NEXT:    buffer_store_dword v2, v6, s[0:3], 0 offen3543; GFX8-NEXT:    buffer_store_dword v3, v7, s[0:3], 0 offen3544; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3545; GFX8-NEXT:    s_waitcnt vmcnt(0)3546; GFX8-NEXT:    s_setpc_b64 s[30:31]3547;3548; GFX7-LABEL: flat_agent_atomic_fmax_ret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:3549; GFX7:       ; %bb.0:3550; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3551; GFX7-NEXT:    s_mov_b64 s[4:5], 0xc03552; GFX7-NEXT:    s_load_dword s4, s[4:5], 0x03553; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7f8, v03554; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc3555; GFX7-NEXT:    s_waitcnt lgkmcnt(0)3556; GFX7-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v53557; GFX7-NEXT:    ; implicit-def: $vgpr0_vgpr13558; GFX7-NEXT:    s_and_saveexec_b64 s[4:5], vcc3559; GFX7-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]3560; GFX7-NEXT:    s_cbranch_execnz .LBB19_33561; GFX7-NEXT:  ; %bb.1: ; %Flow3562; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3563; GFX7-NEXT:    s_cbranch_execnz .LBB19_43564; GFX7-NEXT:  .LBB19_2: ; %atomicrmw.phi3565; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]3566; GFX7-NEXT:    s_setpc_b64 s[30:31]3567; GFX7-NEXT:  .LBB19_3: ; %atomicrmw.global3568; GFX7-NEXT:    flat_atomic_fmax_x2 v[0:1], v[4:5], v[2:3] glc3569; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3570; GFX7-NEXT:    buffer_wbinvl13571; GFX7-NEXT:    ; implicit-def: $vgpr4_vgpr53572; GFX7-NEXT:    ; implicit-def: $vgpr2_vgpr33573; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3574; GFX7-NEXT:    s_cbranch_execz .LBB19_23575; GFX7-NEXT:  .LBB19_4: ; %atomicrmw.private3576; GFX7-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]3577; GFX7-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3578; GFX7-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc3579; GFX7-NEXT:    v_add_i32_e32 v7, vcc, 4, v63580; GFX7-NEXT:    buffer_load_dword v0, v6, s[0:3], 0 offen3581; GFX7-NEXT:    buffer_load_dword v1, v7, s[0:3], 0 offen3582; GFX7-NEXT:    s_waitcnt vmcnt(0)3583; GFX7-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]3584; GFX7-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]3585; GFX7-NEXT:    buffer_store_dword v2, v6, s[0:3], 0 offen3586; GFX7-NEXT:    buffer_store_dword v3, v7, s[0:3], 0 offen3587; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]3588; GFX7-NEXT:    s_waitcnt vmcnt(0)3589; GFX7-NEXT:    s_setpc_b64 s[30:31]3590  %gep = getelementptr inbounds double, ptr %ptr, i64 2553591  %result = atomicrmw fmax ptr %gep, double %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !03592  ret double %result3593}3594 3595define double @flat_agent_atomic_fmax_ret_f64__offset12b_neg__amdgpu_no_fine_grained_memory(ptr %ptr, double %val) #0 {3596; GFX12-LABEL: flat_agent_atomic_fmax_ret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3597; GFX12:       ; %bb.0:3598; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03599; GFX12-NEXT:    s_wait_expcnt 0x03600; GFX12-NEXT:    s_wait_samplecnt 0x03601; GFX12-NEXT:    s_wait_bvhcnt 0x03602; GFX12-NEXT:    s_wait_kmcnt 0x03603; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[2:3]3604; GFX12-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v03605; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)3606; GFX12-NEXT:    v_add_co_ci_u32_e64 v5, null, -1, v1, vcc_lo3607; GFX12-NEXT:    s_mov_b64 s[0:1], src_private_base3608; GFX12-NEXT:    s_mov_b32 s0, exec_lo3609; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr13610; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3611; GFX12-NEXT:    v_cmpx_ne_u32_e64 s1, v53612; GFX12-NEXT:    s_xor_b32 s0, exec_lo, s03613; GFX12-NEXT:    s_cbranch_execnz .LBB20_33614; GFX12-NEXT:  ; %bb.1: ; %Flow23615; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3616; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s03617; GFX12-NEXT:    s_cbranch_execnz .LBB20_63618; GFX12-NEXT:  .LBB20_2: ; %atomicrmw.phi3619; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3620; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s03621; GFX12-NEXT:    s_wait_loadcnt 0x03622; GFX12-NEXT:    s_setpc_b64 s[30:31]3623; GFX12-NEXT:  .LBB20_3: ; %atomicrmw.global3624; GFX12-NEXT:    flat_load_b64 v[0:1], v[4:5]3625; GFX12-NEXT:    s_mov_b32 s1, 03626; GFX12-NEXT:  .LBB20_4: ; %atomicrmw.start3627; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=13628; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03629; GFX12-NEXT:    v_dual_mov_b32 v9, v1 :: v_dual_mov_b32 v8, v03630; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3631; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[8:9], v[8:9]3632; GFX12-NEXT:    v_max_num_f64_e32 v[6:7], v[0:1], v[2:3]3633; GFX12-NEXT:    s_wait_storecnt 0x03634; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[0:1], v[4:5], v[6:9] th:TH_ATOMIC_RETURN scope:SCOPE_DEV3635; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x03636; GFX12-NEXT:    global_inv scope:SCOPE_DEV3637; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[8:9]3638; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3639; GFX12-NEXT:    s_or_b32 s1, vcc_lo, s13640; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3641; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s13642; GFX12-NEXT:    s_cbranch_execnz .LBB20_43643; GFX12-NEXT:  ; %bb.5: ; %Flow3644; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s13645; GFX12-NEXT:    ; implicit-def: $vgpr4_vgpr53646; GFX12-NEXT:    ; implicit-def: $vgpr2_vgpr33647; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s03648; GFX12-NEXT:    s_cbranch_execz .LBB20_23649; GFX12-NEXT:  .LBB20_6: ; %atomicrmw.private3650; GFX12-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[4:5]3651; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)3652; GFX12-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc_lo3653; GFX12-NEXT:    scratch_load_b64 v[0:1], v6, off3654; GFX12-NEXT:    s_wait_loadcnt 0x03655; GFX12-NEXT:    v_max_num_f64_e32 v[4:5], v[0:1], v[0:1]3656; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)3657; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[4:5], v[2:3]3658; GFX12-NEXT:    scratch_store_b64 v6, v[2:3], off3659; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)3660; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s03661; GFX12-NEXT:    s_setpc_b64 s[30:31]3662;3663; GFX942-LABEL: flat_agent_atomic_fmax_ret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3664; GFX942:       ; %bb.0:3665; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3666; GFX942-NEXT:    s_movk_i32 s2, 0xf8003667; GFX942-NEXT:    s_mov_b32 s3, -13668; GFX942-NEXT:    s_mov_b64 s[0:1], src_private_base3669; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[2:3]3670; GFX942-NEXT:    v_cmp_ne_u32_e32 vcc, s1, v53671; GFX942-NEXT:    ; implicit-def: $vgpr0_vgpr13672; GFX942-NEXT:    s_and_saveexec_b64 s[0:1], vcc3673; GFX942-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]3674; GFX942-NEXT:    s_cbranch_execnz .LBB20_33675; GFX942-NEXT:  ; %bb.1: ; %Flow3676; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]3677; GFX942-NEXT:    s_cbranch_execnz .LBB20_43678; GFX942-NEXT:  .LBB20_2: ; %atomicrmw.phi3679; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]3680; GFX942-NEXT:    s_setpc_b64 s[30:31]3681; GFX942-NEXT:  .LBB20_3: ; %atomicrmw.global3682; GFX942-NEXT:    buffer_wbl2 sc13683; GFX942-NEXT:    flat_atomic_max_f64 v[0:1], v[4:5], v[2:3] sc03684; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3685; GFX942-NEXT:    buffer_inv sc13686; GFX942-NEXT:    ; implicit-def: $vgpr4_vgpr53687; GFX942-NEXT:    ; implicit-def: $vgpr2_vgpr33688; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]3689; GFX942-NEXT:    s_cbranch_execz .LBB20_23690; GFX942-NEXT:  .LBB20_4: ; %atomicrmw.private3691; GFX942-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]3692; GFX942-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3693; GFX942-NEXT:    s_nop 03694; GFX942-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc3695; GFX942-NEXT:    scratch_load_dwordx2 v[0:1], v6, off3696; GFX942-NEXT:    s_waitcnt vmcnt(0)3697; GFX942-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]3698; GFX942-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]3699; GFX942-NEXT:    scratch_store_dwordx2 v6, v[2:3], off3700; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]3701; GFX942-NEXT:    s_waitcnt vmcnt(0)3702; GFX942-NEXT:    s_setpc_b64 s[30:31]3703;3704; GFX11-LABEL: flat_agent_atomic_fmax_ret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3705; GFX11:       ; %bb.0:3706; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3707; GFX11-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3708; GFX11-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v03709; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)3710; GFX11-NEXT:    v_add_co_ci_u32_e64 v5, null, -1, v1, vcc_lo3711; GFX11-NEXT:    s_mov_b64 s[0:1], src_private_base3712; GFX11-NEXT:    s_mov_b32 s0, exec_lo3713; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr13714; GFX11-NEXT:    v_cmpx_ne_u32_e64 s1, v53715; GFX11-NEXT:    s_xor_b32 s0, exec_lo, s03716; GFX11-NEXT:    s_cbranch_execnz .LBB20_33717; GFX11-NEXT:  ; %bb.1: ; %Flow23718; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s03719; GFX11-NEXT:    s_cbranch_execnz .LBB20_63720; GFX11-NEXT:  .LBB20_2: ; %atomicrmw.phi3721; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s03722; GFX11-NEXT:    s_setpc_b64 s[30:31]3723; GFX11-NEXT:  .LBB20_3: ; %atomicrmw.global3724; GFX11-NEXT:    flat_load_b64 v[0:1], v[4:5]3725; GFX11-NEXT:    s_mov_b32 s1, 03726; GFX11-NEXT:  .LBB20_4: ; %atomicrmw.start3727; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=13728; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3729; GFX11-NEXT:    v_dual_mov_b32 v9, v1 :: v_dual_mov_b32 v8, v03730; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3731; GFX11-NEXT:    v_max_f64 v[0:1], v[8:9], v[8:9]3732; GFX11-NEXT:    v_max_f64 v[6:7], v[0:1], v[2:3]3733; GFX11-NEXT:    s_waitcnt_vscnt null, 0x03734; GFX11-NEXT:    flat_atomic_cmpswap_b64 v[0:1], v[4:5], v[6:9] glc3735; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3736; GFX11-NEXT:    buffer_gl1_inv3737; GFX11-NEXT:    buffer_gl0_inv3738; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[8:9]3739; GFX11-NEXT:    s_or_b32 s1, vcc_lo, s13740; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3741; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s13742; GFX11-NEXT:    s_cbranch_execnz .LBB20_43743; GFX11-NEXT:  ; %bb.5: ; %Flow3744; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s13745; GFX11-NEXT:    ; implicit-def: $vgpr4_vgpr53746; GFX11-NEXT:    ; implicit-def: $vgpr2_vgpr33747; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s03748; GFX11-NEXT:    s_cbranch_execz .LBB20_23749; GFX11-NEXT:  .LBB20_6: ; %atomicrmw.private3750; GFX11-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[4:5]3751; GFX11-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc_lo3752; GFX11-NEXT:    scratch_load_b64 v[0:1], v6, off3753; GFX11-NEXT:    s_waitcnt vmcnt(0)3754; GFX11-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]3755; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)3756; GFX11-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]3757; GFX11-NEXT:    scratch_store_b64 v6, v[2:3], off3758; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s03759; GFX11-NEXT:    s_setpc_b64 s[30:31]3760;3761; GFX10-LABEL: flat_agent_atomic_fmax_ret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3762; GFX10:       ; %bb.0:3763; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3764; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v03765; GFX10-NEXT:    v_add_co_ci_u32_e32 v5, vcc_lo, -1, v1, vcc_lo3766; GFX10-NEXT:    s_mov_b64 s[4:5], src_private_base3767; GFX10-NEXT:    ; implicit-def: $vgpr0_vgpr13768; GFX10-NEXT:    v_cmp_ne_u32_e32 vcc_lo, s5, v53769; GFX10-NEXT:    s_and_saveexec_b32 s4, vcc_lo3770; GFX10-NEXT:    s_xor_b32 s4, exec_lo, s43771; GFX10-NEXT:    s_cbranch_execnz .LBB20_33772; GFX10-NEXT:  ; %bb.1: ; %Flow3773; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s43774; GFX10-NEXT:    s_cbranch_execnz .LBB20_43775; GFX10-NEXT:  .LBB20_2: ; %atomicrmw.phi3776; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)3777; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s43778; GFX10-NEXT:    s_setpc_b64 s[30:31]3779; GFX10-NEXT:  .LBB20_3: ; %atomicrmw.global3780; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03781; GFX10-NEXT:    flat_atomic_fmax_x2 v[0:1], v[4:5], v[2:3] glc3782; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3783; GFX10-NEXT:    buffer_gl1_inv3784; GFX10-NEXT:    buffer_gl0_inv3785; GFX10-NEXT:    ; implicit-def: $vgpr4_vgpr53786; GFX10-NEXT:    ; implicit-def: $vgpr2_vgpr33787; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s43788; GFX10-NEXT:    s_cbranch_execz .LBB20_23789; GFX10-NEXT:  .LBB20_4: ; %atomicrmw.private3790; GFX10-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[4:5]3791; GFX10-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3792; GFX10-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc_lo3793; GFX10-NEXT:    s_clause 0x13794; GFX10-NEXT:    buffer_load_dword v0, v6, s[0:3], 0 offen3795; GFX10-NEXT:    buffer_load_dword v1, v6, s[0:3], 0 offen offset:43796; GFX10-NEXT:    s_waitcnt vmcnt(0)3797; GFX10-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]3798; GFX10-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]3799; GFX10-NEXT:    buffer_store_dword v2, v6, s[0:3], 0 offen3800; GFX10-NEXT:    buffer_store_dword v3, v6, s[0:3], 0 offen offset:43801; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)3802; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s43803; GFX10-NEXT:    s_setpc_b64 s[30:31]3804;3805; GFX90A-LABEL: flat_agent_atomic_fmax_ret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3806; GFX90A:       ; %bb.0:3807; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3808; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v03809; GFX90A-NEXT:    s_mov_b64 s[4:5], src_private_base3810; GFX90A-NEXT:    v_addc_co_u32_e32 v5, vcc, -1, v1, vcc3811; GFX90A-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v53812; GFX90A-NEXT:    ; implicit-def: $vgpr0_vgpr13813; GFX90A-NEXT:    s_and_saveexec_b64 s[4:5], vcc3814; GFX90A-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]3815; GFX90A-NEXT:    s_cbranch_execnz .LBB20_33816; GFX90A-NEXT:  ; %bb.1: ; %Flow3817; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3818; GFX90A-NEXT:    s_cbranch_execnz .LBB20_43819; GFX90A-NEXT:  .LBB20_2: ; %atomicrmw.phi3820; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]3821; GFX90A-NEXT:    s_setpc_b64 s[30:31]3822; GFX90A-NEXT:  .LBB20_3: ; %atomicrmw.global3823; GFX90A-NEXT:    flat_atomic_max_f64 v[0:1], v[4:5], v[2:3] glc3824; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3825; GFX90A-NEXT:    buffer_wbinvl13826; GFX90A-NEXT:    ; implicit-def: $vgpr4_vgpr53827; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr33828; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3829; GFX90A-NEXT:    s_cbranch_execz .LBB20_23830; GFX90A-NEXT:  .LBB20_4: ; %atomicrmw.private3831; GFX90A-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]3832; GFX90A-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc3833; GFX90A-NEXT:    buffer_load_dword v0, v6, s[0:3], 0 offen3834; GFX90A-NEXT:    buffer_load_dword v1, v6, s[0:3], 0 offen offset:43835; GFX90A-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3836; GFX90A-NEXT:    s_waitcnt vmcnt(0)3837; GFX90A-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]3838; GFX90A-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]3839; GFX90A-NEXT:    buffer_store_dword v2, v6, s[0:3], 0 offen3840; GFX90A-NEXT:    buffer_store_dword v3, v6, s[0:3], 0 offen offset:43841; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]3842; GFX90A-NEXT:    s_waitcnt vmcnt(0)3843; GFX90A-NEXT:    s_setpc_b64 s[30:31]3844;3845; GFX908-LABEL: flat_agent_atomic_fmax_ret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3846; GFX908:       ; %bb.0:3847; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3848; GFX908-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3849; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v03850; GFX908-NEXT:    s_mov_b64 s[4:5], src_private_base3851; GFX908-NEXT:    v_addc_co_u32_e32 v5, vcc, -1, v1, vcc3852; GFX908-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v53853; GFX908-NEXT:    ; implicit-def: $vgpr0_vgpr13854; GFX908-NEXT:    s_and_saveexec_b64 s[4:5], vcc3855; GFX908-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]3856; GFX908-NEXT:    s_cbranch_execnz .LBB20_33857; GFX908-NEXT:  ; %bb.1: ; %Flow23858; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3859; GFX908-NEXT:    s_cbranch_execnz .LBB20_63860; GFX908-NEXT:  .LBB20_2: ; %atomicrmw.phi3861; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3862; GFX908-NEXT:    s_setpc_b64 s[30:31]3863; GFX908-NEXT:  .LBB20_3: ; %atomicrmw.global3864; GFX908-NEXT:    flat_load_dwordx2 v[0:1], v[4:5]3865; GFX908-NEXT:    s_mov_b64 s[6:7], 03866; GFX908-NEXT:  .LBB20_4: ; %atomicrmw.start3867; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=13868; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3869; GFX908-NEXT:    v_mov_b32_e32 v9, v13870; GFX908-NEXT:    v_mov_b32_e32 v8, v03871; GFX908-NEXT:    v_max_f64 v[0:1], v[8:9], v[8:9]3872; GFX908-NEXT:    v_max_f64 v[6:7], v[0:1], v[2:3]3873; GFX908-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[6:9] glc3874; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3875; GFX908-NEXT:    buffer_wbinvl13876; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[8:9]3877; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]3878; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]3879; GFX908-NEXT:    s_cbranch_execnz .LBB20_43880; GFX908-NEXT:  ; %bb.5: ; %Flow3881; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]3882; GFX908-NEXT:    ; implicit-def: $vgpr4_vgpr53883; GFX908-NEXT:    ; implicit-def: $vgpr2_vgpr33884; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3885; GFX908-NEXT:    s_cbranch_execz .LBB20_23886; GFX908-NEXT:  .LBB20_6: ; %atomicrmw.private3887; GFX908-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]3888; GFX908-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc3889; GFX908-NEXT:    buffer_load_dword v0, v6, s[0:3], 0 offen3890; GFX908-NEXT:    buffer_load_dword v1, v6, s[0:3], 0 offen offset:43891; GFX908-NEXT:    s_waitcnt vmcnt(0)3892; GFX908-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]3893; GFX908-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]3894; GFX908-NEXT:    buffer_store_dword v2, v6, s[0:3], 0 offen3895; GFX908-NEXT:    buffer_store_dword v3, v6, s[0:3], 0 offen offset:43896; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3897; GFX908-NEXT:    s_waitcnt vmcnt(0)3898; GFX908-NEXT:    s_setpc_b64 s[30:31]3899;3900; GFX8-LABEL: flat_agent_atomic_fmax_ret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3901; GFX8:       ; %bb.0:3902; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3903; GFX8-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3904; GFX8-NEXT:    s_mov_b64 s[4:5], 0xc03905; GFX8-NEXT:    s_load_dword s4, s[4:5], 0x03906; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0xfffff800, v03907; GFX8-NEXT:    v_addc_u32_e32 v5, vcc, -1, v1, vcc3908; GFX8-NEXT:    s_waitcnt lgkmcnt(0)3909; GFX8-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v53910; GFX8-NEXT:    ; implicit-def: $vgpr0_vgpr13911; GFX8-NEXT:    s_and_saveexec_b64 s[4:5], vcc3912; GFX8-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]3913; GFX8-NEXT:    s_cbranch_execnz .LBB20_33914; GFX8-NEXT:  ; %bb.1: ; %Flow23915; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3916; GFX8-NEXT:    s_cbranch_execnz .LBB20_63917; GFX8-NEXT:  .LBB20_2: ; %atomicrmw.phi3918; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3919; GFX8-NEXT:    s_setpc_b64 s[30:31]3920; GFX8-NEXT:  .LBB20_3: ; %atomicrmw.global3921; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 4, v43922; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v5, vcc3923; GFX8-NEXT:    flat_load_dword v1, v[0:1]3924; GFX8-NEXT:    flat_load_dword v0, v[4:5]3925; GFX8-NEXT:    s_mov_b64 s[6:7], 03926; GFX8-NEXT:  .LBB20_4: ; %atomicrmw.start3927; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=13928; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3929; GFX8-NEXT:    v_mov_b32_e32 v9, v13930; GFX8-NEXT:    v_mov_b32_e32 v8, v03931; GFX8-NEXT:    v_max_f64 v[0:1], v[8:9], v[8:9]3932; GFX8-NEXT:    v_max_f64 v[6:7], v[0:1], v[2:3]3933; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[4:5], v[6:9] glc3934; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3935; GFX8-NEXT:    buffer_wbinvl13936; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[8:9]3937; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]3938; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]3939; GFX8-NEXT:    s_cbranch_execnz .LBB20_43940; GFX8-NEXT:  ; %bb.5: ; %Flow3941; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]3942; GFX8-NEXT:    ; implicit-def: $vgpr4_vgpr53943; GFX8-NEXT:    ; implicit-def: $vgpr2_vgpr33944; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3945; GFX8-NEXT:    s_cbranch_execz .LBB20_23946; GFX8-NEXT:  .LBB20_6: ; %atomicrmw.private3947; GFX8-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]3948; GFX8-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc3949; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 4, v63950; GFX8-NEXT:    buffer_load_dword v0, v6, s[0:3], 0 offen3951; GFX8-NEXT:    buffer_load_dword v1, v7, s[0:3], 0 offen3952; GFX8-NEXT:    s_waitcnt vmcnt(0)3953; GFX8-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]3954; GFX8-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]3955; GFX8-NEXT:    buffer_store_dword v2, v6, s[0:3], 0 offen3956; GFX8-NEXT:    buffer_store_dword v3, v7, s[0:3], 0 offen3957; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3958; GFX8-NEXT:    s_waitcnt vmcnt(0)3959; GFX8-NEXT:    s_setpc_b64 s[30:31]3960;3961; GFX7-LABEL: flat_agent_atomic_fmax_ret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:3962; GFX7:       ; %bb.0:3963; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3964; GFX7-NEXT:    s_mov_b64 s[4:5], 0xc03965; GFX7-NEXT:    s_load_dword s4, s[4:5], 0x03966; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v03967; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, -1, v1, vcc3968; GFX7-NEXT:    s_waitcnt lgkmcnt(0)3969; GFX7-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v53970; GFX7-NEXT:    ; implicit-def: $vgpr0_vgpr13971; GFX7-NEXT:    s_and_saveexec_b64 s[4:5], vcc3972; GFX7-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]3973; GFX7-NEXT:    s_cbranch_execnz .LBB20_33974; GFX7-NEXT:  ; %bb.1: ; %Flow3975; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3976; GFX7-NEXT:    s_cbranch_execnz .LBB20_43977; GFX7-NEXT:  .LBB20_2: ; %atomicrmw.phi3978; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]3979; GFX7-NEXT:    s_setpc_b64 s[30:31]3980; GFX7-NEXT:  .LBB20_3: ; %atomicrmw.global3981; GFX7-NEXT:    flat_atomic_fmax_x2 v[0:1], v[4:5], v[2:3] glc3982; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3983; GFX7-NEXT:    buffer_wbinvl13984; GFX7-NEXT:    ; implicit-def: $vgpr4_vgpr53985; GFX7-NEXT:    ; implicit-def: $vgpr2_vgpr33986; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]3987; GFX7-NEXT:    s_cbranch_execz .LBB20_23988; GFX7-NEXT:  .LBB20_4: ; %atomicrmw.private3989; GFX7-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]3990; GFX7-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]3991; GFX7-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc3992; GFX7-NEXT:    v_add_i32_e32 v7, vcc, 4, v63993; GFX7-NEXT:    buffer_load_dword v0, v6, s[0:3], 0 offen3994; GFX7-NEXT:    buffer_load_dword v1, v7, s[0:3], 0 offen3995; GFX7-NEXT:    s_waitcnt vmcnt(0)3996; GFX7-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]3997; GFX7-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]3998; GFX7-NEXT:    buffer_store_dword v2, v6, s[0:3], 0 offen3999; GFX7-NEXT:    buffer_store_dword v3, v7, s[0:3], 0 offen4000; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]4001; GFX7-NEXT:    s_waitcnt vmcnt(0)4002; GFX7-NEXT:    s_setpc_b64 s[30:31]4003  %gep = getelementptr inbounds double, ptr %ptr, i64 -2564004  %result = atomicrmw fmax ptr %gep, double %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !04005  ret double %result4006}4007 4008define void @flat_agent_atomic_fmax_noret_f64__amdgpu_no_fine_grained_memory(ptr %ptr, double %val) #0 {4009; GFX12-LABEL: flat_agent_atomic_fmax_noret_f64__amdgpu_no_fine_grained_memory:4010; GFX12:       ; %bb.0:4011; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04012; GFX12-NEXT:    s_wait_expcnt 0x04013; GFX12-NEXT:    s_wait_samplecnt 0x04014; GFX12-NEXT:    s_wait_bvhcnt 0x04015; GFX12-NEXT:    s_wait_kmcnt 0x04016; GFX12-NEXT:    v_max_num_f64_e32 v[6:7], v[2:3], v[2:3]4017; GFX12-NEXT:    s_mov_b64 s[0:1], src_private_base4018; GFX12-NEXT:    s_mov_b32 s0, exec_lo4019; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4020; GFX12-NEXT:    v_cmpx_ne_u32_e64 s1, v14021; GFX12-NEXT:    s_xor_b32 s0, exec_lo, s04022; GFX12-NEXT:    s_cbranch_execnz .LBB21_34023; GFX12-NEXT:  ; %bb.1: ; %Flow24024; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4025; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s04026; GFX12-NEXT:    s_cbranch_execnz .LBB21_64027; GFX12-NEXT:  .LBB21_2: ; %atomicrmw.phi4028; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4029; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s04030; GFX12-NEXT:    s_wait_loadcnt 0x04031; GFX12-NEXT:    s_setpc_b64 s[30:31]4032; GFX12-NEXT:  .LBB21_3: ; %atomicrmw.global4033; GFX12-NEXT:    flat_load_b64 v[4:5], v[0:1]4034; GFX12-NEXT:    s_mov_b32 s1, 04035; GFX12-NEXT:  .LBB21_4: ; %atomicrmw.start4036; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=14037; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04038; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[4:5], v[4:5]4039; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)4040; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[6:7]4041; GFX12-NEXT:    s_wait_storecnt 0x04042; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[2:3], v[0:1], v[2:5] th:TH_ATOMIC_RETURN scope:SCOPE_DEV4043; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04044; GFX12-NEXT:    global_inv scope:SCOPE_DEV4045; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[2:3], v[4:5]4046; GFX12-NEXT:    v_dual_mov_b32 v5, v3 :: v_dual_mov_b32 v4, v24047; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4048; GFX12-NEXT:    s_or_b32 s1, vcc_lo, s14049; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4050; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s14051; GFX12-NEXT:    s_cbranch_execnz .LBB21_44052; GFX12-NEXT:  ; %bb.5: ; %Flow4053; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s14054; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr14055; GFX12-NEXT:    ; implicit-def: $vgpr6_vgpr74056; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s04057; GFX12-NEXT:    s_cbranch_execz .LBB21_24058; GFX12-NEXT:  .LBB21_6: ; %atomicrmw.private4059; GFX12-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]4060; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)4061; GFX12-NEXT:    v_cndmask_b32_e32 v2, -1, v0, vcc_lo4062; GFX12-NEXT:    scratch_load_b64 v[0:1], v2, off4063; GFX12-NEXT:    s_wait_loadcnt 0x04064; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]4065; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)4066; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[6:7]4067; GFX12-NEXT:    scratch_store_b64 v2, v[0:1], off4068; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4069; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s04070; GFX12-NEXT:    s_setpc_b64 s[30:31]4071;4072; GFX942-LABEL: flat_agent_atomic_fmax_noret_f64__amdgpu_no_fine_grained_memory:4073; GFX942:       ; %bb.0:4074; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4075; GFX942-NEXT:    s_mov_b64 s[0:1], src_private_base4076; GFX942-NEXT:    v_cmp_ne_u32_e32 vcc, s1, v14077; GFX942-NEXT:    s_and_saveexec_b64 s[0:1], vcc4078; GFX942-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]4079; GFX942-NEXT:    s_cbranch_execnz .LBB21_34080; GFX942-NEXT:  ; %bb.1: ; %Flow4081; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]4082; GFX942-NEXT:    s_cbranch_execnz .LBB21_44083; GFX942-NEXT:  .LBB21_2: ; %atomicrmw.phi4084; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]4085; GFX942-NEXT:    s_setpc_b64 s[30:31]4086; GFX942-NEXT:  .LBB21_3: ; %atomicrmw.global4087; GFX942-NEXT:    buffer_wbl2 sc14088; GFX942-NEXT:    flat_atomic_max_f64 v[0:1], v[2:3]4089; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4090; GFX942-NEXT:    buffer_inv sc14091; GFX942-NEXT:    ; implicit-def: $vgpr0_vgpr14092; GFX942-NEXT:    ; implicit-def: $vgpr2_vgpr34093; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]4094; GFX942-NEXT:    s_cbranch_execz .LBB21_24095; GFX942-NEXT:  .LBB21_4: ; %atomicrmw.private4096; GFX942-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]4097; GFX942-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]4098; GFX942-NEXT:    s_nop 04099; GFX942-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc4100; GFX942-NEXT:    scratch_load_dwordx2 v[0:1], v4, off4101; GFX942-NEXT:    s_waitcnt vmcnt(0)4102; GFX942-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]4103; GFX942-NEXT:    v_max_f64 v[0:1], v[0:1], v[2:3]4104; GFX942-NEXT:    scratch_store_dwordx2 v4, v[0:1], off4105; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]4106; GFX942-NEXT:    s_waitcnt vmcnt(0)4107; GFX942-NEXT:    s_setpc_b64 s[30:31]4108;4109; GFX11-LABEL: flat_agent_atomic_fmax_noret_f64__amdgpu_no_fine_grained_memory:4110; GFX11:       ; %bb.0:4111; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4112; GFX11-NEXT:    v_max_f64 v[6:7], v[2:3], v[2:3]4113; GFX11-NEXT:    s_mov_b64 s[0:1], src_private_base4114; GFX11-NEXT:    s_mov_b32 s0, exec_lo4115; GFX11-NEXT:    v_cmpx_ne_u32_e64 s1, v14116; GFX11-NEXT:    s_xor_b32 s0, exec_lo, s04117; GFX11-NEXT:    s_cbranch_execnz .LBB21_34118; GFX11-NEXT:  ; %bb.1: ; %Flow24119; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s04120; GFX11-NEXT:    s_cbranch_execnz .LBB21_64121; GFX11-NEXT:  .LBB21_2: ; %atomicrmw.phi4122; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s04123; GFX11-NEXT:    s_setpc_b64 s[30:31]4124; GFX11-NEXT:  .LBB21_3: ; %atomicrmw.global4125; GFX11-NEXT:    flat_load_b64 v[4:5], v[0:1]4126; GFX11-NEXT:    s_mov_b32 s1, 04127; GFX11-NEXT:  .LBB21_4: ; %atomicrmw.start4128; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=14129; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4130; GFX11-NEXT:    v_max_f64 v[2:3], v[4:5], v[4:5]4131; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)4132; GFX11-NEXT:    v_max_f64 v[2:3], v[2:3], v[6:7]4133; GFX11-NEXT:    s_waitcnt_vscnt null, 0x04134; GFX11-NEXT:    flat_atomic_cmpswap_b64 v[2:3], v[0:1], v[2:5] glc4135; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4136; GFX11-NEXT:    buffer_gl1_inv4137; GFX11-NEXT:    buffer_gl0_inv4138; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[2:3], v[4:5]4139; GFX11-NEXT:    v_dual_mov_b32 v5, v3 :: v_dual_mov_b32 v4, v24140; GFX11-NEXT:    s_or_b32 s1, vcc_lo, s14141; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4142; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s14143; GFX11-NEXT:    s_cbranch_execnz .LBB21_44144; GFX11-NEXT:  ; %bb.5: ; %Flow4145; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s14146; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr14147; GFX11-NEXT:    ; implicit-def: $vgpr6_vgpr74148; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s04149; GFX11-NEXT:    s_cbranch_execz .LBB21_24150; GFX11-NEXT:  .LBB21_6: ; %atomicrmw.private4151; GFX11-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]4152; GFX11-NEXT:    v_cndmask_b32_e32 v2, -1, v0, vcc_lo4153; GFX11-NEXT:    scratch_load_b64 v[0:1], v2, off4154; GFX11-NEXT:    s_waitcnt vmcnt(0)4155; GFX11-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]4156; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)4157; GFX11-NEXT:    v_max_f64 v[0:1], v[0:1], v[6:7]4158; GFX11-NEXT:    scratch_store_b64 v2, v[0:1], off4159; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s04160; GFX11-NEXT:    s_setpc_b64 s[30:31]4161;4162; GFX10-LABEL: flat_agent_atomic_fmax_noret_f64__amdgpu_no_fine_grained_memory:4163; GFX10:       ; %bb.0:4164; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4165; GFX10-NEXT:    s_mov_b64 s[4:5], src_private_base4166; GFX10-NEXT:    v_cmp_ne_u32_e32 vcc_lo, s5, v14167; GFX10-NEXT:    s_and_saveexec_b32 s4, vcc_lo4168; GFX10-NEXT:    s_xor_b32 s4, exec_lo, s44169; GFX10-NEXT:    s_cbranch_execnz .LBB21_34170; GFX10-NEXT:  ; %bb.1: ; %Flow4171; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s44172; GFX10-NEXT:    s_cbranch_execnz .LBB21_44173; GFX10-NEXT:  .LBB21_2: ; %atomicrmw.phi4174; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)4175; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s44176; GFX10-NEXT:    s_setpc_b64 s[30:31]4177; GFX10-NEXT:  .LBB21_3: ; %atomicrmw.global4178; GFX10-NEXT:    s_waitcnt_vscnt null, 0x04179; GFX10-NEXT:    flat_atomic_fmax_x2 v[0:1], v[2:3]4180; GFX10-NEXT:    s_waitcnt lgkmcnt(0)4181; GFX10-NEXT:    s_waitcnt_vscnt null, 0x04182; GFX10-NEXT:    buffer_gl1_inv4183; GFX10-NEXT:    buffer_gl0_inv4184; GFX10-NEXT:    ; implicit-def: $vgpr0_vgpr14185; GFX10-NEXT:    ; implicit-def: $vgpr2_vgpr34186; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s44187; GFX10-NEXT:    s_cbranch_execz .LBB21_24188; GFX10-NEXT:  .LBB21_4: ; %atomicrmw.private4189; GFX10-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]4190; GFX10-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]4191; GFX10-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc_lo4192; GFX10-NEXT:    s_clause 0x14193; GFX10-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen4194; GFX10-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:44195; GFX10-NEXT:    s_waitcnt vmcnt(0)4196; GFX10-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]4197; GFX10-NEXT:    v_max_f64 v[0:1], v[0:1], v[2:3]4198; GFX10-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen4199; GFX10-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:44200; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)4201; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s44202; GFX10-NEXT:    s_setpc_b64 s[30:31]4203;4204; GFX90A-LABEL: flat_agent_atomic_fmax_noret_f64__amdgpu_no_fine_grained_memory:4205; GFX90A:       ; %bb.0:4206; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4207; GFX90A-NEXT:    s_mov_b64 s[4:5], src_private_base4208; GFX90A-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v14209; GFX90A-NEXT:    s_and_saveexec_b64 s[4:5], vcc4210; GFX90A-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]4211; GFX90A-NEXT:    s_cbranch_execnz .LBB21_34212; GFX90A-NEXT:  ; %bb.1: ; %Flow4213; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4214; GFX90A-NEXT:    s_cbranch_execnz .LBB21_44215; GFX90A-NEXT:  .LBB21_2: ; %atomicrmw.phi4216; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]4217; GFX90A-NEXT:    s_setpc_b64 s[30:31]4218; GFX90A-NEXT:  .LBB21_3: ; %atomicrmw.global4219; GFX90A-NEXT:    flat_atomic_max_f64 v[0:1], v[2:3]4220; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4221; GFX90A-NEXT:    buffer_wbinvl14222; GFX90A-NEXT:    ; implicit-def: $vgpr0_vgpr14223; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr34224; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4225; GFX90A-NEXT:    s_cbranch_execz .LBB21_24226; GFX90A-NEXT:  .LBB21_4: ; %atomicrmw.private4227; GFX90A-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]4228; GFX90A-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc4229; GFX90A-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen4230; GFX90A-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:44231; GFX90A-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]4232; GFX90A-NEXT:    s_waitcnt vmcnt(0)4233; GFX90A-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]4234; GFX90A-NEXT:    v_max_f64 v[0:1], v[0:1], v[2:3]4235; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen4236; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:44237; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]4238; GFX90A-NEXT:    s_waitcnt vmcnt(0)4239; GFX90A-NEXT:    s_setpc_b64 s[30:31]4240;4241; GFX908-LABEL: flat_agent_atomic_fmax_noret_f64__amdgpu_no_fine_grained_memory:4242; GFX908:       ; %bb.0:4243; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4244; GFX908-NEXT:    v_max_f64 v[6:7], v[2:3], v[2:3]4245; GFX908-NEXT:    s_mov_b64 s[4:5], src_private_base4246; GFX908-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v14247; GFX908-NEXT:    s_and_saveexec_b64 s[4:5], vcc4248; GFX908-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]4249; GFX908-NEXT:    s_cbranch_execnz .LBB21_34250; GFX908-NEXT:  ; %bb.1: ; %Flow24251; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4252; GFX908-NEXT:    s_cbranch_execnz .LBB21_64253; GFX908-NEXT:  .LBB21_2: ; %atomicrmw.phi4254; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]4255; GFX908-NEXT:    s_setpc_b64 s[30:31]4256; GFX908-NEXT:  .LBB21_3: ; %atomicrmw.global4257; GFX908-NEXT:    flat_load_dwordx2 v[4:5], v[0:1]4258; GFX908-NEXT:    s_mov_b64 s[6:7], 04259; GFX908-NEXT:  .LBB21_4: ; %atomicrmw.start4260; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=14261; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4262; GFX908-NEXT:    v_max_f64 v[2:3], v[4:5], v[4:5]4263; GFX908-NEXT:    v_max_f64 v[2:3], v[2:3], v[6:7]4264; GFX908-NEXT:    flat_atomic_cmpswap_x2 v[2:3], v[0:1], v[2:5] glc4265; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4266; GFX908-NEXT:    buffer_wbinvl14267; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[2:3], v[4:5]4268; GFX908-NEXT:    v_mov_b32_e32 v5, v34269; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]4270; GFX908-NEXT:    v_mov_b32_e32 v4, v24271; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]4272; GFX908-NEXT:    s_cbranch_execnz .LBB21_44273; GFX908-NEXT:  ; %bb.5: ; %Flow4274; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]4275; GFX908-NEXT:    ; implicit-def: $vgpr0_vgpr14276; GFX908-NEXT:    ; implicit-def: $vgpr6_vgpr74277; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4278; GFX908-NEXT:    s_cbranch_execz .LBB21_24279; GFX908-NEXT:  .LBB21_6: ; %atomicrmw.private4280; GFX908-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]4281; GFX908-NEXT:    v_cndmask_b32_e32 v2, -1, v0, vcc4282; GFX908-NEXT:    buffer_load_dword v0, v2, s[0:3], 0 offen4283; GFX908-NEXT:    buffer_load_dword v1, v2, s[0:3], 0 offen offset:44284; GFX908-NEXT:    s_waitcnt vmcnt(0)4285; GFX908-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]4286; GFX908-NEXT:    v_max_f64 v[0:1], v[0:1], v[6:7]4287; GFX908-NEXT:    buffer_store_dword v0, v2, s[0:3], 0 offen4288; GFX908-NEXT:    buffer_store_dword v1, v2, s[0:3], 0 offen offset:44289; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]4290; GFX908-NEXT:    s_waitcnt vmcnt(0)4291; GFX908-NEXT:    s_setpc_b64 s[30:31]4292;4293; GFX8-LABEL: flat_agent_atomic_fmax_noret_f64__amdgpu_no_fine_grained_memory:4294; GFX8:       ; %bb.0:4295; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4296; GFX8-NEXT:    v_max_f64 v[6:7], v[2:3], v[2:3]4297; GFX8-NEXT:    s_mov_b64 s[4:5], 0xc04298; GFX8-NEXT:    s_load_dword s4, s[4:5], 0x04299; GFX8-NEXT:    s_waitcnt lgkmcnt(0)4300; GFX8-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v14301; GFX8-NEXT:    s_and_saveexec_b64 s[4:5], vcc4302; GFX8-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]4303; GFX8-NEXT:    s_cbranch_execnz .LBB21_34304; GFX8-NEXT:  ; %bb.1: ; %Flow24305; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4306; GFX8-NEXT:    s_cbranch_execnz .LBB21_64307; GFX8-NEXT:  .LBB21_2: ; %atomicrmw.phi4308; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]4309; GFX8-NEXT:    s_setpc_b64 s[30:31]4310; GFX8-NEXT:  .LBB21_3: ; %atomicrmw.global4311; GFX8-NEXT:    v_add_u32_e32 v2, vcc, 4, v04312; GFX8-NEXT:    v_addc_u32_e32 v3, vcc, 0, v1, vcc4313; GFX8-NEXT:    flat_load_dword v5, v[2:3]4314; GFX8-NEXT:    flat_load_dword v4, v[0:1]4315; GFX8-NEXT:    s_mov_b64 s[6:7], 04316; GFX8-NEXT:  .LBB21_4: ; %atomicrmw.start4317; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=14318; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4319; GFX8-NEXT:    v_max_f64 v[2:3], v[4:5], v[4:5]4320; GFX8-NEXT:    v_max_f64 v[2:3], v[2:3], v[6:7]4321; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[2:3], v[0:1], v[2:5] glc4322; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4323; GFX8-NEXT:    buffer_wbinvl14324; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[2:3], v[4:5]4325; GFX8-NEXT:    v_mov_b32_e32 v5, v34326; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]4327; GFX8-NEXT:    v_mov_b32_e32 v4, v24328; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]4329; GFX8-NEXT:    s_cbranch_execnz .LBB21_44330; GFX8-NEXT:  ; %bb.5: ; %Flow4331; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]4332; GFX8-NEXT:    ; implicit-def: $vgpr0_vgpr14333; GFX8-NEXT:    ; implicit-def: $vgpr6_vgpr74334; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4335; GFX8-NEXT:    s_cbranch_execz .LBB21_24336; GFX8-NEXT:  .LBB21_6: ; %atomicrmw.private4337; GFX8-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]4338; GFX8-NEXT:    v_cndmask_b32_e32 v2, -1, v0, vcc4339; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 4, v24340; GFX8-NEXT:    buffer_load_dword v0, v2, s[0:3], 0 offen4341; GFX8-NEXT:    buffer_load_dword v1, v3, s[0:3], 0 offen4342; GFX8-NEXT:    s_waitcnt vmcnt(0)4343; GFX8-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]4344; GFX8-NEXT:    v_max_f64 v[0:1], v[0:1], v[6:7]4345; GFX8-NEXT:    buffer_store_dword v0, v2, s[0:3], 0 offen4346; GFX8-NEXT:    buffer_store_dword v1, v3, s[0:3], 0 offen4347; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]4348; GFX8-NEXT:    s_waitcnt vmcnt(0)4349; GFX8-NEXT:    s_setpc_b64 s[30:31]4350;4351; GFX7-LABEL: flat_agent_atomic_fmax_noret_f64__amdgpu_no_fine_grained_memory:4352; GFX7:       ; %bb.0:4353; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4354; GFX7-NEXT:    s_mov_b64 s[4:5], 0xc04355; GFX7-NEXT:    s_load_dword s4, s[4:5], 0x04356; GFX7-NEXT:    s_waitcnt lgkmcnt(0)4357; GFX7-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v14358; GFX7-NEXT:    s_and_saveexec_b64 s[4:5], vcc4359; GFX7-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]4360; GFX7-NEXT:    s_cbranch_execnz .LBB21_34361; GFX7-NEXT:  ; %bb.1: ; %Flow4362; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4363; GFX7-NEXT:    s_cbranch_execnz .LBB21_44364; GFX7-NEXT:  .LBB21_2: ; %atomicrmw.phi4365; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]4366; GFX7-NEXT:    s_setpc_b64 s[30:31]4367; GFX7-NEXT:  .LBB21_3: ; %atomicrmw.global4368; GFX7-NEXT:    flat_atomic_fmax_x2 v[0:1], v[2:3]4369; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4370; GFX7-NEXT:    buffer_wbinvl14371; GFX7-NEXT:    ; implicit-def: $vgpr0_vgpr14372; GFX7-NEXT:    ; implicit-def: $vgpr2_vgpr34373; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4374; GFX7-NEXT:    s_cbranch_execz .LBB21_24375; GFX7-NEXT:  .LBB21_4: ; %atomicrmw.private4376; GFX7-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]4377; GFX7-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]4378; GFX7-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc4379; GFX7-NEXT:    v_add_i32_e32 v5, vcc, 4, v44380; GFX7-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen4381; GFX7-NEXT:    buffer_load_dword v1, v5, s[0:3], 0 offen4382; GFX7-NEXT:    s_waitcnt vmcnt(0)4383; GFX7-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]4384; GFX7-NEXT:    v_max_f64 v[0:1], v[0:1], v[2:3]4385; GFX7-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen4386; GFX7-NEXT:    buffer_store_dword v1, v5, s[0:3], 0 offen4387; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]4388; GFX7-NEXT:    s_waitcnt vmcnt(0)4389; GFX7-NEXT:    s_setpc_b64 s[30:31]4390  %unused = atomicrmw fmax ptr %ptr, double %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !04391  ret void4392}4393 4394define void @flat_agent_atomic_fmax_noret_f64__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, double %val) #0 {4395; GFX12-LABEL: flat_agent_atomic_fmax_noret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:4396; GFX12:       ; %bb.0:4397; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04398; GFX12-NEXT:    s_wait_expcnt 0x04399; GFX12-NEXT:    s_wait_samplecnt 0x04400; GFX12-NEXT:    s_wait_bvhcnt 0x04401; GFX12-NEXT:    s_wait_kmcnt 0x04402; GFX12-NEXT:    v_max_num_f64_e32 v[4:5], v[2:3], v[2:3]4403; GFX12-NEXT:    v_add_co_u32 v6, vcc_lo, 0x7f8, v04404; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)4405; GFX12-NEXT:    v_add_co_ci_u32_e64 v7, null, 0, v1, vcc_lo4406; GFX12-NEXT:    s_mov_b64 s[0:1], src_private_base4407; GFX12-NEXT:    s_mov_b32 s0, exec_lo4408; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4409; GFX12-NEXT:    v_cmpx_ne_u32_e64 s1, v74410; GFX12-NEXT:    s_xor_b32 s0, exec_lo, s04411; GFX12-NEXT:    s_cbranch_execnz .LBB22_34412; GFX12-NEXT:  ; %bb.1: ; %Flow24413; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4414; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s04415; GFX12-NEXT:    s_cbranch_execnz .LBB22_64416; GFX12-NEXT:  .LBB22_2: ; %atomicrmw.phi4417; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4418; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s04419; GFX12-NEXT:    s_wait_loadcnt 0x04420; GFX12-NEXT:    s_setpc_b64 s[30:31]4421; GFX12-NEXT:  .LBB22_3: ; %atomicrmw.global4422; GFX12-NEXT:    flat_load_b64 v[2:3], v[6:7]4423; GFX12-NEXT:    s_mov_b32 s1, 04424; GFX12-NEXT:  .LBB22_4: ; %atomicrmw.start4425; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=14426; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04427; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[2:3], v[2:3]4428; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)4429; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[4:5]4430; GFX12-NEXT:    s_wait_storecnt 0x04431; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[0:1], v[6:7], v[0:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV4432; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04433; GFX12-NEXT:    global_inv scope:SCOPE_DEV4434; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]4435; GFX12-NEXT:    v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v04436; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4437; GFX12-NEXT:    s_or_b32 s1, vcc_lo, s14438; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4439; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s14440; GFX12-NEXT:    s_cbranch_execnz .LBB22_44441; GFX12-NEXT:  ; %bb.5: ; %Flow4442; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s14443; GFX12-NEXT:    ; implicit-def: $vgpr6_vgpr74444; GFX12-NEXT:    ; implicit-def: $vgpr4_vgpr54445; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s04446; GFX12-NEXT:    s_cbranch_execz .LBB22_24447; GFX12-NEXT:  .LBB22_6: ; %atomicrmw.private4448; GFX12-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[6:7]4449; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)4450; GFX12-NEXT:    v_cndmask_b32_e32 v2, -1, v6, vcc_lo4451; GFX12-NEXT:    scratch_load_b64 v[0:1], v2, off4452; GFX12-NEXT:    s_wait_loadcnt 0x04453; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]4454; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)4455; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[4:5]4456; GFX12-NEXT:    scratch_store_b64 v2, v[0:1], off4457; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4458; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s04459; GFX12-NEXT:    s_setpc_b64 s[30:31]4460;4461; GFX942-LABEL: flat_agent_atomic_fmax_noret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:4462; GFX942:       ; %bb.0:4463; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4464; GFX942-NEXT:    s_mov_b64 s[2:3], 0x7f84465; GFX942-NEXT:    s_mov_b64 s[0:1], src_private_base4466; GFX942-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, s[2:3]4467; GFX942-NEXT:    v_cmp_ne_u32_e32 vcc, s1, v14468; GFX942-NEXT:    s_and_saveexec_b64 s[0:1], vcc4469; GFX942-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]4470; GFX942-NEXT:    s_cbranch_execnz .LBB22_34471; GFX942-NEXT:  ; %bb.1: ; %Flow4472; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]4473; GFX942-NEXT:    s_cbranch_execnz .LBB22_44474; GFX942-NEXT:  .LBB22_2: ; %atomicrmw.phi4475; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]4476; GFX942-NEXT:    s_setpc_b64 s[30:31]4477; GFX942-NEXT:  .LBB22_3: ; %atomicrmw.global4478; GFX942-NEXT:    buffer_wbl2 sc14479; GFX942-NEXT:    flat_atomic_max_f64 v[0:1], v[2:3]4480; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4481; GFX942-NEXT:    buffer_inv sc14482; GFX942-NEXT:    ; implicit-def: $vgpr0_vgpr14483; GFX942-NEXT:    ; implicit-def: $vgpr2_vgpr34484; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]4485; GFX942-NEXT:    s_cbranch_execz .LBB22_24486; GFX942-NEXT:  .LBB22_4: ; %atomicrmw.private4487; GFX942-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]4488; GFX942-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]4489; GFX942-NEXT:    s_nop 04490; GFX942-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc4491; GFX942-NEXT:    scratch_load_dwordx2 v[0:1], v4, off4492; GFX942-NEXT:    s_waitcnt vmcnt(0)4493; GFX942-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]4494; GFX942-NEXT:    v_max_f64 v[0:1], v[0:1], v[2:3]4495; GFX942-NEXT:    scratch_store_dwordx2 v4, v[0:1], off4496; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]4497; GFX942-NEXT:    s_waitcnt vmcnt(0)4498; GFX942-NEXT:    s_setpc_b64 s[30:31]4499;4500; GFX11-LABEL: flat_agent_atomic_fmax_noret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:4501; GFX11:       ; %bb.0:4502; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4503; GFX11-NEXT:    v_max_f64 v[4:5], v[2:3], v[2:3]4504; GFX11-NEXT:    v_add_co_u32 v6, vcc_lo, 0x7f8, v04505; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)4506; GFX11-NEXT:    v_add_co_ci_u32_e64 v7, null, 0, v1, vcc_lo4507; GFX11-NEXT:    s_mov_b64 s[0:1], src_private_base4508; GFX11-NEXT:    s_mov_b32 s0, exec_lo4509; GFX11-NEXT:    v_cmpx_ne_u32_e64 s1, v74510; GFX11-NEXT:    s_xor_b32 s0, exec_lo, s04511; GFX11-NEXT:    s_cbranch_execnz .LBB22_34512; GFX11-NEXT:  ; %bb.1: ; %Flow24513; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s04514; GFX11-NEXT:    s_cbranch_execnz .LBB22_64515; GFX11-NEXT:  .LBB22_2: ; %atomicrmw.phi4516; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s04517; GFX11-NEXT:    s_setpc_b64 s[30:31]4518; GFX11-NEXT:  .LBB22_3: ; %atomicrmw.global4519; GFX11-NEXT:    flat_load_b64 v[2:3], v[6:7]4520; GFX11-NEXT:    s_mov_b32 s1, 04521; GFX11-NEXT:  .LBB22_4: ; %atomicrmw.start4522; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=14523; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4524; GFX11-NEXT:    v_max_f64 v[0:1], v[2:3], v[2:3]4525; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)4526; GFX11-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]4527; GFX11-NEXT:    s_waitcnt_vscnt null, 0x04528; GFX11-NEXT:    flat_atomic_cmpswap_b64 v[0:1], v[6:7], v[0:3] glc4529; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4530; GFX11-NEXT:    buffer_gl1_inv4531; GFX11-NEXT:    buffer_gl0_inv4532; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]4533; GFX11-NEXT:    v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v04534; GFX11-NEXT:    s_or_b32 s1, vcc_lo, s14535; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4536; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s14537; GFX11-NEXT:    s_cbranch_execnz .LBB22_44538; GFX11-NEXT:  ; %bb.5: ; %Flow4539; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s14540; GFX11-NEXT:    ; implicit-def: $vgpr6_vgpr74541; GFX11-NEXT:    ; implicit-def: $vgpr4_vgpr54542; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s04543; GFX11-NEXT:    s_cbranch_execz .LBB22_24544; GFX11-NEXT:  .LBB22_6: ; %atomicrmw.private4545; GFX11-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[6:7]4546; GFX11-NEXT:    v_cndmask_b32_e32 v2, -1, v6, vcc_lo4547; GFX11-NEXT:    scratch_load_b64 v[0:1], v2, off4548; GFX11-NEXT:    s_waitcnt vmcnt(0)4549; GFX11-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]4550; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)4551; GFX11-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]4552; GFX11-NEXT:    scratch_store_b64 v2, v[0:1], off4553; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s04554; GFX11-NEXT:    s_setpc_b64 s[30:31]4555;4556; GFX10-LABEL: flat_agent_atomic_fmax_noret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:4557; GFX10:       ; %bb.0:4558; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4559; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7f8, v04560; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo4561; GFX10-NEXT:    s_mov_b64 s[4:5], src_private_base4562; GFX10-NEXT:    v_cmp_ne_u32_e32 vcc_lo, s5, v14563; GFX10-NEXT:    s_and_saveexec_b32 s4, vcc_lo4564; GFX10-NEXT:    s_xor_b32 s4, exec_lo, s44565; GFX10-NEXT:    s_cbranch_execnz .LBB22_34566; GFX10-NEXT:  ; %bb.1: ; %Flow4567; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s44568; GFX10-NEXT:    s_cbranch_execnz .LBB22_44569; GFX10-NEXT:  .LBB22_2: ; %atomicrmw.phi4570; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)4571; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s44572; GFX10-NEXT:    s_setpc_b64 s[30:31]4573; GFX10-NEXT:  .LBB22_3: ; %atomicrmw.global4574; GFX10-NEXT:    s_waitcnt_vscnt null, 0x04575; GFX10-NEXT:    flat_atomic_fmax_x2 v[0:1], v[2:3]4576; GFX10-NEXT:    s_waitcnt lgkmcnt(0)4577; GFX10-NEXT:    s_waitcnt_vscnt null, 0x04578; GFX10-NEXT:    buffer_gl1_inv4579; GFX10-NEXT:    buffer_gl0_inv4580; GFX10-NEXT:    ; implicit-def: $vgpr0_vgpr14581; GFX10-NEXT:    ; implicit-def: $vgpr2_vgpr34582; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s44583; GFX10-NEXT:    s_cbranch_execz .LBB22_24584; GFX10-NEXT:  .LBB22_4: ; %atomicrmw.private4585; GFX10-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]4586; GFX10-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]4587; GFX10-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc_lo4588; GFX10-NEXT:    s_clause 0x14589; GFX10-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen4590; GFX10-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:44591; GFX10-NEXT:    s_waitcnt vmcnt(0)4592; GFX10-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]4593; GFX10-NEXT:    v_max_f64 v[0:1], v[0:1], v[2:3]4594; GFX10-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen4595; GFX10-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:44596; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)4597; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s44598; GFX10-NEXT:    s_setpc_b64 s[30:31]4599;4600; GFX90A-LABEL: flat_agent_atomic_fmax_noret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:4601; GFX90A:       ; %bb.0:4602; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4603; GFX90A-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7f8, v04604; GFX90A-NEXT:    s_mov_b64 s[4:5], src_private_base4605; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc4606; GFX90A-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v14607; GFX90A-NEXT:    s_and_saveexec_b64 s[4:5], vcc4608; GFX90A-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]4609; GFX90A-NEXT:    s_cbranch_execnz .LBB22_34610; GFX90A-NEXT:  ; %bb.1: ; %Flow4611; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4612; GFX90A-NEXT:    s_cbranch_execnz .LBB22_44613; GFX90A-NEXT:  .LBB22_2: ; %atomicrmw.phi4614; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]4615; GFX90A-NEXT:    s_setpc_b64 s[30:31]4616; GFX90A-NEXT:  .LBB22_3: ; %atomicrmw.global4617; GFX90A-NEXT:    flat_atomic_max_f64 v[0:1], v[2:3]4618; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4619; GFX90A-NEXT:    buffer_wbinvl14620; GFX90A-NEXT:    ; implicit-def: $vgpr0_vgpr14621; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr34622; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4623; GFX90A-NEXT:    s_cbranch_execz .LBB22_24624; GFX90A-NEXT:  .LBB22_4: ; %atomicrmw.private4625; GFX90A-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]4626; GFX90A-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc4627; GFX90A-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen4628; GFX90A-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:44629; GFX90A-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]4630; GFX90A-NEXT:    s_waitcnt vmcnt(0)4631; GFX90A-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]4632; GFX90A-NEXT:    v_max_f64 v[0:1], v[0:1], v[2:3]4633; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen4634; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:44635; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]4636; GFX90A-NEXT:    s_waitcnt vmcnt(0)4637; GFX90A-NEXT:    s_setpc_b64 s[30:31]4638;4639; GFX908-LABEL: flat_agent_atomic_fmax_noret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:4640; GFX908:       ; %bb.0:4641; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4642; GFX908-NEXT:    v_max_f64 v[4:5], v[2:3], v[2:3]4643; GFX908-NEXT:    v_add_co_u32_e32 v6, vcc, 0x7f8, v04644; GFX908-NEXT:    s_mov_b64 s[4:5], src_private_base4645; GFX908-NEXT:    v_addc_co_u32_e32 v7, vcc, 0, v1, vcc4646; GFX908-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v74647; GFX908-NEXT:    s_and_saveexec_b64 s[4:5], vcc4648; GFX908-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]4649; GFX908-NEXT:    s_cbranch_execnz .LBB22_34650; GFX908-NEXT:  ; %bb.1: ; %Flow24651; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4652; GFX908-NEXT:    s_cbranch_execnz .LBB22_64653; GFX908-NEXT:  .LBB22_2: ; %atomicrmw.phi4654; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]4655; GFX908-NEXT:    s_setpc_b64 s[30:31]4656; GFX908-NEXT:  .LBB22_3: ; %atomicrmw.global4657; GFX908-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]4658; GFX908-NEXT:    s_mov_b64 s[6:7], 04659; GFX908-NEXT:  .LBB22_4: ; %atomicrmw.start4660; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=14661; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4662; GFX908-NEXT:    v_max_f64 v[0:1], v[2:3], v[2:3]4663; GFX908-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]4664; GFX908-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[6:7], v[0:3] glc4665; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4666; GFX908-NEXT:    buffer_wbinvl14667; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]4668; GFX908-NEXT:    v_mov_b32_e32 v3, v14669; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]4670; GFX908-NEXT:    v_mov_b32_e32 v2, v04671; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]4672; GFX908-NEXT:    s_cbranch_execnz .LBB22_44673; GFX908-NEXT:  ; %bb.5: ; %Flow4674; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]4675; GFX908-NEXT:    ; implicit-def: $vgpr6_vgpr74676; GFX908-NEXT:    ; implicit-def: $vgpr4_vgpr54677; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4678; GFX908-NEXT:    s_cbranch_execz .LBB22_24679; GFX908-NEXT:  .LBB22_6: ; %atomicrmw.private4680; GFX908-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[6:7]4681; GFX908-NEXT:    v_cndmask_b32_e32 v2, -1, v6, vcc4682; GFX908-NEXT:    buffer_load_dword v0, v2, s[0:3], 0 offen4683; GFX908-NEXT:    buffer_load_dword v1, v2, s[0:3], 0 offen offset:44684; GFX908-NEXT:    s_waitcnt vmcnt(0)4685; GFX908-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]4686; GFX908-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]4687; GFX908-NEXT:    buffer_store_dword v0, v2, s[0:3], 0 offen4688; GFX908-NEXT:    buffer_store_dword v1, v2, s[0:3], 0 offen offset:44689; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]4690; GFX908-NEXT:    s_waitcnt vmcnt(0)4691; GFX908-NEXT:    s_setpc_b64 s[30:31]4692;4693; GFX8-LABEL: flat_agent_atomic_fmax_noret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:4694; GFX8:       ; %bb.0:4695; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4696; GFX8-NEXT:    v_max_f64 v[4:5], v[2:3], v[2:3]4697; GFX8-NEXT:    s_mov_b64 s[4:5], 0xc04698; GFX8-NEXT:    s_load_dword s4, s[4:5], 0x04699; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0x7f8, v04700; GFX8-NEXT:    v_addc_u32_e32 v7, vcc, 0, v1, vcc4701; GFX8-NEXT:    s_waitcnt lgkmcnt(0)4702; GFX8-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v74703; GFX8-NEXT:    s_and_saveexec_b64 s[4:5], vcc4704; GFX8-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]4705; GFX8-NEXT:    s_cbranch_execnz .LBB22_34706; GFX8-NEXT:  ; %bb.1: ; %Flow24707; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4708; GFX8-NEXT:    s_cbranch_execnz .LBB22_64709; GFX8-NEXT:  .LBB22_2: ; %atomicrmw.phi4710; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]4711; GFX8-NEXT:    s_setpc_b64 s[30:31]4712; GFX8-NEXT:  .LBB22_3: ; %atomicrmw.global4713; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 4, v64714; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v7, vcc4715; GFX8-NEXT:    flat_load_dword v3, v[0:1]4716; GFX8-NEXT:    flat_load_dword v2, v[6:7]4717; GFX8-NEXT:    s_mov_b64 s[6:7], 04718; GFX8-NEXT:  .LBB22_4: ; %atomicrmw.start4719; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=14720; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4721; GFX8-NEXT:    v_max_f64 v[0:1], v[2:3], v[2:3]4722; GFX8-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]4723; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[6:7], v[0:3] glc4724; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4725; GFX8-NEXT:    buffer_wbinvl14726; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]4727; GFX8-NEXT:    v_mov_b32_e32 v3, v14728; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]4729; GFX8-NEXT:    v_mov_b32_e32 v2, v04730; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]4731; GFX8-NEXT:    s_cbranch_execnz .LBB22_44732; GFX8-NEXT:  ; %bb.5: ; %Flow4733; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]4734; GFX8-NEXT:    ; implicit-def: $vgpr6_vgpr74735; GFX8-NEXT:    ; implicit-def: $vgpr4_vgpr54736; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4737; GFX8-NEXT:    s_cbranch_execz .LBB22_24738; GFX8-NEXT:  .LBB22_6: ; %atomicrmw.private4739; GFX8-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[6:7]4740; GFX8-NEXT:    v_cndmask_b32_e32 v2, -1, v6, vcc4741; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 4, v24742; GFX8-NEXT:    buffer_load_dword v0, v2, s[0:3], 0 offen4743; GFX8-NEXT:    buffer_load_dword v1, v3, s[0:3], 0 offen4744; GFX8-NEXT:    s_waitcnt vmcnt(0)4745; GFX8-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]4746; GFX8-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]4747; GFX8-NEXT:    buffer_store_dword v0, v2, s[0:3], 0 offen4748; GFX8-NEXT:    buffer_store_dword v1, v3, s[0:3], 0 offen4749; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]4750; GFX8-NEXT:    s_waitcnt vmcnt(0)4751; GFX8-NEXT:    s_setpc_b64 s[30:31]4752;4753; GFX7-LABEL: flat_agent_atomic_fmax_noret_f64__offset12b_pos__amdgpu_no_fine_grained_memory:4754; GFX7:       ; %bb.0:4755; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4756; GFX7-NEXT:    s_mov_b64 s[4:5], 0xc04757; GFX7-NEXT:    s_load_dword s4, s[4:5], 0x04758; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7f8, v04759; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc4760; GFX7-NEXT:    s_waitcnt lgkmcnt(0)4761; GFX7-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v14762; GFX7-NEXT:    s_and_saveexec_b64 s[4:5], vcc4763; GFX7-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]4764; GFX7-NEXT:    s_cbranch_execnz .LBB22_34765; GFX7-NEXT:  ; %bb.1: ; %Flow4766; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4767; GFX7-NEXT:    s_cbranch_execnz .LBB22_44768; GFX7-NEXT:  .LBB22_2: ; %atomicrmw.phi4769; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]4770; GFX7-NEXT:    s_setpc_b64 s[30:31]4771; GFX7-NEXT:  .LBB22_3: ; %atomicrmw.global4772; GFX7-NEXT:    flat_atomic_fmax_x2 v[0:1], v[2:3]4773; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4774; GFX7-NEXT:    buffer_wbinvl14775; GFX7-NEXT:    ; implicit-def: $vgpr0_vgpr14776; GFX7-NEXT:    ; implicit-def: $vgpr2_vgpr34777; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]4778; GFX7-NEXT:    s_cbranch_execz .LBB22_24779; GFX7-NEXT:  .LBB22_4: ; %atomicrmw.private4780; GFX7-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]4781; GFX7-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]4782; GFX7-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc4783; GFX7-NEXT:    v_add_i32_e32 v5, vcc, 4, v44784; GFX7-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen4785; GFX7-NEXT:    buffer_load_dword v1, v5, s[0:3], 0 offen4786; GFX7-NEXT:    s_waitcnt vmcnt(0)4787; GFX7-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]4788; GFX7-NEXT:    v_max_f64 v[0:1], v[0:1], v[2:3]4789; GFX7-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen4790; GFX7-NEXT:    buffer_store_dword v1, v5, s[0:3], 0 offen4791; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]4792; GFX7-NEXT:    s_waitcnt vmcnt(0)4793; GFX7-NEXT:    s_setpc_b64 s[30:31]4794  %gep = getelementptr inbounds double, ptr %ptr, i64 2554795  %unused = atomicrmw fmax ptr %gep, double %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !04796  ret void4797}4798 4799define void @flat_agent_atomic_fmax_noret_f64__offset12b_neg__amdgpu_no_fine_grained_memory(ptr %ptr, double %val) #0 {4800; GFX12-LABEL: flat_agent_atomic_fmax_noret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:4801; GFX12:       ; %bb.0:4802; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04803; GFX12-NEXT:    s_wait_expcnt 0x04804; GFX12-NEXT:    s_wait_samplecnt 0x04805; GFX12-NEXT:    s_wait_bvhcnt 0x04806; GFX12-NEXT:    s_wait_kmcnt 0x04807; GFX12-NEXT:    v_max_num_f64_e32 v[4:5], v[2:3], v[2:3]4808; GFX12-NEXT:    v_add_co_u32 v6, vcc_lo, 0xfffff800, v04809; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)4810; GFX12-NEXT:    v_add_co_ci_u32_e64 v7, null, -1, v1, vcc_lo4811; GFX12-NEXT:    s_mov_b64 s[0:1], src_private_base4812; GFX12-NEXT:    s_mov_b32 s0, exec_lo4813; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4814; GFX12-NEXT:    v_cmpx_ne_u32_e64 s1, v74815; GFX12-NEXT:    s_xor_b32 s0, exec_lo, s04816; GFX12-NEXT:    s_cbranch_execnz .LBB23_34817; GFX12-NEXT:  ; %bb.1: ; %Flow24818; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4819; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s04820; GFX12-NEXT:    s_cbranch_execnz .LBB23_64821; GFX12-NEXT:  .LBB23_2: ; %atomicrmw.phi4822; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4823; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s04824; GFX12-NEXT:    s_wait_loadcnt 0x04825; GFX12-NEXT:    s_setpc_b64 s[30:31]4826; GFX12-NEXT:  .LBB23_3: ; %atomicrmw.global4827; GFX12-NEXT:    flat_load_b64 v[2:3], v[6:7]4828; GFX12-NEXT:    s_mov_b32 s1, 04829; GFX12-NEXT:  .LBB23_4: ; %atomicrmw.start4830; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=14831; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04832; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[2:3], v[2:3]4833; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)4834; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[4:5]4835; GFX12-NEXT:    s_wait_storecnt 0x04836; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[0:1], v[6:7], v[0:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV4837; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x04838; GFX12-NEXT:    global_inv scope:SCOPE_DEV4839; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]4840; GFX12-NEXT:    v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v04841; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4842; GFX12-NEXT:    s_or_b32 s1, vcc_lo, s14843; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4844; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s14845; GFX12-NEXT:    s_cbranch_execnz .LBB23_44846; GFX12-NEXT:  ; %bb.5: ; %Flow4847; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s14848; GFX12-NEXT:    ; implicit-def: $vgpr6_vgpr74849; GFX12-NEXT:    ; implicit-def: $vgpr4_vgpr54850; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s04851; GFX12-NEXT:    s_cbranch_execz .LBB23_24852; GFX12-NEXT:  .LBB23_6: ; %atomicrmw.private4853; GFX12-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[6:7]4854; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)4855; GFX12-NEXT:    v_cndmask_b32_e32 v2, -1, v6, vcc_lo4856; GFX12-NEXT:    scratch_load_b64 v[0:1], v2, off4857; GFX12-NEXT:    s_wait_loadcnt 0x04858; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1]4859; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)4860; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[4:5]4861; GFX12-NEXT:    scratch_store_b64 v2, v[0:1], off4862; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)4863; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s04864; GFX12-NEXT:    s_setpc_b64 s[30:31]4865;4866; GFX942-LABEL: flat_agent_atomic_fmax_noret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:4867; GFX942:       ; %bb.0:4868; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4869; GFX942-NEXT:    s_movk_i32 s2, 0xf8004870; GFX942-NEXT:    s_mov_b32 s3, -14871; GFX942-NEXT:    s_mov_b64 s[0:1], src_private_base4872; GFX942-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, s[2:3]4873; GFX942-NEXT:    v_cmp_ne_u32_e32 vcc, s1, v14874; GFX942-NEXT:    s_and_saveexec_b64 s[0:1], vcc4875; GFX942-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]4876; GFX942-NEXT:    s_cbranch_execnz .LBB23_34877; GFX942-NEXT:  ; %bb.1: ; %Flow4878; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]4879; GFX942-NEXT:    s_cbranch_execnz .LBB23_44880; GFX942-NEXT:  .LBB23_2: ; %atomicrmw.phi4881; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]4882; GFX942-NEXT:    s_setpc_b64 s[30:31]4883; GFX942-NEXT:  .LBB23_3: ; %atomicrmw.global4884; GFX942-NEXT:    buffer_wbl2 sc14885; GFX942-NEXT:    flat_atomic_max_f64 v[0:1], v[2:3]4886; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4887; GFX942-NEXT:    buffer_inv sc14888; GFX942-NEXT:    ; implicit-def: $vgpr0_vgpr14889; GFX942-NEXT:    ; implicit-def: $vgpr2_vgpr34890; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]4891; GFX942-NEXT:    s_cbranch_execz .LBB23_24892; GFX942-NEXT:  .LBB23_4: ; %atomicrmw.private4893; GFX942-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]4894; GFX942-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]4895; GFX942-NEXT:    s_nop 04896; GFX942-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc4897; GFX942-NEXT:    scratch_load_dwordx2 v[0:1], v4, off4898; GFX942-NEXT:    s_waitcnt vmcnt(0)4899; GFX942-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]4900; GFX942-NEXT:    v_max_f64 v[0:1], v[0:1], v[2:3]4901; GFX942-NEXT:    scratch_store_dwordx2 v4, v[0:1], off4902; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]4903; GFX942-NEXT:    s_waitcnt vmcnt(0)4904; GFX942-NEXT:    s_setpc_b64 s[30:31]4905;4906; GFX11-LABEL: flat_agent_atomic_fmax_noret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:4907; GFX11:       ; %bb.0:4908; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4909; GFX11-NEXT:    v_max_f64 v[4:5], v[2:3], v[2:3]4910; GFX11-NEXT:    v_add_co_u32 v6, vcc_lo, 0xfffff800, v04911; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)4912; GFX11-NEXT:    v_add_co_ci_u32_e64 v7, null, -1, v1, vcc_lo4913; GFX11-NEXT:    s_mov_b64 s[0:1], src_private_base4914; GFX11-NEXT:    s_mov_b32 s0, exec_lo4915; GFX11-NEXT:    v_cmpx_ne_u32_e64 s1, v74916; GFX11-NEXT:    s_xor_b32 s0, exec_lo, s04917; GFX11-NEXT:    s_cbranch_execnz .LBB23_34918; GFX11-NEXT:  ; %bb.1: ; %Flow24919; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s04920; GFX11-NEXT:    s_cbranch_execnz .LBB23_64921; GFX11-NEXT:  .LBB23_2: ; %atomicrmw.phi4922; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s04923; GFX11-NEXT:    s_setpc_b64 s[30:31]4924; GFX11-NEXT:  .LBB23_3: ; %atomicrmw.global4925; GFX11-NEXT:    flat_load_b64 v[2:3], v[6:7]4926; GFX11-NEXT:    s_mov_b32 s1, 04927; GFX11-NEXT:  .LBB23_4: ; %atomicrmw.start4928; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=14929; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4930; GFX11-NEXT:    v_max_f64 v[0:1], v[2:3], v[2:3]4931; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)4932; GFX11-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]4933; GFX11-NEXT:    s_waitcnt_vscnt null, 0x04934; GFX11-NEXT:    flat_atomic_cmpswap_b64 v[0:1], v[6:7], v[0:3] glc4935; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)4936; GFX11-NEXT:    buffer_gl1_inv4937; GFX11-NEXT:    buffer_gl0_inv4938; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]4939; GFX11-NEXT:    v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v04940; GFX11-NEXT:    s_or_b32 s1, vcc_lo, s14941; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4942; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s14943; GFX11-NEXT:    s_cbranch_execnz .LBB23_44944; GFX11-NEXT:  ; %bb.5: ; %Flow4945; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s14946; GFX11-NEXT:    ; implicit-def: $vgpr6_vgpr74947; GFX11-NEXT:    ; implicit-def: $vgpr4_vgpr54948; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s04949; GFX11-NEXT:    s_cbranch_execz .LBB23_24950; GFX11-NEXT:  .LBB23_6: ; %atomicrmw.private4951; GFX11-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[6:7]4952; GFX11-NEXT:    v_cndmask_b32_e32 v2, -1, v6, vcc_lo4953; GFX11-NEXT:    scratch_load_b64 v[0:1], v2, off4954; GFX11-NEXT:    s_waitcnt vmcnt(0)4955; GFX11-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]4956; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)4957; GFX11-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]4958; GFX11-NEXT:    scratch_store_b64 v2, v[0:1], off4959; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s04960; GFX11-NEXT:    s_setpc_b64 s[30:31]4961;4962; GFX10-LABEL: flat_agent_atomic_fmax_noret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:4963; GFX10:       ; %bb.0:4964; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4965; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v04966; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo4967; GFX10-NEXT:    s_mov_b64 s[4:5], src_private_base4968; GFX10-NEXT:    v_cmp_ne_u32_e32 vcc_lo, s5, v14969; GFX10-NEXT:    s_and_saveexec_b32 s4, vcc_lo4970; GFX10-NEXT:    s_xor_b32 s4, exec_lo, s44971; GFX10-NEXT:    s_cbranch_execnz .LBB23_34972; GFX10-NEXT:  ; %bb.1: ; %Flow4973; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s44974; GFX10-NEXT:    s_cbranch_execnz .LBB23_44975; GFX10-NEXT:  .LBB23_2: ; %atomicrmw.phi4976; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)4977; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s44978; GFX10-NEXT:    s_setpc_b64 s[30:31]4979; GFX10-NEXT:  .LBB23_3: ; %atomicrmw.global4980; GFX10-NEXT:    s_waitcnt_vscnt null, 0x04981; GFX10-NEXT:    flat_atomic_fmax_x2 v[0:1], v[2:3]4982; GFX10-NEXT:    s_waitcnt lgkmcnt(0)4983; GFX10-NEXT:    s_waitcnt_vscnt null, 0x04984; GFX10-NEXT:    buffer_gl1_inv4985; GFX10-NEXT:    buffer_gl0_inv4986; GFX10-NEXT:    ; implicit-def: $vgpr0_vgpr14987; GFX10-NEXT:    ; implicit-def: $vgpr2_vgpr34988; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s44989; GFX10-NEXT:    s_cbranch_execz .LBB23_24990; GFX10-NEXT:  .LBB23_4: ; %atomicrmw.private4991; GFX10-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]4992; GFX10-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]4993; GFX10-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc_lo4994; GFX10-NEXT:    s_clause 0x14995; GFX10-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen4996; GFX10-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:44997; GFX10-NEXT:    s_waitcnt vmcnt(0)4998; GFX10-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]4999; GFX10-NEXT:    v_max_f64 v[0:1], v[0:1], v[2:3]5000; GFX10-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen5001; GFX10-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:45002; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)5003; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s45004; GFX10-NEXT:    s_setpc_b64 s[30:31]5005;5006; GFX90A-LABEL: flat_agent_atomic_fmax_noret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:5007; GFX90A:       ; %bb.0:5008; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5009; GFX90A-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff800, v05010; GFX90A-NEXT:    s_mov_b64 s[4:5], src_private_base5011; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc5012; GFX90A-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v15013; GFX90A-NEXT:    s_and_saveexec_b64 s[4:5], vcc5014; GFX90A-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]5015; GFX90A-NEXT:    s_cbranch_execnz .LBB23_35016; GFX90A-NEXT:  ; %bb.1: ; %Flow5017; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5018; GFX90A-NEXT:    s_cbranch_execnz .LBB23_45019; GFX90A-NEXT:  .LBB23_2: ; %atomicrmw.phi5020; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]5021; GFX90A-NEXT:    s_setpc_b64 s[30:31]5022; GFX90A-NEXT:  .LBB23_3: ; %atomicrmw.global5023; GFX90A-NEXT:    flat_atomic_max_f64 v[0:1], v[2:3]5024; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5025; GFX90A-NEXT:    buffer_wbinvl15026; GFX90A-NEXT:    ; implicit-def: $vgpr0_vgpr15027; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr35028; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5029; GFX90A-NEXT:    s_cbranch_execz .LBB23_25030; GFX90A-NEXT:  .LBB23_4: ; %atomicrmw.private5031; GFX90A-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]5032; GFX90A-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc5033; GFX90A-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen5034; GFX90A-NEXT:    buffer_load_dword v1, v4, s[0:3], 0 offen offset:45035; GFX90A-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]5036; GFX90A-NEXT:    s_waitcnt vmcnt(0)5037; GFX90A-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]5038; GFX90A-NEXT:    v_max_f64 v[0:1], v[0:1], v[2:3]5039; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen5040; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:45041; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]5042; GFX90A-NEXT:    s_waitcnt vmcnt(0)5043; GFX90A-NEXT:    s_setpc_b64 s[30:31]5044;5045; GFX908-LABEL: flat_agent_atomic_fmax_noret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:5046; GFX908:       ; %bb.0:5047; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5048; GFX908-NEXT:    v_max_f64 v[4:5], v[2:3], v[2:3]5049; GFX908-NEXT:    v_add_co_u32_e32 v6, vcc, 0xfffff800, v05050; GFX908-NEXT:    s_mov_b64 s[4:5], src_private_base5051; GFX908-NEXT:    v_addc_co_u32_e32 v7, vcc, -1, v1, vcc5052; GFX908-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v75053; GFX908-NEXT:    s_and_saveexec_b64 s[4:5], vcc5054; GFX908-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]5055; GFX908-NEXT:    s_cbranch_execnz .LBB23_35056; GFX908-NEXT:  ; %bb.1: ; %Flow25057; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5058; GFX908-NEXT:    s_cbranch_execnz .LBB23_65059; GFX908-NEXT:  .LBB23_2: ; %atomicrmw.phi5060; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]5061; GFX908-NEXT:    s_setpc_b64 s[30:31]5062; GFX908-NEXT:  .LBB23_3: ; %atomicrmw.global5063; GFX908-NEXT:    flat_load_dwordx2 v[2:3], v[6:7]5064; GFX908-NEXT:    s_mov_b64 s[6:7], 05065; GFX908-NEXT:  .LBB23_4: ; %atomicrmw.start5066; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=15067; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5068; GFX908-NEXT:    v_max_f64 v[0:1], v[2:3], v[2:3]5069; GFX908-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]5070; GFX908-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[6:7], v[0:3] glc5071; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5072; GFX908-NEXT:    buffer_wbinvl15073; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]5074; GFX908-NEXT:    v_mov_b32_e32 v3, v15075; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]5076; GFX908-NEXT:    v_mov_b32_e32 v2, v05077; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]5078; GFX908-NEXT:    s_cbranch_execnz .LBB23_45079; GFX908-NEXT:  ; %bb.5: ; %Flow5080; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]5081; GFX908-NEXT:    ; implicit-def: $vgpr6_vgpr75082; GFX908-NEXT:    ; implicit-def: $vgpr4_vgpr55083; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5084; GFX908-NEXT:    s_cbranch_execz .LBB23_25085; GFX908-NEXT:  .LBB23_6: ; %atomicrmw.private5086; GFX908-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[6:7]5087; GFX908-NEXT:    v_cndmask_b32_e32 v2, -1, v6, vcc5088; GFX908-NEXT:    buffer_load_dword v0, v2, s[0:3], 0 offen5089; GFX908-NEXT:    buffer_load_dword v1, v2, s[0:3], 0 offen offset:45090; GFX908-NEXT:    s_waitcnt vmcnt(0)5091; GFX908-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]5092; GFX908-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]5093; GFX908-NEXT:    buffer_store_dword v0, v2, s[0:3], 0 offen5094; GFX908-NEXT:    buffer_store_dword v1, v2, s[0:3], 0 offen offset:45095; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]5096; GFX908-NEXT:    s_waitcnt vmcnt(0)5097; GFX908-NEXT:    s_setpc_b64 s[30:31]5098;5099; GFX8-LABEL: flat_agent_atomic_fmax_noret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:5100; GFX8:       ; %bb.0:5101; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5102; GFX8-NEXT:    v_max_f64 v[4:5], v[2:3], v[2:3]5103; GFX8-NEXT:    s_mov_b64 s[4:5], 0xc05104; GFX8-NEXT:    s_load_dword s4, s[4:5], 0x05105; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0xfffff800, v05106; GFX8-NEXT:    v_addc_u32_e32 v7, vcc, -1, v1, vcc5107; GFX8-NEXT:    s_waitcnt lgkmcnt(0)5108; GFX8-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v75109; GFX8-NEXT:    s_and_saveexec_b64 s[4:5], vcc5110; GFX8-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]5111; GFX8-NEXT:    s_cbranch_execnz .LBB23_35112; GFX8-NEXT:  ; %bb.1: ; %Flow25113; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5114; GFX8-NEXT:    s_cbranch_execnz .LBB23_65115; GFX8-NEXT:  .LBB23_2: ; %atomicrmw.phi5116; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]5117; GFX8-NEXT:    s_setpc_b64 s[30:31]5118; GFX8-NEXT:  .LBB23_3: ; %atomicrmw.global5119; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 4, v65120; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v7, vcc5121; GFX8-NEXT:    flat_load_dword v3, v[0:1]5122; GFX8-NEXT:    flat_load_dword v2, v[6:7]5123; GFX8-NEXT:    s_mov_b64 s[6:7], 05124; GFX8-NEXT:  .LBB23_4: ; %atomicrmw.start5125; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=15126; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5127; GFX8-NEXT:    v_max_f64 v[0:1], v[2:3], v[2:3]5128; GFX8-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]5129; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[0:1], v[6:7], v[0:3] glc5130; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5131; GFX8-NEXT:    buffer_wbinvl15132; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]5133; GFX8-NEXT:    v_mov_b32_e32 v3, v15134; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]5135; GFX8-NEXT:    v_mov_b32_e32 v2, v05136; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]5137; GFX8-NEXT:    s_cbranch_execnz .LBB23_45138; GFX8-NEXT:  ; %bb.5: ; %Flow5139; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]5140; GFX8-NEXT:    ; implicit-def: $vgpr6_vgpr75141; GFX8-NEXT:    ; implicit-def: $vgpr4_vgpr55142; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5143; GFX8-NEXT:    s_cbranch_execz .LBB23_25144; GFX8-NEXT:  .LBB23_6: ; %atomicrmw.private5145; GFX8-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[6:7]5146; GFX8-NEXT:    v_cndmask_b32_e32 v2, -1, v6, vcc5147; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 4, v25148; GFX8-NEXT:    buffer_load_dword v0, v2, s[0:3], 0 offen5149; GFX8-NEXT:    buffer_load_dword v1, v3, s[0:3], 0 offen5150; GFX8-NEXT:    s_waitcnt vmcnt(0)5151; GFX8-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]5152; GFX8-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]5153; GFX8-NEXT:    buffer_store_dword v0, v2, s[0:3], 0 offen5154; GFX8-NEXT:    buffer_store_dword v1, v3, s[0:3], 0 offen5155; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]5156; GFX8-NEXT:    s_waitcnt vmcnt(0)5157; GFX8-NEXT:    s_setpc_b64 s[30:31]5158;5159; GFX7-LABEL: flat_agent_atomic_fmax_noret_f64__offset12b_neg__amdgpu_no_fine_grained_memory:5160; GFX7:       ; %bb.0:5161; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5162; GFX7-NEXT:    s_mov_b64 s[4:5], 0xc05163; GFX7-NEXT:    s_load_dword s4, s[4:5], 0x05164; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v05165; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc5166; GFX7-NEXT:    s_waitcnt lgkmcnt(0)5167; GFX7-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v15168; GFX7-NEXT:    s_and_saveexec_b64 s[4:5], vcc5169; GFX7-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]5170; GFX7-NEXT:    s_cbranch_execnz .LBB23_35171; GFX7-NEXT:  ; %bb.1: ; %Flow5172; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5173; GFX7-NEXT:    s_cbranch_execnz .LBB23_45174; GFX7-NEXT:  .LBB23_2: ; %atomicrmw.phi5175; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]5176; GFX7-NEXT:    s_setpc_b64 s[30:31]5177; GFX7-NEXT:  .LBB23_3: ; %atomicrmw.global5178; GFX7-NEXT:    flat_atomic_fmax_x2 v[0:1], v[2:3]5179; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5180; GFX7-NEXT:    buffer_wbinvl15181; GFX7-NEXT:    ; implicit-def: $vgpr0_vgpr15182; GFX7-NEXT:    ; implicit-def: $vgpr2_vgpr35183; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5184; GFX7-NEXT:    s_cbranch_execz .LBB23_25185; GFX7-NEXT:  .LBB23_4: ; %atomicrmw.private5186; GFX7-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]5187; GFX7-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]5188; GFX7-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc5189; GFX7-NEXT:    v_add_i32_e32 v5, vcc, 4, v45190; GFX7-NEXT:    buffer_load_dword v0, v4, s[0:3], 0 offen5191; GFX7-NEXT:    buffer_load_dword v1, v5, s[0:3], 0 offen5192; GFX7-NEXT:    s_waitcnt vmcnt(0)5193; GFX7-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1]5194; GFX7-NEXT:    v_max_f64 v[0:1], v[0:1], v[2:3]5195; GFX7-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen5196; GFX7-NEXT:    buffer_store_dword v1, v5, s[0:3], 0 offen5197; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]5198; GFX7-NEXT:    s_waitcnt vmcnt(0)5199; GFX7-NEXT:    s_setpc_b64 s[30:31]5200  %gep = getelementptr inbounds double, ptr %ptr, i64 -2565201  %unused = atomicrmw fmax ptr %gep, double %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !05202  ret void5203}5204 5205define double @flat_agent_atomic_fmax_ret_f64__amdgpu_no_remote_memory(ptr %ptr, double %val) #0 {5206; GFX12-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_remote_memory:5207; GFX12:       ; %bb.0:5208; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x05209; GFX12-NEXT:    s_wait_expcnt 0x05210; GFX12-NEXT:    s_wait_samplecnt 0x05211; GFX12-NEXT:    s_wait_bvhcnt 0x05212; GFX12-NEXT:    s_wait_kmcnt 0x05213; GFX12-NEXT:    v_max_num_f64_e32 v[4:5], v[2:3], v[2:3]5214; GFX12-NEXT:    s_mov_b64 s[0:1], src_private_base5215; GFX12-NEXT:    s_mov_b32 s0, exec_lo5216; GFX12-NEXT:    ; implicit-def: $vgpr2_vgpr35217; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)5218; GFX12-NEXT:    v_cmpx_ne_u32_e64 s1, v15219; GFX12-NEXT:    s_xor_b32 s0, exec_lo, s05220; GFX12-NEXT:    s_cbranch_execz .LBB24_45221; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global5222; GFX12-NEXT:    flat_load_b64 v[2:3], v[0:1]5223; GFX12-NEXT:    s_mov_b32 s1, 05224; GFX12-NEXT:  .LBB24_2: ; %atomicrmw.start5225; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=15226; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x05227; GFX12-NEXT:    v_dual_mov_b32 v9, v3 :: v_dual_mov_b32 v8, v25228; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5229; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[8:9], v[8:9]5230; GFX12-NEXT:    v_max_num_f64_e32 v[6:7], v[2:3], v[4:5]5231; GFX12-NEXT:    s_wait_storecnt 0x05232; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[2:3], v[0:1], v[6:9] th:TH_ATOMIC_RETURN scope:SCOPE_DEV5233; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x05234; GFX12-NEXT:    global_inv scope:SCOPE_DEV5235; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[2:3], v[8:9]5236; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)5237; GFX12-NEXT:    s_or_b32 s1, vcc_lo, s15238; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)5239; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s15240; GFX12-NEXT:    s_cbranch_execnz .LBB24_25241; GFX12-NEXT:  ; %bb.3: ; %Flow5242; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s15243; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr15244; GFX12-NEXT:    ; implicit-def: $vgpr4_vgpr55245; GFX12-NEXT:  .LBB24_4: ; %Flow25246; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)5247; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s05248; GFX12-NEXT:    s_cbranch_execz .LBB24_65249; GFX12-NEXT:  ; %bb.5: ; %atomicrmw.private5250; GFX12-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]5251; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)5252; GFX12-NEXT:    v_cndmask_b32_e32 v6, -1, v0, vcc_lo5253; GFX12-NEXT:    scratch_load_b64 v[2:3], v6, off5254; GFX12-NEXT:    s_wait_loadcnt 0x05255; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[2:3], v[2:3]5256; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)5257; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[4:5]5258; GFX12-NEXT:    scratch_store_b64 v6, v[0:1], off5259; GFX12-NEXT:  .LBB24_6: ; %atomicrmw.phi5260; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)5261; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s05262; GFX12-NEXT:    v_dual_mov_b32 v0, v2 :: v_dual_mov_b32 v1, v35263; GFX12-NEXT:    s_wait_loadcnt 0x05264; GFX12-NEXT:    s_setpc_b64 s[30:31]5265;5266; GFX942-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_remote_memory:5267; GFX942:       ; %bb.0:5268; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5269; GFX942-NEXT:    v_mov_b32_e32 v5, v15270; GFX942-NEXT:    s_mov_b64 s[0:1], src_private_base5271; GFX942-NEXT:    v_mov_b32_e32 v4, v05272; GFX942-NEXT:    v_cmp_ne_u32_e32 vcc, s1, v55273; GFX942-NEXT:    ; implicit-def: $vgpr0_vgpr15274; GFX942-NEXT:    s_and_saveexec_b64 s[0:1], vcc5275; GFX942-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]5276; GFX942-NEXT:    s_cbranch_execnz .LBB24_35277; GFX942-NEXT:  ; %bb.1: ; %Flow5278; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]5279; GFX942-NEXT:    s_cbranch_execnz .LBB24_45280; GFX942-NEXT:  .LBB24_2: ; %atomicrmw.phi5281; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]5282; GFX942-NEXT:    s_setpc_b64 s[30:31]5283; GFX942-NEXT:  .LBB24_3: ; %atomicrmw.global5284; GFX942-NEXT:    buffer_wbl2 sc15285; GFX942-NEXT:    flat_atomic_max_f64 v[0:1], v[4:5], v[2:3] sc05286; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5287; GFX942-NEXT:    buffer_inv sc15288; GFX942-NEXT:    ; implicit-def: $vgpr4_vgpr55289; GFX942-NEXT:    ; implicit-def: $vgpr2_vgpr35290; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]5291; GFX942-NEXT:    s_cbranch_execz .LBB24_25292; GFX942-NEXT:  .LBB24_4: ; %atomicrmw.private5293; GFX942-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]5294; GFX942-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]5295; GFX942-NEXT:    s_nop 05296; GFX942-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc5297; GFX942-NEXT:    scratch_load_dwordx2 v[0:1], v6, off5298; GFX942-NEXT:    s_waitcnt vmcnt(0)5299; GFX942-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]5300; GFX942-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]5301; GFX942-NEXT:    scratch_store_dwordx2 v6, v[2:3], off5302; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]5303; GFX942-NEXT:    s_waitcnt vmcnt(0)5304; GFX942-NEXT:    s_setpc_b64 s[30:31]5305;5306; GFX11-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_remote_memory:5307; GFX11:       ; %bb.0:5308; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5309; GFX11-NEXT:    v_max_f64 v[4:5], v[2:3], v[2:3]5310; GFX11-NEXT:    s_mov_b64 s[0:1], src_private_base5311; GFX11-NEXT:    s_mov_b32 s0, exec_lo5312; GFX11-NEXT:    ; implicit-def: $vgpr2_vgpr35313; GFX11-NEXT:    v_cmpx_ne_u32_e64 s1, v15314; GFX11-NEXT:    s_xor_b32 s0, exec_lo, s05315; GFX11-NEXT:    s_cbranch_execz .LBB24_45316; GFX11-NEXT:  ; %bb.1: ; %atomicrmw.global5317; GFX11-NEXT:    flat_load_b64 v[2:3], v[0:1]5318; GFX11-NEXT:    s_mov_b32 s1, 05319; GFX11-NEXT:  .LBB24_2: ; %atomicrmw.start5320; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=15321; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5322; GFX11-NEXT:    v_dual_mov_b32 v9, v3 :: v_dual_mov_b32 v8, v25323; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5324; GFX11-NEXT:    v_max_f64 v[2:3], v[8:9], v[8:9]5325; GFX11-NEXT:    v_max_f64 v[6:7], v[2:3], v[4:5]5326; GFX11-NEXT:    s_waitcnt_vscnt null, 0x05327; GFX11-NEXT:    flat_atomic_cmpswap_b64 v[2:3], v[0:1], v[6:9] glc5328; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5329; GFX11-NEXT:    buffer_gl1_inv5330; GFX11-NEXT:    buffer_gl0_inv5331; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[2:3], v[8:9]5332; GFX11-NEXT:    s_or_b32 s1, vcc_lo, s15333; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5334; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s15335; GFX11-NEXT:    s_cbranch_execnz .LBB24_25336; GFX11-NEXT:  ; %bb.3: ; %Flow5337; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s15338; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr15339; GFX11-NEXT:    ; implicit-def: $vgpr4_vgpr55340; GFX11-NEXT:  .LBB24_4: ; %Flow25341; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s05342; GFX11-NEXT:    s_cbranch_execz .LBB24_65343; GFX11-NEXT:  ; %bb.5: ; %atomicrmw.private5344; GFX11-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]5345; GFX11-NEXT:    v_cndmask_b32_e32 v6, -1, v0, vcc_lo5346; GFX11-NEXT:    scratch_load_b64 v[2:3], v6, off5347; GFX11-NEXT:    s_waitcnt vmcnt(0)5348; GFX11-NEXT:    v_max_f64 v[0:1], v[2:3], v[2:3]5349; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)5350; GFX11-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]5351; GFX11-NEXT:    scratch_store_b64 v6, v[0:1], off5352; GFX11-NEXT:  .LBB24_6: ; %atomicrmw.phi5353; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s05354; GFX11-NEXT:    v_dual_mov_b32 v0, v2 :: v_dual_mov_b32 v1, v35355; GFX11-NEXT:    s_setpc_b64 s[30:31]5356;5357; GFX10-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_remote_memory:5358; GFX10:       ; %bb.0:5359; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5360; GFX10-NEXT:    v_max_f64 v[4:5], v[2:3], v[2:3]5361; GFX10-NEXT:    s_mov_b64 s[4:5], src_private_base5362; GFX10-NEXT:    ; implicit-def: $vgpr2_vgpr35363; GFX10-NEXT:    v_cmp_ne_u32_e32 vcc_lo, s5, v15364; GFX10-NEXT:    s_and_saveexec_b32 s4, vcc_lo5365; GFX10-NEXT:    s_xor_b32 s4, exec_lo, s45366; GFX10-NEXT:    s_cbranch_execz .LBB24_45367; GFX10-NEXT:  ; %bb.1: ; %atomicrmw.global5368; GFX10-NEXT:    flat_load_dwordx2 v[2:3], v[0:1]5369; GFX10-NEXT:    s_mov_b32 s5, 05370; GFX10-NEXT:  .LBB24_2: ; %atomicrmw.start5371; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=15372; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5373; GFX10-NEXT:    v_mov_b32_e32 v9, v35374; GFX10-NEXT:    v_mov_b32_e32 v8, v25375; GFX10-NEXT:    v_max_f64 v[2:3], v[8:9], v[8:9]5376; GFX10-NEXT:    v_max_f64 v[6:7], v[2:3], v[4:5]5377; GFX10-NEXT:    s_waitcnt_vscnt null, 0x05378; GFX10-NEXT:    flat_atomic_cmpswap_x2 v[2:3], v[0:1], v[6:9] glc5379; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5380; GFX10-NEXT:    buffer_gl1_inv5381; GFX10-NEXT:    buffer_gl0_inv5382; GFX10-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[2:3], v[8:9]5383; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s55384; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s55385; GFX10-NEXT:    s_cbranch_execnz .LBB24_25386; GFX10-NEXT:  ; %bb.3: ; %Flow5387; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s55388; GFX10-NEXT:    ; implicit-def: $vgpr0_vgpr15389; GFX10-NEXT:    ; implicit-def: $vgpr4_vgpr55390; GFX10-NEXT:  .LBB24_4: ; %Flow25391; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s45392; GFX10-NEXT:    s_cbranch_execz .LBB24_65393; GFX10-NEXT:  ; %bb.5: ; %atomicrmw.private5394; GFX10-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]5395; GFX10-NEXT:    v_cndmask_b32_e32 v6, -1, v0, vcc_lo5396; GFX10-NEXT:    s_clause 0x15397; GFX10-NEXT:    buffer_load_dword v2, v6, s[0:3], 0 offen5398; GFX10-NEXT:    buffer_load_dword v3, v6, s[0:3], 0 offen offset:45399; GFX10-NEXT:    s_waitcnt vmcnt(0)5400; GFX10-NEXT:    v_max_f64 v[0:1], v[2:3], v[2:3]5401; GFX10-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]5402; GFX10-NEXT:    buffer_store_dword v0, v6, s[0:3], 0 offen5403; GFX10-NEXT:    buffer_store_dword v1, v6, s[0:3], 0 offen offset:45404; GFX10-NEXT:  .LBB24_6: ; %atomicrmw.phi5405; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)5406; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s45407; GFX10-NEXT:    v_mov_b32_e32 v0, v25408; GFX10-NEXT:    v_mov_b32_e32 v1, v35409; GFX10-NEXT:    s_setpc_b64 s[30:31]5410;5411; GFX90A-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_remote_memory:5412; GFX90A:       ; %bb.0:5413; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5414; GFX90A-NEXT:    s_mov_b64 s[4:5], src_private_base5415; GFX90A-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v15416; GFX90A-NEXT:    v_max_f64 v[6:7], v[2:3], v[2:3]5417; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr35418; GFX90A-NEXT:    s_and_saveexec_b64 s[4:5], vcc5419; GFX90A-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]5420; GFX90A-NEXT:    s_cbranch_execz .LBB24_45421; GFX90A-NEXT:  ; %bb.1: ; %atomicrmw.global5422; GFX90A-NEXT:    flat_load_dwordx2 v[4:5], v[0:1]5423; GFX90A-NEXT:    s_mov_b64 s[6:7], 05424; GFX90A-NEXT:  .LBB24_2: ; %atomicrmw.start5425; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=15426; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5427; GFX90A-NEXT:    v_max_f64 v[2:3], v[4:5], v[4:5]5428; GFX90A-NEXT:    v_max_f64 v[2:3], v[2:3], v[6:7]5429; GFX90A-NEXT:    flat_atomic_cmpswap_x2 v[2:3], v[0:1], v[2:5] glc5430; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5431; GFX90A-NEXT:    buffer_wbinvl15432; GFX90A-NEXT:    v_cmp_eq_u64_e32 vcc, v[2:3], v[4:5]5433; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]5434; GFX90A-NEXT:    v_pk_mov_b32 v[4:5], v[2:3], v[2:3] op_sel:[0,1]5435; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]5436; GFX90A-NEXT:    s_cbranch_execnz .LBB24_25437; GFX90A-NEXT:  ; %bb.3: ; %Flow5438; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]5439; GFX90A-NEXT:    ; implicit-def: $vgpr0_vgpr15440; GFX90A-NEXT:    ; implicit-def: $vgpr6_vgpr75441; GFX90A-NEXT:  .LBB24_4: ; %Flow25442; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5443; GFX90A-NEXT:    s_cbranch_execz .LBB24_65444; GFX90A-NEXT:  ; %bb.5: ; %atomicrmw.private5445; GFX90A-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]5446; GFX90A-NEXT:    v_cndmask_b32_e32 v4, -1, v0, vcc5447; GFX90A-NEXT:    buffer_load_dword v2, v4, s[0:3], 0 offen5448; GFX90A-NEXT:    buffer_load_dword v3, v4, s[0:3], 0 offen offset:45449; GFX90A-NEXT:    s_waitcnt vmcnt(0)5450; GFX90A-NEXT:    v_max_f64 v[0:1], v[2:3], v[2:3]5451; GFX90A-NEXT:    v_max_f64 v[0:1], v[0:1], v[6:7]5452; GFX90A-NEXT:    buffer_store_dword v0, v4, s[0:3], 0 offen5453; GFX90A-NEXT:    buffer_store_dword v1, v4, s[0:3], 0 offen offset:45454; GFX90A-NEXT:  .LBB24_6: ; %atomicrmw.phi5455; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]5456; GFX90A-NEXT:    v_mov_b32_e32 v0, v25457; GFX90A-NEXT:    v_mov_b32_e32 v1, v35458; GFX90A-NEXT:    s_waitcnt vmcnt(0)5459; GFX90A-NEXT:    s_setpc_b64 s[30:31]5460;5461; GFX908-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_remote_memory:5462; GFX908:       ; %bb.0:5463; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5464; GFX908-NEXT:    v_max_f64 v[4:5], v[2:3], v[2:3]5465; GFX908-NEXT:    s_mov_b64 s[4:5], src_private_base5466; GFX908-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v15467; GFX908-NEXT:    ; implicit-def: $vgpr2_vgpr35468; GFX908-NEXT:    s_and_saveexec_b64 s[4:5], vcc5469; GFX908-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]5470; GFX908-NEXT:    s_cbranch_execz .LBB24_45471; GFX908-NEXT:  ; %bb.1: ; %atomicrmw.global5472; GFX908-NEXT:    flat_load_dwordx2 v[2:3], v[0:1]5473; GFX908-NEXT:    s_mov_b64 s[6:7], 05474; GFX908-NEXT:  .LBB24_2: ; %atomicrmw.start5475; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=15476; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5477; GFX908-NEXT:    v_mov_b32_e32 v9, v35478; GFX908-NEXT:    v_mov_b32_e32 v8, v25479; GFX908-NEXT:    v_max_f64 v[2:3], v[8:9], v[8:9]5480; GFX908-NEXT:    v_max_f64 v[6:7], v[2:3], v[4:5]5481; GFX908-NEXT:    flat_atomic_cmpswap_x2 v[2:3], v[0:1], v[6:9] glc5482; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5483; GFX908-NEXT:    buffer_wbinvl15484; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[2:3], v[8:9]5485; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]5486; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]5487; GFX908-NEXT:    s_cbranch_execnz .LBB24_25488; GFX908-NEXT:  ; %bb.3: ; %Flow5489; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]5490; GFX908-NEXT:    ; implicit-def: $vgpr0_vgpr15491; GFX908-NEXT:    ; implicit-def: $vgpr4_vgpr55492; GFX908-NEXT:  .LBB24_4: ; %Flow25493; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5494; GFX908-NEXT:    s_cbranch_execz .LBB24_65495; GFX908-NEXT:  ; %bb.5: ; %atomicrmw.private5496; GFX908-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]5497; GFX908-NEXT:    v_cndmask_b32_e32 v6, -1, v0, vcc5498; GFX908-NEXT:    buffer_load_dword v2, v6, s[0:3], 0 offen5499; GFX908-NEXT:    buffer_load_dword v3, v6, s[0:3], 0 offen offset:45500; GFX908-NEXT:    s_waitcnt vmcnt(0)5501; GFX908-NEXT:    v_max_f64 v[0:1], v[2:3], v[2:3]5502; GFX908-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]5503; GFX908-NEXT:    buffer_store_dword v0, v6, s[0:3], 0 offen5504; GFX908-NEXT:    buffer_store_dword v1, v6, s[0:3], 0 offen offset:45505; GFX908-NEXT:  .LBB24_6: ; %atomicrmw.phi5506; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]5507; GFX908-NEXT:    v_mov_b32_e32 v0, v25508; GFX908-NEXT:    v_mov_b32_e32 v1, v35509; GFX908-NEXT:    s_waitcnt vmcnt(0)5510; GFX908-NEXT:    s_setpc_b64 s[30:31]5511;5512; GFX8-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_remote_memory:5513; GFX8:       ; %bb.0:5514; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5515; GFX8-NEXT:    v_max_f64 v[4:5], v[2:3], v[2:3]5516; GFX8-NEXT:    s_mov_b64 s[4:5], 0xc05517; GFX8-NEXT:    s_load_dword s4, s[4:5], 0x05518; GFX8-NEXT:    ; implicit-def: $vgpr2_vgpr35519; GFX8-NEXT:    s_waitcnt lgkmcnt(0)5520; GFX8-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v15521; GFX8-NEXT:    s_and_saveexec_b64 s[4:5], vcc5522; GFX8-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]5523; GFX8-NEXT:    s_cbranch_execz .LBB24_45524; GFX8-NEXT:  ; %bb.1: ; %atomicrmw.global5525; GFX8-NEXT:    v_add_u32_e32 v2, vcc, 4, v05526; GFX8-NEXT:    v_addc_u32_e32 v3, vcc, 0, v1, vcc5527; GFX8-NEXT:    flat_load_dword v3, v[2:3]5528; GFX8-NEXT:    flat_load_dword v2, v[0:1]5529; GFX8-NEXT:    s_mov_b64 s[6:7], 05530; GFX8-NEXT:  .LBB24_2: ; %atomicrmw.start5531; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=15532; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5533; GFX8-NEXT:    v_mov_b32_e32 v9, v35534; GFX8-NEXT:    v_mov_b32_e32 v8, v25535; GFX8-NEXT:    v_max_f64 v[2:3], v[8:9], v[8:9]5536; GFX8-NEXT:    v_max_f64 v[6:7], v[2:3], v[4:5]5537; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[2:3], v[0:1], v[6:9] glc5538; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5539; GFX8-NEXT:    buffer_wbinvl15540; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[2:3], v[8:9]5541; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]5542; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]5543; GFX8-NEXT:    s_cbranch_execnz .LBB24_25544; GFX8-NEXT:  ; %bb.3: ; %Flow5545; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]5546; GFX8-NEXT:    ; implicit-def: $vgpr0_vgpr15547; GFX8-NEXT:    ; implicit-def: $vgpr4_vgpr55548; GFX8-NEXT:  .LBB24_4: ; %Flow25549; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5550; GFX8-NEXT:    s_cbranch_execz .LBB24_65551; GFX8-NEXT:  ; %bb.5: ; %atomicrmw.private5552; GFX8-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]5553; GFX8-NEXT:    v_cndmask_b32_e32 v6, -1, v0, vcc5554; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 4, v65555; GFX8-NEXT:    buffer_load_dword v2, v6, s[0:3], 0 offen5556; GFX8-NEXT:    buffer_load_dword v3, v7, s[0:3], 0 offen5557; GFX8-NEXT:    s_waitcnt vmcnt(0)5558; GFX8-NEXT:    v_max_f64 v[0:1], v[2:3], v[2:3]5559; GFX8-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]5560; GFX8-NEXT:    buffer_store_dword v0, v6, s[0:3], 0 offen5561; GFX8-NEXT:    buffer_store_dword v1, v7, s[0:3], 0 offen5562; GFX8-NEXT:  .LBB24_6: ; %atomicrmw.phi5563; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]5564; GFX8-NEXT:    v_mov_b32_e32 v0, v25565; GFX8-NEXT:    v_mov_b32_e32 v1, v35566; GFX8-NEXT:    s_waitcnt vmcnt(0)5567; GFX8-NEXT:    s_setpc_b64 s[30:31]5568;5569; GFX7-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_remote_memory:5570; GFX7:       ; %bb.0:5571; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5572; GFX7-NEXT:    s_mov_b64 s[4:5], 0xc05573; GFX7-NEXT:    s_load_dword s4, s[4:5], 0x05574; GFX7-NEXT:    v_max_f64 v[4:5], v[2:3], v[2:3]5575; GFX7-NEXT:    ; implicit-def: $vgpr2_vgpr35576; GFX7-NEXT:    s_waitcnt lgkmcnt(0)5577; GFX7-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v15578; GFX7-NEXT:    s_and_saveexec_b64 s[4:5], vcc5579; GFX7-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]5580; GFX7-NEXT:    s_cbranch_execz .LBB24_45581; GFX7-NEXT:  ; %bb.1: ; %atomicrmw.global5582; GFX7-NEXT:    v_add_i32_e32 v2, vcc, 4, v05583; GFX7-NEXT:    v_addc_u32_e32 v3, vcc, 0, v1, vcc5584; GFX7-NEXT:    flat_load_dword v3, v[2:3]5585; GFX7-NEXT:    flat_load_dword v2, v[0:1]5586; GFX7-NEXT:    s_mov_b64 s[6:7], 05587; GFX7-NEXT:  .LBB24_2: ; %atomicrmw.start5588; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=15589; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5590; GFX7-NEXT:    v_mov_b32_e32 v9, v35591; GFX7-NEXT:    v_mov_b32_e32 v8, v25592; GFX7-NEXT:    v_max_f64 v[2:3], v[8:9], v[8:9]5593; GFX7-NEXT:    v_max_f64 v[6:7], v[2:3], v[4:5]5594; GFX7-NEXT:    flat_atomic_cmpswap_x2 v[2:3], v[0:1], v[6:9] glc5595; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5596; GFX7-NEXT:    buffer_wbinvl15597; GFX7-NEXT:    v_cmp_eq_u64_e32 vcc, v[2:3], v[8:9]5598; GFX7-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]5599; GFX7-NEXT:    s_andn2_b64 exec, exec, s[6:7]5600; GFX7-NEXT:    s_cbranch_execnz .LBB24_25601; GFX7-NEXT:  ; %bb.3: ; %Flow5602; GFX7-NEXT:    s_or_b64 exec, exec, s[6:7]5603; GFX7-NEXT:    ; implicit-def: $vgpr0_vgpr15604; GFX7-NEXT:    ; implicit-def: $vgpr4_vgpr55605; GFX7-NEXT:  .LBB24_4: ; %Flow25606; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5607; GFX7-NEXT:    s_cbranch_execz .LBB24_65608; GFX7-NEXT:  ; %bb.5: ; %atomicrmw.private5609; GFX7-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]5610; GFX7-NEXT:    v_cndmask_b32_e32 v6, -1, v0, vcc5611; GFX7-NEXT:    v_add_i32_e32 v7, vcc, 4, v65612; GFX7-NEXT:    buffer_load_dword v2, v6, s[0:3], 0 offen5613; GFX7-NEXT:    buffer_load_dword v3, v7, s[0:3], 0 offen5614; GFX7-NEXT:    s_waitcnt vmcnt(0)5615; GFX7-NEXT:    v_max_f64 v[0:1], v[2:3], v[2:3]5616; GFX7-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]5617; GFX7-NEXT:    buffer_store_dword v0, v6, s[0:3], 0 offen5618; GFX7-NEXT:    buffer_store_dword v1, v7, s[0:3], 0 offen5619; GFX7-NEXT:  .LBB24_6: ; %atomicrmw.phi5620; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]5621; GFX7-NEXT:    v_mov_b32_e32 v0, v25622; GFX7-NEXT:    v_mov_b32_e32 v1, v35623; GFX7-NEXT:    s_waitcnt vmcnt(0)5624; GFX7-NEXT:    s_setpc_b64 s[30:31]5625  %result = atomicrmw fmax ptr %ptr, double %val syncscope("agent") seq_cst, !amdgpu.no.remote.memory !05626  ret double %result5627}5628 5629define double @flat_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory(ptr %ptr, double %val) #0 {5630; GFX12-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:5631; GFX12:       ; %bb.0:5632; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x05633; GFX12-NEXT:    s_wait_expcnt 0x05634; GFX12-NEXT:    s_wait_samplecnt 0x05635; GFX12-NEXT:    s_wait_bvhcnt 0x05636; GFX12-NEXT:    s_wait_kmcnt 0x05637; GFX12-NEXT:    v_max_num_f64_e32 v[4:5], v[2:3], v[2:3]5638; GFX12-NEXT:    s_mov_b64 s[0:1], src_private_base5639; GFX12-NEXT:    s_mov_b32 s0, exec_lo5640; GFX12-NEXT:    ; implicit-def: $vgpr2_vgpr35641; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)5642; GFX12-NEXT:    v_cmpx_ne_u32_e64 s1, v15643; GFX12-NEXT:    s_xor_b32 s0, exec_lo, s05644; GFX12-NEXT:    s_cbranch_execz .LBB25_45645; GFX12-NEXT:  ; %bb.1: ; %atomicrmw.global5646; GFX12-NEXT:    flat_load_b64 v[2:3], v[0:1]5647; GFX12-NEXT:    s_mov_b32 s1, 05648; GFX12-NEXT:  .LBB25_2: ; %atomicrmw.start5649; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=15650; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x05651; GFX12-NEXT:    v_dual_mov_b32 v9, v3 :: v_dual_mov_b32 v8, v25652; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5653; GFX12-NEXT:    v_max_num_f64_e32 v[2:3], v[8:9], v[8:9]5654; GFX12-NEXT:    v_max_num_f64_e32 v[6:7], v[2:3], v[4:5]5655; GFX12-NEXT:    s_wait_storecnt 0x05656; GFX12-NEXT:    flat_atomic_cmpswap_b64 v[2:3], v[0:1], v[6:9] th:TH_ATOMIC_RETURN scope:SCOPE_DEV5657; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x05658; GFX12-NEXT:    global_inv scope:SCOPE_DEV5659; GFX12-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[2:3], v[8:9]5660; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)5661; GFX12-NEXT:    s_or_b32 s1, vcc_lo, s15662; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)5663; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s15664; GFX12-NEXT:    s_cbranch_execnz .LBB25_25665; GFX12-NEXT:  ; %bb.3: ; %Flow5666; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s15667; GFX12-NEXT:    ; implicit-def: $vgpr0_vgpr15668; GFX12-NEXT:    ; implicit-def: $vgpr4_vgpr55669; GFX12-NEXT:  .LBB25_4: ; %Flow25670; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)5671; GFX12-NEXT:    s_and_not1_saveexec_b32 s0, s05672; GFX12-NEXT:    s_cbranch_execz .LBB25_65673; GFX12-NEXT:  ; %bb.5: ; %atomicrmw.private5674; GFX12-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]5675; GFX12-NEXT:    s_wait_alu depctr_va_vcc(0)5676; GFX12-NEXT:    v_cndmask_b32_e32 v6, -1, v0, vcc_lo5677; GFX12-NEXT:    scratch_load_b64 v[2:3], v6, off5678; GFX12-NEXT:    s_wait_loadcnt 0x05679; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[2:3], v[2:3]5680; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)5681; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[4:5]5682; GFX12-NEXT:    scratch_store_b64 v6, v[0:1], off5683; GFX12-NEXT:  .LBB25_6: ; %atomicrmw.phi5684; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)5685; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s05686; GFX12-NEXT:    v_dual_mov_b32 v0, v2 :: v_dual_mov_b32 v1, v35687; GFX12-NEXT:    s_wait_loadcnt 0x05688; GFX12-NEXT:    s_setpc_b64 s[30:31]5689;5690; GFX942-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:5691; GFX942:       ; %bb.0:5692; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5693; GFX942-NEXT:    v_mov_b32_e32 v5, v15694; GFX942-NEXT:    s_mov_b64 s[0:1], src_private_base5695; GFX942-NEXT:    v_mov_b32_e32 v4, v05696; GFX942-NEXT:    v_cmp_ne_u32_e32 vcc, s1, v55697; GFX942-NEXT:    ; implicit-def: $vgpr0_vgpr15698; GFX942-NEXT:    s_and_saveexec_b64 s[0:1], vcc5699; GFX942-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]5700; GFX942-NEXT:    s_cbranch_execnz .LBB25_35701; GFX942-NEXT:  ; %bb.1: ; %Flow5702; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]5703; GFX942-NEXT:    s_cbranch_execnz .LBB25_45704; GFX942-NEXT:  .LBB25_2: ; %atomicrmw.phi5705; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]5706; GFX942-NEXT:    s_setpc_b64 s[30:31]5707; GFX942-NEXT:  .LBB25_3: ; %atomicrmw.global5708; GFX942-NEXT:    buffer_wbl2 sc15709; GFX942-NEXT:    flat_atomic_max_f64 v[0:1], v[4:5], v[2:3] sc05710; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5711; GFX942-NEXT:    buffer_inv sc15712; GFX942-NEXT:    ; implicit-def: $vgpr4_vgpr55713; GFX942-NEXT:    ; implicit-def: $vgpr2_vgpr35714; GFX942-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]5715; GFX942-NEXT:    s_cbranch_execz .LBB25_25716; GFX942-NEXT:  .LBB25_4: ; %atomicrmw.private5717; GFX942-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]5718; GFX942-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]5719; GFX942-NEXT:    s_nop 05720; GFX942-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc5721; GFX942-NEXT:    scratch_load_dwordx2 v[0:1], v6, off5722; GFX942-NEXT:    s_waitcnt vmcnt(0)5723; GFX942-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]5724; GFX942-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]5725; GFX942-NEXT:    scratch_store_dwordx2 v6, v[2:3], off5726; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]5727; GFX942-NEXT:    s_waitcnt vmcnt(0)5728; GFX942-NEXT:    s_setpc_b64 s[30:31]5729;5730; GFX11-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:5731; GFX11:       ; %bb.0:5732; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5733; GFX11-NEXT:    v_max_f64 v[4:5], v[2:3], v[2:3]5734; GFX11-NEXT:    s_mov_b64 s[0:1], src_private_base5735; GFX11-NEXT:    s_mov_b32 s0, exec_lo5736; GFX11-NEXT:    ; implicit-def: $vgpr2_vgpr35737; GFX11-NEXT:    v_cmpx_ne_u32_e64 s1, v15738; GFX11-NEXT:    s_xor_b32 s0, exec_lo, s05739; GFX11-NEXT:    s_cbranch_execz .LBB25_45740; GFX11-NEXT:  ; %bb.1: ; %atomicrmw.global5741; GFX11-NEXT:    flat_load_b64 v[2:3], v[0:1]5742; GFX11-NEXT:    s_mov_b32 s1, 05743; GFX11-NEXT:  .LBB25_2: ; %atomicrmw.start5744; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=15745; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5746; GFX11-NEXT:    v_dual_mov_b32 v9, v3 :: v_dual_mov_b32 v8, v25747; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5748; GFX11-NEXT:    v_max_f64 v[2:3], v[8:9], v[8:9]5749; GFX11-NEXT:    v_max_f64 v[6:7], v[2:3], v[4:5]5750; GFX11-NEXT:    s_waitcnt_vscnt null, 0x05751; GFX11-NEXT:    flat_atomic_cmpswap_b64 v[2:3], v[0:1], v[6:9] glc5752; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5753; GFX11-NEXT:    buffer_gl1_inv5754; GFX11-NEXT:    buffer_gl0_inv5755; GFX11-NEXT:    v_cmp_eq_u64_e32 vcc_lo, v[2:3], v[8:9]5756; GFX11-NEXT:    s_or_b32 s1, vcc_lo, s15757; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5758; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s15759; GFX11-NEXT:    s_cbranch_execnz .LBB25_25760; GFX11-NEXT:  ; %bb.3: ; %Flow5761; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s15762; GFX11-NEXT:    ; implicit-def: $vgpr0_vgpr15763; GFX11-NEXT:    ; implicit-def: $vgpr4_vgpr55764; GFX11-NEXT:  .LBB25_4: ; %Flow25765; GFX11-NEXT:    s_and_not1_saveexec_b32 s0, s05766; GFX11-NEXT:    s_cbranch_execz .LBB25_65767; GFX11-NEXT:  ; %bb.5: ; %atomicrmw.private5768; GFX11-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[0:1]5769; GFX11-NEXT:    v_cndmask_b32_e32 v6, -1, v0, vcc_lo5770; GFX11-NEXT:    scratch_load_b64 v[2:3], v6, off5771; GFX11-NEXT:    s_waitcnt vmcnt(0)5772; GFX11-NEXT:    v_max_f64 v[0:1], v[2:3], v[2:3]5773; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)5774; GFX11-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]5775; GFX11-NEXT:    scratch_store_b64 v6, v[0:1], off5776; GFX11-NEXT:  .LBB25_6: ; %atomicrmw.phi5777; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s05778; GFX11-NEXT:    v_dual_mov_b32 v0, v2 :: v_dual_mov_b32 v1, v35779; GFX11-NEXT:    s_setpc_b64 s[30:31]5780;5781; GFX10-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:5782; GFX10:       ; %bb.0:5783; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5784; GFX10-NEXT:    v_mov_b32_e32 v5, v15785; GFX10-NEXT:    s_mov_b64 s[4:5], src_private_base5786; GFX10-NEXT:    v_mov_b32_e32 v4, v05787; GFX10-NEXT:    ; implicit-def: $vgpr0_vgpr15788; GFX10-NEXT:    v_cmp_ne_u32_e32 vcc_lo, s5, v55789; GFX10-NEXT:    s_and_saveexec_b32 s4, vcc_lo5790; GFX10-NEXT:    s_xor_b32 s4, exec_lo, s45791; GFX10-NEXT:    s_cbranch_execnz .LBB25_35792; GFX10-NEXT:  ; %bb.1: ; %Flow5793; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s45794; GFX10-NEXT:    s_cbranch_execnz .LBB25_45795; GFX10-NEXT:  .LBB25_2: ; %atomicrmw.phi5796; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)5797; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s45798; GFX10-NEXT:    s_setpc_b64 s[30:31]5799; GFX10-NEXT:  .LBB25_3: ; %atomicrmw.global5800; GFX10-NEXT:    s_waitcnt_vscnt null, 0x05801; GFX10-NEXT:    flat_atomic_fmax_x2 v[0:1], v[4:5], v[2:3] glc5802; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5803; GFX10-NEXT:    buffer_gl1_inv5804; GFX10-NEXT:    buffer_gl0_inv5805; GFX10-NEXT:    ; implicit-def: $vgpr4_vgpr55806; GFX10-NEXT:    ; implicit-def: $vgpr2_vgpr35807; GFX10-NEXT:    s_andn2_saveexec_b32 s4, s45808; GFX10-NEXT:    s_cbranch_execz .LBB25_25809; GFX10-NEXT:  .LBB25_4: ; %atomicrmw.private5810; GFX10-NEXT:    v_cmp_ne_u64_e32 vcc_lo, 0, v[4:5]5811; GFX10-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]5812; GFX10-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc_lo5813; GFX10-NEXT:    s_clause 0x15814; GFX10-NEXT:    buffer_load_dword v0, v6, s[0:3], 0 offen5815; GFX10-NEXT:    buffer_load_dword v1, v6, s[0:3], 0 offen offset:45816; GFX10-NEXT:    s_waitcnt vmcnt(0)5817; GFX10-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]5818; GFX10-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]5819; GFX10-NEXT:    buffer_store_dword v2, v6, s[0:3], 0 offen5820; GFX10-NEXT:    buffer_store_dword v3, v6, s[0:3], 0 offen offset:45821; GFX10-NEXT:    s_waitcnt_depctr depctr_vm_vsrc(0)5822; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s45823; GFX10-NEXT:    s_setpc_b64 s[30:31]5824;5825; GFX90A-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:5826; GFX90A:       ; %bb.0:5827; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5828; GFX90A-NEXT:    v_mov_b32_e32 v5, v15829; GFX90A-NEXT:    s_mov_b64 s[4:5], src_private_base5830; GFX90A-NEXT:    v_mov_b32_e32 v4, v05831; GFX90A-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v55832; GFX90A-NEXT:    ; implicit-def: $vgpr0_vgpr15833; GFX90A-NEXT:    s_and_saveexec_b64 s[4:5], vcc5834; GFX90A-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]5835; GFX90A-NEXT:    s_cbranch_execnz .LBB25_35836; GFX90A-NEXT:  ; %bb.1: ; %Flow5837; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5838; GFX90A-NEXT:    s_cbranch_execnz .LBB25_45839; GFX90A-NEXT:  .LBB25_2: ; %atomicrmw.phi5840; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]5841; GFX90A-NEXT:    s_setpc_b64 s[30:31]5842; GFX90A-NEXT:  .LBB25_3: ; %atomicrmw.global5843; GFX90A-NEXT:    flat_atomic_max_f64 v[0:1], v[4:5], v[2:3] glc5844; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5845; GFX90A-NEXT:    buffer_wbinvl15846; GFX90A-NEXT:    ; implicit-def: $vgpr4_vgpr55847; GFX90A-NEXT:    ; implicit-def: $vgpr2_vgpr35848; GFX90A-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5849; GFX90A-NEXT:    s_cbranch_execz .LBB25_25850; GFX90A-NEXT:  .LBB25_4: ; %atomicrmw.private5851; GFX90A-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]5852; GFX90A-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc5853; GFX90A-NEXT:    buffer_load_dword v0, v6, s[0:3], 0 offen5854; GFX90A-NEXT:    buffer_load_dword v1, v6, s[0:3], 0 offen offset:45855; GFX90A-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]5856; GFX90A-NEXT:    s_waitcnt vmcnt(0)5857; GFX90A-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]5858; GFX90A-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]5859; GFX90A-NEXT:    buffer_store_dword v2, v6, s[0:3], 0 offen5860; GFX90A-NEXT:    buffer_store_dword v3, v6, s[0:3], 0 offen offset:45861; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]5862; GFX90A-NEXT:    s_waitcnt vmcnt(0)5863; GFX90A-NEXT:    s_setpc_b64 s[30:31]5864;5865; GFX908-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:5866; GFX908:       ; %bb.0:5867; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5868; GFX908-NEXT:    v_max_f64 v[4:5], v[2:3], v[2:3]5869; GFX908-NEXT:    s_mov_b64 s[4:5], src_private_base5870; GFX908-NEXT:    v_cmp_ne_u32_e32 vcc, s5, v15871; GFX908-NEXT:    ; implicit-def: $vgpr2_vgpr35872; GFX908-NEXT:    s_and_saveexec_b64 s[4:5], vcc5873; GFX908-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]5874; GFX908-NEXT:    s_cbranch_execz .LBB25_45875; GFX908-NEXT:  ; %bb.1: ; %atomicrmw.global5876; GFX908-NEXT:    flat_load_dwordx2 v[2:3], v[0:1]5877; GFX908-NEXT:    s_mov_b64 s[6:7], 05878; GFX908-NEXT:  .LBB25_2: ; %atomicrmw.start5879; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=15880; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5881; GFX908-NEXT:    v_mov_b32_e32 v9, v35882; GFX908-NEXT:    v_mov_b32_e32 v8, v25883; GFX908-NEXT:    v_max_f64 v[2:3], v[8:9], v[8:9]5884; GFX908-NEXT:    v_max_f64 v[6:7], v[2:3], v[4:5]5885; GFX908-NEXT:    flat_atomic_cmpswap_x2 v[2:3], v[0:1], v[6:9] glc5886; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5887; GFX908-NEXT:    buffer_wbinvl15888; GFX908-NEXT:    v_cmp_eq_u64_e32 vcc, v[2:3], v[8:9]5889; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]5890; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]5891; GFX908-NEXT:    s_cbranch_execnz .LBB25_25892; GFX908-NEXT:  ; %bb.3: ; %Flow5893; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]5894; GFX908-NEXT:    ; implicit-def: $vgpr0_vgpr15895; GFX908-NEXT:    ; implicit-def: $vgpr4_vgpr55896; GFX908-NEXT:  .LBB25_4: ; %Flow25897; GFX908-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5898; GFX908-NEXT:    s_cbranch_execz .LBB25_65899; GFX908-NEXT:  ; %bb.5: ; %atomicrmw.private5900; GFX908-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]5901; GFX908-NEXT:    v_cndmask_b32_e32 v6, -1, v0, vcc5902; GFX908-NEXT:    buffer_load_dword v2, v6, s[0:3], 0 offen5903; GFX908-NEXT:    buffer_load_dword v3, v6, s[0:3], 0 offen offset:45904; GFX908-NEXT:    s_waitcnt vmcnt(0)5905; GFX908-NEXT:    v_max_f64 v[0:1], v[2:3], v[2:3]5906; GFX908-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]5907; GFX908-NEXT:    buffer_store_dword v0, v6, s[0:3], 0 offen5908; GFX908-NEXT:    buffer_store_dword v1, v6, s[0:3], 0 offen offset:45909; GFX908-NEXT:  .LBB25_6: ; %atomicrmw.phi5910; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]5911; GFX908-NEXT:    v_mov_b32_e32 v0, v25912; GFX908-NEXT:    v_mov_b32_e32 v1, v35913; GFX908-NEXT:    s_waitcnt vmcnt(0)5914; GFX908-NEXT:    s_setpc_b64 s[30:31]5915;5916; GFX8-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:5917; GFX8:       ; %bb.0:5918; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5919; GFX8-NEXT:    v_max_f64 v[4:5], v[2:3], v[2:3]5920; GFX8-NEXT:    s_mov_b64 s[4:5], 0xc05921; GFX8-NEXT:    s_load_dword s4, s[4:5], 0x05922; GFX8-NEXT:    ; implicit-def: $vgpr2_vgpr35923; GFX8-NEXT:    s_waitcnt lgkmcnt(0)5924; GFX8-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v15925; GFX8-NEXT:    s_and_saveexec_b64 s[4:5], vcc5926; GFX8-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]5927; GFX8-NEXT:    s_cbranch_execz .LBB25_45928; GFX8-NEXT:  ; %bb.1: ; %atomicrmw.global5929; GFX8-NEXT:    v_add_u32_e32 v2, vcc, 4, v05930; GFX8-NEXT:    v_addc_u32_e32 v3, vcc, 0, v1, vcc5931; GFX8-NEXT:    flat_load_dword v3, v[2:3]5932; GFX8-NEXT:    flat_load_dword v2, v[0:1]5933; GFX8-NEXT:    s_mov_b64 s[6:7], 05934; GFX8-NEXT:  .LBB25_2: ; %atomicrmw.start5935; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=15936; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5937; GFX8-NEXT:    v_mov_b32_e32 v9, v35938; GFX8-NEXT:    v_mov_b32_e32 v8, v25939; GFX8-NEXT:    v_max_f64 v[2:3], v[8:9], v[8:9]5940; GFX8-NEXT:    v_max_f64 v[6:7], v[2:3], v[4:5]5941; GFX8-NEXT:    flat_atomic_cmpswap_x2 v[2:3], v[0:1], v[6:9] glc5942; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5943; GFX8-NEXT:    buffer_wbinvl15944; GFX8-NEXT:    v_cmp_eq_u64_e32 vcc, v[2:3], v[8:9]5945; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]5946; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]5947; GFX8-NEXT:    s_cbranch_execnz .LBB25_25948; GFX8-NEXT:  ; %bb.3: ; %Flow5949; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]5950; GFX8-NEXT:    ; implicit-def: $vgpr0_vgpr15951; GFX8-NEXT:    ; implicit-def: $vgpr4_vgpr55952; GFX8-NEXT:  .LBB25_4: ; %Flow25953; GFX8-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5954; GFX8-NEXT:    s_cbranch_execz .LBB25_65955; GFX8-NEXT:  ; %bb.5: ; %atomicrmw.private5956; GFX8-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]5957; GFX8-NEXT:    v_cndmask_b32_e32 v6, -1, v0, vcc5958; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 4, v65959; GFX8-NEXT:    buffer_load_dword v2, v6, s[0:3], 0 offen5960; GFX8-NEXT:    buffer_load_dword v3, v7, s[0:3], 0 offen5961; GFX8-NEXT:    s_waitcnt vmcnt(0)5962; GFX8-NEXT:    v_max_f64 v[0:1], v[2:3], v[2:3]5963; GFX8-NEXT:    v_max_f64 v[0:1], v[0:1], v[4:5]5964; GFX8-NEXT:    buffer_store_dword v0, v6, s[0:3], 0 offen5965; GFX8-NEXT:    buffer_store_dword v1, v7, s[0:3], 0 offen5966; GFX8-NEXT:  .LBB25_6: ; %atomicrmw.phi5967; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]5968; GFX8-NEXT:    v_mov_b32_e32 v0, v25969; GFX8-NEXT:    v_mov_b32_e32 v1, v35970; GFX8-NEXT:    s_waitcnt vmcnt(0)5971; GFX8-NEXT:    s_setpc_b64 s[30:31]5972;5973; GFX7-LABEL: flat_agent_atomic_fmax_ret_f64__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:5974; GFX7:       ; %bb.0:5975; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5976; GFX7-NEXT:    s_mov_b64 s[4:5], 0xc05977; GFX7-NEXT:    s_load_dword s4, s[4:5], 0x05978; GFX7-NEXT:    v_mov_b32_e32 v5, v15979; GFX7-NEXT:    v_mov_b32_e32 v4, v05980; GFX7-NEXT:    ; implicit-def: $vgpr0_vgpr15981; GFX7-NEXT:    s_waitcnt lgkmcnt(0)5982; GFX7-NEXT:    v_cmp_ne_u32_e32 vcc, s4, v55983; GFX7-NEXT:    s_and_saveexec_b64 s[4:5], vcc5984; GFX7-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]5985; GFX7-NEXT:    s_cbranch_execnz .LBB25_35986; GFX7-NEXT:  ; %bb.1: ; %Flow5987; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5988; GFX7-NEXT:    s_cbranch_execnz .LBB25_45989; GFX7-NEXT:  .LBB25_2: ; %atomicrmw.phi5990; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]5991; GFX7-NEXT:    s_setpc_b64 s[30:31]5992; GFX7-NEXT:  .LBB25_3: ; %atomicrmw.global5993; GFX7-NEXT:    flat_atomic_fmax_x2 v[0:1], v[4:5], v[2:3] glc5994; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)5995; GFX7-NEXT:    buffer_wbinvl15996; GFX7-NEXT:    ; implicit-def: $vgpr4_vgpr55997; GFX7-NEXT:    ; implicit-def: $vgpr2_vgpr35998; GFX7-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]5999; GFX7-NEXT:    s_cbranch_execz .LBB25_26000; GFX7-NEXT:  .LBB25_4: ; %atomicrmw.private6001; GFX7-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]6002; GFX7-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3]6003; GFX7-NEXT:    v_cndmask_b32_e32 v6, -1, v4, vcc6004; GFX7-NEXT:    v_add_i32_e32 v7, vcc, 4, v66005; GFX7-NEXT:    buffer_load_dword v0, v6, s[0:3], 0 offen6006; GFX7-NEXT:    buffer_load_dword v1, v7, s[0:3], 0 offen6007; GFX7-NEXT:    s_waitcnt vmcnt(0)6008; GFX7-NEXT:    v_max_f64 v[4:5], v[0:1], v[0:1]6009; GFX7-NEXT:    v_max_f64 v[2:3], v[4:5], v[2:3]6010; GFX7-NEXT:    buffer_store_dword v2, v6, s[0:3], 0 offen6011; GFX7-NEXT:    buffer_store_dword v3, v7, s[0:3], 0 offen6012; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]6013; GFX7-NEXT:    s_waitcnt vmcnt(0)6014; GFX7-NEXT:    s_setpc_b64 s[30:31]6015  %result = atomicrmw fmax ptr %ptr, double %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !0, !amdgpu.no.remote.memory !06016  ret double %result6017}6018 6019; --------------------------------------------------------------------6020; half6021; --------------------------------------------------------------------6022 6023define half @flat_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory(ptr %ptr, half %val) #0 {6024; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory:6025; GFX12-TRUE16:       ; %bb.0:6026; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06027; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x06028; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x06029; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x06030; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x06031; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v06032; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v2.l, v2.l, v2.l6033; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 06034; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_1)6035; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v36036; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v36037; GFX12-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]6038; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v36039; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6040; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6041; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v46042; GFX12-TRUE16-NEXT:  .LBB26_1: ; %atomicrmw.start6043; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16044; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06045; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v56046; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6047; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v66048; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 06049; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v2.h, v5.l, v5.l6050; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6051; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v5.l, v2.h, v2.l6052; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v56053; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6054; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v56055; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x06056; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV6057; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06058; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV6059; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66060; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6061; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06062; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6063; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06064; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB26_16065; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6066; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06067; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v56068; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06069; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]6070;6071; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory:6072; GFX12-FAKE16:       ; %bb.0:6073; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06074; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x06075; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x06076; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x06077; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x06078; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v06079; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v26080; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 06081; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_1)6082; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v36083; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v36084; GFX12-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]6085; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v36086; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6087; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6088; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v46089; GFX12-FAKE16-NEXT:  .LBB26_1: ; %atomicrmw.start6090; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16091; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06092; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v56093; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6094; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v66095; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v5, v5, v56096; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6097; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v5, v5, v26098; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v56099; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6100; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v56101; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v56102; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x06103; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV6104; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06105; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV6106; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66107; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6108; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06109; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6110; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06111; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB26_16112; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6113; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06114; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v56115; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06116; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]6117;6118; GFX942-LABEL: flat_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory:6119; GFX942:       ; %bb.0:6120; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6121; GFX942-NEXT:    v_mov_b32_e32 v3, v06122; GFX942-NEXT:    v_and_b32_e32 v0, -4, v36123; GFX942-NEXT:    flat_load_dword v5, v[0:1]6124; GFX942-NEXT:    v_and_b32_e32 v3, 3, v36125; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v36126; GFX942-NEXT:    s_mov_b32 s0, 0xffff6127; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s06128; GFX942-NEXT:    v_not_b32_e32 v6, v46129; GFX942-NEXT:    s_mov_b64 s[0:1], 06130; GFX942-NEXT:    v_max_f16_e32 v2, v2, v26131; GFX942-NEXT:  .LBB26_1: ; %atomicrmw.start6132; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=16133; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6134; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v3, v56135; GFX942-NEXT:    v_max_f16_e32 v4, v4, v46136; GFX942-NEXT:    v_max_f16_e32 v4, v4, v26137; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v3, v46138; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v46139; GFX942-NEXT:    buffer_wbl2 sc16140; GFX942-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] sc06141; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6142; GFX942-NEXT:    buffer_inv sc16143; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v56144; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]6145; GFX942-NEXT:    v_mov_b32_e32 v5, v46146; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]6147; GFX942-NEXT:    s_cbranch_execnz .LBB26_16148; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end6149; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]6150; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v3, v46151; GFX942-NEXT:    s_setpc_b64 s[30:31]6152;6153; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory:6154; GFX11-TRUE16:       ; %bb.0:6155; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6156; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v06157; GFX11-TRUE16-NEXT:    v_max_f16_e32 v2.l, v2.l, v2.l6158; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 06159; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_1)6160; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v36161; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v36162; GFX11-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]6163; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v36164; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6165; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6166; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v46167; GFX11-TRUE16-NEXT:  .LBB26_1: ; %atomicrmw.start6168; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16169; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6170; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v56171; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6172; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v66173; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 06174; GFX11-TRUE16-NEXT:    v_max_f16_e32 v2.h, v5.l, v5.l6175; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6176; GFX11-TRUE16-NEXT:    v_max_f16_e32 v5.l, v2.h, v2.l6177; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v56178; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6179; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v56180; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x06181; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc6182; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6183; GFX11-TRUE16-NEXT:    buffer_gl1_inv6184; GFX11-TRUE16-NEXT:    buffer_gl0_inv6185; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66186; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06187; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6188; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06189; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB26_16190; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6191; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06192; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v56193; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]6194;6195; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory:6196; GFX11-FAKE16:       ; %bb.0:6197; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6198; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v06199; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v26200; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 06201; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_1)6202; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v36203; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v36204; GFX11-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]6205; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v36206; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6207; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6208; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v46209; GFX11-FAKE16-NEXT:  .LBB26_1: ; %atomicrmw.start6210; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16211; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6212; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v56213; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6214; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v66215; GFX11-FAKE16-NEXT:    v_max_f16_e32 v5, v5, v56216; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6217; GFX11-FAKE16-NEXT:    v_max_f16_e32 v5, v5, v26218; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v56219; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6220; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v56221; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v56222; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x06223; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc6224; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6225; GFX11-FAKE16-NEXT:    buffer_gl1_inv6226; GFX11-FAKE16-NEXT:    buffer_gl0_inv6227; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66228; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06229; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6230; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06231; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB26_16232; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6233; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06234; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v56235; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]6236;6237; GFX10-LABEL: flat_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory:6238; GFX10:       ; %bb.0:6239; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6240; GFX10-NEXT:    v_mov_b32_e32 v3, v06241; GFX10-NEXT:    v_max_f16_e32 v2, v2, v26242; GFX10-NEXT:    s_mov_b32 s4, 06243; GFX10-NEXT:    v_and_b32_e32 v0, -4, v36244; GFX10-NEXT:    v_and_b32_e32 v3, 3, v36245; GFX10-NEXT:    flat_load_dword v5, v[0:1]6246; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v36247; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6248; GFX10-NEXT:    v_not_b32_e32 v4, v46249; GFX10-NEXT:  .LBB26_1: ; %atomicrmw.start6250; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=16251; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6252; GFX10-NEXT:    v_mov_b32_e32 v6, v56253; GFX10-NEXT:    v_lshrrev_b32_e32 v5, v3, v66254; GFX10-NEXT:    v_max_f16_e32 v5, v5, v56255; GFX10-NEXT:    v_max_f16_e32 v5, v5, v26256; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_06257; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v56258; GFX10-NEXT:    s_waitcnt_vscnt null, 0x06259; GFX10-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc6260; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6261; GFX10-NEXT:    buffer_gl1_inv6262; GFX10-NEXT:    buffer_gl0_inv6263; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66264; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s46265; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s46266; GFX10-NEXT:    s_cbranch_execnz .LBB26_16267; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end6268; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s46269; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v56270; GFX10-NEXT:    s_setpc_b64 s[30:31]6271;6272; GFX90A-LABEL: flat_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory:6273; GFX90A:       ; %bb.0:6274; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6275; GFX90A-NEXT:    v_mov_b32_e32 v3, v06276; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v36277; GFX90A-NEXT:    flat_load_dword v5, v[0:1]6278; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v36279; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v36280; GFX90A-NEXT:    s_mov_b32 s4, 0xffff6281; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s46282; GFX90A-NEXT:    v_not_b32_e32 v6, v46283; GFX90A-NEXT:    s_mov_b64 s[4:5], 06284; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v26285; GFX90A-NEXT:  .LBB26_1: ; %atomicrmw.start6286; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=16287; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6288; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v3, v56289; GFX90A-NEXT:    v_max_f16_e32 v4, v4, v46290; GFX90A-NEXT:    v_max_f16_e32 v4, v4, v26291; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v3, v46292; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v46293; GFX90A-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] glc6294; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6295; GFX90A-NEXT:    buffer_wbinvl16296; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v56297; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6298; GFX90A-NEXT:    v_mov_b32_e32 v5, v46299; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]6300; GFX90A-NEXT:    s_cbranch_execnz .LBB26_16301; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end6302; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]6303; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v3, v46304; GFX90A-NEXT:    s_setpc_b64 s[30:31]6305;6306; GFX908-LABEL: flat_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory:6307; GFX908:       ; %bb.0:6308; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6309; GFX908-NEXT:    v_mov_b32_e32 v3, v06310; GFX908-NEXT:    v_and_b32_e32 v0, -4, v36311; GFX908-NEXT:    flat_load_dword v5, v[0:1]6312; GFX908-NEXT:    v_and_b32_e32 v3, 3, v36313; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v36314; GFX908-NEXT:    s_mov_b32 s4, 0xffff6315; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s46316; GFX908-NEXT:    v_not_b32_e32 v4, v46317; GFX908-NEXT:    s_mov_b64 s[4:5], 06318; GFX908-NEXT:    v_max_f16_e32 v2, v2, v26319; GFX908-NEXT:  .LBB26_1: ; %atomicrmw.start6320; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=16321; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6322; GFX908-NEXT:    v_mov_b32_e32 v6, v56323; GFX908-NEXT:    v_lshrrev_b32_e32 v5, v3, v66324; GFX908-NEXT:    v_max_f16_e32 v5, v5, v56325; GFX908-NEXT:    v_max_f16_e32 v5, v5, v26326; GFX908-NEXT:    v_lshlrev_b32_e32 v5, v3, v56327; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v56328; GFX908-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc6329; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6330; GFX908-NEXT:    buffer_wbinvl16331; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v66332; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6333; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]6334; GFX908-NEXT:    s_cbranch_execnz .LBB26_16335; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end6336; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]6337; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v56338; GFX908-NEXT:    s_setpc_b64 s[30:31]6339;6340; GFX8-LABEL: flat_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory:6341; GFX8:       ; %bb.0:6342; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6343; GFX8-NEXT:    v_mov_b32_e32 v3, v06344; GFX8-NEXT:    v_and_b32_e32 v0, -4, v36345; GFX8-NEXT:    flat_load_dword v5, v[0:1]6346; GFX8-NEXT:    v_and_b32_e32 v3, 3, v36347; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v36348; GFX8-NEXT:    s_mov_b32 s4, 0xffff6349; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s46350; GFX8-NEXT:    v_not_b32_e32 v4, v46351; GFX8-NEXT:    s_mov_b64 s[4:5], 06352; GFX8-NEXT:    v_max_f16_e32 v2, v2, v26353; GFX8-NEXT:  .LBB26_1: ; %atomicrmw.start6354; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=16355; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6356; GFX8-NEXT:    v_mov_b32_e32 v6, v56357; GFX8-NEXT:    v_lshrrev_b32_e32 v5, v3, v66358; GFX8-NEXT:    v_max_f16_e32 v5, v5, v56359; GFX8-NEXT:    v_max_f16_e32 v5, v5, v26360; GFX8-NEXT:    v_and_b32_e32 v7, v6, v46361; GFX8-NEXT:    v_lshlrev_b32_e32 v5, v3, v56362; GFX8-NEXT:    v_or_b32_e32 v5, v7, v56363; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc6364; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6365; GFX8-NEXT:    buffer_wbinvl16366; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v66367; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6368; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]6369; GFX8-NEXT:    s_cbranch_execnz .LBB26_16370; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end6371; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]6372; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v56373; GFX8-NEXT:    s_setpc_b64 s[30:31]6374;6375; GFX7-LABEL: flat_agent_atomic_fmax_ret_f16__amdgpu_no_fine_grained_memory:6376; GFX7:       ; %bb.0:6377; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6378; GFX7-NEXT:    v_mov_b32_e32 v3, v06379; GFX7-NEXT:    v_and_b32_e32 v0, -4, v36380; GFX7-NEXT:    flat_load_dword v5, v[0:1]6381; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v26382; GFX7-NEXT:    v_and_b32_e32 v2, 3, v36383; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 3, v26384; GFX7-NEXT:    s_mov_b64 s[4:5], 06385; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v46386; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v26387; GFX7-NEXT:    v_not_b32_e32 v4, v46388; GFX7-NEXT:  .LBB26_1: ; %atomicrmw.start6389; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=16390; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6391; GFX7-NEXT:    v_mov_b32_e32 v6, v56392; GFX7-NEXT:    v_lshrrev_b32_e32 v5, v2, v66393; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v56394; GFX7-NEXT:    v_and_b32_e32 v7, v6, v46395; GFX7-NEXT:    v_max_f32_e32 v5, v5, v36396; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v56397; GFX7-NEXT:    v_lshlrev_b32_e32 v5, v2, v56398; GFX7-NEXT:    v_or_b32_e32 v5, v7, v56399; GFX7-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc6400; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6401; GFX7-NEXT:    buffer_wbinvl16402; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v66403; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6404; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]6405; GFX7-NEXT:    s_cbranch_execnz .LBB26_16406; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end6407; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]6408; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v2, v56409; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v06410; GFX7-NEXT:    s_setpc_b64 s[30:31]6411  %result = atomicrmw fmax ptr %ptr, half %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !06412  ret half %result6413}6414 6415define half @flat_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, half %val) #0 {6416; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:6417; GFX12-TRUE16:       ; %bb.0:6418; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06419; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x06420; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x06421; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x06422; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x06423; GFX12-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fe, v06424; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)6425; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, 0, v1, vcc_lo6426; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 06427; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v06428; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v06429; GFX12-TRUE16-NEXT:    flat_load_b32 v5, v[3:4]6430; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v06431; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l6432; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)6433; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v6, v1, 0xffff6434; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l6435; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)6436; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v66437; GFX12-TRUE16-NEXT:  .LBB27_1: ; %atomicrmw.start6438; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16439; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06440; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v56441; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6442; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v66443; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 06444; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.h, v5.l, v5.l6445; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6446; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v5.l, v0.h, v0.l6447; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v56448; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6449; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v56450; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x06451; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[3:4], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV6452; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06453; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV6454; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66455; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6456; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06457; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6458; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06459; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB27_16460; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6461; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06462; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v56463; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06464; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]6465;6466; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:6467; GFX12-FAKE16:       ; %bb.0:6468; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06469; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x06470; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x06471; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x06472; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x06473; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v06474; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)6475; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo6476; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v26477; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)6478; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v36479; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v36480; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 06481; GFX12-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]6482; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v36483; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6484; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6485; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v46486; GFX12-FAKE16-NEXT:  .LBB27_1: ; %atomicrmw.start6487; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16488; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06489; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v56490; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6491; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v66492; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v5, v5, v56493; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6494; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v5, v5, v26495; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v56496; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6497; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v56498; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v56499; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x06500; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV6501; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06502; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV6503; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66504; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6505; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06506; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6507; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06508; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB27_16509; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6510; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06511; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v56512; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06513; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]6514;6515; GFX942-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:6516; GFX942:       ; %bb.0:6517; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6518; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe6519; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]6520; GFX942-NEXT:    v_and_b32_e32 v0, -4, v46521; GFX942-NEXT:    v_mov_b32_e32 v1, v56522; GFX942-NEXT:    flat_load_dword v3, v[0:1]6523; GFX942-NEXT:    v_and_b32_e32 v4, 3, v46524; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v46525; GFX942-NEXT:    s_mov_b32 s0, 0xffff6526; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s06527; GFX942-NEXT:    v_not_b32_e32 v5, v56528; GFX942-NEXT:    s_mov_b64 s[0:1], 06529; GFX942-NEXT:    v_max_f16_e32 v6, v2, v26530; GFX942-NEXT:  .LBB27_1: ; %atomicrmw.start6531; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=16532; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6533; GFX942-NEXT:    v_lshrrev_b32_e32 v2, v4, v36534; GFX942-NEXT:    v_max_f16_e32 v2, v2, v26535; GFX942-NEXT:    v_max_f16_e32 v2, v2, v66536; GFX942-NEXT:    v_lshlrev_b32_e32 v2, v4, v26537; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v26538; GFX942-NEXT:    buffer_wbl2 sc16539; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc06540; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6541; GFX942-NEXT:    buffer_inv sc16542; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v36543; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]6544; GFX942-NEXT:    v_mov_b32_e32 v3, v26545; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]6546; GFX942-NEXT:    s_cbranch_execnz .LBB27_16547; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end6548; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]6549; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v4, v26550; GFX942-NEXT:    s_setpc_b64 s[30:31]6551;6552; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:6553; GFX11-TRUE16:       ; %bb.0:6554; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6555; GFX11-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fe, v06556; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6557; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, 0, v1, vcc_lo6558; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 06559; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v06560; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v06561; GFX11-TRUE16-NEXT:    flat_load_b32 v5, v[3:4]6562; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v06563; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l6564; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)6565; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v6, v1, 0xffff6566; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l6567; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)6568; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v66569; GFX11-TRUE16-NEXT:  .LBB27_1: ; %atomicrmw.start6570; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16571; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6572; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v56573; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6574; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v66575; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 06576; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.h, v5.l, v5.l6577; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6578; GFX11-TRUE16-NEXT:    v_max_f16_e32 v5.l, v0.h, v0.l6579; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v56580; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6581; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v56582; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x06583; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[3:4], v[5:6] glc6584; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6585; GFX11-TRUE16-NEXT:    buffer_gl1_inv6586; GFX11-TRUE16-NEXT:    buffer_gl0_inv6587; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66588; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06589; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6590; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06591; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB27_16592; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6593; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06594; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v56595; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]6596;6597; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:6598; GFX11-FAKE16:       ; %bb.0:6599; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6600; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v06601; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)6602; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo6603; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v26604; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v36605; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v36606; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 06607; GFX11-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]6608; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v36609; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6610; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6611; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v46612; GFX11-FAKE16-NEXT:  .LBB27_1: ; %atomicrmw.start6613; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16614; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6615; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v56616; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6617; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v66618; GFX11-FAKE16-NEXT:    v_max_f16_e32 v5, v5, v56619; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6620; GFX11-FAKE16-NEXT:    v_max_f16_e32 v5, v5, v26621; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v56622; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6623; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v56624; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v56625; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x06626; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc6627; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6628; GFX11-FAKE16-NEXT:    buffer_gl1_inv6629; GFX11-FAKE16-NEXT:    buffer_gl0_inv6630; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66631; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06632; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6633; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06634; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB27_16635; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6636; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06637; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v56638; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]6639;6640; GFX10-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:6641; GFX10:       ; %bb.0:6642; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6643; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v06644; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo6645; GFX10-NEXT:    v_max_f16_e32 v2, v2, v26646; GFX10-NEXT:    v_and_b32_e32 v0, -4, v36647; GFX10-NEXT:    v_and_b32_e32 v3, 3, v36648; GFX10-NEXT:    s_mov_b32 s4, 06649; GFX10-NEXT:    flat_load_dword v5, v[0:1]6650; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v36651; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6652; GFX10-NEXT:    v_not_b32_e32 v4, v46653; GFX10-NEXT:  .LBB27_1: ; %atomicrmw.start6654; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=16655; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6656; GFX10-NEXT:    v_mov_b32_e32 v6, v56657; GFX10-NEXT:    v_lshrrev_b32_e32 v5, v3, v66658; GFX10-NEXT:    v_max_f16_e32 v5, v5, v56659; GFX10-NEXT:    v_max_f16_e32 v5, v5, v26660; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_06661; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v56662; GFX10-NEXT:    s_waitcnt_vscnt null, 0x06663; GFX10-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc6664; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6665; GFX10-NEXT:    buffer_gl1_inv6666; GFX10-NEXT:    buffer_gl0_inv6667; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66668; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s46669; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s46670; GFX10-NEXT:    s_cbranch_execnz .LBB27_16671; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end6672; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s46673; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v56674; GFX10-NEXT:    s_setpc_b64 s[30:31]6675;6676; GFX90A-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:6677; GFX90A:       ; %bb.0:6678; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6679; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v06680; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc6681; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v46682; GFX90A-NEXT:    flat_load_dword v3, v[0:1]6683; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v46684; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v46685; GFX90A-NEXT:    s_mov_b32 s4, 0xffff6686; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s46687; GFX90A-NEXT:    v_not_b32_e32 v5, v56688; GFX90A-NEXT:    s_mov_b64 s[4:5], 06689; GFX90A-NEXT:    v_max_f16_e32 v6, v2, v26690; GFX90A-NEXT:  .LBB27_1: ; %atomicrmw.start6691; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=16692; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6693; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, v4, v36694; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v26695; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v66696; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, v4, v26697; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v26698; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc6699; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6700; GFX90A-NEXT:    buffer_wbinvl16701; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v36702; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6703; GFX90A-NEXT:    v_mov_b32_e32 v3, v26704; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]6705; GFX90A-NEXT:    s_cbranch_execnz .LBB27_16706; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end6707; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]6708; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v4, v26709; GFX90A-NEXT:    s_setpc_b64 s[30:31]6710;6711; GFX908-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:6712; GFX908:       ; %bb.0:6713; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6714; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v06715; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc6716; GFX908-NEXT:    v_and_b32_e32 v0, -4, v36717; GFX908-NEXT:    flat_load_dword v5, v[0:1]6718; GFX908-NEXT:    v_and_b32_e32 v3, 3, v36719; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v36720; GFX908-NEXT:    s_mov_b32 s4, 0xffff6721; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s46722; GFX908-NEXT:    v_not_b32_e32 v4, v46723; GFX908-NEXT:    s_mov_b64 s[4:5], 06724; GFX908-NEXT:    v_max_f16_e32 v2, v2, v26725; GFX908-NEXT:  .LBB27_1: ; %atomicrmw.start6726; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=16727; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6728; GFX908-NEXT:    v_mov_b32_e32 v6, v56729; GFX908-NEXT:    v_lshrrev_b32_e32 v5, v3, v66730; GFX908-NEXT:    v_max_f16_e32 v5, v5, v56731; GFX908-NEXT:    v_max_f16_e32 v5, v5, v26732; GFX908-NEXT:    v_lshlrev_b32_e32 v5, v3, v56733; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v56734; GFX908-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc6735; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6736; GFX908-NEXT:    buffer_wbinvl16737; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v66738; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6739; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]6740; GFX908-NEXT:    s_cbranch_execnz .LBB27_16741; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end6742; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]6743; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v56744; GFX908-NEXT:    s_setpc_b64 s[30:31]6745;6746; GFX8-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:6747; GFX8:       ; %bb.0:6748; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6749; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v06750; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc6751; GFX8-NEXT:    v_and_b32_e32 v0, -4, v36752; GFX8-NEXT:    flat_load_dword v5, v[0:1]6753; GFX8-NEXT:    v_and_b32_e32 v3, 3, v36754; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v36755; GFX8-NEXT:    s_mov_b32 s4, 0xffff6756; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s46757; GFX8-NEXT:    v_not_b32_e32 v4, v46758; GFX8-NEXT:    s_mov_b64 s[4:5], 06759; GFX8-NEXT:    v_max_f16_e32 v2, v2, v26760; GFX8-NEXT:  .LBB27_1: ; %atomicrmw.start6761; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=16762; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6763; GFX8-NEXT:    v_mov_b32_e32 v6, v56764; GFX8-NEXT:    v_lshrrev_b32_e32 v5, v3, v66765; GFX8-NEXT:    v_max_f16_e32 v5, v5, v56766; GFX8-NEXT:    v_max_f16_e32 v5, v5, v26767; GFX8-NEXT:    v_and_b32_e32 v7, v6, v46768; GFX8-NEXT:    v_lshlrev_b32_e32 v5, v3, v56769; GFX8-NEXT:    v_or_b32_e32 v5, v7, v56770; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc6771; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6772; GFX8-NEXT:    buffer_wbinvl16773; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v66774; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6775; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]6776; GFX8-NEXT:    s_cbranch_execnz .LBB27_16777; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end6778; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]6779; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v56780; GFX8-NEXT:    s_setpc_b64 s[30:31]6781;6782; GFX7-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:6783; GFX7:       ; %bb.0:6784; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6785; GFX7-NEXT:    v_add_i32_e32 v3, vcc, 0x7fe, v06786; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc6787; GFX7-NEXT:    v_and_b32_e32 v0, -4, v36788; GFX7-NEXT:    flat_load_dword v5, v[0:1]6789; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v26790; GFX7-NEXT:    v_and_b32_e32 v2, 3, v36791; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 3, v26792; GFX7-NEXT:    s_mov_b64 s[4:5], 06793; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v46794; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v26795; GFX7-NEXT:    v_not_b32_e32 v4, v46796; GFX7-NEXT:  .LBB27_1: ; %atomicrmw.start6797; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=16798; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6799; GFX7-NEXT:    v_mov_b32_e32 v6, v56800; GFX7-NEXT:    v_lshrrev_b32_e32 v5, v2, v66801; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v56802; GFX7-NEXT:    v_and_b32_e32 v7, v6, v46803; GFX7-NEXT:    v_max_f32_e32 v5, v5, v36804; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v56805; GFX7-NEXT:    v_lshlrev_b32_e32 v5, v2, v56806; GFX7-NEXT:    v_or_b32_e32 v5, v7, v56807; GFX7-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc6808; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6809; GFX7-NEXT:    buffer_wbinvl16810; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v66811; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6812; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]6813; GFX7-NEXT:    s_cbranch_execnz .LBB27_16814; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end6815; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]6816; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v2, v56817; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v06818; GFX7-NEXT:    s_setpc_b64 s[30:31]6819  %gep = getelementptr inbounds half, ptr %ptr, i64 10236820  %result = atomicrmw fmax ptr %gep, half %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !06821  ret half %result6822}6823 6824define half @flat_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory(ptr %ptr, half %val) #0 {6825; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:6826; GFX12-TRUE16:       ; %bb.0:6827; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06828; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x06829; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x06830; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x06831; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x06832; GFX12-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v06833; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)6834; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, -1, v1, vcc_lo6835; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 06836; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v06837; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v06838; GFX12-TRUE16-NEXT:    flat_load_b32 v5, v[3:4]6839; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v06840; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l6841; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)6842; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v6, v1, 0xffff6843; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l6844; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)6845; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v66846; GFX12-TRUE16-NEXT:  .LBB28_1: ; %atomicrmw.start6847; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16848; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06849; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v56850; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6851; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v66852; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 06853; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.h, v5.l, v5.l6854; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6855; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v5.l, v0.h, v0.l6856; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v56857; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6858; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v56859; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x06860; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[3:4], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV6861; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06862; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV6863; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66864; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6865; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06866; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6867; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06868; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB28_16869; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6870; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06871; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v56872; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06873; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]6874;6875; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:6876; GFX12-FAKE16:       ; %bb.0:6877; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06878; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x06879; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x06880; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x06881; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x06882; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v06883; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)6884; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo6885; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v26886; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)6887; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v36888; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v36889; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 06890; GFX12-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]6891; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v36892; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff6893; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6894; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v46895; GFX12-FAKE16-NEXT:  .LBB28_1: ; %atomicrmw.start6896; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16897; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06898; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v56899; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6900; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v66901; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v5, v5, v56902; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6903; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v5, v5, v26904; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v56905; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6906; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v56907; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v56908; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x06909; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV6910; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06911; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV6912; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66913; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6914; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s06915; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6916; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06917; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB28_16918; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6919; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06920; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v56921; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06922; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]6923;6924; GFX942-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:6925; GFX942:       ; %bb.0:6926; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6927; GFX942-NEXT:    s_movk_i32 s0, 0xf8006928; GFX942-NEXT:    s_mov_b32 s1, -16929; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]6930; GFX942-NEXT:    v_and_b32_e32 v0, -4, v46931; GFX942-NEXT:    v_mov_b32_e32 v1, v56932; GFX942-NEXT:    flat_load_dword v3, v[0:1]6933; GFX942-NEXT:    v_and_b32_e32 v4, 3, v46934; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v46935; GFX942-NEXT:    s_mov_b32 s0, 0xffff6936; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s06937; GFX942-NEXT:    v_not_b32_e32 v5, v56938; GFX942-NEXT:    s_mov_b64 s[0:1], 06939; GFX942-NEXT:    v_max_f16_e32 v6, v2, v26940; GFX942-NEXT:  .LBB28_1: ; %atomicrmw.start6941; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=16942; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6943; GFX942-NEXT:    v_lshrrev_b32_e32 v2, v4, v36944; GFX942-NEXT:    v_max_f16_e32 v2, v2, v26945; GFX942-NEXT:    v_max_f16_e32 v2, v2, v66946; GFX942-NEXT:    v_lshlrev_b32_e32 v2, v4, v26947; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v26948; GFX942-NEXT:    buffer_wbl2 sc16949; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc06950; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6951; GFX942-NEXT:    buffer_inv sc16952; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v36953; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]6954; GFX942-NEXT:    v_mov_b32_e32 v3, v26955; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]6956; GFX942-NEXT:    s_cbranch_execnz .LBB28_16957; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end6958; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]6959; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v4, v26960; GFX942-NEXT:    s_setpc_b64 s[30:31]6961;6962; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:6963; GFX11-TRUE16:       ; %bb.0:6964; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6965; GFX11-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v06966; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6967; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, -1, v1, vcc_lo6968; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 06969; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v06970; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v06971; GFX11-TRUE16-NEXT:    flat_load_b32 v5, v[3:4]6972; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v06973; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l6974; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)6975; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v6, v1, 0xffff6976; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l6977; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)6978; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v66979; GFX11-TRUE16-NEXT:  .LBB28_1: ; %atomicrmw.start6980; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16981; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6982; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v56983; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6984; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v66985; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 06986; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.h, v5.l, v5.l6987; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6988; GFX11-TRUE16-NEXT:    v_max_f16_e32 v5.l, v0.h, v0.l6989; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v56990; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6991; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v56992; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x06993; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[3:4], v[5:6] glc6994; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)6995; GFX11-TRUE16-NEXT:    buffer_gl1_inv6996; GFX11-TRUE16-NEXT:    buffer_gl0_inv6997; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v66998; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06999; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7000; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07001; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB28_17002; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7003; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07004; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v57005; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]7006;7007; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:7008; GFX11-FAKE16:       ; %bb.0:7009; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7010; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v07011; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)7012; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo7013; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v27014; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v37015; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v37016; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 07017; GFX11-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]7018; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v37019; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7020; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff7021; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v47022; GFX11-FAKE16-NEXT:  .LBB28_1: ; %atomicrmw.start7023; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17024; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7025; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v57026; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7027; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v67028; GFX11-FAKE16-NEXT:    v_max_f16_e32 v5, v5, v57029; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7030; GFX11-FAKE16-NEXT:    v_max_f16_e32 v5, v5, v27031; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v57032; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7033; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v57034; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v57035; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x07036; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc7037; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7038; GFX11-FAKE16-NEXT:    buffer_gl1_inv7039; GFX11-FAKE16-NEXT:    buffer_gl0_inv7040; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v67041; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s07042; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7043; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07044; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB28_17045; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7046; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07047; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v57048; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]7049;7050; GFX10-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:7051; GFX10:       ; %bb.0:7052; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7053; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v07054; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo7055; GFX10-NEXT:    v_max_f16_e32 v2, v2, v27056; GFX10-NEXT:    v_and_b32_e32 v0, -4, v37057; GFX10-NEXT:    v_and_b32_e32 v3, 3, v37058; GFX10-NEXT:    s_mov_b32 s4, 07059; GFX10-NEXT:    flat_load_dword v5, v[0:1]7060; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v37061; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff7062; GFX10-NEXT:    v_not_b32_e32 v4, v47063; GFX10-NEXT:  .LBB28_1: ; %atomicrmw.start7064; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=17065; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7066; GFX10-NEXT:    v_mov_b32_e32 v6, v57067; GFX10-NEXT:    v_lshrrev_b32_e32 v5, v3, v67068; GFX10-NEXT:    v_max_f16_e32 v5, v5, v57069; GFX10-NEXT:    v_max_f16_e32 v5, v5, v27070; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_07071; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v57072; GFX10-NEXT:    s_waitcnt_vscnt null, 0x07073; GFX10-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc7074; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7075; GFX10-NEXT:    buffer_gl1_inv7076; GFX10-NEXT:    buffer_gl0_inv7077; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v67078; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s47079; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s47080; GFX10-NEXT:    s_cbranch_execnz .LBB28_17081; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end7082; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s47083; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v57084; GFX10-NEXT:    s_setpc_b64 s[30:31]7085;7086; GFX90A-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:7087; GFX90A:       ; %bb.0:7088; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7089; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v07090; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc7091; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v47092; GFX90A-NEXT:    flat_load_dword v3, v[0:1]7093; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v47094; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v47095; GFX90A-NEXT:    s_mov_b32 s4, 0xffff7096; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s47097; GFX90A-NEXT:    v_not_b32_e32 v5, v57098; GFX90A-NEXT:    s_mov_b64 s[4:5], 07099; GFX90A-NEXT:    v_max_f16_e32 v6, v2, v27100; GFX90A-NEXT:  .LBB28_1: ; %atomicrmw.start7101; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=17102; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7103; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, v4, v37104; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v27105; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v67106; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, v4, v27107; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v27108; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc7109; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7110; GFX90A-NEXT:    buffer_wbinvl17111; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v37112; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7113; GFX90A-NEXT:    v_mov_b32_e32 v3, v27114; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]7115; GFX90A-NEXT:    s_cbranch_execnz .LBB28_17116; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end7117; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]7118; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v4, v27119; GFX90A-NEXT:    s_setpc_b64 s[30:31]7120;7121; GFX908-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:7122; GFX908:       ; %bb.0:7123; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7124; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v07125; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc7126; GFX908-NEXT:    v_and_b32_e32 v0, -4, v37127; GFX908-NEXT:    flat_load_dword v5, v[0:1]7128; GFX908-NEXT:    v_and_b32_e32 v3, 3, v37129; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v37130; GFX908-NEXT:    s_mov_b32 s4, 0xffff7131; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s47132; GFX908-NEXT:    v_not_b32_e32 v4, v47133; GFX908-NEXT:    s_mov_b64 s[4:5], 07134; GFX908-NEXT:    v_max_f16_e32 v2, v2, v27135; GFX908-NEXT:  .LBB28_1: ; %atomicrmw.start7136; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=17137; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7138; GFX908-NEXT:    v_mov_b32_e32 v6, v57139; GFX908-NEXT:    v_lshrrev_b32_e32 v5, v3, v67140; GFX908-NEXT:    v_max_f16_e32 v5, v5, v57141; GFX908-NEXT:    v_max_f16_e32 v5, v5, v27142; GFX908-NEXT:    v_lshlrev_b32_e32 v5, v3, v57143; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v57144; GFX908-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc7145; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7146; GFX908-NEXT:    buffer_wbinvl17147; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v67148; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7149; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]7150; GFX908-NEXT:    s_cbranch_execnz .LBB28_17151; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end7152; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]7153; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v57154; GFX908-NEXT:    s_setpc_b64 s[30:31]7155;7156; GFX8-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:7157; GFX8:       ; %bb.0:7158; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7159; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v07160; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc7161; GFX8-NEXT:    v_and_b32_e32 v0, -4, v37162; GFX8-NEXT:    flat_load_dword v5, v[0:1]7163; GFX8-NEXT:    v_and_b32_e32 v3, 3, v37164; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v37165; GFX8-NEXT:    s_mov_b32 s4, 0xffff7166; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s47167; GFX8-NEXT:    v_not_b32_e32 v4, v47168; GFX8-NEXT:    s_mov_b64 s[4:5], 07169; GFX8-NEXT:    v_max_f16_e32 v2, v2, v27170; GFX8-NEXT:  .LBB28_1: ; %atomicrmw.start7171; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=17172; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7173; GFX8-NEXT:    v_mov_b32_e32 v6, v57174; GFX8-NEXT:    v_lshrrev_b32_e32 v5, v3, v67175; GFX8-NEXT:    v_max_f16_e32 v5, v5, v57176; GFX8-NEXT:    v_max_f16_e32 v5, v5, v27177; GFX8-NEXT:    v_and_b32_e32 v7, v6, v47178; GFX8-NEXT:    v_lshlrev_b32_e32 v5, v3, v57179; GFX8-NEXT:    v_or_b32_e32 v5, v7, v57180; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc7181; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7182; GFX8-NEXT:    buffer_wbinvl17183; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v67184; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7185; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]7186; GFX8-NEXT:    s_cbranch_execnz .LBB28_17187; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end7188; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]7189; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v57190; GFX8-NEXT:    s_setpc_b64 s[30:31]7191;7192; GFX7-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:7193; GFX7:       ; %bb.0:7194; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7195; GFX7-NEXT:    v_add_i32_e32 v3, vcc, 0xfffff800, v07196; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc7197; GFX7-NEXT:    v_and_b32_e32 v0, -4, v37198; GFX7-NEXT:    flat_load_dword v5, v[0:1]7199; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v27200; GFX7-NEXT:    v_and_b32_e32 v2, 3, v37201; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 3, v27202; GFX7-NEXT:    s_mov_b64 s[4:5], 07203; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v47204; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v27205; GFX7-NEXT:    v_not_b32_e32 v4, v47206; GFX7-NEXT:  .LBB28_1: ; %atomicrmw.start7207; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=17208; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7209; GFX7-NEXT:    v_mov_b32_e32 v6, v57210; GFX7-NEXT:    v_lshrrev_b32_e32 v5, v2, v67211; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v57212; GFX7-NEXT:    v_and_b32_e32 v7, v6, v47213; GFX7-NEXT:    v_max_f32_e32 v5, v5, v37214; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v57215; GFX7-NEXT:    v_lshlrev_b32_e32 v5, v2, v57216; GFX7-NEXT:    v_or_b32_e32 v5, v7, v57217; GFX7-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc7218; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7219; GFX7-NEXT:    buffer_wbinvl17220; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v67221; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7222; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]7223; GFX7-NEXT:    s_cbranch_execnz .LBB28_17224; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end7225; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]7226; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v2, v57227; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v07228; GFX7-NEXT:    s_setpc_b64 s[30:31]7229  %gep = getelementptr inbounds half, ptr %ptr, i64 -10247230  %result = atomicrmw fmax ptr %gep, half %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !07231  ret half %result7232 }7233 7234define void @flat_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory(ptr %ptr, half %val) #0 {7235; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory:7236; GFX12-TRUE16:       ; %bb.0:7237; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x07238; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x07239; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x07240; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x07241; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x07242; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v07243; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v2.l, v2.l, v2.l7244; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 07245; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_1)7246; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v37247; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v37248; GFX12-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]7249; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v37250; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7251; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7252; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v37253; GFX12-TRUE16-NEXT:  .LBB29_1: ; %atomicrmw.start7254; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17255; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x07256; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v47257; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 07258; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7259; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v2.h, v3.l, v3.l7260; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v3.l, v2.h, v2.l7261; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7262; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v37263; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v37264; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x07265; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV7266; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x07267; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV7268; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47269; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v37270; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7271; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07272; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7273; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07274; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB29_17275; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7276; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07277; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07278; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]7279;7280; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory:7281; GFX12-FAKE16:       ; %bb.0:7282; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07283; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x07284; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x07285; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x07286; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x07287; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v07288; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v27289; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 07290; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_1)7291; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v37292; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v37293; GFX12-FAKE16-NEXT:    flat_load_b32 v4, v[0:1]7294; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v37295; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7296; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7297; GFX12-FAKE16-NEXT:    v_not_b32_e32 v6, v37298; GFX12-FAKE16-NEXT:  .LBB29_1: ; %atomicrmw.start7299; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17300; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07301; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v47302; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7303; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v3, v3, v37304; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v3, v3, v27305; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7306; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v37307; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v37308; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7309; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v37310; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x07311; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV7312; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07313; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV7314; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47315; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v37316; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7317; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s07318; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7319; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07320; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB29_17321; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7322; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07323; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07324; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]7325;7326; GFX942-LABEL: flat_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory:7327; GFX942:       ; %bb.0:7328; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7329; GFX942-NEXT:    v_mov_b32_e32 v3, v07330; GFX942-NEXT:    v_and_b32_e32 v0, -4, v37331; GFX942-NEXT:    flat_load_dword v5, v[0:1]7332; GFX942-NEXT:    v_and_b32_e32 v3, 3, v37333; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v37334; GFX942-NEXT:    s_mov_b32 s0, 0xffff7335; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s07336; GFX942-NEXT:    v_not_b32_e32 v6, v47337; GFX942-NEXT:    s_mov_b64 s[0:1], 07338; GFX942-NEXT:    v_max_f16_e32 v2, v2, v27339; GFX942-NEXT:  .LBB29_1: ; %atomicrmw.start7340; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=17341; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7342; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v3, v57343; GFX942-NEXT:    v_max_f16_e32 v4, v4, v47344; GFX942-NEXT:    v_max_f16_e32 v4, v4, v27345; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v3, v47346; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v47347; GFX942-NEXT:    buffer_wbl2 sc17348; GFX942-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] sc07349; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7350; GFX942-NEXT:    buffer_inv sc17351; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v57352; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]7353; GFX942-NEXT:    v_mov_b32_e32 v5, v47354; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]7355; GFX942-NEXT:    s_cbranch_execnz .LBB29_17356; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end7357; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]7358; GFX942-NEXT:    s_setpc_b64 s[30:31]7359;7360; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory:7361; GFX11-TRUE16:       ; %bb.0:7362; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7363; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v07364; GFX11-TRUE16-NEXT:    v_max_f16_e32 v2.l, v2.l, v2.l7365; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 07366; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_1)7367; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v37368; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v37369; GFX11-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]7370; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v37371; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7372; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7373; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v37374; GFX11-TRUE16-NEXT:  .LBB29_1: ; %atomicrmw.start7375; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17376; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7377; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v47378; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 07379; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7380; GFX11-TRUE16-NEXT:    v_max_f16_e32 v2.h, v3.l, v3.l7381; GFX11-TRUE16-NEXT:    v_max_f16_e32 v3.l, v2.h, v2.l7382; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7383; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v37384; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v37385; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x07386; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc7387; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7388; GFX11-TRUE16-NEXT:    buffer_gl1_inv7389; GFX11-TRUE16-NEXT:    buffer_gl0_inv7390; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47391; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v37392; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07393; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7394; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07395; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB29_17396; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7397; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07398; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]7399;7400; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory:7401; GFX11-FAKE16:       ; %bb.0:7402; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7403; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v07404; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v27405; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 07406; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_1)7407; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v37408; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v37409; GFX11-FAKE16-NEXT:    flat_load_b32 v4, v[0:1]7410; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v37411; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7412; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7413; GFX11-FAKE16-NEXT:    v_not_b32_e32 v6, v37414; GFX11-FAKE16-NEXT:  .LBB29_1: ; %atomicrmw.start7415; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17416; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7417; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v47418; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7419; GFX11-FAKE16-NEXT:    v_max_f16_e32 v3, v3, v37420; GFX11-FAKE16-NEXT:    v_max_f16_e32 v3, v3, v27421; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7422; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v37423; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v37424; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7425; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v37426; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x07427; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc7428; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7429; GFX11-FAKE16-NEXT:    buffer_gl1_inv7430; GFX11-FAKE16-NEXT:    buffer_gl0_inv7431; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47432; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v37433; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s07434; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7435; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07436; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB29_17437; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7438; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07439; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]7440;7441; GFX10-LABEL: flat_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory:7442; GFX10:       ; %bb.0:7443; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7444; GFX10-NEXT:    v_mov_b32_e32 v3, v07445; GFX10-NEXT:    v_max_f16_e32 v2, v2, v27446; GFX10-NEXT:    s_mov_b32 s4, 07447; GFX10-NEXT:    v_and_b32_e32 v0, -4, v37448; GFX10-NEXT:    v_and_b32_e32 v3, 3, v37449; GFX10-NEXT:    flat_load_dword v4, v[0:1]7450; GFX10-NEXT:    v_lshlrev_b32_e32 v5, 3, v37451; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff7452; GFX10-NEXT:    v_not_b32_e32 v6, v37453; GFX10-NEXT:  .LBB29_1: ; %atomicrmw.start7454; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=17455; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7456; GFX10-NEXT:    v_lshrrev_b32_e32 v3, v5, v47457; GFX10-NEXT:    v_max_f16_e32 v3, v3, v37458; GFX10-NEXT:    v_max_f16_e32 v3, v3, v27459; GFX10-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_07460; GFX10-NEXT:    v_and_or_b32 v3, v4, v6, v37461; GFX10-NEXT:    s_waitcnt_vscnt null, 0x07462; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc7463; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7464; GFX10-NEXT:    buffer_gl1_inv7465; GFX10-NEXT:    buffer_gl0_inv7466; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v47467; GFX10-NEXT:    v_mov_b32_e32 v4, v37468; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s47469; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s47470; GFX10-NEXT:    s_cbranch_execnz .LBB29_17471; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end7472; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s47473; GFX10-NEXT:    s_setpc_b64 s[30:31]7474;7475; GFX90A-LABEL: flat_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory:7476; GFX90A:       ; %bb.0:7477; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7478; GFX90A-NEXT:    v_mov_b32_e32 v3, v07479; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v37480; GFX90A-NEXT:    flat_load_dword v5, v[0:1]7481; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v37482; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v37483; GFX90A-NEXT:    s_mov_b32 s4, 0xffff7484; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s47485; GFX90A-NEXT:    v_not_b32_e32 v6, v47486; GFX90A-NEXT:    s_mov_b64 s[4:5], 07487; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v27488; GFX90A-NEXT:  .LBB29_1: ; %atomicrmw.start7489; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=17490; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7491; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v3, v57492; GFX90A-NEXT:    v_max_f16_e32 v4, v4, v47493; GFX90A-NEXT:    v_max_f16_e32 v4, v4, v27494; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v3, v47495; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v47496; GFX90A-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] glc7497; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7498; GFX90A-NEXT:    buffer_wbinvl17499; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v57500; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7501; GFX90A-NEXT:    v_mov_b32_e32 v5, v47502; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]7503; GFX90A-NEXT:    s_cbranch_execnz .LBB29_17504; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end7505; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]7506; GFX90A-NEXT:    s_setpc_b64 s[30:31]7507;7508; GFX908-LABEL: flat_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory:7509; GFX908:       ; %bb.0:7510; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7511; GFX908-NEXT:    v_mov_b32_e32 v3, v07512; GFX908-NEXT:    v_and_b32_e32 v0, -4, v37513; GFX908-NEXT:    flat_load_dword v4, v[0:1]7514; GFX908-NEXT:    v_and_b32_e32 v3, 3, v37515; GFX908-NEXT:    v_lshlrev_b32_e32 v5, 3, v37516; GFX908-NEXT:    s_mov_b32 s4, 0xffff7517; GFX908-NEXT:    v_lshlrev_b32_e64 v3, v5, s47518; GFX908-NEXT:    v_not_b32_e32 v6, v37519; GFX908-NEXT:    s_mov_b64 s[4:5], 07520; GFX908-NEXT:    v_max_f16_e32 v2, v2, v27521; GFX908-NEXT:  .LBB29_1: ; %atomicrmw.start7522; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=17523; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7524; GFX908-NEXT:    v_lshrrev_b32_e32 v3, v5, v47525; GFX908-NEXT:    v_max_f16_e32 v3, v3, v37526; GFX908-NEXT:    v_max_f16_e32 v3, v3, v27527; GFX908-NEXT:    v_lshlrev_b32_e32 v3, v5, v37528; GFX908-NEXT:    v_and_or_b32 v3, v4, v6, v37529; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc7530; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7531; GFX908-NEXT:    buffer_wbinvl17532; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v47533; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7534; GFX908-NEXT:    v_mov_b32_e32 v4, v37535; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]7536; GFX908-NEXT:    s_cbranch_execnz .LBB29_17537; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end7538; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]7539; GFX908-NEXT:    s_setpc_b64 s[30:31]7540;7541; GFX8-LABEL: flat_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory:7542; GFX8:       ; %bb.0:7543; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7544; GFX8-NEXT:    v_mov_b32_e32 v3, v07545; GFX8-NEXT:    v_and_b32_e32 v0, -4, v37546; GFX8-NEXT:    flat_load_dword v4, v[0:1]7547; GFX8-NEXT:    v_and_b32_e32 v3, 3, v37548; GFX8-NEXT:    v_lshlrev_b32_e32 v5, 3, v37549; GFX8-NEXT:    s_mov_b32 s4, 0xffff7550; GFX8-NEXT:    v_lshlrev_b32_e64 v3, v5, s47551; GFX8-NEXT:    v_not_b32_e32 v6, v37552; GFX8-NEXT:    s_mov_b64 s[4:5], 07553; GFX8-NEXT:    v_max_f16_e32 v2, v2, v27554; GFX8-NEXT:  .LBB29_1: ; %atomicrmw.start7555; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=17556; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7557; GFX8-NEXT:    v_lshrrev_b32_e32 v3, v5, v47558; GFX8-NEXT:    v_max_f16_e32 v3, v3, v37559; GFX8-NEXT:    v_max_f16_e32 v3, v3, v27560; GFX8-NEXT:    v_and_b32_e32 v7, v4, v67561; GFX8-NEXT:    v_lshlrev_b32_e32 v3, v5, v37562; GFX8-NEXT:    v_or_b32_e32 v3, v7, v37563; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc7564; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7565; GFX8-NEXT:    buffer_wbinvl17566; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v47567; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7568; GFX8-NEXT:    v_mov_b32_e32 v4, v37569; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]7570; GFX8-NEXT:    s_cbranch_execnz .LBB29_17571; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end7572; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]7573; GFX8-NEXT:    s_setpc_b64 s[30:31]7574;7575; GFX7-LABEL: flat_agent_atomic_fmax_noret_f16__amdgpu_no_fine_grained_memory:7576; GFX7:       ; %bb.0:7577; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7578; GFX7-NEXT:    v_mov_b32_e32 v3, v07579; GFX7-NEXT:    v_and_b32_e32 v0, -4, v37580; GFX7-NEXT:    flat_load_dword v4, v[0:1]7581; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v27582; GFX7-NEXT:    v_and_b32_e32 v2, 3, v37583; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 3, v27584; GFX7-NEXT:    v_lshl_b32_e32 v3, 0xffff, v27585; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v57586; GFX7-NEXT:    v_not_b32_e32 v6, v37587; GFX7-NEXT:    s_mov_b64 s[4:5], 07588; GFX7-NEXT:  .LBB29_1: ; %atomicrmw.start7589; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=17590; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7591; GFX7-NEXT:    v_lshrrev_b32_e32 v3, v2, v47592; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v37593; GFX7-NEXT:    v_and_b32_e32 v7, v4, v67594; GFX7-NEXT:    v_max_f32_e32 v3, v3, v57595; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v37596; GFX7-NEXT:    v_lshlrev_b32_e32 v3, v2, v37597; GFX7-NEXT:    v_or_b32_e32 v3, v7, v37598; GFX7-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc7599; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7600; GFX7-NEXT:    buffer_wbinvl17601; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v47602; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7603; GFX7-NEXT:    v_mov_b32_e32 v4, v37604; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]7605; GFX7-NEXT:    s_cbranch_execnz .LBB29_17606; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end7607; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]7608; GFX7-NEXT:    s_setpc_b64 s[30:31]7609  %unused = atomicrmw fmax ptr %ptr, half %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !07610  ret void7611}7612 7613define void @flat_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, half %val) #0 {7614; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:7615; GFX12-TRUE16:       ; %bb.0:7616; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x07617; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x07618; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x07619; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x07620; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x07621; GFX12-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fe, v07622; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)7623; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, 0, v1, vcc_lo7624; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 07625; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v07626; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v07627; GFX12-TRUE16-NEXT:    flat_load_b32 v6, v[3:4]7628; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v07629; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l7630; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7631; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v5, v1, 0xffff7632; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l7633; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)7634; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v57635; GFX12-TRUE16-NEXT:  .LBB30_1: ; %atomicrmw.start7636; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17637; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x07638; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v67639; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 07640; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7641; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.h, v5.l, v5.l7642; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v5.l, v0.h, v0.l7643; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7644; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v57645; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v57646; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x07647; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[3:4], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV7648; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x07649; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV7650; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v67651; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v57652; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7653; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07654; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7655; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07656; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB30_17657; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7658; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07659; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07660; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]7661;7662; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:7663; GFX12-FAKE16:       ; %bb.0:7664; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07665; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x07666; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x07667; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x07668; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x07669; GFX12-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v07670; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)7671; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo7672; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v6, v2, v27673; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)7674; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v47675; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v47676; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 07677; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]7678; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v47679; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff7680; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7681; GFX12-FAKE16-NEXT:    v_not_b32_e32 v5, v57682; GFX12-FAKE16-NEXT:  .LBB30_1: ; %atomicrmw.start7683; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17684; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07685; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v37686; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7687; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v27688; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v67689; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7690; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v27691; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v27692; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7693; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v27694; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x07695; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV7696; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07697; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV7698; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v37699; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v27700; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7701; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s07702; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7703; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07704; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB30_17705; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7706; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07707; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07708; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]7709;7710; GFX942-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:7711; GFX942:       ; %bb.0:7712; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7713; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe7714; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]7715; GFX942-NEXT:    v_and_b32_e32 v0, -4, v47716; GFX942-NEXT:    v_mov_b32_e32 v1, v57717; GFX942-NEXT:    flat_load_dword v3, v[0:1]7718; GFX942-NEXT:    v_and_b32_e32 v4, 3, v47719; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v47720; GFX942-NEXT:    s_mov_b32 s0, 0xffff7721; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s07722; GFX942-NEXT:    v_not_b32_e32 v5, v57723; GFX942-NEXT:    s_mov_b64 s[0:1], 07724; GFX942-NEXT:    v_max_f16_e32 v6, v2, v27725; GFX942-NEXT:  .LBB30_1: ; %atomicrmw.start7726; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=17727; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7728; GFX942-NEXT:    v_lshrrev_b32_e32 v2, v4, v37729; GFX942-NEXT:    v_max_f16_e32 v2, v2, v27730; GFX942-NEXT:    v_max_f16_e32 v2, v2, v67731; GFX942-NEXT:    v_lshlrev_b32_e32 v2, v4, v27732; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v27733; GFX942-NEXT:    buffer_wbl2 sc17734; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc07735; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7736; GFX942-NEXT:    buffer_inv sc17737; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v37738; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]7739; GFX942-NEXT:    v_mov_b32_e32 v3, v27740; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]7741; GFX942-NEXT:    s_cbranch_execnz .LBB30_17742; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end7743; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]7744; GFX942-NEXT:    s_setpc_b64 s[30:31]7745;7746; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:7747; GFX11-TRUE16:       ; %bb.0:7748; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7749; GFX11-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fe, v07750; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7751; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, 0, v1, vcc_lo7752; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 07753; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v07754; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v07755; GFX11-TRUE16-NEXT:    flat_load_b32 v6, v[3:4]7756; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v07757; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l7758; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7759; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v5, v1, 0xffff7760; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l7761; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)7762; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v57763; GFX11-TRUE16-NEXT:  .LBB30_1: ; %atomicrmw.start7764; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17765; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7766; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v67767; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 07768; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7769; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.h, v5.l, v5.l7770; GFX11-TRUE16-NEXT:    v_max_f16_e32 v5.l, v0.h, v0.l7771; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7772; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v57773; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v57774; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x07775; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[3:4], v[5:6] glc7776; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7777; GFX11-TRUE16-NEXT:    buffer_gl1_inv7778; GFX11-TRUE16-NEXT:    buffer_gl0_inv7779; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v67780; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v57781; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07782; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7783; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07784; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB30_17785; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7786; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07787; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]7788;7789; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:7790; GFX11-FAKE16:       ; %bb.0:7791; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7792; GFX11-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v07793; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)7794; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo7795; GFX11-FAKE16-NEXT:    v_max_f16_e32 v6, v2, v27796; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v47797; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v47798; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 07799; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]7800; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v47801; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7802; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff7803; GFX11-FAKE16-NEXT:    v_not_b32_e32 v5, v57804; GFX11-FAKE16-NEXT:  .LBB30_1: ; %atomicrmw.start7805; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17806; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7807; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v37808; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7809; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v27810; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v67811; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7812; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v27813; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v27814; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7815; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v27816; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x07817; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] glc7818; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7819; GFX11-FAKE16-NEXT:    buffer_gl1_inv7820; GFX11-FAKE16-NEXT:    buffer_gl0_inv7821; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v37822; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v27823; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s07824; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7825; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07826; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB30_17827; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7828; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07829; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]7830;7831; GFX10-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:7832; GFX10:       ; %bb.0:7833; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7834; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v07835; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo7836; GFX10-NEXT:    v_max_f16_e32 v6, v2, v27837; GFX10-NEXT:    v_and_b32_e32 v0, -4, v47838; GFX10-NEXT:    v_and_b32_e32 v4, 3, v47839; GFX10-NEXT:    s_mov_b32 s4, 07840; GFX10-NEXT:    flat_load_dword v3, v[0:1]7841; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 3, v47842; GFX10-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff7843; GFX10-NEXT:    v_not_b32_e32 v5, v57844; GFX10-NEXT:  .LBB30_1: ; %atomicrmw.start7845; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=17846; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7847; GFX10-NEXT:    v_lshrrev_b32_e32 v2, v4, v37848; GFX10-NEXT:    v_max_f16_e32 v2, v2, v27849; GFX10-NEXT:    v_max_f16_e32 v2, v2, v67850; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_07851; GFX10-NEXT:    v_and_or_b32 v2, v3, v5, v27852; GFX10-NEXT:    s_waitcnt_vscnt null, 0x07853; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc7854; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7855; GFX10-NEXT:    buffer_gl1_inv7856; GFX10-NEXT:    buffer_gl0_inv7857; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v37858; GFX10-NEXT:    v_mov_b32_e32 v3, v27859; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s47860; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s47861; GFX10-NEXT:    s_cbranch_execnz .LBB30_17862; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end7863; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s47864; GFX10-NEXT:    s_setpc_b64 s[30:31]7865;7866; GFX90A-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:7867; GFX90A:       ; %bb.0:7868; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7869; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v07870; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc7871; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v47872; GFX90A-NEXT:    flat_load_dword v3, v[0:1]7873; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v47874; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v47875; GFX90A-NEXT:    s_mov_b32 s4, 0xffff7876; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s47877; GFX90A-NEXT:    v_not_b32_e32 v5, v57878; GFX90A-NEXT:    s_mov_b64 s[4:5], 07879; GFX90A-NEXT:    v_max_f16_e32 v6, v2, v27880; GFX90A-NEXT:  .LBB30_1: ; %atomicrmw.start7881; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=17882; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7883; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, v4, v37884; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v27885; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v67886; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, v4, v27887; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v27888; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc7889; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7890; GFX90A-NEXT:    buffer_wbinvl17891; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v37892; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7893; GFX90A-NEXT:    v_mov_b32_e32 v3, v27894; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]7895; GFX90A-NEXT:    s_cbranch_execnz .LBB30_17896; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end7897; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]7898; GFX90A-NEXT:    s_setpc_b64 s[30:31]7899;7900; GFX908-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:7901; GFX908:       ; %bb.0:7902; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7903; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v07904; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc7905; GFX908-NEXT:    v_and_b32_e32 v0, -4, v47906; GFX908-NEXT:    flat_load_dword v3, v[0:1]7907; GFX908-NEXT:    v_and_b32_e32 v4, 3, v47908; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 3, v47909; GFX908-NEXT:    s_mov_b32 s4, 0xffff7910; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v4, s47911; GFX908-NEXT:    v_not_b32_e32 v5, v57912; GFX908-NEXT:    s_mov_b64 s[4:5], 07913; GFX908-NEXT:    v_max_f16_e32 v6, v2, v27914; GFX908-NEXT:  .LBB30_1: ; %atomicrmw.start7915; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=17916; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7917; GFX908-NEXT:    v_lshrrev_b32_e32 v2, v4, v37918; GFX908-NEXT:    v_max_f16_e32 v2, v2, v27919; GFX908-NEXT:    v_max_f16_e32 v2, v2, v67920; GFX908-NEXT:    v_lshlrev_b32_e32 v2, v4, v27921; GFX908-NEXT:    v_and_or_b32 v2, v3, v5, v27922; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc7923; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7924; GFX908-NEXT:    buffer_wbinvl17925; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v37926; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7927; GFX908-NEXT:    v_mov_b32_e32 v3, v27928; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]7929; GFX908-NEXT:    s_cbranch_execnz .LBB30_17930; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end7931; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]7932; GFX908-NEXT:    s_setpc_b64 s[30:31]7933;7934; GFX8-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:7935; GFX8:       ; %bb.0:7936; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7937; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0x7fe, v07938; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc7939; GFX8-NEXT:    v_and_b32_e32 v0, -4, v47940; GFX8-NEXT:    flat_load_dword v3, v[0:1]7941; GFX8-NEXT:    v_and_b32_e32 v4, 3, v47942; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 3, v47943; GFX8-NEXT:    s_mov_b32 s4, 0xffff7944; GFX8-NEXT:    v_lshlrev_b32_e64 v5, v4, s47945; GFX8-NEXT:    v_not_b32_e32 v5, v57946; GFX8-NEXT:    s_mov_b64 s[4:5], 07947; GFX8-NEXT:    v_max_f16_e32 v6, v2, v27948; GFX8-NEXT:  .LBB30_1: ; %atomicrmw.start7949; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=17950; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7951; GFX8-NEXT:    v_lshrrev_b32_e32 v2, v4, v37952; GFX8-NEXT:    v_max_f16_e32 v2, v2, v27953; GFX8-NEXT:    v_max_f16_e32 v2, v2, v67954; GFX8-NEXT:    v_and_b32_e32 v7, v3, v57955; GFX8-NEXT:    v_lshlrev_b32_e32 v2, v4, v27956; GFX8-NEXT:    v_or_b32_e32 v2, v7, v27957; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc7958; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7959; GFX8-NEXT:    buffer_wbinvl17960; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v37961; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7962; GFX8-NEXT:    v_mov_b32_e32 v3, v27963; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]7964; GFX8-NEXT:    s_cbranch_execnz .LBB30_17965; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end7966; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]7967; GFX8-NEXT:    s_setpc_b64 s[30:31]7968;7969; GFX7-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:7970; GFX7:       ; %bb.0:7971; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7972; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v07973; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc7974; GFX7-NEXT:    v_and_b32_e32 v0, -4, v47975; GFX7-NEXT:    flat_load_dword v3, v[0:1]7976; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v27977; GFX7-NEXT:    v_and_b32_e32 v4, 3, v47978; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v47979; GFX7-NEXT:    s_mov_b64 s[4:5], 07980; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v27981; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v47982; GFX7-NEXT:    v_not_b32_e32 v6, v27983; GFX7-NEXT:  .LBB30_1: ; %atomicrmw.start7984; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=17985; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7986; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v37987; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v27988; GFX7-NEXT:    v_and_b32_e32 v7, v3, v67989; GFX7-NEXT:    v_max_f32_e32 v2, v2, v57990; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v27991; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v27992; GFX7-NEXT:    v_or_b32_e32 v2, v7, v27993; GFX7-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc7994; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)7995; GFX7-NEXT:    buffer_wbinvl17996; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v37997; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7998; GFX7-NEXT:    v_mov_b32_e32 v3, v27999; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]8000; GFX7-NEXT:    s_cbranch_execnz .LBB30_18001; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end8002; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]8003; GFX7-NEXT:    s_setpc_b64 s[30:31]8004  %gep = getelementptr inbounds half, ptr %ptr, i64 10238005  %unused = atomicrmw fmax ptr %gep, half %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !08006  ret void8007}8008 8009define void @flat_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory(ptr %ptr, half %val) #0 {8010; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:8011; GFX12-TRUE16:       ; %bb.0:8012; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08013; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x08014; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x08015; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x08016; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x08017; GFX12-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v08018; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)8019; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, -1, v1, vcc_lo8020; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 08021; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v08022; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v08023; GFX12-TRUE16-NEXT:    flat_load_b32 v6, v[3:4]8024; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v08025; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l8026; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8027; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v5, v1, 0xffff8028; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l8029; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)8030; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v58031; GFX12-TRUE16-NEXT:  .LBB31_1: ; %atomicrmw.start8032; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18033; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08034; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v68035; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 08036; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8037; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.h, v5.l, v5.l8038; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v5.l, v0.h, v0.l8039; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8040; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v58041; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v58042; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x08043; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[3:4], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV8044; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08045; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV8046; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v68047; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v58048; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8049; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08050; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8051; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08052; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB31_18053; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8054; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08055; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08056; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]8057;8058; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:8059; GFX12-FAKE16:       ; %bb.0:8060; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08061; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x08062; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x08063; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x08064; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x08065; GFX12-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v08066; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)8067; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo8068; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v6, v2, v28069; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)8070; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v48071; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v48072; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 08073; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]8074; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v48075; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff8076; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8077; GFX12-FAKE16-NEXT:    v_not_b32_e32 v5, v58078; GFX12-FAKE16-NEXT:  .LBB31_1: ; %atomicrmw.start8079; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18080; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08081; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v38082; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8083; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v28084; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v68085; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8086; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v28087; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v28088; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8089; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v28090; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x08091; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV8092; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08093; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV8094; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v38095; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v28096; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8097; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08098; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8099; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08100; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB31_18101; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8102; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08103; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08104; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]8105;8106; GFX942-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:8107; GFX942:       ; %bb.0:8108; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8109; GFX942-NEXT:    s_movk_i32 s0, 0xf8008110; GFX942-NEXT:    s_mov_b32 s1, -18111; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]8112; GFX942-NEXT:    v_and_b32_e32 v0, -4, v48113; GFX942-NEXT:    v_mov_b32_e32 v1, v58114; GFX942-NEXT:    flat_load_dword v3, v[0:1]8115; GFX942-NEXT:    v_and_b32_e32 v4, 3, v48116; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v48117; GFX942-NEXT:    s_mov_b32 s0, 0xffff8118; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s08119; GFX942-NEXT:    v_not_b32_e32 v5, v58120; GFX942-NEXT:    s_mov_b64 s[0:1], 08121; GFX942-NEXT:    v_max_f16_e32 v6, v2, v28122; GFX942-NEXT:  .LBB31_1: ; %atomicrmw.start8123; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=18124; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8125; GFX942-NEXT:    v_lshrrev_b32_e32 v2, v4, v38126; GFX942-NEXT:    v_max_f16_e32 v2, v2, v28127; GFX942-NEXT:    v_max_f16_e32 v2, v2, v68128; GFX942-NEXT:    v_lshlrev_b32_e32 v2, v4, v28129; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v28130; GFX942-NEXT:    buffer_wbl2 sc18131; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc08132; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8133; GFX942-NEXT:    buffer_inv sc18134; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v38135; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]8136; GFX942-NEXT:    v_mov_b32_e32 v3, v28137; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]8138; GFX942-NEXT:    s_cbranch_execnz .LBB31_18139; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end8140; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]8141; GFX942-NEXT:    s_setpc_b64 s[30:31]8142;8143; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:8144; GFX11-TRUE16:       ; %bb.0:8145; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8146; GFX11-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v08147; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8148; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, -1, v1, vcc_lo8149; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 08150; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v08151; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v08152; GFX11-TRUE16-NEXT:    flat_load_b32 v6, v[3:4]8153; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v08154; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l8155; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8156; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v5, v1, 0xffff8157; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l8158; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)8159; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v58160; GFX11-TRUE16-NEXT:  .LBB31_1: ; %atomicrmw.start8161; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18162; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8163; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v68164; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 08165; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8166; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.h, v5.l, v5.l8167; GFX11-TRUE16-NEXT:    v_max_f16_e32 v5.l, v0.h, v0.l8168; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8169; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v58170; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v58171; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x08172; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[3:4], v[5:6] glc8173; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8174; GFX11-TRUE16-NEXT:    buffer_gl1_inv8175; GFX11-TRUE16-NEXT:    buffer_gl0_inv8176; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v68177; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v58178; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08179; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8180; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08181; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB31_18182; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8183; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08184; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]8185;8186; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:8187; GFX11-FAKE16:       ; %bb.0:8188; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8189; GFX11-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v08190; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)8191; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo8192; GFX11-FAKE16-NEXT:    v_max_f16_e32 v6, v2, v28193; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v48194; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v48195; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 08196; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]8197; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v48198; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8199; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff8200; GFX11-FAKE16-NEXT:    v_not_b32_e32 v5, v58201; GFX11-FAKE16-NEXT:  .LBB31_1: ; %atomicrmw.start8202; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18203; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8204; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v38205; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8206; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v28207; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v68208; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8209; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v28210; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v28211; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8212; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v28213; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x08214; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] glc8215; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8216; GFX11-FAKE16-NEXT:    buffer_gl1_inv8217; GFX11-FAKE16-NEXT:    buffer_gl0_inv8218; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v38219; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v28220; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08221; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8222; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08223; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB31_18224; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8225; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08226; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]8227;8228; GFX10-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:8229; GFX10:       ; %bb.0:8230; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8231; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v08232; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo8233; GFX10-NEXT:    v_max_f16_e32 v6, v2, v28234; GFX10-NEXT:    v_and_b32_e32 v0, -4, v48235; GFX10-NEXT:    v_and_b32_e32 v4, 3, v48236; GFX10-NEXT:    s_mov_b32 s4, 08237; GFX10-NEXT:    flat_load_dword v3, v[0:1]8238; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 3, v48239; GFX10-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff8240; GFX10-NEXT:    v_not_b32_e32 v5, v58241; GFX10-NEXT:  .LBB31_1: ; %atomicrmw.start8242; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=18243; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8244; GFX10-NEXT:    v_lshrrev_b32_e32 v2, v4, v38245; GFX10-NEXT:    v_max_f16_e32 v2, v2, v28246; GFX10-NEXT:    v_max_f16_e32 v2, v2, v68247; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_08248; GFX10-NEXT:    v_and_or_b32 v2, v3, v5, v28249; GFX10-NEXT:    s_waitcnt_vscnt null, 0x08250; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc8251; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8252; GFX10-NEXT:    buffer_gl1_inv8253; GFX10-NEXT:    buffer_gl0_inv8254; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v38255; GFX10-NEXT:    v_mov_b32_e32 v3, v28256; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s48257; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s48258; GFX10-NEXT:    s_cbranch_execnz .LBB31_18259; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end8260; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s48261; GFX10-NEXT:    s_setpc_b64 s[30:31]8262;8263; GFX90A-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:8264; GFX90A:       ; %bb.0:8265; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8266; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v08267; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc8268; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v48269; GFX90A-NEXT:    flat_load_dword v3, v[0:1]8270; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v48271; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v48272; GFX90A-NEXT:    s_mov_b32 s4, 0xffff8273; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s48274; GFX90A-NEXT:    v_not_b32_e32 v5, v58275; GFX90A-NEXT:    s_mov_b64 s[4:5], 08276; GFX90A-NEXT:    v_max_f16_e32 v6, v2, v28277; GFX90A-NEXT:  .LBB31_1: ; %atomicrmw.start8278; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=18279; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8280; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, v4, v38281; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v28282; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v68283; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, v4, v28284; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v28285; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc8286; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8287; GFX90A-NEXT:    buffer_wbinvl18288; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v38289; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8290; GFX90A-NEXT:    v_mov_b32_e32 v3, v28291; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]8292; GFX90A-NEXT:    s_cbranch_execnz .LBB31_18293; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end8294; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]8295; GFX90A-NEXT:    s_setpc_b64 s[30:31]8296;8297; GFX908-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:8298; GFX908:       ; %bb.0:8299; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8300; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v08301; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc8302; GFX908-NEXT:    v_and_b32_e32 v0, -4, v48303; GFX908-NEXT:    flat_load_dword v3, v[0:1]8304; GFX908-NEXT:    v_and_b32_e32 v4, 3, v48305; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 3, v48306; GFX908-NEXT:    s_mov_b32 s4, 0xffff8307; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v4, s48308; GFX908-NEXT:    v_not_b32_e32 v5, v58309; GFX908-NEXT:    s_mov_b64 s[4:5], 08310; GFX908-NEXT:    v_max_f16_e32 v6, v2, v28311; GFX908-NEXT:  .LBB31_1: ; %atomicrmw.start8312; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=18313; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8314; GFX908-NEXT:    v_lshrrev_b32_e32 v2, v4, v38315; GFX908-NEXT:    v_max_f16_e32 v2, v2, v28316; GFX908-NEXT:    v_max_f16_e32 v2, v2, v68317; GFX908-NEXT:    v_lshlrev_b32_e32 v2, v4, v28318; GFX908-NEXT:    v_and_or_b32 v2, v3, v5, v28319; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc8320; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8321; GFX908-NEXT:    buffer_wbinvl18322; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v38323; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8324; GFX908-NEXT:    v_mov_b32_e32 v3, v28325; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]8326; GFX908-NEXT:    s_cbranch_execnz .LBB31_18327; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end8328; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]8329; GFX908-NEXT:    s_setpc_b64 s[30:31]8330;8331; GFX8-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:8332; GFX8:       ; %bb.0:8333; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8334; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0xfffff800, v08335; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc8336; GFX8-NEXT:    v_and_b32_e32 v0, -4, v48337; GFX8-NEXT:    flat_load_dword v3, v[0:1]8338; GFX8-NEXT:    v_and_b32_e32 v4, 3, v48339; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 3, v48340; GFX8-NEXT:    s_mov_b32 s4, 0xffff8341; GFX8-NEXT:    v_lshlrev_b32_e64 v5, v4, s48342; GFX8-NEXT:    v_not_b32_e32 v5, v58343; GFX8-NEXT:    s_mov_b64 s[4:5], 08344; GFX8-NEXT:    v_max_f16_e32 v6, v2, v28345; GFX8-NEXT:  .LBB31_1: ; %atomicrmw.start8346; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=18347; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8348; GFX8-NEXT:    v_lshrrev_b32_e32 v2, v4, v38349; GFX8-NEXT:    v_max_f16_e32 v2, v2, v28350; GFX8-NEXT:    v_max_f16_e32 v2, v2, v68351; GFX8-NEXT:    v_and_b32_e32 v7, v3, v58352; GFX8-NEXT:    v_lshlrev_b32_e32 v2, v4, v28353; GFX8-NEXT:    v_or_b32_e32 v2, v7, v28354; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc8355; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8356; GFX8-NEXT:    buffer_wbinvl18357; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v38358; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8359; GFX8-NEXT:    v_mov_b32_e32 v3, v28360; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]8361; GFX8-NEXT:    s_cbranch_execnz .LBB31_18362; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end8363; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]8364; GFX8-NEXT:    s_setpc_b64 s[30:31]8365;8366; GFX7-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b_neg__amdgpu_no_fine_grained_memory:8367; GFX7:       ; %bb.0:8368; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8369; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v08370; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc8371; GFX7-NEXT:    v_and_b32_e32 v0, -4, v48372; GFX7-NEXT:    flat_load_dword v3, v[0:1]8373; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v28374; GFX7-NEXT:    v_and_b32_e32 v4, 3, v48375; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v48376; GFX7-NEXT:    s_mov_b64 s[4:5], 08377; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v28378; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v48379; GFX7-NEXT:    v_not_b32_e32 v6, v28380; GFX7-NEXT:  .LBB31_1: ; %atomicrmw.start8381; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=18382; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8383; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v38384; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v28385; GFX7-NEXT:    v_and_b32_e32 v7, v3, v68386; GFX7-NEXT:    v_max_f32_e32 v2, v2, v58387; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v28388; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v28389; GFX7-NEXT:    v_or_b32_e32 v2, v7, v28390; GFX7-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc8391; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8392; GFX7-NEXT:    buffer_wbinvl18393; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v38394; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8395; GFX7-NEXT:    v_mov_b32_e32 v3, v28396; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]8397; GFX7-NEXT:    s_cbranch_execnz .LBB31_18398; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end8399; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]8400; GFX7-NEXT:    s_setpc_b64 s[30:31]8401  %gep = getelementptr inbounds half, ptr %ptr, i64 -10248402  %unused = atomicrmw fmax ptr %gep, half %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !08403  ret void8404}8405 8406define half @flat_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory(ptr %ptr, half %val) #0 {8407; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:8408; GFX12-TRUE16:       ; %bb.0:8409; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08410; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x08411; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x08412; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x08413; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x08414; GFX12-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:20468415; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v2.l, v2.l, v2.l8416; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 08417; GFX12-TRUE16-NEXT:  .LBB32_1: ; %atomicrmw.start8418; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18419; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08420; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v38421; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 08422; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8423; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v2.h, v4.l, v4.l8424; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v3.l, v2.h, v2.l8425; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8426; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v38427; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x08428; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV8429; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08430; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV8431; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48432; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8433; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08434; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8435; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08436; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB32_18437; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8438; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08439; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v3.l8440; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08441; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]8442;8443; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:8444; GFX12-FAKE16:       ; %bb.0:8445; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08446; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x08447; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x08448; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x08449; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x08450; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:20468451; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v28452; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 08453; GFX12-FAKE16-NEXT:  .LBB32_1: ; %atomicrmw.start8454; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18455; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08456; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v38457; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8458; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v3, v4, v48459; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v3, v3, v28460; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8461; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v38462; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v38463; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x08464; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV8465; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08466; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV8467; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48468; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8469; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08470; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8471; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08472; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB32_18473; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8474; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08475; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v38476; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08477; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]8478;8479; GFX942-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:8480; GFX942:       ; %bb.0:8481; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8482; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:20468483; GFX942-NEXT:    s_mov_b64 s[0:1], 08484; GFX942-NEXT:    v_max_f16_e32 v4, v2, v28485; GFX942-NEXT:    s_mov_b32 s2, 0xffff00008486; GFX942-NEXT:  .LBB32_1: ; %atomicrmw.start8487; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=18488; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8489; GFX942-NEXT:    v_max_f16_e32 v2, v3, v38490; GFX942-NEXT:    v_max_f16_e32 v2, v2, v48491; GFX942-NEXT:    v_and_or_b32 v2, v3, s2, v28492; GFX942-NEXT:    buffer_wbl2 sc18493; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2046 sc08494; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8495; GFX942-NEXT:    buffer_inv sc18496; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v38497; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]8498; GFX942-NEXT:    v_mov_b32_e32 v3, v28499; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]8500; GFX942-NEXT:    s_cbranch_execnz .LBB32_18501; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end8502; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]8503; GFX942-NEXT:    v_mov_b32_e32 v0, v28504; GFX942-NEXT:    s_setpc_b64 s[30:31]8505;8506; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:8507; GFX11-TRUE16:       ; %bb.0:8508; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8509; GFX11-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:20468510; GFX11-TRUE16-NEXT:    v_max_f16_e32 v2.l, v2.l, v2.l8511; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 08512; GFX11-TRUE16-NEXT:  .LBB32_1: ; %atomicrmw.start8513; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18514; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8515; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v38516; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 08517; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8518; GFX11-TRUE16-NEXT:    v_max_f16_e32 v2.h, v4.l, v4.l8519; GFX11-TRUE16-NEXT:    v_max_f16_e32 v3.l, v2.h, v2.l8520; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8521; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v38522; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x08523; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 glc8524; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8525; GFX11-TRUE16-NEXT:    buffer_gl1_inv8526; GFX11-TRUE16-NEXT:    buffer_gl0_inv8527; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48528; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08529; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8530; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08531; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB32_18532; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8533; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08534; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v3.l8535; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]8536;8537; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:8538; GFX11-FAKE16:       ; %bb.0:8539; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8540; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:20468541; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v28542; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 08543; GFX11-FAKE16-NEXT:  .LBB32_1: ; %atomicrmw.start8544; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18545; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8546; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v38547; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8548; GFX11-FAKE16-NEXT:    v_max_f16_e32 v3, v4, v48549; GFX11-FAKE16-NEXT:    v_max_f16_e32 v3, v3, v28550; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8551; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v38552; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v38553; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x08554; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 glc8555; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8556; GFX11-FAKE16-NEXT:    buffer_gl1_inv8557; GFX11-FAKE16-NEXT:    buffer_gl0_inv8558; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48559; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08560; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8561; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08562; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB32_18563; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8564; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08565; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v38566; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]8567;8568; GFX10-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:8569; GFX10:       ; %bb.0:8570; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8571; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v08572; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, 0, v1, vcc_lo8573; GFX10-NEXT:    v_max_f16_e32 v1, v2, v28574; GFX10-NEXT:    s_mov_b32 s4, 08575; GFX10-NEXT:    flat_load_dword v0, v[3:4]8576; GFX10-NEXT:  .LBB32_1: ; %atomicrmw.start8577; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=18578; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8579; GFX10-NEXT:    v_mov_b32_e32 v6, v08580; GFX10-NEXT:    v_max_f16_e32 v0, v6, v68581; GFX10-NEXT:    v_max_f16_e32 v0, v0, v18582; GFX10-NEXT:    v_and_b32_e32 v0, 0xffff, v08583; GFX10-NEXT:    v_and_or_b32 v5, 0xffff0000, v6, v08584; GFX10-NEXT:    s_waitcnt_vscnt null, 0x08585; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc8586; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8587; GFX10-NEXT:    buffer_gl1_inv8588; GFX10-NEXT:    buffer_gl0_inv8589; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v68590; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s48591; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s48592; GFX10-NEXT:    s_cbranch_execnz .LBB32_18593; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end8594; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s48595; GFX10-NEXT:    s_setpc_b64 s[30:31]8596;8597; GFX90A-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:8598; GFX90A:       ; %bb.0:8599; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8600; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:20468601; GFX90A-NEXT:    s_mov_b64 s[4:5], 08602; GFX90A-NEXT:    v_max_f16_e32 v4, v2, v28603; GFX90A-NEXT:    s_mov_b32 s6, 0xffff00008604; GFX90A-NEXT:  .LBB32_1: ; %atomicrmw.start8605; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=18606; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8607; GFX90A-NEXT:    v_max_f16_e32 v2, v3, v38608; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v48609; GFX90A-NEXT:    v_and_or_b32 v2, v3, s6, v28610; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2046 glc8611; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8612; GFX90A-NEXT:    buffer_wbinvl18613; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v38614; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8615; GFX90A-NEXT:    v_mov_b32_e32 v3, v28616; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]8617; GFX90A-NEXT:    s_cbranch_execnz .LBB32_18618; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end8619; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]8620; GFX90A-NEXT:    v_mov_b32_e32 v0, v28621; GFX90A-NEXT:    s_setpc_b64 s[30:31]8622;8623; GFX908-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:8624; GFX908:       ; %bb.0:8625; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8626; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:20468627; GFX908-NEXT:    s_mov_b64 s[4:5], 08628; GFX908-NEXT:    v_max_f16_e32 v2, v2, v28629; GFX908-NEXT:    s_mov_b32 s6, 0xffff00008630; GFX908-NEXT:  .LBB32_1: ; %atomicrmw.start8631; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=18632; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8633; GFX908-NEXT:    v_mov_b32_e32 v4, v38634; GFX908-NEXT:    v_max_f16_e32 v3, v4, v48635; GFX908-NEXT:    v_max_f16_e32 v3, v3, v28636; GFX908-NEXT:    v_and_or_b32 v3, v4, s6, v38637; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2046 glc8638; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8639; GFX908-NEXT:    buffer_wbinvl18640; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v48641; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8642; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]8643; GFX908-NEXT:    s_cbranch_execnz .LBB32_18644; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end8645; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]8646; GFX908-NEXT:    v_mov_b32_e32 v0, v38647; GFX908-NEXT:    s_setpc_b64 s[30:31]8648;8649; GFX8-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:8650; GFX8:       ; %bb.0:8651; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8652; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v08653; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc8654; GFX8-NEXT:    flat_load_dword v0, v[3:4]8655; GFX8-NEXT:    s_mov_b64 s[4:5], 08656; GFX8-NEXT:    v_max_f16_e32 v1, v2, v28657; GFX8-NEXT:  .LBB32_1: ; %atomicrmw.start8658; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=18659; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8660; GFX8-NEXT:    v_mov_b32_e32 v6, v08661; GFX8-NEXT:    v_max_f16_e32 v0, v6, v68662; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v68663; GFX8-NEXT:    v_max_f16_e32 v0, v0, v18664; GFX8-NEXT:    v_or_b32_e32 v5, v2, v08665; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc8666; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8667; GFX8-NEXT:    buffer_wbinvl18668; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v68669; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8670; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]8671; GFX8-NEXT:    s_cbranch_execnz .LBB32_18672; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end8673; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]8674; GFX8-NEXT:    s_setpc_b64 s[30:31]8675;8676; GFX7-LABEL: flat_agent_atomic_fmax_ret_f16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:8677; GFX7:       ; %bb.0:8678; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8679; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fe, v08680; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc8681; GFX7-NEXT:    flat_load_dword v3, v[0:1]8682; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v28683; GFX7-NEXT:    s_mov_b64 s[4:5], 08684; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v28685; GFX7-NEXT:  .LBB32_1: ; %atomicrmw.start8686; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=18687; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8688; GFX7-NEXT:    v_mov_b32_e32 v4, v38689; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v48690; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v48691; GFX7-NEXT:    v_max_f32_e32 v3, v3, v28692; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v38693; GFX7-NEXT:    v_or_b32_e32 v3, v5, v38694; GFX7-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc8695; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8696; GFX7-NEXT:    buffer_wbinvl18697; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v48698; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8699; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]8700; GFX7-NEXT:    s_cbranch_execnz .LBB32_18701; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end8702; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]8703; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v38704; GFX7-NEXT:    s_setpc_b64 s[30:31]8705  %gep = getelementptr inbounds half, ptr %ptr, i64 10238706  %result = atomicrmw fmax ptr %gep, half %val syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !08707  ret half %result8708}8709 8710define void @flat_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory(ptr %ptr, half %val) #0 {8711; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:8712; GFX12-TRUE16:       ; %bb.0:8713; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08714; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x08715; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x08716; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x08717; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x08718; GFX12-TRUE16-NEXT:    flat_load_b32 v4, v[0:1] offset:20468719; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v2.l, v2.l, v2.l8720; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 08721; GFX12-TRUE16-NEXT:  .LBB33_1: ; %atomicrmw.start8722; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18723; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08724; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v2.h, v4.l, v4.l8725; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 08726; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8727; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v3.l, v2.h, v2.l8728; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v38729; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x08730; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV8731; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08732; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV8733; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48734; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v38735; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8736; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08737; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8738; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08739; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB33_18740; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8741; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08742; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08743; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]8744;8745; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:8746; GFX12-FAKE16:       ; %bb.0:8747; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08748; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x08749; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x08750; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x08751; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x08752; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:20468753; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v4, v2, v28754; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 08755; GFX12-FAKE16-NEXT:  .LBB33_1: ; %atomicrmw.start8756; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18757; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08758; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v3, v38759; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8760; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v48761; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v28762; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8763; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v3, v28764; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x08765; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV8766; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08767; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV8768; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v38769; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v28770; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8771; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08772; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8773; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08774; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB33_18775; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8776; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08777; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08778; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]8779;8780; GFX942-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:8781; GFX942:       ; %bb.0:8782; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8783; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:20468784; GFX942-NEXT:    s_mov_b64 s[0:1], 08785; GFX942-NEXT:    v_max_f16_e32 v4, v2, v28786; GFX942-NEXT:    s_mov_b32 s2, 0xffff00008787; GFX942-NEXT:  .LBB33_1: ; %atomicrmw.start8788; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=18789; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8790; GFX942-NEXT:    v_max_f16_e32 v2, v3, v38791; GFX942-NEXT:    v_max_f16_e32 v2, v2, v48792; GFX942-NEXT:    v_and_or_b32 v2, v3, s2, v28793; GFX942-NEXT:    buffer_wbl2 sc18794; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2046 sc08795; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8796; GFX942-NEXT:    buffer_inv sc18797; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v38798; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]8799; GFX942-NEXT:    v_mov_b32_e32 v3, v28800; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]8801; GFX942-NEXT:    s_cbranch_execnz .LBB33_18802; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end8803; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]8804; GFX942-NEXT:    s_setpc_b64 s[30:31]8805;8806; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:8807; GFX11-TRUE16:       ; %bb.0:8808; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8809; GFX11-TRUE16-NEXT:    flat_load_b32 v4, v[0:1] offset:20468810; GFX11-TRUE16-NEXT:    v_max_f16_e32 v2.l, v2.l, v2.l8811; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 08812; GFX11-TRUE16-NEXT:  .LBB33_1: ; %atomicrmw.start8813; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18814; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8815; GFX11-TRUE16-NEXT:    v_max_f16_e32 v2.h, v4.l, v4.l8816; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 08817; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8818; GFX11-TRUE16-NEXT:    v_max_f16_e32 v3.l, v2.h, v2.l8819; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v38820; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x08821; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 glc8822; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8823; GFX11-TRUE16-NEXT:    buffer_gl1_inv8824; GFX11-TRUE16-NEXT:    buffer_gl0_inv8825; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v48826; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v38827; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08828; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8829; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08830; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB33_18831; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8832; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08833; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]8834;8835; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:8836; GFX11-FAKE16:       ; %bb.0:8837; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8838; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:20468839; GFX11-FAKE16-NEXT:    v_max_f16_e32 v4, v2, v28840; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 08841; GFX11-FAKE16-NEXT:  .LBB33_1: ; %atomicrmw.start8842; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18843; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8844; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v3, v38845; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8846; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v48847; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v28848; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8849; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v3, v28850; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x08851; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2046 glc8852; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8853; GFX11-FAKE16-NEXT:    buffer_gl1_inv8854; GFX11-FAKE16-NEXT:    buffer_gl0_inv8855; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v38856; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v28857; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s08858; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8859; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08860; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB33_18861; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8862; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08863; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]8864;8865; GFX10-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:8866; GFX10:       ; %bb.0:8867; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8868; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fe, v08869; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo8870; GFX10-NEXT:    v_max_f16_e32 v4, v2, v28871; GFX10-NEXT:    s_mov_b32 s4, 08872; GFX10-NEXT:    flat_load_dword v3, v[0:1]8873; GFX10-NEXT:  .LBB33_1: ; %atomicrmw.start8874; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=18875; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8876; GFX10-NEXT:    v_max_f16_e32 v2, v3, v38877; GFX10-NEXT:    v_max_f16_e32 v2, v2, v48878; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff, v28879; GFX10-NEXT:    v_and_or_b32 v2, 0xffff0000, v3, v28880; GFX10-NEXT:    s_waitcnt_vscnt null, 0x08881; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc8882; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8883; GFX10-NEXT:    buffer_gl1_inv8884; GFX10-NEXT:    buffer_gl0_inv8885; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v38886; GFX10-NEXT:    v_mov_b32_e32 v3, v28887; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s48888; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s48889; GFX10-NEXT:    s_cbranch_execnz .LBB33_18890; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end8891; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s48892; GFX10-NEXT:    s_setpc_b64 s[30:31]8893;8894; GFX90A-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:8895; GFX90A:       ; %bb.0:8896; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8897; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:20468898; GFX90A-NEXT:    s_mov_b64 s[4:5], 08899; GFX90A-NEXT:    v_max_f16_e32 v4, v2, v28900; GFX90A-NEXT:    s_mov_b32 s6, 0xffff00008901; GFX90A-NEXT:  .LBB33_1: ; %atomicrmw.start8902; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=18903; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8904; GFX90A-NEXT:    v_max_f16_e32 v2, v3, v38905; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v48906; GFX90A-NEXT:    v_and_or_b32 v2, v3, s6, v28907; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2046 glc8908; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8909; GFX90A-NEXT:    buffer_wbinvl18910; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v38911; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8912; GFX90A-NEXT:    v_mov_b32_e32 v3, v28913; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]8914; GFX90A-NEXT:    s_cbranch_execnz .LBB33_18915; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end8916; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]8917; GFX90A-NEXT:    s_setpc_b64 s[30:31]8918;8919; GFX908-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:8920; GFX908:       ; %bb.0:8921; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8922; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:20468923; GFX908-NEXT:    s_mov_b64 s[4:5], 08924; GFX908-NEXT:    v_max_f16_e32 v4, v2, v28925; GFX908-NEXT:    s_mov_b32 s6, 0xffff00008926; GFX908-NEXT:  .LBB33_1: ; %atomicrmw.start8927; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=18928; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8929; GFX908-NEXT:    v_max_f16_e32 v2, v3, v38930; GFX908-NEXT:    v_max_f16_e32 v2, v2, v48931; GFX908-NEXT:    v_and_or_b32 v2, v3, s6, v28932; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2046 glc8933; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8934; GFX908-NEXT:    buffer_wbinvl18935; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v38936; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8937; GFX908-NEXT:    v_mov_b32_e32 v3, v28938; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]8939; GFX908-NEXT:    s_cbranch_execnz .LBB33_18940; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end8941; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]8942; GFX908-NEXT:    s_setpc_b64 s[30:31]8943;8944; GFX8-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:8945; GFX8:       ; %bb.0:8946; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8947; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fe, v08948; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc8949; GFX8-NEXT:    flat_load_dword v3, v[0:1]8950; GFX8-NEXT:    s_mov_b64 s[4:5], 08951; GFX8-NEXT:    v_max_f16_e32 v4, v2, v28952; GFX8-NEXT:  .LBB33_1: ; %atomicrmw.start8953; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=18954; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8955; GFX8-NEXT:    v_max_f16_e32 v2, v3, v38956; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38957; GFX8-NEXT:    v_max_f16_e32 v2, v2, v48958; GFX8-NEXT:    v_or_b32_e32 v2, v5, v28959; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc8960; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8961; GFX8-NEXT:    buffer_wbinvl18962; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v38963; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8964; GFX8-NEXT:    v_mov_b32_e32 v3, v28965; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]8966; GFX8-NEXT:    s_cbranch_execnz .LBB33_18967; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end8968; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]8969; GFX8-NEXT:    s_setpc_b64 s[30:31]8970;8971; GFX7-LABEL: flat_agent_atomic_fmax_noret_f16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:8972; GFX7:       ; %bb.0:8973; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8974; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fe, v08975; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc8976; GFX7-NEXT:    flat_load_dword v3, v[0:1]8977; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v28978; GFX7-NEXT:    s_mov_b64 s[4:5], 08979; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v28980; GFX7-NEXT:  .LBB33_1: ; %atomicrmw.start8981; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=18982; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8983; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v38984; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38985; GFX7-NEXT:    v_max_f32_e32 v2, v2, v48986; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v28987; GFX7-NEXT:    v_or_b32_e32 v2, v5, v28988; GFX7-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc8989; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)8990; GFX7-NEXT:    buffer_wbinvl18991; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v38992; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8993; GFX7-NEXT:    v_mov_b32_e32 v3, v28994; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]8995; GFX7-NEXT:    s_cbranch_execnz .LBB33_18996; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end8997; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]8998; GFX7-NEXT:    s_setpc_b64 s[30:31]8999  %gep = getelementptr inbounds half, ptr %ptr, i64 10239000  %unused = atomicrmw fmax ptr %gep, half %val syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !09001  ret void9002}9003 9004define half @flat_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, half %val) #0 {9005; GFX12-TRUE16-LABEL: flat_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:9006; GFX12-TRUE16:       ; %bb.0:9007; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09008; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x09009; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x09010; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x09011; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x09012; GFX12-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fe, v09013; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)9014; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, 0, v1, vcc_lo9015; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 09016; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v09017; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v09018; GFX12-TRUE16-NEXT:    flat_load_b32 v5, v[3:4]9019; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v09020; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l9021; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)9022; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v6, v1, 0xffff9023; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l9024; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)9025; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v69026; GFX12-TRUE16-NEXT:  .LBB34_1: ; %atomicrmw.start9027; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19028; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09029; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v59030; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)9031; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v69032; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 09033; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.h, v5.l, v5.l9034; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9035; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v5.l, v0.h, v0.l9036; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v59037; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9038; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v59039; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS9040; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x09041; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[3:4], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_SYS9042; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09043; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS9044; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69045; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9046; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s09047; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9048; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09049; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB34_19050; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end9051; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09052; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v59053; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x09054; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]9055;9056; GFX12-FAKE16-LABEL: flat_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:9057; GFX12-FAKE16:       ; %bb.0:9058; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09059; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x09060; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x09061; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x09062; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x09063; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v09064; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)9065; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo9066; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v29067; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)9068; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v39069; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v39070; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 09071; GFX12-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]9072; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39073; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9074; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9075; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v49076; GFX12-FAKE16-NEXT:  .LBB34_1: ; %atomicrmw.start9077; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19078; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09079; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v59080; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9081; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69082; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v5, v5, v59083; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9084; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v5, v5, v29085; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v59086; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9087; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v59088; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v59089; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS9090; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x09091; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_SYS9092; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09093; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS9094; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69095; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9096; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s09097; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9098; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09099; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB34_19100; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end9101; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09102; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59103; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x09104; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]9105;9106; GFX942-LABEL: flat_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:9107; GFX942:       ; %bb.0:9108; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9109; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe9110; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]9111; GFX942-NEXT:    v_and_b32_e32 v0, -4, v49112; GFX942-NEXT:    v_mov_b32_e32 v1, v59113; GFX942-NEXT:    flat_load_dword v3, v[0:1]9114; GFX942-NEXT:    v_and_b32_e32 v4, 3, v49115; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v49116; GFX942-NEXT:    s_mov_b32 s0, 0xffff9117; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s09118; GFX942-NEXT:    v_not_b32_e32 v5, v59119; GFX942-NEXT:    s_mov_b64 s[0:1], 09120; GFX942-NEXT:    v_max_f16_e32 v6, v2, v29121; GFX942-NEXT:  .LBB34_1: ; %atomicrmw.start9122; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=19123; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9124; GFX942-NEXT:    v_lshrrev_b32_e32 v2, v4, v39125; GFX942-NEXT:    v_max_f16_e32 v2, v2, v29126; GFX942-NEXT:    v_max_f16_e32 v2, v2, v69127; GFX942-NEXT:    v_lshlrev_b32_e32 v2, v4, v29128; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v29129; GFX942-NEXT:    buffer_wbl2 sc0 sc19130; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc0 sc19131; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9132; GFX942-NEXT:    buffer_inv sc0 sc19133; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v39134; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]9135; GFX942-NEXT:    v_mov_b32_e32 v3, v29136; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]9137; GFX942-NEXT:    s_cbranch_execnz .LBB34_19138; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end9139; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]9140; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v4, v29141; GFX942-NEXT:    s_setpc_b64 s[30:31]9142;9143; GFX11-TRUE16-LABEL: flat_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:9144; GFX11-TRUE16:       ; %bb.0:9145; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9146; GFX11-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fe, v09147; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9148; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, 0, v1, vcc_lo9149; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 09150; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v09151; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v09152; GFX11-TRUE16-NEXT:    flat_load_b32 v5, v[3:4]9153; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v09154; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l9155; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)9156; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v6, v1, 0xffff9157; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l9158; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)9159; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v69160; GFX11-TRUE16-NEXT:  .LBB34_1: ; %atomicrmw.start9161; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19162; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9163; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v59164; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)9165; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v69166; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 09167; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.h, v5.l, v5.l9168; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9169; GFX11-TRUE16-NEXT:    v_max_f16_e32 v5.l, v0.h, v0.l9170; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v59171; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9172; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v59173; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x09174; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[3:4], v[5:6] glc9175; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9176; GFX11-TRUE16-NEXT:    buffer_gl1_inv9177; GFX11-TRUE16-NEXT:    buffer_gl0_inv9178; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69179; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s09180; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9181; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09182; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB34_19183; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end9184; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09185; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v59186; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]9187;9188; GFX11-FAKE16-LABEL: flat_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:9189; GFX11-FAKE16:       ; %bb.0:9190; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9191; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v09192; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)9193; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo9194; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v29195; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v39196; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v39197; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 09198; GFX11-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]9199; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39200; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9201; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9202; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v49203; GFX11-FAKE16-NEXT:  .LBB34_1: ; %atomicrmw.start9204; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19205; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9206; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v59207; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9208; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69209; GFX11-FAKE16-NEXT:    v_max_f16_e32 v5, v5, v59210; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9211; GFX11-FAKE16-NEXT:    v_max_f16_e32 v5, v5, v29212; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff, v59213; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9214; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v59215; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v59216; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x09217; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc9218; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9219; GFX11-FAKE16-NEXT:    buffer_gl1_inv9220; GFX11-FAKE16-NEXT:    buffer_gl0_inv9221; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69222; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s09223; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9224; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09225; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB34_19226; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end9227; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09228; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59229; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]9230;9231; GFX10-LABEL: flat_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:9232; GFX10:       ; %bb.0:9233; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9234; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v09235; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo9236; GFX10-NEXT:    v_max_f16_e32 v2, v2, v29237; GFX10-NEXT:    v_and_b32_e32 v0, -4, v39238; GFX10-NEXT:    v_and_b32_e32 v3, 3, v39239; GFX10-NEXT:    s_mov_b32 s4, 09240; GFX10-NEXT:    flat_load_dword v5, v[0:1]9241; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v39242; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9243; GFX10-NEXT:    v_not_b32_e32 v4, v49244; GFX10-NEXT:  .LBB34_1: ; %atomicrmw.start9245; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=19246; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9247; GFX10-NEXT:    v_mov_b32_e32 v6, v59248; GFX10-NEXT:    v_lshrrev_b32_e32 v5, v3, v69249; GFX10-NEXT:    v_max_f16_e32 v5, v5, v59250; GFX10-NEXT:    v_max_f16_e32 v5, v5, v29251; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_09252; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v59253; GFX10-NEXT:    s_waitcnt_vscnt null, 0x09254; GFX10-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc9255; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9256; GFX10-NEXT:    buffer_gl1_inv9257; GFX10-NEXT:    buffer_gl0_inv9258; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69259; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s49260; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s49261; GFX10-NEXT:    s_cbranch_execnz .LBB34_19262; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end9263; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s49264; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v59265; GFX10-NEXT:    s_setpc_b64 s[30:31]9266;9267; GFX90A-LABEL: flat_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:9268; GFX90A:       ; %bb.0:9269; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9270; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v09271; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc9272; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v49273; GFX90A-NEXT:    flat_load_dword v3, v[0:1]9274; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v49275; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v49276; GFX90A-NEXT:    s_mov_b32 s4, 0xffff9277; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s49278; GFX90A-NEXT:    v_not_b32_e32 v5, v59279; GFX90A-NEXT:    s_mov_b64 s[4:5], 09280; GFX90A-NEXT:    v_max_f16_e32 v6, v2, v29281; GFX90A-NEXT:  .LBB34_1: ; %atomicrmw.start9282; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=19283; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9284; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, v4, v39285; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v29286; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v69287; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, v4, v29288; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v29289; GFX90A-NEXT:    buffer_wbl29290; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc9291; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9292; GFX90A-NEXT:    buffer_invl29293; GFX90A-NEXT:    buffer_wbinvl19294; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v39295; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9296; GFX90A-NEXT:    v_mov_b32_e32 v3, v29297; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]9298; GFX90A-NEXT:    s_cbranch_execnz .LBB34_19299; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end9300; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]9301; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v4, v29302; GFX90A-NEXT:    s_setpc_b64 s[30:31]9303;9304; GFX908-LABEL: flat_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:9305; GFX908:       ; %bb.0:9306; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9307; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v09308; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc9309; GFX908-NEXT:    v_and_b32_e32 v0, -4, v39310; GFX908-NEXT:    flat_load_dword v5, v[0:1]9311; GFX908-NEXT:    v_and_b32_e32 v3, 3, v39312; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v39313; GFX908-NEXT:    s_mov_b32 s4, 0xffff9314; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s49315; GFX908-NEXT:    v_not_b32_e32 v4, v49316; GFX908-NEXT:    s_mov_b64 s[4:5], 09317; GFX908-NEXT:    v_max_f16_e32 v2, v2, v29318; GFX908-NEXT:  .LBB34_1: ; %atomicrmw.start9319; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=19320; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9321; GFX908-NEXT:    v_mov_b32_e32 v6, v59322; GFX908-NEXT:    v_lshrrev_b32_e32 v5, v3, v69323; GFX908-NEXT:    v_max_f16_e32 v5, v5, v59324; GFX908-NEXT:    v_max_f16_e32 v5, v5, v29325; GFX908-NEXT:    v_lshlrev_b32_e32 v5, v3, v59326; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v59327; GFX908-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc9328; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9329; GFX908-NEXT:    buffer_wbinvl19330; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v69331; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9332; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]9333; GFX908-NEXT:    s_cbranch_execnz .LBB34_19334; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end9335; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]9336; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v59337; GFX908-NEXT:    s_setpc_b64 s[30:31]9338;9339; GFX8-LABEL: flat_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:9340; GFX8:       ; %bb.0:9341; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9342; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v09343; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc9344; GFX8-NEXT:    v_and_b32_e32 v0, -4, v39345; GFX8-NEXT:    flat_load_dword v5, v[0:1]9346; GFX8-NEXT:    v_and_b32_e32 v3, 3, v39347; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v39348; GFX8-NEXT:    s_mov_b32 s4, 0xffff9349; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s49350; GFX8-NEXT:    v_not_b32_e32 v4, v49351; GFX8-NEXT:    s_mov_b64 s[4:5], 09352; GFX8-NEXT:    v_max_f16_e32 v2, v2, v29353; GFX8-NEXT:  .LBB34_1: ; %atomicrmw.start9354; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=19355; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9356; GFX8-NEXT:    v_mov_b32_e32 v6, v59357; GFX8-NEXT:    v_lshrrev_b32_e32 v5, v3, v69358; GFX8-NEXT:    v_max_f16_e32 v5, v5, v59359; GFX8-NEXT:    v_max_f16_e32 v5, v5, v29360; GFX8-NEXT:    v_and_b32_e32 v7, v6, v49361; GFX8-NEXT:    v_lshlrev_b32_e32 v5, v3, v59362; GFX8-NEXT:    v_or_b32_e32 v5, v7, v59363; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc9364; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9365; GFX8-NEXT:    buffer_wbinvl19366; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v69367; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9368; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]9369; GFX8-NEXT:    s_cbranch_execnz .LBB34_19370; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end9371; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]9372; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v59373; GFX8-NEXT:    s_setpc_b64 s[30:31]9374;9375; GFX7-LABEL: flat_system_atomic_fmax_ret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:9376; GFX7:       ; %bb.0:9377; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9378; GFX7-NEXT:    v_add_i32_e32 v3, vcc, 0x7fe, v09379; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc9380; GFX7-NEXT:    v_and_b32_e32 v0, -4, v39381; GFX7-NEXT:    flat_load_dword v5, v[0:1]9382; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v29383; GFX7-NEXT:    v_and_b32_e32 v2, 3, v39384; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 3, v29385; GFX7-NEXT:    s_mov_b64 s[4:5], 09386; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v49387; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v29388; GFX7-NEXT:    v_not_b32_e32 v4, v49389; GFX7-NEXT:  .LBB34_1: ; %atomicrmw.start9390; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=19391; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9392; GFX7-NEXT:    v_mov_b32_e32 v6, v59393; GFX7-NEXT:    v_lshrrev_b32_e32 v5, v2, v69394; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v59395; GFX7-NEXT:    v_and_b32_e32 v7, v6, v49396; GFX7-NEXT:    v_max_f32_e32 v5, v5, v39397; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v59398; GFX7-NEXT:    v_lshlrev_b32_e32 v5, v2, v59399; GFX7-NEXT:    v_or_b32_e32 v5, v7, v59400; GFX7-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc9401; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9402; GFX7-NEXT:    buffer_wbinvl19403; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v69404; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9405; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]9406; GFX7-NEXT:    s_cbranch_execnz .LBB34_19407; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end9408; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]9409; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v2, v59410; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v09411; GFX7-NEXT:    s_setpc_b64 s[30:31]9412  %gep = getelementptr inbounds half, ptr %ptr, i64 10239413  %result = atomicrmw fmax ptr %gep, half %val seq_cst, !amdgpu.no.fine.grained.memory !09414  ret half %result9415}9416 9417define void @flat_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, half %val) #0 {9418; GFX12-TRUE16-LABEL: flat_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:9419; GFX12-TRUE16:       ; %bb.0:9420; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09421; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x09422; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x09423; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x09424; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x09425; GFX12-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fe, v09426; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)9427; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, 0, v1, vcc_lo9428; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 09429; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v09430; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v09431; GFX12-TRUE16-NEXT:    flat_load_b32 v6, v[3:4]9432; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v09433; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l9434; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)9435; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v5, v1, 0xffff9436; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l9437; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)9438; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v59439; GFX12-TRUE16-NEXT:  .LBB35_1: ; %atomicrmw.start9440; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19441; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09442; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v69443; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 09444; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9445; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.h, v5.l, v5.l9446; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v5.l, v0.h, v0.l9447; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9448; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v59449; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v59450; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS9451; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x09452; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[3:4], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_SYS9453; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09454; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS9455; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69456; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v59457; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9458; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s09459; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9460; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09461; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB35_19462; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end9463; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09464; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x09465; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]9466;9467; GFX12-FAKE16-LABEL: flat_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:9468; GFX12-FAKE16:       ; %bb.0:9469; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09470; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x09471; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x09472; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x09473; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x09474; GFX12-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v09475; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)9476; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo9477; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v6, v2, v29478; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)9479; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v49480; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v49481; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 09482; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]9483; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v49484; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff9485; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9486; GFX12-FAKE16-NEXT:    v_not_b32_e32 v5, v59487; GFX12-FAKE16-NEXT:  .LBB35_1: ; %atomicrmw.start9488; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19489; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09490; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v39491; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9492; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v29493; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v2, v69494; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9495; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v29496; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v29497; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9498; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v29499; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS9500; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x09501; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_SYS9502; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09503; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS9504; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v39505; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v29506; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9507; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s09508; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9509; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09510; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB35_19511; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end9512; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09513; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x09514; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]9515;9516; GFX942-LABEL: flat_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:9517; GFX942:       ; %bb.0:9518; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9519; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe9520; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]9521; GFX942-NEXT:    v_and_b32_e32 v0, -4, v49522; GFX942-NEXT:    v_mov_b32_e32 v1, v59523; GFX942-NEXT:    flat_load_dword v3, v[0:1]9524; GFX942-NEXT:    v_and_b32_e32 v4, 3, v49525; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v49526; GFX942-NEXT:    s_mov_b32 s0, 0xffff9527; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s09528; GFX942-NEXT:    v_not_b32_e32 v5, v59529; GFX942-NEXT:    s_mov_b64 s[0:1], 09530; GFX942-NEXT:    v_max_f16_e32 v6, v2, v29531; GFX942-NEXT:  .LBB35_1: ; %atomicrmw.start9532; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=19533; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9534; GFX942-NEXT:    v_lshrrev_b32_e32 v2, v4, v39535; GFX942-NEXT:    v_max_f16_e32 v2, v2, v29536; GFX942-NEXT:    v_max_f16_e32 v2, v2, v69537; GFX942-NEXT:    v_lshlrev_b32_e32 v2, v4, v29538; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v29539; GFX942-NEXT:    buffer_wbl2 sc0 sc19540; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc0 sc19541; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9542; GFX942-NEXT:    buffer_inv sc0 sc19543; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v39544; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]9545; GFX942-NEXT:    v_mov_b32_e32 v3, v29546; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]9547; GFX942-NEXT:    s_cbranch_execnz .LBB35_19548; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end9549; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]9550; GFX942-NEXT:    s_setpc_b64 s[30:31]9551;9552; GFX11-TRUE16-LABEL: flat_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:9553; GFX11-TRUE16:       ; %bb.0:9554; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9555; GFX11-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fe, v09556; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9557; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, 0, v1, vcc_lo9558; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 09559; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, -4, v09560; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, 3, v09561; GFX11-TRUE16-NEXT:    flat_load_b32 v6, v[3:4]9562; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v09563; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v2.l9564; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)9565; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v5, v1, 0xffff9566; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l9567; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)9568; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v59569; GFX11-TRUE16-NEXT:  .LBB35_1: ; %atomicrmw.start9570; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19571; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9572; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v1, v69573; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 09574; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9575; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.h, v5.l, v5.l9576; GFX11-TRUE16-NEXT:    v_max_f16_e32 v5.l, v0.h, v0.l9577; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9578; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v1, v59579; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v2, v59580; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x09581; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[3:4], v[5:6] glc9582; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9583; GFX11-TRUE16-NEXT:    buffer_gl1_inv9584; GFX11-TRUE16-NEXT:    buffer_gl0_inv9585; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69586; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v59587; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s09588; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9589; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09590; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB35_19591; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end9592; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09593; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]9594;9595; GFX11-FAKE16-LABEL: flat_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:9596; GFX11-FAKE16:       ; %bb.0:9597; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9598; GFX11-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v09599; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)9600; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo9601; GFX11-FAKE16-NEXT:    v_max_f16_e32 v6, v2, v29602; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v49603; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v49604; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 09605; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]9606; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v49607; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9608; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff9609; GFX11-FAKE16-NEXT:    v_not_b32_e32 v5, v59610; GFX11-FAKE16-NEXT:  .LBB35_1: ; %atomicrmw.start9611; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19612; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9613; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v39614; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9615; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v29616; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v2, v69617; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9618; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v29619; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v29620; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9621; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v29622; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x09623; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] glc9624; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9625; GFX11-FAKE16-NEXT:    buffer_gl1_inv9626; GFX11-FAKE16-NEXT:    buffer_gl0_inv9627; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v39628; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v29629; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s09630; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9631; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09632; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB35_19633; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end9634; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09635; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]9636;9637; GFX10-LABEL: flat_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:9638; GFX10:       ; %bb.0:9639; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9640; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v09641; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo9642; GFX10-NEXT:    v_max_f16_e32 v6, v2, v29643; GFX10-NEXT:    v_and_b32_e32 v0, -4, v49644; GFX10-NEXT:    v_and_b32_e32 v4, 3, v49645; GFX10-NEXT:    s_mov_b32 s4, 09646; GFX10-NEXT:    flat_load_dword v3, v[0:1]9647; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 3, v49648; GFX10-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff9649; GFX10-NEXT:    v_not_b32_e32 v5, v59650; GFX10-NEXT:  .LBB35_1: ; %atomicrmw.start9651; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=19652; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9653; GFX10-NEXT:    v_lshrrev_b32_e32 v2, v4, v39654; GFX10-NEXT:    v_max_f16_e32 v2, v2, v29655; GFX10-NEXT:    v_max_f16_e32 v2, v2, v69656; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_09657; GFX10-NEXT:    v_and_or_b32 v2, v3, v5, v29658; GFX10-NEXT:    s_waitcnt_vscnt null, 0x09659; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc9660; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9661; GFX10-NEXT:    buffer_gl1_inv9662; GFX10-NEXT:    buffer_gl0_inv9663; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v39664; GFX10-NEXT:    v_mov_b32_e32 v3, v29665; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s49666; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s49667; GFX10-NEXT:    s_cbranch_execnz .LBB35_19668; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end9669; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s49670; GFX10-NEXT:    s_setpc_b64 s[30:31]9671;9672; GFX90A-LABEL: flat_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:9673; GFX90A:       ; %bb.0:9674; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9675; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v09676; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc9677; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v49678; GFX90A-NEXT:    flat_load_dword v3, v[0:1]9679; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v49680; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v49681; GFX90A-NEXT:    s_mov_b32 s4, 0xffff9682; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s49683; GFX90A-NEXT:    v_not_b32_e32 v5, v59684; GFX90A-NEXT:    s_mov_b64 s[4:5], 09685; GFX90A-NEXT:    v_max_f16_e32 v6, v2, v29686; GFX90A-NEXT:  .LBB35_1: ; %atomicrmw.start9687; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=19688; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9689; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, v4, v39690; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v29691; GFX90A-NEXT:    v_max_f16_e32 v2, v2, v69692; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, v4, v29693; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v29694; GFX90A-NEXT:    buffer_wbl29695; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc9696; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9697; GFX90A-NEXT:    buffer_invl29698; GFX90A-NEXT:    buffer_wbinvl19699; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v39700; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9701; GFX90A-NEXT:    v_mov_b32_e32 v3, v29702; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]9703; GFX90A-NEXT:    s_cbranch_execnz .LBB35_19704; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end9705; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]9706; GFX90A-NEXT:    s_setpc_b64 s[30:31]9707;9708; GFX908-LABEL: flat_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:9709; GFX908:       ; %bb.0:9710; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9711; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v09712; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc9713; GFX908-NEXT:    v_and_b32_e32 v0, -4, v49714; GFX908-NEXT:    flat_load_dword v3, v[0:1]9715; GFX908-NEXT:    v_and_b32_e32 v4, 3, v49716; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 3, v49717; GFX908-NEXT:    s_mov_b32 s4, 0xffff9718; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v4, s49719; GFX908-NEXT:    v_not_b32_e32 v5, v59720; GFX908-NEXT:    s_mov_b64 s[4:5], 09721; GFX908-NEXT:    v_max_f16_e32 v6, v2, v29722; GFX908-NEXT:  .LBB35_1: ; %atomicrmw.start9723; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=19724; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9725; GFX908-NEXT:    v_lshrrev_b32_e32 v2, v4, v39726; GFX908-NEXT:    v_max_f16_e32 v2, v2, v29727; GFX908-NEXT:    v_max_f16_e32 v2, v2, v69728; GFX908-NEXT:    v_lshlrev_b32_e32 v2, v4, v29729; GFX908-NEXT:    v_and_or_b32 v2, v3, v5, v29730; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc9731; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9732; GFX908-NEXT:    buffer_wbinvl19733; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v39734; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9735; GFX908-NEXT:    v_mov_b32_e32 v3, v29736; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]9737; GFX908-NEXT:    s_cbranch_execnz .LBB35_19738; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end9739; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]9740; GFX908-NEXT:    s_setpc_b64 s[30:31]9741;9742; GFX8-LABEL: flat_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:9743; GFX8:       ; %bb.0:9744; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9745; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0x7fe, v09746; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc9747; GFX8-NEXT:    v_and_b32_e32 v0, -4, v49748; GFX8-NEXT:    flat_load_dword v3, v[0:1]9749; GFX8-NEXT:    v_and_b32_e32 v4, 3, v49750; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 3, v49751; GFX8-NEXT:    s_mov_b32 s4, 0xffff9752; GFX8-NEXT:    v_lshlrev_b32_e64 v5, v4, s49753; GFX8-NEXT:    v_not_b32_e32 v5, v59754; GFX8-NEXT:    s_mov_b64 s[4:5], 09755; GFX8-NEXT:    v_max_f16_e32 v6, v2, v29756; GFX8-NEXT:  .LBB35_1: ; %atomicrmw.start9757; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=19758; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9759; GFX8-NEXT:    v_lshrrev_b32_e32 v2, v4, v39760; GFX8-NEXT:    v_max_f16_e32 v2, v2, v29761; GFX8-NEXT:    v_max_f16_e32 v2, v2, v69762; GFX8-NEXT:    v_and_b32_e32 v7, v3, v59763; GFX8-NEXT:    v_lshlrev_b32_e32 v2, v4, v29764; GFX8-NEXT:    v_or_b32_e32 v2, v7, v29765; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc9766; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9767; GFX8-NEXT:    buffer_wbinvl19768; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v39769; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9770; GFX8-NEXT:    v_mov_b32_e32 v3, v29771; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]9772; GFX8-NEXT:    s_cbranch_execnz .LBB35_19773; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end9774; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]9775; GFX8-NEXT:    s_setpc_b64 s[30:31]9776;9777; GFX7-LABEL: flat_system_atomic_fmax_noret_f16__offset12b_pos__amdgpu_no_fine_grained_memory:9778; GFX7:       ; %bb.0:9779; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9780; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v09781; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc9782; GFX7-NEXT:    v_and_b32_e32 v0, -4, v49783; GFX7-NEXT:    flat_load_dword v3, v[0:1]9784; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v29785; GFX7-NEXT:    v_and_b32_e32 v4, 3, v49786; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v49787; GFX7-NEXT:    s_mov_b64 s[4:5], 09788; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v29789; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v49790; GFX7-NEXT:    v_not_b32_e32 v6, v29791; GFX7-NEXT:  .LBB35_1: ; %atomicrmw.start9792; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=19793; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9794; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v39795; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v29796; GFX7-NEXT:    v_and_b32_e32 v7, v3, v69797; GFX7-NEXT:    v_max_f32_e32 v2, v2, v59798; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v29799; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v29800; GFX7-NEXT:    v_or_b32_e32 v2, v7, v29801; GFX7-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc9802; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9803; GFX7-NEXT:    buffer_wbinvl19804; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v39805; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]9806; GFX7-NEXT:    v_mov_b32_e32 v3, v29807; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]9808; GFX7-NEXT:    s_cbranch_execnz .LBB35_19809; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end9810; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]9811; GFX7-NEXT:    s_setpc_b64 s[30:31]9812  %gep = getelementptr inbounds half, ptr %ptr, i64 10239813  %unused = atomicrmw fmax ptr %gep, half %val seq_cst, !amdgpu.no.fine.grained.memory !09814  ret void9815}9816 9817; --------------------------------------------------------------------9818; bfloat9819; --------------------------------------------------------------------9820 9821define bfloat @flat_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory(ptr %ptr, bfloat %val) #0 {9822; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory:9823; GFX12-TRUE16:       ; %bb.0:9824; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09825; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x09826; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x09827; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x09828; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x09829; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v09830; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 09831; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)9832; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v39833; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v39834; GFX12-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]9835; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39836; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9837; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9838; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v49839; GFX12-TRUE16-NEXT:  .LBB36_1: ; %atomicrmw.start9840; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19841; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09842; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v59843; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 09844; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l9845; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9846; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69847; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59848; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)9849; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v5, v5, v79850; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l9851; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 19852; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v59853; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59854; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)9855; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff9856; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)9857; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo9858; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9859; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h9860; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v79861; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9862; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v59863; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x09864; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV9865; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x09866; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV9867; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69868; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9869; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s09870; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9871; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09872; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB36_19873; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end9874; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09875; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59876; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x09877; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]9878;9879; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory:9880; GFX12-FAKE16:       ; %bb.0:9881; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09882; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x09883; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x09884; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x09885; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x09886; GFX12-FAKE16-NEXT:    v_dual_mov_b32 v3, v0 :: v_dual_lshlrev_b32 v2, 16, v29887; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 09888; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)9889; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v39890; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v39891; GFX12-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]9892; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39893; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9894; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9895; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v49896; GFX12-FAKE16-NEXT:  .LBB36_1: ; %atomicrmw.start9897; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19898; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09899; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v59900; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9901; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69902; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59903; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9904; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v5, v5, v29905; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 19906; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v59907; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v59908; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)9909; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff9910; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)9911; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo9912; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9913; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v59914; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v59915; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9916; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v59917; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x09918; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV9919; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x09920; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV9921; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v69922; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9923; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s09924; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)9925; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s09926; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB36_19927; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end9928; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s09929; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v59930; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x09931; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]9932;9933; GFX942-LABEL: flat_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory:9934; GFX942:       ; %bb.0:9935; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9936; GFX942-NEXT:    v_mov_b32_e32 v3, v09937; GFX942-NEXT:    v_and_b32_e32 v0, -4, v39938; GFX942-NEXT:    flat_load_dword v5, v[0:1]9939; GFX942-NEXT:    v_and_b32_e32 v3, 3, v39940; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v39941; GFX942-NEXT:    s_mov_b32 s0, 0xffff9942; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s09943; GFX942-NEXT:    v_not_b32_e32 v6, v49944; GFX942-NEXT:    s_mov_b64 s[0:1], 09945; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v29946; GFX942-NEXT:    s_movk_i32 s2, 0x7fff9947; GFX942-NEXT:  .LBB36_1: ; %atomicrmw.start9948; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=19949; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9950; GFX942-NEXT:    v_lshrrev_b32_sdwa v4, v3, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD9951; GFX942-NEXT:    s_nop 09952; GFX942-NEXT:    v_max_f32_e32 v4, v4, v29953; GFX942-NEXT:    v_bfe_u32 v7, v4, 16, 19954; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v49955; GFX942-NEXT:    v_add3_u32 v7, v7, v4, s29956; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v4, v49957; GFX942-NEXT:    s_nop 19958; GFX942-NEXT:    v_cndmask_b32_e32 v4, v7, v8, vcc9959; GFX942-NEXT:    v_lshlrev_b32_sdwa v4, v3, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_19960; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v49961; GFX942-NEXT:    buffer_wbl2 sc19962; GFX942-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] sc09963; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9964; GFX942-NEXT:    buffer_inv sc19965; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v59966; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]9967; GFX942-NEXT:    v_mov_b32_e32 v5, v49968; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]9969; GFX942-NEXT:    s_cbranch_execnz .LBB36_19970; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end9971; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]9972; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v3, v49973; GFX942-NEXT:    s_setpc_b64 s[30:31]9974;9975; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory:9976; GFX11-TRUE16:       ; %bb.0:9977; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9978; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v09979; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 09980; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)9981; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v39982; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v39983; GFX11-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]9984; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v39985; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff9986; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9987; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v49988; GFX11-TRUE16-NEXT:    .p2align 69989; GFX11-TRUE16-NEXT:  .LBB36_1: ; %atomicrmw.start9990; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19991; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)9992; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v59993; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 09994; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l9995; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)9996; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v69997; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v59998; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)9999; GFX11-TRUE16-NEXT:    v_max_f32_e32 v5, v5, v710000; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l10001; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 110002; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v510003; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510004; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10005; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff10006; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo10007; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10008; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h10009; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v710010; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10011; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v510012; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x010013; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc10014; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10015; GFX11-TRUE16-NEXT:    buffer_gl1_inv10016; GFX11-TRUE16-NEXT:    buffer_gl0_inv10017; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610018; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s010019; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10020; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010021; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB36_110022; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end10023; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010024; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v510025; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]10026;10027; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory:10028; GFX11-FAKE16:       ; %bb.0:10029; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10030; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v3, v0 :: v_dual_lshlrev_b32 v2, 16, v210031; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 010032; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)10033; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v310034; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v310035; GFX11-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]10036; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v310037; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10038; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10039; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v410040; GFX11-FAKE16-NEXT:    .p2align 610041; GFX11-FAKE16-NEXT:  .LBB36_1: ; %atomicrmw.start10042; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=110043; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10044; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v510045; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10046; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v610047; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v510048; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10049; GFX11-FAKE16-NEXT:    v_max_f32_e32 v5, v5, v210050; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 110051; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v510052; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510053; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10054; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff10055; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo10056; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10057; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v510058; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v510059; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10060; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v510061; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x010062; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc10063; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10064; GFX11-FAKE16-NEXT:    buffer_gl1_inv10065; GFX11-FAKE16-NEXT:    buffer_gl0_inv10066; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610067; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s010068; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10069; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010070; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB36_110071; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end10072; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010073; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v510074; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]10075;10076; GFX10-LABEL: flat_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory:10077; GFX10:       ; %bb.0:10078; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10079; GFX10-NEXT:    v_mov_b32_e32 v3, v010080; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v210081; GFX10-NEXT:    s_mov_b32 s4, 010082; GFX10-NEXT:    v_and_b32_e32 v0, -4, v310083; GFX10-NEXT:    v_and_b32_e32 v3, 3, v310084; GFX10-NEXT:    flat_load_dword v5, v[0:1]10085; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v310086; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10087; GFX10-NEXT:    v_not_b32_e32 v4, v410088; GFX10-NEXT:  .LBB36_1: ; %atomicrmw.start10089; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=110090; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10091; GFX10-NEXT:    v_mov_b32_e32 v6, v510092; GFX10-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10093; GFX10-NEXT:    v_max_f32_e32 v5, v5, v210094; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 110095; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v510096; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510097; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff10098; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo10099; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110100; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v510101; GFX10-NEXT:    s_waitcnt_vscnt null, 0x010102; GFX10-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc10103; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10104; GFX10-NEXT:    buffer_gl1_inv10105; GFX10-NEXT:    buffer_gl0_inv10106; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610107; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s410108; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s410109; GFX10-NEXT:    s_cbranch_execnz .LBB36_110110; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end10111; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s410112; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v510113; GFX10-NEXT:    s_setpc_b64 s[30:31]10114;10115; GFX90A-LABEL: flat_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory:10116; GFX90A:       ; %bb.0:10117; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10118; GFX90A-NEXT:    v_mov_b32_e32 v3, v010119; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v310120; GFX90A-NEXT:    flat_load_dword v5, v[0:1]10121; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v310122; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v310123; GFX90A-NEXT:    s_mov_b32 s4, 0xffff10124; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s410125; GFX90A-NEXT:    v_not_b32_e32 v6, v410126; GFX90A-NEXT:    s_mov_b64 s[4:5], 010127; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v210128; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff10129; GFX90A-NEXT:  .LBB36_1: ; %atomicrmw.start10130; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=110131; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10132; GFX90A-NEXT:    v_lshrrev_b32_sdwa v4, v3, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10133; GFX90A-NEXT:    v_max_f32_e32 v4, v4, v210134; GFX90A-NEXT:    v_bfe_u32 v7, v4, 16, 110135; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v410136; GFX90A-NEXT:    v_add3_u32 v7, v7, v4, s610137; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v4, v410138; GFX90A-NEXT:    v_cndmask_b32_e32 v4, v7, v8, vcc10139; GFX90A-NEXT:    v_lshlrev_b32_sdwa v4, v3, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110140; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v410141; GFX90A-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] glc10142; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10143; GFX90A-NEXT:    buffer_wbinvl110144; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v510145; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10146; GFX90A-NEXT:    v_mov_b32_e32 v5, v410147; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]10148; GFX90A-NEXT:    s_cbranch_execnz .LBB36_110149; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end10150; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]10151; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v3, v410152; GFX90A-NEXT:    s_setpc_b64 s[30:31]10153;10154; GFX908-LABEL: flat_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory:10155; GFX908:       ; %bb.0:10156; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10157; GFX908-NEXT:    v_mov_b32_e32 v3, v010158; GFX908-NEXT:    v_and_b32_e32 v0, -4, v310159; GFX908-NEXT:    flat_load_dword v5, v[0:1]10160; GFX908-NEXT:    v_and_b32_e32 v3, 3, v310161; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v310162; GFX908-NEXT:    s_mov_b32 s4, 0xffff10163; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s410164; GFX908-NEXT:    v_not_b32_e32 v4, v410165; GFX908-NEXT:    s_mov_b64 s[4:5], 010166; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v210167; GFX908-NEXT:    s_movk_i32 s6, 0x7fff10168; GFX908-NEXT:  .LBB36_1: ; %atomicrmw.start10169; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=110170; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10171; GFX908-NEXT:    v_mov_b32_e32 v6, v510172; GFX908-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10173; GFX908-NEXT:    v_max_f32_e32 v5, v5, v210174; GFX908-NEXT:    v_bfe_u32 v7, v5, 16, 110175; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v510176; GFX908-NEXT:    v_add3_u32 v7, v7, v5, s610177; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v510178; GFX908-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc10179; GFX908-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110180; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v510181; GFX908-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc10182; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10183; GFX908-NEXT:    buffer_wbinvl110184; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v610185; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10186; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]10187; GFX908-NEXT:    s_cbranch_execnz .LBB36_110188; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end10189; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]10190; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v510191; GFX908-NEXT:    s_setpc_b64 s[30:31]10192;10193; GFX8-LABEL: flat_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory:10194; GFX8:       ; %bb.0:10195; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10196; GFX8-NEXT:    v_mov_b32_e32 v3, v010197; GFX8-NEXT:    v_and_b32_e32 v0, -4, v310198; GFX8-NEXT:    flat_load_dword v5, v[0:1]10199; GFX8-NEXT:    v_and_b32_e32 v3, 3, v310200; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v310201; GFX8-NEXT:    s_mov_b32 s4, 0xffff10202; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s410203; GFX8-NEXT:    v_not_b32_e32 v4, v410204; GFX8-NEXT:    s_mov_b64 s[4:5], 010205; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v210206; GFX8-NEXT:  .LBB36_1: ; %atomicrmw.start10207; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=110208; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10209; GFX8-NEXT:    v_mov_b32_e32 v6, v510210; GFX8-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10211; GFX8-NEXT:    v_max_f32_e32 v5, v5, v210212; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 110213; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v510214; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v810215; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v510216; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v510217; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc10218; GFX8-NEXT:    v_and_b32_e32 v7, v6, v410219; GFX8-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110220; GFX8-NEXT:    v_or_b32_e32 v5, v7, v510221; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc10222; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10223; GFX8-NEXT:    buffer_wbinvl110224; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v610225; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10226; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]10227; GFX8-NEXT:    s_cbranch_execnz .LBB36_110228; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end10229; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]10230; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v510231; GFX8-NEXT:    s_setpc_b64 s[30:31]10232;10233; GFX7-LABEL: flat_agent_atomic_fmax_ret_bf16__amdgpu_no_fine_grained_memory:10234; GFX7:       ; %bb.0:10235; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10236; GFX7-NEXT:    v_mov_b32_e32 v3, v010237; GFX7-NEXT:    v_and_b32_e32 v0, -4, v310238; GFX7-NEXT:    flat_load_dword v5, v[0:1]10239; GFX7-NEXT:    v_and_b32_e32 v3, 3, v310240; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 3, v310241; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v310242; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v210243; GFX7-NEXT:    v_not_b32_e32 v4, v410244; GFX7-NEXT:    s_mov_b64 s[4:5], 010245; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v210246; GFX7-NEXT:  .LBB36_1: ; %atomicrmw.start10247; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=110248; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10249; GFX7-NEXT:    v_mov_b32_e32 v6, v510250; GFX7-NEXT:    v_lshrrev_b32_e32 v5, v3, v610251; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v510252; GFX7-NEXT:    v_mul_f32_e32 v5, 1.0, v510253; GFX7-NEXT:    v_max_f32_e32 v5, v5, v210254; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v510255; GFX7-NEXT:    v_and_b32_e32 v7, v6, v410256; GFX7-NEXT:    v_lshlrev_b32_e32 v5, v3, v510257; GFX7-NEXT:    v_or_b32_e32 v5, v7, v510258; GFX7-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc10259; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10260; GFX7-NEXT:    buffer_wbinvl110261; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v610262; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10263; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]10264; GFX7-NEXT:    s_cbranch_execnz .LBB36_110265; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end10266; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]10267; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v3, v510268; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v010269; GFX7-NEXT:    s_setpc_b64 s[30:31]10270  %result = atomicrmw fmax ptr %ptr, bfloat %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !010271  ret bfloat %result10272}10273 10274define bfloat @flat_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, bfloat %val) #0 {10275; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:10276; GFX12-TRUE16:       ; %bb.0:10277; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x010278; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x010279; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x010280; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x010281; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x010282; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v010283; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)10284; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo10285; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 010286; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v310287; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v310288; GFX12-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]10289; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v310290; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10291; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10292; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v410293; GFX12-TRUE16-NEXT:  .LBB37_1: ; %atomicrmw.start10294; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110295; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x010296; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v510297; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 010298; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l10299; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10300; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v610301; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v510302; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10303; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v5, v5, v710304; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l10305; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 110306; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v510307; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510308; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)10309; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff10310; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)10311; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo10312; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10313; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h10314; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v710315; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10316; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v510317; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x010318; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV10319; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x010320; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV10321; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610322; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10323; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s010324; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10325; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010326; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB37_110327; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end10328; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010329; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v510330; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x010331; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]10332;10333; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:10334; GFX12-FAKE16:       ; %bb.0:10335; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x010336; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x010337; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x010338; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x010339; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x010340; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v010341; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)10342; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo10343; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v210344; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)10345; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v310346; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v310347; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 010348; GFX12-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]10349; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v310350; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10351; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10352; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v410353; GFX12-FAKE16-NEXT:  .LBB37_1: ; %atomicrmw.start10354; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=110355; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x010356; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v510357; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10358; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v610359; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v510360; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10361; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v5, v5, v210362; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 110363; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v510364; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510365; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)10366; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff10367; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)10368; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo10369; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10370; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v510371; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v510372; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10373; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v510374; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x010375; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV10376; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x010377; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV10378; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610379; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10380; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s010381; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10382; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010383; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB37_110384; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end10385; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010386; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v510387; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x010388; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]10389;10390; GFX942-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:10391; GFX942:       ; %bb.0:10392; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10393; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe10394; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]10395; GFX942-NEXT:    v_and_b32_e32 v0, -4, v410396; GFX942-NEXT:    v_mov_b32_e32 v1, v510397; GFX942-NEXT:    flat_load_dword v3, v[0:1]10398; GFX942-NEXT:    v_and_b32_e32 v4, 3, v410399; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v410400; GFX942-NEXT:    s_mov_b32 s0, 0xffff10401; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s010402; GFX942-NEXT:    v_not_b32_e32 v5, v510403; GFX942-NEXT:    s_mov_b64 s[0:1], 010404; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v210405; GFX942-NEXT:    s_movk_i32 s2, 0x7fff10406; GFX942-NEXT:  .LBB37_1: ; %atomicrmw.start10407; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=110408; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10409; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10410; GFX942-NEXT:    s_nop 010411; GFX942-NEXT:    v_max_f32_e32 v2, v2, v610412; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 110413; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v210414; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s210415; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v210416; GFX942-NEXT:    s_nop 110417; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc10418; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110419; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v210420; GFX942-NEXT:    buffer_wbl2 sc110421; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc010422; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10423; GFX942-NEXT:    buffer_inv sc110424; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v310425; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]10426; GFX942-NEXT:    v_mov_b32_e32 v3, v210427; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]10428; GFX942-NEXT:    s_cbranch_execnz .LBB37_110429; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end10430; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]10431; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v4, v210432; GFX942-NEXT:    s_setpc_b64 s[30:31]10433;10434; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:10435; GFX11-TRUE16:       ; %bb.0:10436; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10437; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v010438; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10439; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo10440; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 010441; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v310442; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v310443; GFX11-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]10444; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v310445; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10446; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10447; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v410448; GFX11-TRUE16-NEXT:    .p2align 610449; GFX11-TRUE16-NEXT:  .LBB37_1: ; %atomicrmw.start10450; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110451; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10452; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v510453; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 010454; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l10455; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10456; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v610457; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v510458; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10459; GFX11-TRUE16-NEXT:    v_max_f32_e32 v5, v5, v710460; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l10461; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 110462; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v510463; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510464; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10465; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff10466; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo10467; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10468; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h10469; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v710470; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10471; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v510472; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x010473; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc10474; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10475; GFX11-TRUE16-NEXT:    buffer_gl1_inv10476; GFX11-TRUE16-NEXT:    buffer_gl0_inv10477; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610478; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s010479; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10480; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010481; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB37_110482; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end10483; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010484; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v510485; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]10486;10487; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:10488; GFX11-FAKE16:       ; %bb.0:10489; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10490; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v010491; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)10492; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo10493; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v210494; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v310495; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v310496; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 010497; GFX11-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]10498; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v310499; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10500; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10501; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v410502; GFX11-FAKE16-NEXT:    .p2align 610503; GFX11-FAKE16-NEXT:  .LBB37_1: ; %atomicrmw.start10504; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=110505; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10506; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v510507; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10508; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v610509; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v510510; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10511; GFX11-FAKE16-NEXT:    v_max_f32_e32 v5, v5, v210512; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 110513; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v510514; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510515; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10516; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff10517; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo10518; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10519; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v510520; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v510521; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10522; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v510523; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x010524; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc10525; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10526; GFX11-FAKE16-NEXT:    buffer_gl1_inv10527; GFX11-FAKE16-NEXT:    buffer_gl0_inv10528; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610529; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s010530; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10531; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010532; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB37_110533; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end10534; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010535; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v510536; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]10537;10538; GFX10-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:10539; GFX10:       ; %bb.0:10540; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10541; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v010542; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo10543; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v210544; GFX10-NEXT:    v_and_b32_e32 v0, -4, v310545; GFX10-NEXT:    v_and_b32_e32 v3, 3, v310546; GFX10-NEXT:    s_mov_b32 s4, 010547; GFX10-NEXT:    flat_load_dword v5, v[0:1]10548; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v310549; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10550; GFX10-NEXT:    v_not_b32_e32 v4, v410551; GFX10-NEXT:  .LBB37_1: ; %atomicrmw.start10552; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=110553; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10554; GFX10-NEXT:    v_mov_b32_e32 v6, v510555; GFX10-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10556; GFX10-NEXT:    v_max_f32_e32 v5, v5, v210557; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 110558; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v510559; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510560; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff10561; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo10562; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110563; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v510564; GFX10-NEXT:    s_waitcnt_vscnt null, 0x010565; GFX10-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc10566; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10567; GFX10-NEXT:    buffer_gl1_inv10568; GFX10-NEXT:    buffer_gl0_inv10569; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610570; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s410571; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s410572; GFX10-NEXT:    s_cbranch_execnz .LBB37_110573; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end10574; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s410575; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v510576; GFX10-NEXT:    s_setpc_b64 s[30:31]10577;10578; GFX90A-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:10579; GFX90A:       ; %bb.0:10580; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10581; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v010582; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc10583; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v410584; GFX90A-NEXT:    flat_load_dword v3, v[0:1]10585; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v410586; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v410587; GFX90A-NEXT:    s_mov_b32 s4, 0xffff10588; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s410589; GFX90A-NEXT:    v_not_b32_e32 v5, v510590; GFX90A-NEXT:    s_mov_b64 s[4:5], 010591; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v210592; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff10593; GFX90A-NEXT:  .LBB37_1: ; %atomicrmw.start10594; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=110595; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10596; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10597; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v610598; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 110599; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v210600; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s610601; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v210602; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc10603; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110604; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v210605; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc10606; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10607; GFX90A-NEXT:    buffer_wbinvl110608; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v310609; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10610; GFX90A-NEXT:    v_mov_b32_e32 v3, v210611; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]10612; GFX90A-NEXT:    s_cbranch_execnz .LBB37_110613; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end10614; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]10615; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v4, v210616; GFX90A-NEXT:    s_setpc_b64 s[30:31]10617;10618; GFX908-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:10619; GFX908:       ; %bb.0:10620; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10621; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v010622; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc10623; GFX908-NEXT:    v_and_b32_e32 v0, -4, v310624; GFX908-NEXT:    flat_load_dword v5, v[0:1]10625; GFX908-NEXT:    v_and_b32_e32 v3, 3, v310626; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v310627; GFX908-NEXT:    s_mov_b32 s4, 0xffff10628; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s410629; GFX908-NEXT:    v_not_b32_e32 v4, v410630; GFX908-NEXT:    s_mov_b64 s[4:5], 010631; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v210632; GFX908-NEXT:    s_movk_i32 s6, 0x7fff10633; GFX908-NEXT:  .LBB37_1: ; %atomicrmw.start10634; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=110635; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10636; GFX908-NEXT:    v_mov_b32_e32 v6, v510637; GFX908-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10638; GFX908-NEXT:    v_max_f32_e32 v5, v5, v210639; GFX908-NEXT:    v_bfe_u32 v7, v5, 16, 110640; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v510641; GFX908-NEXT:    v_add3_u32 v7, v7, v5, s610642; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v510643; GFX908-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc10644; GFX908-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110645; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v510646; GFX908-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc10647; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10648; GFX908-NEXT:    buffer_wbinvl110649; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v610650; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10651; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]10652; GFX908-NEXT:    s_cbranch_execnz .LBB37_110653; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end10654; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]10655; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v510656; GFX908-NEXT:    s_setpc_b64 s[30:31]10657;10658; GFX8-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:10659; GFX8:       ; %bb.0:10660; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10661; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v010662; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc10663; GFX8-NEXT:    v_and_b32_e32 v0, -4, v310664; GFX8-NEXT:    flat_load_dword v5, v[0:1]10665; GFX8-NEXT:    v_and_b32_e32 v3, 3, v310666; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v310667; GFX8-NEXT:    s_mov_b32 s4, 0xffff10668; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s410669; GFX8-NEXT:    v_not_b32_e32 v4, v410670; GFX8-NEXT:    s_mov_b64 s[4:5], 010671; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v210672; GFX8-NEXT:  .LBB37_1: ; %atomicrmw.start10673; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=110674; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10675; GFX8-NEXT:    v_mov_b32_e32 v6, v510676; GFX8-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10677; GFX8-NEXT:    v_max_f32_e32 v5, v5, v210678; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 110679; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v510680; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v810681; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v510682; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v510683; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc10684; GFX8-NEXT:    v_and_b32_e32 v7, v6, v410685; GFX8-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110686; GFX8-NEXT:    v_or_b32_e32 v5, v7, v510687; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc10688; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10689; GFX8-NEXT:    buffer_wbinvl110690; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v610691; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10692; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]10693; GFX8-NEXT:    s_cbranch_execnz .LBB37_110694; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end10695; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]10696; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v510697; GFX8-NEXT:    s_setpc_b64 s[30:31]10698;10699; GFX7-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:10700; GFX7:       ; %bb.0:10701; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10702; GFX7-NEXT:    v_add_i32_e32 v3, vcc, 0x7fe, v010703; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc10704; GFX7-NEXT:    v_and_b32_e32 v0, -4, v310705; GFX7-NEXT:    flat_load_dword v5, v[0:1]10706; GFX7-NEXT:    v_and_b32_e32 v3, 3, v310707; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 3, v310708; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v310709; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v210710; GFX7-NEXT:    v_not_b32_e32 v4, v410711; GFX7-NEXT:    s_mov_b64 s[4:5], 010712; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v210713; GFX7-NEXT:  .LBB37_1: ; %atomicrmw.start10714; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=110715; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10716; GFX7-NEXT:    v_mov_b32_e32 v6, v510717; GFX7-NEXT:    v_lshrrev_b32_e32 v5, v3, v610718; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v510719; GFX7-NEXT:    v_mul_f32_e32 v5, 1.0, v510720; GFX7-NEXT:    v_max_f32_e32 v5, v5, v210721; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v510722; GFX7-NEXT:    v_and_b32_e32 v7, v6, v410723; GFX7-NEXT:    v_lshlrev_b32_e32 v5, v3, v510724; GFX7-NEXT:    v_or_b32_e32 v5, v7, v510725; GFX7-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc10726; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10727; GFX7-NEXT:    buffer_wbinvl110728; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v610729; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]10730; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]10731; GFX7-NEXT:    s_cbranch_execnz .LBB37_110732; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end10733; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]10734; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v3, v510735; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v010736; GFX7-NEXT:    s_setpc_b64 s[30:31]10737  %gep = getelementptr inbounds bfloat, ptr %ptr, i64 102310738  %result = atomicrmw fmax ptr %gep, bfloat %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !010739  ret bfloat %result10740}10741 10742define bfloat @flat_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory(ptr %ptr, bfloat %val) #0 {10743; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:10744; GFX12-TRUE16:       ; %bb.0:10745; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x010746; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x010747; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x010748; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x010749; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x010750; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v010751; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)10752; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo10753; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 010754; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v310755; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v310756; GFX12-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]10757; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v310758; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10759; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10760; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v410761; GFX12-TRUE16-NEXT:  .LBB38_1: ; %atomicrmw.start10762; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110763; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x010764; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v510765; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 010766; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l10767; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10768; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v610769; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v510770; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10771; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v5, v5, v710772; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l10773; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 110774; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v510775; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510776; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)10777; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff10778; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)10779; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo10780; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10781; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h10782; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v710783; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10784; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v510785; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x010786; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV10787; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x010788; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV10789; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610790; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10791; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s010792; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10793; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010794; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB38_110795; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end10796; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010797; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v510798; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x010799; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]10800;10801; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:10802; GFX12-FAKE16:       ; %bb.0:10803; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x010804; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x010805; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x010806; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x010807; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x010808; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v010809; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)10810; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo10811; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v210812; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)10813; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v310814; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v310815; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 010816; GFX12-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]10817; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v310818; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10819; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10820; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v410821; GFX12-FAKE16-NEXT:  .LBB38_1: ; %atomicrmw.start10822; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=110823; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x010824; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v510825; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10826; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v610827; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v510828; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10829; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v5, v5, v210830; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 110831; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v510832; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510833; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)10834; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff10835; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)10836; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo10837; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10838; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v510839; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v510840; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10841; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v510842; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x010843; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV10844; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x010845; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV10846; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610847; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10848; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s010849; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10850; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010851; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB38_110852; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end10853; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010854; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v510855; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x010856; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]10857;10858; GFX942-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:10859; GFX942:       ; %bb.0:10860; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10861; GFX942-NEXT:    s_movk_i32 s0, 0xf80010862; GFX942-NEXT:    s_mov_b32 s1, -110863; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]10864; GFX942-NEXT:    v_and_b32_e32 v0, -4, v410865; GFX942-NEXT:    v_mov_b32_e32 v1, v510866; GFX942-NEXT:    flat_load_dword v3, v[0:1]10867; GFX942-NEXT:    v_and_b32_e32 v4, 3, v410868; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v410869; GFX942-NEXT:    s_mov_b32 s0, 0xffff10870; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s010871; GFX942-NEXT:    v_not_b32_e32 v5, v510872; GFX942-NEXT:    s_mov_b64 s[0:1], 010873; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v210874; GFX942-NEXT:    s_movk_i32 s2, 0x7fff10875; GFX942-NEXT:  .LBB38_1: ; %atomicrmw.start10876; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=110877; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10878; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD10879; GFX942-NEXT:    s_nop 010880; GFX942-NEXT:    v_max_f32_e32 v2, v2, v610881; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 110882; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v210883; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s210884; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v210885; GFX942-NEXT:    s_nop 110886; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc10887; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_110888; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v210889; GFX942-NEXT:    buffer_wbl2 sc110890; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc010891; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10892; GFX942-NEXT:    buffer_inv sc110893; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v310894; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]10895; GFX942-NEXT:    v_mov_b32_e32 v3, v210896; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]10897; GFX942-NEXT:    s_cbranch_execnz .LBB38_110898; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end10899; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]10900; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v4, v210901; GFX942-NEXT:    s_setpc_b64 s[30:31]10902;10903; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:10904; GFX11-TRUE16:       ; %bb.0:10905; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10906; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v010907; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10908; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo10909; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 010910; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v310911; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v310912; GFX11-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]10913; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v310914; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10915; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10916; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v410917; GFX11-TRUE16-NEXT:    .p2align 610918; GFX11-TRUE16-NEXT:  .LBB38_1: ; %atomicrmw.start10919; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110920; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10921; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v510922; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 010923; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l10924; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10925; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v610926; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v510927; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10928; GFX11-TRUE16-NEXT:    v_max_f32_e32 v5, v5, v710929; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l10930; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 110931; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v510932; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510933; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10934; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff10935; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo10936; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10937; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h10938; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v710939; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10940; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v510941; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x010942; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc10943; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10944; GFX11-TRUE16-NEXT:    buffer_gl1_inv10945; GFX11-TRUE16-NEXT:    buffer_gl0_inv10946; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610947; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s010948; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10949; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s010950; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB38_110951; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end10952; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s010953; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v510954; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]10955;10956; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:10957; GFX11-FAKE16:       ; %bb.0:10958; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10959; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v010960; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)10961; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo10962; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v210963; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v310964; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v310965; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 010966; GFX11-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]10967; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v310968; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10969; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff10970; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v410971; GFX11-FAKE16-NEXT:    .p2align 610972; GFX11-FAKE16-NEXT:  .LBB38_1: ; %atomicrmw.start10973; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=110974; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10975; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v510976; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10977; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v610978; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v510979; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10980; GFX11-FAKE16-NEXT:    v_max_f32_e32 v5, v5, v210981; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 110982; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v510983; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v510984; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)10985; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff10986; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo10987; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10988; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v510989; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v510990; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10991; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v510992; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x010993; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc10994; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)10995; GFX11-FAKE16-NEXT:    buffer_gl1_inv10996; GFX11-FAKE16-NEXT:    buffer_gl0_inv10997; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v610998; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s010999; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)11000; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011001; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB38_111002; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end11003; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011004; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v511005; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]11006;11007; GFX10-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:11008; GFX10:       ; %bb.0:11009; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11010; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v011011; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo11012; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v211013; GFX10-NEXT:    v_and_b32_e32 v0, -4, v311014; GFX10-NEXT:    v_and_b32_e32 v3, 3, v311015; GFX10-NEXT:    s_mov_b32 s4, 011016; GFX10-NEXT:    flat_load_dword v5, v[0:1]11017; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v311018; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff11019; GFX10-NEXT:    v_not_b32_e32 v4, v411020; GFX10-NEXT:  .LBB38_1: ; %atomicrmw.start11021; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=111022; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11023; GFX10-NEXT:    v_mov_b32_e32 v6, v511024; GFX10-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11025; GFX10-NEXT:    v_max_f32_e32 v5, v5, v211026; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 111027; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v511028; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v511029; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff11030; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo11031; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111032; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v511033; GFX10-NEXT:    s_waitcnt_vscnt null, 0x011034; GFX10-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc11035; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11036; GFX10-NEXT:    buffer_gl1_inv11037; GFX10-NEXT:    buffer_gl0_inv11038; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v611039; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s411040; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s411041; GFX10-NEXT:    s_cbranch_execnz .LBB38_111042; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end11043; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s411044; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v511045; GFX10-NEXT:    s_setpc_b64 s[30:31]11046;11047; GFX90A-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:11048; GFX90A:       ; %bb.0:11049; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11050; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v011051; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc11052; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v411053; GFX90A-NEXT:    flat_load_dword v3, v[0:1]11054; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v411055; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v411056; GFX90A-NEXT:    s_mov_b32 s4, 0xffff11057; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s411058; GFX90A-NEXT:    v_not_b32_e32 v5, v511059; GFX90A-NEXT:    s_mov_b64 s[4:5], 011060; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v211061; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff11062; GFX90A-NEXT:  .LBB38_1: ; %atomicrmw.start11063; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=111064; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11065; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11066; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v611067; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 111068; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v211069; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s611070; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211071; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc11072; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111073; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v211074; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc11075; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11076; GFX90A-NEXT:    buffer_wbinvl111077; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311078; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11079; GFX90A-NEXT:    v_mov_b32_e32 v3, v211080; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]11081; GFX90A-NEXT:    s_cbranch_execnz .LBB38_111082; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end11083; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]11084; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v4, v211085; GFX90A-NEXT:    s_setpc_b64 s[30:31]11086;11087; GFX908-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:11088; GFX908:       ; %bb.0:11089; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11090; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v011091; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc11092; GFX908-NEXT:    v_and_b32_e32 v0, -4, v311093; GFX908-NEXT:    flat_load_dword v5, v[0:1]11094; GFX908-NEXT:    v_and_b32_e32 v3, 3, v311095; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v311096; GFX908-NEXT:    s_mov_b32 s4, 0xffff11097; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s411098; GFX908-NEXT:    v_not_b32_e32 v4, v411099; GFX908-NEXT:    s_mov_b64 s[4:5], 011100; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v211101; GFX908-NEXT:    s_movk_i32 s6, 0x7fff11102; GFX908-NEXT:  .LBB38_1: ; %atomicrmw.start11103; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=111104; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11105; GFX908-NEXT:    v_mov_b32_e32 v6, v511106; GFX908-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11107; GFX908-NEXT:    v_max_f32_e32 v5, v5, v211108; GFX908-NEXT:    v_bfe_u32 v7, v5, 16, 111109; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v511110; GFX908-NEXT:    v_add3_u32 v7, v7, v5, s611111; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v511112; GFX908-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc11113; GFX908-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111114; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v511115; GFX908-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc11116; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11117; GFX908-NEXT:    buffer_wbinvl111118; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v611119; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11120; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]11121; GFX908-NEXT:    s_cbranch_execnz .LBB38_111122; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end11123; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]11124; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v511125; GFX908-NEXT:    s_setpc_b64 s[30:31]11126;11127; GFX8-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:11128; GFX8:       ; %bb.0:11129; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11130; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v011131; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc11132; GFX8-NEXT:    v_and_b32_e32 v0, -4, v311133; GFX8-NEXT:    flat_load_dword v5, v[0:1]11134; GFX8-NEXT:    v_and_b32_e32 v3, 3, v311135; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v311136; GFX8-NEXT:    s_mov_b32 s4, 0xffff11137; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s411138; GFX8-NEXT:    v_not_b32_e32 v4, v411139; GFX8-NEXT:    s_mov_b64 s[4:5], 011140; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v211141; GFX8-NEXT:  .LBB38_1: ; %atomicrmw.start11142; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=111143; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11144; GFX8-NEXT:    v_mov_b32_e32 v6, v511145; GFX8-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11146; GFX8-NEXT:    v_max_f32_e32 v5, v5, v211147; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 111148; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v511149; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v811150; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v511151; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v511152; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc11153; GFX8-NEXT:    v_and_b32_e32 v7, v6, v411154; GFX8-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111155; GFX8-NEXT:    v_or_b32_e32 v5, v7, v511156; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc11157; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11158; GFX8-NEXT:    buffer_wbinvl111159; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v611160; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11161; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]11162; GFX8-NEXT:    s_cbranch_execnz .LBB38_111163; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end11164; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]11165; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v511166; GFX8-NEXT:    s_setpc_b64 s[30:31]11167;11168; GFX7-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:11169; GFX7:       ; %bb.0:11170; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11171; GFX7-NEXT:    v_add_i32_e32 v3, vcc, 0xfffff800, v011172; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc11173; GFX7-NEXT:    v_and_b32_e32 v0, -4, v311174; GFX7-NEXT:    flat_load_dword v5, v[0:1]11175; GFX7-NEXT:    v_and_b32_e32 v3, 3, v311176; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 3, v311177; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v311178; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v211179; GFX7-NEXT:    v_not_b32_e32 v4, v411180; GFX7-NEXT:    s_mov_b64 s[4:5], 011181; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v211182; GFX7-NEXT:  .LBB38_1: ; %atomicrmw.start11183; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=111184; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11185; GFX7-NEXT:    v_mov_b32_e32 v6, v511186; GFX7-NEXT:    v_lshrrev_b32_e32 v5, v3, v611187; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v511188; GFX7-NEXT:    v_mul_f32_e32 v5, 1.0, v511189; GFX7-NEXT:    v_max_f32_e32 v5, v5, v211190; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v511191; GFX7-NEXT:    v_and_b32_e32 v7, v6, v411192; GFX7-NEXT:    v_lshlrev_b32_e32 v5, v3, v511193; GFX7-NEXT:    v_or_b32_e32 v5, v7, v511194; GFX7-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc11195; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11196; GFX7-NEXT:    buffer_wbinvl111197; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v611198; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11199; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]11200; GFX7-NEXT:    s_cbranch_execnz .LBB38_111201; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end11202; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]11203; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v3, v511204; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v011205; GFX7-NEXT:    s_setpc_b64 s[30:31]11206  %gep = getelementptr inbounds bfloat, ptr %ptr, i64 -102411207  %result = atomicrmw fmax ptr %gep, bfloat %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !011208  ret bfloat %result11209 }11210 11211define void @flat_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory(ptr %ptr, bfloat %val) #0 {11212; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory:11213; GFX12-TRUE16:       ; %bb.0:11214; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x011215; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x011216; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x011217; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x011218; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x011219; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v011220; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 011221; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)11222; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v311223; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v311224; GFX12-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]11225; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v311226; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff11227; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11228; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v311229; GFX12-TRUE16-NEXT:  .LBB39_1: ; %atomicrmw.start11230; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=111231; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x011232; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v411233; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 011234; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l11235; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)11236; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v311237; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v3, v3, v711238; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l11239; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)11240; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 111241; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v311242; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311243; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff11244; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)11245; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11246; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo11247; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h11248; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11249; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v711250; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v311251; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x011252; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV11253; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x011254; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV11255; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411256; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v311257; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11258; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s011259; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11260; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011261; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB39_111262; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end11263; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011264; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x011265; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]11266;11267; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory:11268; GFX12-FAKE16:       ; %bb.0:11269; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x011270; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x011271; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x011272; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x011273; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x011274; GFX12-FAKE16-NEXT:    v_dual_mov_b32 v3, v0 :: v_dual_lshlrev_b32 v2, 16, v211275; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 011276; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)11277; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v311278; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v311279; GFX12-FAKE16-NEXT:    flat_load_b32 v4, v[0:1]11280; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v311281; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff11282; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11283; GFX12-FAKE16-NEXT:    v_not_b32_e32 v6, v311284; GFX12-FAKE16-NEXT:  .LBB39_1: ; %atomicrmw.start11285; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=111286; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x011287; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v411288; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11289; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v311290; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v3, v3, v211291; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)11292; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 111293; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v311294; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311295; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff11296; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11297; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11298; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v7, v8, vcc_lo11299; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v311300; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11301; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v311302; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v311303; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x011304; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV11305; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x011306; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV11307; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411308; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v311309; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11310; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s011311; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11312; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011313; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB39_111314; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end11315; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011316; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x011317; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]11318;11319; GFX942-LABEL: flat_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory:11320; GFX942:       ; %bb.0:11321; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11322; GFX942-NEXT:    v_mov_b32_e32 v3, v011323; GFX942-NEXT:    v_and_b32_e32 v0, -4, v311324; GFX942-NEXT:    flat_load_dword v5, v[0:1]11325; GFX942-NEXT:    v_and_b32_e32 v3, 3, v311326; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 3, v311327; GFX942-NEXT:    s_mov_b32 s0, 0xffff11328; GFX942-NEXT:    v_lshlrev_b32_e64 v4, v3, s011329; GFX942-NEXT:    v_not_b32_e32 v6, v411330; GFX942-NEXT:    s_mov_b64 s[0:1], 011331; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v211332; GFX942-NEXT:    s_movk_i32 s2, 0x7fff11333; GFX942-NEXT:  .LBB39_1: ; %atomicrmw.start11334; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=111335; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11336; GFX942-NEXT:    v_lshrrev_b32_sdwa v4, v3, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11337; GFX942-NEXT:    s_nop 011338; GFX942-NEXT:    v_max_f32_e32 v4, v4, v211339; GFX942-NEXT:    v_bfe_u32 v7, v4, 16, 111340; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v411341; GFX942-NEXT:    v_add3_u32 v7, v7, v4, s211342; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v4, v411343; GFX942-NEXT:    s_nop 111344; GFX942-NEXT:    v_cndmask_b32_e32 v4, v7, v8, vcc11345; GFX942-NEXT:    v_lshlrev_b32_sdwa v4, v3, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111346; GFX942-NEXT:    v_and_or_b32 v4, v5, v6, v411347; GFX942-NEXT:    buffer_wbl2 sc111348; GFX942-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] sc011349; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11350; GFX942-NEXT:    buffer_inv sc111351; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v511352; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]11353; GFX942-NEXT:    v_mov_b32_e32 v5, v411354; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]11355; GFX942-NEXT:    s_cbranch_execnz .LBB39_111356; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end11357; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]11358; GFX942-NEXT:    s_setpc_b64 s[30:31]11359;11360; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory:11361; GFX11-TRUE16:       ; %bb.0:11362; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11363; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v011364; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 011365; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)11366; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v311367; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v311368; GFX11-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]11369; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v311370; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff11371; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11372; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v311373; GFX11-TRUE16-NEXT:    .p2align 611374; GFX11-TRUE16-NEXT:  .LBB39_1: ; %atomicrmw.start11375; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=111376; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11377; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v411378; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 011379; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l11380; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)11381; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v311382; GFX11-TRUE16-NEXT:    v_max_f32_e32 v3, v3, v711383; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l11384; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)11385; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 111386; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v311387; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311388; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff11389; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11390; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo11391; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h11392; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11393; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v711394; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v311395; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x011396; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc11397; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11398; GFX11-TRUE16-NEXT:    buffer_gl1_inv11399; GFX11-TRUE16-NEXT:    buffer_gl0_inv11400; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411401; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v311402; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s011403; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)11404; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011405; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB39_111406; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end11407; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011408; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]11409;11410; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory:11411; GFX11-FAKE16:       ; %bb.0:11412; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11413; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v3, v0 :: v_dual_lshlrev_b32 v2, 16, v211414; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 011415; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)11416; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v311417; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v311418; GFX11-FAKE16-NEXT:    flat_load_b32 v4, v[0:1]11419; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v311420; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff11421; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11422; GFX11-FAKE16-NEXT:    v_not_b32_e32 v6, v311423; GFX11-FAKE16-NEXT:    .p2align 611424; GFX11-FAKE16-NEXT:  .LBB39_1: ; %atomicrmw.start11425; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=111426; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11427; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v411428; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11429; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v311430; GFX11-FAKE16-NEXT:    v_max_f32_e32 v3, v3, v211431; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)11432; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 111433; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v311434; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311435; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff11436; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11437; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v7, v8, vcc_lo11438; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v311439; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11440; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v311441; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, v4, v6, v311442; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x011443; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc11444; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11445; GFX11-FAKE16-NEXT:    buffer_gl1_inv11446; GFX11-FAKE16-NEXT:    buffer_gl0_inv11447; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411448; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v311449; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s011450; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)11451; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011452; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB39_111453; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end11454; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011455; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]11456;11457; GFX10-LABEL: flat_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory:11458; GFX10:       ; %bb.0:11459; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11460; GFX10-NEXT:    v_mov_b32_e32 v3, v011461; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v211462; GFX10-NEXT:    s_mov_b32 s4, 011463; GFX10-NEXT:    v_and_b32_e32 v0, -4, v311464; GFX10-NEXT:    v_and_b32_e32 v3, 3, v311465; GFX10-NEXT:    flat_load_dword v4, v[0:1]11466; GFX10-NEXT:    v_lshlrev_b32_e32 v5, 3, v311467; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff11468; GFX10-NEXT:    v_not_b32_e32 v6, v311469; GFX10-NEXT:  .LBB39_1: ; %atomicrmw.start11470; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=111471; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11472; GFX10-NEXT:    v_lshrrev_b32_sdwa v3, v5, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11473; GFX10-NEXT:    v_max_f32_e32 v3, v3, v211474; GFX10-NEXT:    v_bfe_u32 v7, v3, 16, 111475; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v311476; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311477; GFX10-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff11478; GFX10-NEXT:    v_cndmask_b32_e32 v3, v7, v8, vcc_lo11479; GFX10-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111480; GFX10-NEXT:    v_and_or_b32 v3, v4, v6, v311481; GFX10-NEXT:    s_waitcnt_vscnt null, 0x011482; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc11483; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11484; GFX10-NEXT:    buffer_gl1_inv11485; GFX10-NEXT:    buffer_gl0_inv11486; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411487; GFX10-NEXT:    v_mov_b32_e32 v4, v311488; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s411489; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s411490; GFX10-NEXT:    s_cbranch_execnz .LBB39_111491; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end11492; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s411493; GFX10-NEXT:    s_setpc_b64 s[30:31]11494;11495; GFX90A-LABEL: flat_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory:11496; GFX90A:       ; %bb.0:11497; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11498; GFX90A-NEXT:    v_mov_b32_e32 v3, v011499; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v311500; GFX90A-NEXT:    flat_load_dword v5, v[0:1]11501; GFX90A-NEXT:    v_and_b32_e32 v3, 3, v311502; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 3, v311503; GFX90A-NEXT:    s_mov_b32 s4, 0xffff11504; GFX90A-NEXT:    v_lshlrev_b32_e64 v4, v3, s411505; GFX90A-NEXT:    v_not_b32_e32 v6, v411506; GFX90A-NEXT:    s_mov_b64 s[4:5], 011507; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v211508; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff11509; GFX90A-NEXT:  .LBB39_1: ; %atomicrmw.start11510; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=111511; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11512; GFX90A-NEXT:    v_lshrrev_b32_sdwa v4, v3, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11513; GFX90A-NEXT:    v_max_f32_e32 v4, v4, v211514; GFX90A-NEXT:    v_bfe_u32 v7, v4, 16, 111515; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v411516; GFX90A-NEXT:    v_add3_u32 v7, v7, v4, s611517; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v4, v411518; GFX90A-NEXT:    v_cndmask_b32_e32 v4, v7, v8, vcc11519; GFX90A-NEXT:    v_lshlrev_b32_sdwa v4, v3, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111520; GFX90A-NEXT:    v_and_or_b32 v4, v5, v6, v411521; GFX90A-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] glc11522; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11523; GFX90A-NEXT:    buffer_wbinvl111524; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v511525; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11526; GFX90A-NEXT:    v_mov_b32_e32 v5, v411527; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]11528; GFX90A-NEXT:    s_cbranch_execnz .LBB39_111529; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end11530; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]11531; GFX90A-NEXT:    s_setpc_b64 s[30:31]11532;11533; GFX908-LABEL: flat_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory:11534; GFX908:       ; %bb.0:11535; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11536; GFX908-NEXT:    v_mov_b32_e32 v3, v011537; GFX908-NEXT:    v_and_b32_e32 v0, -4, v311538; GFX908-NEXT:    flat_load_dword v4, v[0:1]11539; GFX908-NEXT:    v_and_b32_e32 v3, 3, v311540; GFX908-NEXT:    v_lshlrev_b32_e32 v5, 3, v311541; GFX908-NEXT:    s_mov_b32 s4, 0xffff11542; GFX908-NEXT:    v_lshlrev_b32_e64 v3, v5, s411543; GFX908-NEXT:    v_not_b32_e32 v6, v311544; GFX908-NEXT:    s_mov_b64 s[4:5], 011545; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v211546; GFX908-NEXT:    s_movk_i32 s6, 0x7fff11547; GFX908-NEXT:  .LBB39_1: ; %atomicrmw.start11548; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=111549; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11550; GFX908-NEXT:    v_lshrrev_b32_sdwa v3, v5, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11551; GFX908-NEXT:    v_max_f32_e32 v3, v3, v211552; GFX908-NEXT:    v_bfe_u32 v7, v3, 16, 111553; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v311554; GFX908-NEXT:    v_add3_u32 v7, v7, v3, s611555; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v3, v311556; GFX908-NEXT:    v_cndmask_b32_e32 v3, v7, v8, vcc11557; GFX908-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111558; GFX908-NEXT:    v_and_or_b32 v3, v4, v6, v311559; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc11560; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11561; GFX908-NEXT:    buffer_wbinvl111562; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v411563; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11564; GFX908-NEXT:    v_mov_b32_e32 v4, v311565; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]11566; GFX908-NEXT:    s_cbranch_execnz .LBB39_111567; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end11568; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]11569; GFX908-NEXT:    s_setpc_b64 s[30:31]11570;11571; GFX8-LABEL: flat_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory:11572; GFX8:       ; %bb.0:11573; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11574; GFX8-NEXT:    v_mov_b32_e32 v3, v011575; GFX8-NEXT:    v_and_b32_e32 v0, -4, v311576; GFX8-NEXT:    flat_load_dword v4, v[0:1]11577; GFX8-NEXT:    v_and_b32_e32 v3, 3, v311578; GFX8-NEXT:    v_lshlrev_b32_e32 v5, 3, v311579; GFX8-NEXT:    s_mov_b32 s4, 0xffff11580; GFX8-NEXT:    v_lshlrev_b32_e64 v3, v5, s411581; GFX8-NEXT:    v_not_b32_e32 v6, v311582; GFX8-NEXT:    s_mov_b64 s[4:5], 011583; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v211584; GFX8-NEXT:  .LBB39_1: ; %atomicrmw.start11585; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=111586; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11587; GFX8-NEXT:    v_lshrrev_b32_sdwa v3, v5, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11588; GFX8-NEXT:    v_max_f32_e32 v3, v3, v211589; GFX8-NEXT:    v_bfe_u32 v8, v3, 16, 111590; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v311591; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v811592; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v311593; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v3, v311594; GFX8-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc11595; GFX8-NEXT:    v_and_b32_e32 v7, v4, v611596; GFX8-NEXT:    v_lshlrev_b32_sdwa v3, v5, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111597; GFX8-NEXT:    v_or_b32_e32 v3, v7, v311598; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc11599; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11600; GFX8-NEXT:    buffer_wbinvl111601; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v411602; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11603; GFX8-NEXT:    v_mov_b32_e32 v4, v311604; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]11605; GFX8-NEXT:    s_cbranch_execnz .LBB39_111606; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end11607; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]11608; GFX8-NEXT:    s_setpc_b64 s[30:31]11609;11610; GFX7-LABEL: flat_agent_atomic_fmax_noret_bf16__amdgpu_no_fine_grained_memory:11611; GFX7:       ; %bb.0:11612; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11613; GFX7-NEXT:    v_mov_b32_e32 v3, v011614; GFX7-NEXT:    v_and_b32_e32 v0, -4, v311615; GFX7-NEXT:    flat_load_dword v4, v[0:1]11616; GFX7-NEXT:    v_and_b32_e32 v3, 3, v311617; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 3, v311618; GFX7-NEXT:    v_lshl_b32_e32 v3, 0xffff, v511619; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v211620; GFX7-NEXT:    v_not_b32_e32 v6, v311621; GFX7-NEXT:    s_mov_b64 s[4:5], 011622; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v211623; GFX7-NEXT:  .LBB39_1: ; %atomicrmw.start11624; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=111625; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11626; GFX7-NEXT:    v_lshrrev_b32_e32 v3, v5, v411627; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v311628; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v311629; GFX7-NEXT:    v_max_f32_e32 v3, v3, v211630; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v311631; GFX7-NEXT:    v_and_b32_e32 v7, v4, v611632; GFX7-NEXT:    v_lshlrev_b32_e32 v3, v5, v311633; GFX7-NEXT:    v_or_b32_e32 v3, v7, v311634; GFX7-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc11635; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11636; GFX7-NEXT:    buffer_wbinvl111637; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v411638; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11639; GFX7-NEXT:    v_mov_b32_e32 v4, v311640; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]11641; GFX7-NEXT:    s_cbranch_execnz .LBB39_111642; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end11643; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]11644; GFX7-NEXT:    s_setpc_b64 s[30:31]11645  %unused = atomicrmw fmax ptr %ptr, bfloat %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !011646  ret void11647}11648 11649define void @flat_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, bfloat %val) #0 {11650; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:11651; GFX12-TRUE16:       ; %bb.0:11652; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x011653; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x011654; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x011655; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x011656; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x011657; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v011658; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)11659; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo11660; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 011661; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v311662; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v311663; GFX12-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]11664; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v311665; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11666; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff11667; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v311668; GFX12-TRUE16-NEXT:  .LBB40_1: ; %atomicrmw.start11669; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=111670; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x011671; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v411672; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 011673; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l11674; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)11675; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v311676; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v3, v3, v711677; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l11678; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)11679; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 111680; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v311681; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311682; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff11683; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)11684; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11685; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo11686; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h11687; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11688; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v711689; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v311690; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x011691; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV11692; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x011693; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV11694; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411695; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v311696; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11697; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s011698; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11699; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011700; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB40_111701; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end11702; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011703; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x011704; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]11705;11706; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:11707; GFX12-FAKE16:       ; %bb.0:11708; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x011709; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x011710; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x011711; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x011712; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x011713; GFX12-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v011714; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11715; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo11716; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v211717; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)11718; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v411719; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v411720; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 011721; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]11722; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v411723; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff11724; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11725; GFX12-FAKE16-NEXT:    v_not_b32_e32 v5, v511726; GFX12-FAKE16-NEXT:  .LBB40_1: ; %atomicrmw.start11727; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=111728; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x011729; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v311730; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11731; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v211732; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v2, v2, v611733; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)11734; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 111735; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v211736; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v211737; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff11738; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11739; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11740; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo11741; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v211742; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11743; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v211744; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v211745; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x011746; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV11747; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x011748; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV11749; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v311750; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v211751; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11752; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s011753; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11754; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011755; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB40_111756; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end11757; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011758; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x011759; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]11760;11761; GFX942-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:11762; GFX942:       ; %bb.0:11763; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11764; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe11765; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]11766; GFX942-NEXT:    v_and_b32_e32 v0, -4, v411767; GFX942-NEXT:    v_mov_b32_e32 v1, v511768; GFX942-NEXT:    flat_load_dword v3, v[0:1]11769; GFX942-NEXT:    v_and_b32_e32 v4, 3, v411770; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v411771; GFX942-NEXT:    s_mov_b32 s0, 0xffff11772; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s011773; GFX942-NEXT:    v_not_b32_e32 v5, v511774; GFX942-NEXT:    s_mov_b64 s[0:1], 011775; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v211776; GFX942-NEXT:    s_movk_i32 s2, 0x7fff11777; GFX942-NEXT:  .LBB40_1: ; %atomicrmw.start11778; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=111779; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11780; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11781; GFX942-NEXT:    s_nop 011782; GFX942-NEXT:    v_max_f32_e32 v2, v2, v611783; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 111784; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v211785; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s211786; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211787; GFX942-NEXT:    s_nop 111788; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc11789; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111790; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v211791; GFX942-NEXT:    buffer_wbl2 sc111792; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc011793; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11794; GFX942-NEXT:    buffer_inv sc111795; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311796; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]11797; GFX942-NEXT:    v_mov_b32_e32 v3, v211798; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]11799; GFX942-NEXT:    s_cbranch_execnz .LBB40_111800; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end11801; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]11802; GFX942-NEXT:    s_setpc_b64 s[30:31]11803;11804; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:11805; GFX11-TRUE16:       ; %bb.0:11806; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11807; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v011808; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11809; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo11810; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 011811; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v311812; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v311813; GFX11-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]11814; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v311815; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11816; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff11817; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v311818; GFX11-TRUE16-NEXT:    .p2align 611819; GFX11-TRUE16-NEXT:  .LBB40_1: ; %atomicrmw.start11820; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=111821; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11822; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v411823; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 011824; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l11825; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)11826; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v311827; GFX11-TRUE16-NEXT:    v_max_f32_e32 v3, v3, v711828; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l11829; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)11830; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 111831; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v311832; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v311833; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff11834; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11835; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo11836; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h11837; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11838; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v711839; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v311840; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x011841; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc11842; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11843; GFX11-TRUE16-NEXT:    buffer_gl1_inv11844; GFX11-TRUE16-NEXT:    buffer_gl0_inv11845; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v411846; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v311847; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s011848; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)11849; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011850; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB40_111851; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end11852; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011853; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]11854;11855; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:11856; GFX11-FAKE16:       ; %bb.0:11857; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11858; GFX11-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v011859; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)11860; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo11861; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v211862; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v411863; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v411864; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 011865; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]11866; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v411867; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11868; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff11869; GFX11-FAKE16-NEXT:    v_not_b32_e32 v5, v511870; GFX11-FAKE16-NEXT:    .p2align 611871; GFX11-FAKE16-NEXT:  .LBB40_1: ; %atomicrmw.start11872; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=111873; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11874; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v311875; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11876; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v211877; GFX11-FAKE16-NEXT:    v_max_f32_e32 v2, v2, v611878; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)11879; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 111880; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v211881; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v211882; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff11883; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11884; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo11885; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v211886; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11887; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v211888; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v211889; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x011890; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] glc11891; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11892; GFX11-FAKE16-NEXT:    buffer_gl1_inv11893; GFX11-FAKE16-NEXT:    buffer_gl0_inv11894; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v311895; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v211896; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s011897; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)11898; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s011899; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB40_111900; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end11901; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s011902; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]11903;11904; GFX10-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:11905; GFX10:       ; %bb.0:11906; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11907; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v011908; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo11909; GFX10-NEXT:    v_lshlrev_b32_e32 v6, 16, v211910; GFX10-NEXT:    v_and_b32_e32 v0, -4, v411911; GFX10-NEXT:    v_and_b32_e32 v4, 3, v411912; GFX10-NEXT:    s_mov_b32 s4, 011913; GFX10-NEXT:    flat_load_dword v3, v[0:1]11914; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 3, v411915; GFX10-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff11916; GFX10-NEXT:    v_not_b32_e32 v5, v511917; GFX10-NEXT:  .LBB40_1: ; %atomicrmw.start11918; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=111919; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11920; GFX10-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11921; GFX10-NEXT:    v_max_f32_e32 v2, v2, v611922; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 111923; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v211924; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v211925; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff11926; GFX10-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo11927; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111928; GFX10-NEXT:    v_and_or_b32 v2, v3, v5, v211929; GFX10-NEXT:    s_waitcnt_vscnt null, 0x011930; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc11931; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11932; GFX10-NEXT:    buffer_gl1_inv11933; GFX10-NEXT:    buffer_gl0_inv11934; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v311935; GFX10-NEXT:    v_mov_b32_e32 v3, v211936; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s411937; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s411938; GFX10-NEXT:    s_cbranch_execnz .LBB40_111939; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end11940; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s411941; GFX10-NEXT:    s_setpc_b64 s[30:31]11942;11943; GFX90A-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:11944; GFX90A:       ; %bb.0:11945; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11946; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v011947; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc11948; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v411949; GFX90A-NEXT:    flat_load_dword v3, v[0:1]11950; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v411951; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v411952; GFX90A-NEXT:    s_mov_b32 s4, 0xffff11953; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s411954; GFX90A-NEXT:    v_not_b32_e32 v5, v511955; GFX90A-NEXT:    s_mov_b64 s[4:5], 011956; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v211957; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff11958; GFX90A-NEXT:  .LBB40_1: ; %atomicrmw.start11959; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=111960; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11961; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD11962; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v611963; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 111964; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v211965; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s611966; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v211967; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc11968; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_111969; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v211970; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc11971; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)11972; GFX90A-NEXT:    buffer_wbinvl111973; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v311974; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]11975; GFX90A-NEXT:    v_mov_b32_e32 v3, v211976; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]11977; GFX90A-NEXT:    s_cbranch_execnz .LBB40_111978; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end11979; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]11980; GFX90A-NEXT:    s_setpc_b64 s[30:31]11981;11982; GFX908-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:11983; GFX908:       ; %bb.0:11984; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11985; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v011986; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc11987; GFX908-NEXT:    v_and_b32_e32 v0, -4, v411988; GFX908-NEXT:    flat_load_dword v3, v[0:1]11989; GFX908-NEXT:    v_and_b32_e32 v4, 3, v411990; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 3, v411991; GFX908-NEXT:    s_mov_b32 s4, 0xffff11992; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v4, s411993; GFX908-NEXT:    v_not_b32_e32 v5, v511994; GFX908-NEXT:    s_mov_b64 s[4:5], 011995; GFX908-NEXT:    v_lshlrev_b32_e32 v6, 16, v211996; GFX908-NEXT:    s_movk_i32 s6, 0x7fff11997; GFX908-NEXT:  .LBB40_1: ; %atomicrmw.start11998; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=111999; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12000; GFX908-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD12001; GFX908-NEXT:    v_max_f32_e32 v2, v2, v612002; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 112003; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v212004; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s612005; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212006; GFX908-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc12007; GFX908-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112008; GFX908-NEXT:    v_and_or_b32 v2, v3, v5, v212009; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc12010; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12011; GFX908-NEXT:    buffer_wbinvl112012; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312013; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12014; GFX908-NEXT:    v_mov_b32_e32 v3, v212015; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]12016; GFX908-NEXT:    s_cbranch_execnz .LBB40_112017; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end12018; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]12019; GFX908-NEXT:    s_setpc_b64 s[30:31]12020;12021; GFX8-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:12022; GFX8:       ; %bb.0:12023; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12024; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0x7fe, v012025; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc12026; GFX8-NEXT:    v_and_b32_e32 v0, -4, v412027; GFX8-NEXT:    flat_load_dword v3, v[0:1]12028; GFX8-NEXT:    v_and_b32_e32 v4, 3, v412029; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 3, v412030; GFX8-NEXT:    s_mov_b32 s4, 0xffff12031; GFX8-NEXT:    v_lshlrev_b32_e64 v5, v4, s412032; GFX8-NEXT:    v_not_b32_e32 v5, v512033; GFX8-NEXT:    s_mov_b64 s[4:5], 012034; GFX8-NEXT:    v_lshlrev_b32_e32 v6, 16, v212035; GFX8-NEXT:  .LBB40_1: ; %atomicrmw.start12036; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=112037; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12038; GFX8-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD12039; GFX8-NEXT:    v_max_f32_e32 v2, v2, v612040; GFX8-NEXT:    v_bfe_u32 v8, v2, 16, 112041; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v212042; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v812043; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v212044; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212045; GFX8-NEXT:    v_cndmask_b32_e32 v2, v8, v9, vcc12046; GFX8-NEXT:    v_and_b32_e32 v7, v3, v512047; GFX8-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112048; GFX8-NEXT:    v_or_b32_e32 v2, v7, v212049; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc12050; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12051; GFX8-NEXT:    buffer_wbinvl112052; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312053; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12054; GFX8-NEXT:    v_mov_b32_e32 v3, v212055; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]12056; GFX8-NEXT:    s_cbranch_execnz .LBB40_112057; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end12058; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]12059; GFX8-NEXT:    s_setpc_b64 s[30:31]12060;12061; GFX7-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:12062; GFX7:       ; %bb.0:12063; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12064; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v012065; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc12066; GFX7-NEXT:    v_and_b32_e32 v0, -4, v412067; GFX7-NEXT:    flat_load_dword v3, v[0:1]12068; GFX7-NEXT:    v_and_b32_e32 v4, 3, v412069; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v412070; GFX7-NEXT:    v_lshl_b32_e32 v5, 0xffff, v412071; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v212072; GFX7-NEXT:    v_not_b32_e32 v5, v512073; GFX7-NEXT:    s_mov_b64 s[4:5], 012074; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v212075; GFX7-NEXT:  .LBB40_1: ; %atomicrmw.start12076; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=112077; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12078; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v312079; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v212080; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v212081; GFX7-NEXT:    v_max_f32_e32 v2, v2, v612082; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v212083; GFX7-NEXT:    v_and_b32_e32 v7, v3, v512084; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v212085; GFX7-NEXT:    v_or_b32_e32 v2, v7, v212086; GFX7-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc12087; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12088; GFX7-NEXT:    buffer_wbinvl112089; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312090; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12091; GFX7-NEXT:    v_mov_b32_e32 v3, v212092; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]12093; GFX7-NEXT:    s_cbranch_execnz .LBB40_112094; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end12095; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]12096; GFX7-NEXT:    s_setpc_b64 s[30:31]12097  %gep = getelementptr inbounds bfloat, ptr %ptr, i64 102312098  %unused = atomicrmw fmax ptr %gep, bfloat %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !012099  ret void12100}12101 12102define void @flat_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory(ptr %ptr, bfloat %val) #0 {12103; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:12104; GFX12-TRUE16:       ; %bb.0:12105; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012106; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x012107; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x012108; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x012109; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x012110; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v012111; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)12112; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo12113; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 012114; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v312115; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v312116; GFX12-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]12117; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v312118; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12119; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff12120; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v312121; GFX12-TRUE16-NEXT:  .LBB41_1: ; %atomicrmw.start12122; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=112123; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012124; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v412125; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 012126; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l12127; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)12128; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v312129; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v3, v3, v712130; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l12131; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)12132; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 112133; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v312134; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v312135; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff12136; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)12137; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12138; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo12139; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h12140; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12141; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v712142; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v312143; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x012144; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV12145; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012146; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV12147; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412148; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v312149; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12150; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s012151; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12152; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012153; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB41_112154; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end12155; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012156; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x012157; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]12158;12159; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:12160; GFX12-FAKE16:       ; %bb.0:12161; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x012162; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x012163; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x012164; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x012165; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x012166; GFX12-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v012167; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)12168; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo12169; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v212170; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)12171; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v412172; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v412173; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 012174; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]12175; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v412176; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff12177; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12178; GFX12-FAKE16-NEXT:    v_not_b32_e32 v5, v512179; GFX12-FAKE16-NEXT:  .LBB41_1: ; %atomicrmw.start12180; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=112181; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x012182; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v312183; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12184; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v212185; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v2, v2, v612186; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)12187; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 112188; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v212189; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v212190; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff12191; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)12192; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12193; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo12194; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v212195; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12196; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v212197; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v212198; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x012199; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV12200; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x012201; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV12202; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v312203; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v212204; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12205; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s012206; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12207; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012208; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB41_112209; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end12210; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012211; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x012212; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]12213;12214; GFX942-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:12215; GFX942:       ; %bb.0:12216; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12217; GFX942-NEXT:    s_movk_i32 s0, 0xf80012218; GFX942-NEXT:    s_mov_b32 s1, -112219; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]12220; GFX942-NEXT:    v_and_b32_e32 v0, -4, v412221; GFX942-NEXT:    v_mov_b32_e32 v1, v512222; GFX942-NEXT:    flat_load_dword v3, v[0:1]12223; GFX942-NEXT:    v_and_b32_e32 v4, 3, v412224; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v412225; GFX942-NEXT:    s_mov_b32 s0, 0xffff12226; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s012227; GFX942-NEXT:    v_not_b32_e32 v5, v512228; GFX942-NEXT:    s_mov_b64 s[0:1], 012229; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v212230; GFX942-NEXT:    s_movk_i32 s2, 0x7fff12231; GFX942-NEXT:  .LBB41_1: ; %atomicrmw.start12232; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=112233; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12234; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD12235; GFX942-NEXT:    s_nop 012236; GFX942-NEXT:    v_max_f32_e32 v2, v2, v612237; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 112238; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v212239; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s212240; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212241; GFX942-NEXT:    s_nop 112242; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc12243; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112244; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v212245; GFX942-NEXT:    buffer_wbl2 sc112246; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc012247; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12248; GFX942-NEXT:    buffer_inv sc112249; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312250; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]12251; GFX942-NEXT:    v_mov_b32_e32 v3, v212252; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]12253; GFX942-NEXT:    s_cbranch_execnz .LBB41_112254; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end12255; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]12256; GFX942-NEXT:    s_setpc_b64 s[30:31]12257;12258; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:12259; GFX11-TRUE16:       ; %bb.0:12260; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12261; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v012262; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12263; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo12264; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 012265; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v312266; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v312267; GFX11-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]12268; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v312269; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12270; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff12271; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v312272; GFX11-TRUE16-NEXT:    .p2align 612273; GFX11-TRUE16-NEXT:  .LBB41_1: ; %atomicrmw.start12274; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=112275; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12276; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v412277; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 012278; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l12279; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)12280; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v312281; GFX11-TRUE16-NEXT:    v_max_f32_e32 v3, v3, v712282; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l12283; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)12284; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 112285; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v312286; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v312287; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff12288; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12289; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo12290; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h12291; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12292; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v712293; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v312294; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x012295; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc12296; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12297; GFX11-TRUE16-NEXT:    buffer_gl1_inv12298; GFX11-TRUE16-NEXT:    buffer_gl0_inv12299; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412300; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v312301; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s012302; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12303; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012304; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB41_112305; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end12306; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012307; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]12308;12309; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:12310; GFX11-FAKE16:       ; %bb.0:12311; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12312; GFX11-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v012313; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)12314; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo12315; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v212316; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v412317; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v412318; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 012319; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]12320; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v412321; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12322; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff12323; GFX11-FAKE16-NEXT:    v_not_b32_e32 v5, v512324; GFX11-FAKE16-NEXT:    .p2align 612325; GFX11-FAKE16-NEXT:  .LBB41_1: ; %atomicrmw.start12326; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=112327; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12328; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v312329; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12330; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v212331; GFX11-FAKE16-NEXT:    v_max_f32_e32 v2, v2, v612332; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)12333; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 112334; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v212335; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v212336; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff12337; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12338; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo12339; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v212340; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12341; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v212342; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v212343; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x012344; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] glc12345; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12346; GFX11-FAKE16-NEXT:    buffer_gl1_inv12347; GFX11-FAKE16-NEXT:    buffer_gl0_inv12348; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v312349; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v212350; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s012351; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12352; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012353; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB41_112354; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end12355; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012356; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]12357;12358; GFX10-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:12359; GFX10:       ; %bb.0:12360; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12361; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0xfffff800, v012362; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo12363; GFX10-NEXT:    v_lshlrev_b32_e32 v6, 16, v212364; GFX10-NEXT:    v_and_b32_e32 v0, -4, v412365; GFX10-NEXT:    v_and_b32_e32 v4, 3, v412366; GFX10-NEXT:    s_mov_b32 s4, 012367; GFX10-NEXT:    flat_load_dword v3, v[0:1]12368; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 3, v412369; GFX10-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff12370; GFX10-NEXT:    v_not_b32_e32 v5, v512371; GFX10-NEXT:  .LBB41_1: ; %atomicrmw.start12372; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=112373; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12374; GFX10-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD12375; GFX10-NEXT:    v_max_f32_e32 v2, v2, v612376; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 112377; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v212378; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v212379; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff12380; GFX10-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo12381; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112382; GFX10-NEXT:    v_and_or_b32 v2, v3, v5, v212383; GFX10-NEXT:    s_waitcnt_vscnt null, 0x012384; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc12385; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12386; GFX10-NEXT:    buffer_gl1_inv12387; GFX10-NEXT:    buffer_gl0_inv12388; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v312389; GFX10-NEXT:    v_mov_b32_e32 v3, v212390; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s412391; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s412392; GFX10-NEXT:    s_cbranch_execnz .LBB41_112393; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end12394; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s412395; GFX10-NEXT:    s_setpc_b64 s[30:31]12396;12397; GFX90A-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:12398; GFX90A:       ; %bb.0:12399; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12400; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v012401; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc12402; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v412403; GFX90A-NEXT:    flat_load_dword v3, v[0:1]12404; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v412405; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v412406; GFX90A-NEXT:    s_mov_b32 s4, 0xffff12407; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s412408; GFX90A-NEXT:    v_not_b32_e32 v5, v512409; GFX90A-NEXT:    s_mov_b64 s[4:5], 012410; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v212411; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff12412; GFX90A-NEXT:  .LBB41_1: ; %atomicrmw.start12413; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=112414; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12415; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD12416; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v612417; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 112418; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v212419; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s612420; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212421; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc12422; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112423; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v212424; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc12425; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12426; GFX90A-NEXT:    buffer_wbinvl112427; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312428; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12429; GFX90A-NEXT:    v_mov_b32_e32 v3, v212430; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]12431; GFX90A-NEXT:    s_cbranch_execnz .LBB41_112432; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end12433; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]12434; GFX90A-NEXT:    s_setpc_b64 s[30:31]12435;12436; GFX908-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:12437; GFX908:       ; %bb.0:12438; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12439; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v012440; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc12441; GFX908-NEXT:    v_and_b32_e32 v0, -4, v412442; GFX908-NEXT:    flat_load_dword v3, v[0:1]12443; GFX908-NEXT:    v_and_b32_e32 v4, 3, v412444; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 3, v412445; GFX908-NEXT:    s_mov_b32 s4, 0xffff12446; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v4, s412447; GFX908-NEXT:    v_not_b32_e32 v5, v512448; GFX908-NEXT:    s_mov_b64 s[4:5], 012449; GFX908-NEXT:    v_lshlrev_b32_e32 v6, 16, v212450; GFX908-NEXT:    s_movk_i32 s6, 0x7fff12451; GFX908-NEXT:  .LBB41_1: ; %atomicrmw.start12452; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=112453; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12454; GFX908-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD12455; GFX908-NEXT:    v_max_f32_e32 v2, v2, v612456; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 112457; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v212458; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s612459; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212460; GFX908-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc12461; GFX908-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112462; GFX908-NEXT:    v_and_or_b32 v2, v3, v5, v212463; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc12464; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12465; GFX908-NEXT:    buffer_wbinvl112466; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312467; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12468; GFX908-NEXT:    v_mov_b32_e32 v3, v212469; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]12470; GFX908-NEXT:    s_cbranch_execnz .LBB41_112471; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end12472; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]12473; GFX908-NEXT:    s_setpc_b64 s[30:31]12474;12475; GFX8-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:12476; GFX8:       ; %bb.0:12477; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12478; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0xfffff800, v012479; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc12480; GFX8-NEXT:    v_and_b32_e32 v0, -4, v412481; GFX8-NEXT:    flat_load_dword v3, v[0:1]12482; GFX8-NEXT:    v_and_b32_e32 v4, 3, v412483; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 3, v412484; GFX8-NEXT:    s_mov_b32 s4, 0xffff12485; GFX8-NEXT:    v_lshlrev_b32_e64 v5, v4, s412486; GFX8-NEXT:    v_not_b32_e32 v5, v512487; GFX8-NEXT:    s_mov_b64 s[4:5], 012488; GFX8-NEXT:    v_lshlrev_b32_e32 v6, 16, v212489; GFX8-NEXT:  .LBB41_1: ; %atomicrmw.start12490; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=112491; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12492; GFX8-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD12493; GFX8-NEXT:    v_max_f32_e32 v2, v2, v612494; GFX8-NEXT:    v_bfe_u32 v8, v2, 16, 112495; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v212496; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v812497; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v212498; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212499; GFX8-NEXT:    v_cndmask_b32_e32 v2, v8, v9, vcc12500; GFX8-NEXT:    v_and_b32_e32 v7, v3, v512501; GFX8-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112502; GFX8-NEXT:    v_or_b32_e32 v2, v7, v212503; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc12504; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12505; GFX8-NEXT:    buffer_wbinvl112506; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312507; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12508; GFX8-NEXT:    v_mov_b32_e32 v3, v212509; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]12510; GFX8-NEXT:    s_cbranch_execnz .LBB41_112511; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end12512; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]12513; GFX8-NEXT:    s_setpc_b64 s[30:31]12514;12515; GFX7-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b_neg__amdgpu_no_fine_grained_memory:12516; GFX7:       ; %bb.0:12517; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12518; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v012519; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc12520; GFX7-NEXT:    v_and_b32_e32 v0, -4, v412521; GFX7-NEXT:    flat_load_dword v3, v[0:1]12522; GFX7-NEXT:    v_and_b32_e32 v4, 3, v412523; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v412524; GFX7-NEXT:    v_lshl_b32_e32 v5, 0xffff, v412525; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v212526; GFX7-NEXT:    v_not_b32_e32 v5, v512527; GFX7-NEXT:    s_mov_b64 s[4:5], 012528; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v212529; GFX7-NEXT:  .LBB41_1: ; %atomicrmw.start12530; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=112531; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12532; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v312533; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v212534; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v212535; GFX7-NEXT:    v_max_f32_e32 v2, v2, v612536; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v212537; GFX7-NEXT:    v_and_b32_e32 v7, v3, v512538; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v212539; GFX7-NEXT:    v_or_b32_e32 v2, v7, v212540; GFX7-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc12541; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12542; GFX7-NEXT:    buffer_wbinvl112543; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312544; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12545; GFX7-NEXT:    v_mov_b32_e32 v3, v212546; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]12547; GFX7-NEXT:    s_cbranch_execnz .LBB41_112548; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end12549; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]12550; GFX7-NEXT:    s_setpc_b64 s[30:31]12551  %gep = getelementptr inbounds bfloat, ptr %ptr, i64 -102412552  %unused = atomicrmw fmax ptr %gep, bfloat %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !012553  ret void12554}12555 12556define bfloat @flat_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory(ptr %ptr, bfloat %val) #0 {12557; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:12558; GFX12-TRUE16:       ; %bb.0:12559; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012560; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x012561; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x012562; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x012563; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x012564; GFX12-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204612565; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 012566; GFX12-TRUE16-NEXT:  .LBB42_1: ; %atomicrmw.start12567; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=112568; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012569; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v312570; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.l, 012571; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v2.l12572; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)12573; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v412574; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v5, v5, v312575; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v3.l12576; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)12577; GFX12-TRUE16-NEXT:    v_bfe_u32 v6, v5, 16, 112578; GFX12-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v512579; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v512580; GFX12-TRUE16-NEXT:    v_add3_u32 v6, v6, v5, 0x7fff12581; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)12582; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12583; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v6, v7, vcc_lo12584; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v5.h12585; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12586; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v312587; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x012588; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV12589; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012590; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV12591; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412592; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12593; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s012594; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12595; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012596; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB42_112597; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end12598; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012599; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v3.l12600; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x012601; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]12602;12603; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:12604; GFX12-FAKE16:       ; %bb.0:12605; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x012606; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x012607; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x012608; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x012609; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x012610; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204612611; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v212612; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 012613; GFX12-FAKE16-NEXT:  .LBB42_1: ; %atomicrmw.start12614; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=112615; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x012616; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v312617; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12618; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v412619; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v3, v3, v212620; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)12621; GFX12-FAKE16-NEXT:    v_bfe_u32 v5, v3, 16, 112622; GFX12-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v312623; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v312624; GFX12-FAKE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff12625; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)12626; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12627; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo12628; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v312629; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12630; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v312631; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x012632; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV12633; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x012634; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV12635; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412636; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12637; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s012638; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12639; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012640; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB42_112641; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end12642; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012643; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v312644; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x012645; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]12646;12647; GFX942-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:12648; GFX942:       ; %bb.0:12649; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12650; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:204612651; GFX942-NEXT:    s_mov_b64 s[0:1], 012652; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v212653; GFX942-NEXT:    s_movk_i32 s2, 0x7fff12654; GFX942-NEXT:    s_mov_b32 s3, 0xffff000012655; GFX942-NEXT:  .LBB42_1: ; %atomicrmw.start12656; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=112657; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12658; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v312659; GFX942-NEXT:    v_max_f32_e32 v2, v2, v412660; GFX942-NEXT:    v_bfe_u32 v5, v2, 16, 112661; GFX942-NEXT:    v_or_b32_e32 v6, 0x400000, v212662; GFX942-NEXT:    v_add3_u32 v5, v5, v2, s212663; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212664; GFX942-NEXT:    s_nop 112665; GFX942-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc12666; GFX942-NEXT:    v_lshrrev_b32_e32 v2, 16, v212667; GFX942-NEXT:    v_and_or_b32 v2, v3, s3, v212668; GFX942-NEXT:    buffer_wbl2 sc112669; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2046 sc012670; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12671; GFX942-NEXT:    buffer_inv sc112672; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312673; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]12674; GFX942-NEXT:    v_mov_b32_e32 v3, v212675; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]12676; GFX942-NEXT:    s_cbranch_execnz .LBB42_112677; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end12678; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]12679; GFX942-NEXT:    v_mov_b32_e32 v0, v212680; GFX942-NEXT:    s_setpc_b64 s[30:31]12681;12682; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:12683; GFX11-TRUE16:       ; %bb.0:12684; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12685; GFX11-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204612686; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 012687; GFX11-TRUE16-NEXT:    .p2align 612688; GFX11-TRUE16-NEXT:  .LBB42_1: ; %atomicrmw.start12689; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=112690; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12691; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v312692; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, 012693; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v2.l12694; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)12695; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v412696; GFX11-TRUE16-NEXT:    v_max_f32_e32 v5, v5, v312697; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v3.l12698; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)12699; GFX11-TRUE16-NEXT:    v_bfe_u32 v6, v5, 16, 112700; GFX11-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v512701; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v512702; GFX11-TRUE16-NEXT:    v_add3_u32 v6, v6, v5, 0x7fff12703; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12704; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v6, v7, vcc_lo12705; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v5.h12706; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12707; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v312708; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x012709; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 glc12710; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12711; GFX11-TRUE16-NEXT:    buffer_gl1_inv12712; GFX11-TRUE16-NEXT:    buffer_gl0_inv12713; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412714; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s012715; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12716; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012717; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB42_112718; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end12719; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012720; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v3.l12721; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]12722;12723; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:12724; GFX11-FAKE16:       ; %bb.0:12725; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12726; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204612727; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v212728; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 012729; GFX11-FAKE16-NEXT:    .p2align 612730; GFX11-FAKE16-NEXT:  .LBB42_1: ; %atomicrmw.start12731; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=112732; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12733; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v312734; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12735; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v412736; GFX11-FAKE16-NEXT:    v_max_f32_e32 v3, v3, v212737; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)12738; GFX11-FAKE16-NEXT:    v_bfe_u32 v5, v3, 16, 112739; GFX11-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v312740; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v312741; GFX11-FAKE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff12742; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12743; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo12744; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v312745; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)12746; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v312747; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x012748; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 glc12749; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12750; GFX11-FAKE16-NEXT:    buffer_gl1_inv12751; GFX11-FAKE16-NEXT:    buffer_gl0_inv12752; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412753; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s012754; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12755; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012756; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB42_112757; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end12758; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012759; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v312760; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]12761;12762; GFX10-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:12763; GFX10:       ; %bb.0:12764; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12765; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v012766; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, 0, v1, vcc_lo12767; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 16, v212768; GFX10-NEXT:    s_mov_b32 s4, 012769; GFX10-NEXT:    flat_load_dword v0, v[3:4]12770; GFX10-NEXT:  .LBB42_1: ; %atomicrmw.start12771; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=112772; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12773; GFX10-NEXT:    v_mov_b32_e32 v6, v012774; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 16, v612775; GFX10-NEXT:    v_max_f32_e32 v0, v0, v112776; GFX10-NEXT:    v_bfe_u32 v2, v0, 16, 112777; GFX10-NEXT:    v_or_b32_e32 v5, 0x400000, v012778; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v0, v012779; GFX10-NEXT:    v_add3_u32 v2, v2, v0, 0x7fff12780; GFX10-NEXT:    v_cndmask_b32_e32 v0, v2, v5, vcc_lo12781; GFX10-NEXT:    v_lshrrev_b32_e32 v0, 16, v012782; GFX10-NEXT:    v_and_or_b32 v5, 0xffff0000, v6, v012783; GFX10-NEXT:    s_waitcnt_vscnt null, 0x012784; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc12785; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12786; GFX10-NEXT:    buffer_gl1_inv12787; GFX10-NEXT:    buffer_gl0_inv12788; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v612789; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s412790; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s412791; GFX10-NEXT:    s_cbranch_execnz .LBB42_112792; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end12793; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s412794; GFX10-NEXT:    s_setpc_b64 s[30:31]12795;12796; GFX90A-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:12797; GFX90A:       ; %bb.0:12798; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12799; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:204612800; GFX90A-NEXT:    s_mov_b64 s[4:5], 012801; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v212802; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff12803; GFX90A-NEXT:    s_mov_b32 s7, 0xffff000012804; GFX90A-NEXT:  .LBB42_1: ; %atomicrmw.start12805; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=112806; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12807; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v312808; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v412809; GFX90A-NEXT:    v_bfe_u32 v5, v2, 16, 112810; GFX90A-NEXT:    v_or_b32_e32 v6, 0x400000, v212811; GFX90A-NEXT:    v_add3_u32 v5, v5, v2, s612812; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v212813; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc12814; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, 16, v212815; GFX90A-NEXT:    v_and_or_b32 v2, v3, s7, v212816; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2046 glc12817; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12818; GFX90A-NEXT:    buffer_wbinvl112819; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v312820; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12821; GFX90A-NEXT:    v_mov_b32_e32 v3, v212822; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]12823; GFX90A-NEXT:    s_cbranch_execnz .LBB42_112824; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end12825; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]12826; GFX90A-NEXT:    v_mov_b32_e32 v0, v212827; GFX90A-NEXT:    s_setpc_b64 s[30:31]12828;12829; GFX908-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:12830; GFX908:       ; %bb.0:12831; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12832; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:204612833; GFX908-NEXT:    s_mov_b64 s[4:5], 012834; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v212835; GFX908-NEXT:    s_movk_i32 s6, 0x7fff12836; GFX908-NEXT:    s_mov_b32 s7, 0xffff000012837; GFX908-NEXT:  .LBB42_1: ; %atomicrmw.start12838; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=112839; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12840; GFX908-NEXT:    v_mov_b32_e32 v4, v312841; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v412842; GFX908-NEXT:    v_max_f32_e32 v3, v3, v212843; GFX908-NEXT:    v_bfe_u32 v5, v3, 16, 112844; GFX908-NEXT:    v_or_b32_e32 v6, 0x400000, v312845; GFX908-NEXT:    v_add3_u32 v5, v5, v3, s612846; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v3, v312847; GFX908-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc12848; GFX908-NEXT:    v_lshrrev_b32_e32 v3, 16, v312849; GFX908-NEXT:    v_and_or_b32 v3, v4, s7, v312850; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2046 glc12851; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12852; GFX908-NEXT:    buffer_wbinvl112853; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v412854; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12855; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]12856; GFX908-NEXT:    s_cbranch_execnz .LBB42_112857; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end12858; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]12859; GFX908-NEXT:    v_mov_b32_e32 v0, v312860; GFX908-NEXT:    s_setpc_b64 s[30:31]12861;12862; GFX8-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:12863; GFX8:       ; %bb.0:12864; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12865; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v012866; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc12867; GFX8-NEXT:    flat_load_dword v0, v[3:4]12868; GFX8-NEXT:    s_mov_b64 s[4:5], 012869; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 16, v212870; GFX8-NEXT:  .LBB42_1: ; %atomicrmw.start12871; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=112872; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12873; GFX8-NEXT:    v_mov_b32_e32 v6, v012874; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 16, v612875; GFX8-NEXT:    v_max_f32_e32 v0, v0, v112876; GFX8-NEXT:    v_bfe_u32 v5, v0, 16, 112877; GFX8-NEXT:    v_add_u32_e32 v5, vcc, v5, v012878; GFX8-NEXT:    v_add_u32_e32 v5, vcc, 0x7fff, v512879; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v012880; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v0, v012881; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v612882; GFX8-NEXT:    v_cndmask_b32_e32 v0, v5, v7, vcc12883; GFX8-NEXT:    v_or_b32_sdwa v5, v2, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_112884; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc12885; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12886; GFX8-NEXT:    buffer_wbinvl112887; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v612888; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12889; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]12890; GFX8-NEXT:    s_cbranch_execnz .LBB42_112891; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end12892; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]12893; GFX8-NEXT:    s_setpc_b64 s[30:31]12894;12895; GFX7-LABEL: flat_agent_atomic_fmax_ret_bf16__offset12b_pos__align4__amdgpu_no_fine_grained_memory:12896; GFX7:       ; %bb.0:12897; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12898; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fe, v012899; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc12900; GFX7-NEXT:    flat_load_dword v3, v[0:1]12901; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v212902; GFX7-NEXT:    s_mov_b64 s[4:5], 012903; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v212904; GFX7-NEXT:  .LBB42_1: ; %atomicrmw.start12905; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=112906; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12907; GFX7-NEXT:    v_mov_b32_e32 v4, v312908; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v412909; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v312910; GFX7-NEXT:    v_max_f32_e32 v3, v3, v212911; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v412912; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v312913; GFX7-NEXT:    v_or_b32_e32 v3, v5, v312914; GFX7-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc12915; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)12916; GFX7-NEXT:    buffer_wbinvl112917; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v412918; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]12919; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]12920; GFX7-NEXT:    s_cbranch_execnz .LBB42_112921; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end12922; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]12923; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v312924; GFX7-NEXT:    s_setpc_b64 s[30:31]12925  %gep = getelementptr inbounds bfloat, ptr %ptr, i64 102312926  %result = atomicrmw fmax ptr %gep, bfloat %val syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !012927  ret bfloat %result12928}12929 12930define void @flat_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory(ptr %ptr, bfloat %val) #0 {12931; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:12932; GFX12-TRUE16:       ; %bb.0:12933; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012934; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x012935; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x012936; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x012937; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x012938; GFX12-TRUE16-NEXT:    flat_load_b32 v4, v[0:1] offset:204612939; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 012940; GFX12-TRUE16-NEXT:  .LBB43_1: ; %atomicrmw.start12941; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=112942; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.l, 012943; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v2.l12944; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012945; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v412946; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)12947; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v5, v5, v312948; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v3.l12949; GFX12-TRUE16-NEXT:    v_bfe_u32 v6, v5, 16, 112950; GFX12-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v512951; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v512952; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)12953; GFX12-TRUE16-NEXT:    v_add3_u32 v6, v6, v5, 0x7fff12954; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)12955; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v6, v7, vcc_lo12956; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12957; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v5.h12958; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v312959; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x012960; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV12961; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x012962; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV12963; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v412964; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v312965; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12966; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s012967; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)12968; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s012969; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB43_112970; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end12971; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s012972; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x012973; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]12974;12975; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:12976; GFX12-FAKE16:       ; %bb.0:12977; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x012978; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x012979; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x012980; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x012981; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x012982; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204612983; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v212984; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 012985; GFX12-FAKE16-NEXT:  .LBB43_1: ; %atomicrmw.start12986; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=112987; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x012988; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v312989; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12990; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v2, v2, v412991; GFX12-FAKE16-NEXT:    v_bfe_u32 v5, v2, 16, 112992; GFX12-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v212993; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v212994; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)12995; GFX12-FAKE16-NEXT:    v_add3_u32 v5, v5, v2, 0x7fff12996; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)12997; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc_lo12998; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12999; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v213000; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v3, v213001; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x013002; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2046 th:TH_ATOMIC_RETURN scope:SCOPE_DEV13003; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x013004; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV13005; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v313006; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v213007; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13008; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s013009; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13010; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013011; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB43_113012; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end13013; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013014; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x013015; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]13016;13017; GFX942-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:13018; GFX942:       ; %bb.0:13019; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13020; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:204613021; GFX942-NEXT:    s_mov_b64 s[0:1], 013022; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v213023; GFX942-NEXT:    s_movk_i32 s2, 0x7fff13024; GFX942-NEXT:    s_mov_b32 s3, 0xffff000013025; GFX942-NEXT:  .LBB43_1: ; %atomicrmw.start13026; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=113027; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13028; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v313029; GFX942-NEXT:    v_max_f32_e32 v2, v2, v413030; GFX942-NEXT:    v_bfe_u32 v5, v2, 16, 113031; GFX942-NEXT:    v_or_b32_e32 v6, 0x400000, v213032; GFX942-NEXT:    v_add3_u32 v5, v5, v2, s213033; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213034; GFX942-NEXT:    s_nop 113035; GFX942-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc13036; GFX942-NEXT:    v_lshrrev_b32_e32 v2, 16, v213037; GFX942-NEXT:    v_and_or_b32 v2, v3, s3, v213038; GFX942-NEXT:    buffer_wbl2 sc113039; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2046 sc013040; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13041; GFX942-NEXT:    buffer_inv sc113042; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313043; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]13044; GFX942-NEXT:    v_mov_b32_e32 v3, v213045; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]13046; GFX942-NEXT:    s_cbranch_execnz .LBB43_113047; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end13048; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]13049; GFX942-NEXT:    s_setpc_b64 s[30:31]13050;13051; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:13052; GFX11-TRUE16:       ; %bb.0:13053; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13054; GFX11-TRUE16-NEXT:    flat_load_b32 v4, v[0:1] offset:204613055; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 013056; GFX11-TRUE16-NEXT:    .p2align 613057; GFX11-TRUE16-NEXT:  .LBB43_1: ; %atomicrmw.start13058; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=113059; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, 013060; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v2.l13061; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13062; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v413063; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)13064; GFX11-TRUE16-NEXT:    v_max_f32_e32 v5, v5, v313065; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, v3.l13066; GFX11-TRUE16-NEXT:    v_bfe_u32 v6, v5, 16, 113067; GFX11-TRUE16-NEXT:    v_or_b32_e32 v7, 0x400000, v513068; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v513069; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)13070; GFX11-TRUE16-NEXT:    v_add3_u32 v6, v6, v5, 0x7fff13071; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v6, v7, vcc_lo13072; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13073; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v5.h13074; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, 0xffff0000, v4, v313075; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x013076; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2046 glc13077; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13078; GFX11-TRUE16-NEXT:    buffer_gl1_inv13079; GFX11-TRUE16-NEXT:    buffer_gl0_inv13080; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v413081; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v313082; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s013083; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)13084; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013085; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB43_113086; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end13087; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013088; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]13089;13090; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:13091; GFX11-FAKE16:       ; %bb.0:13092; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13093; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204613094; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v213095; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 013096; GFX11-FAKE16-NEXT:    .p2align 613097; GFX11-FAKE16-NEXT:  .LBB43_1: ; %atomicrmw.start13098; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=113099; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13100; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v313101; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13102; GFX11-FAKE16-NEXT:    v_max_f32_e32 v2, v2, v413103; GFX11-FAKE16-NEXT:    v_bfe_u32 v5, v2, 16, 113104; GFX11-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v213105; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v213106; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)13107; GFX11-FAKE16-NEXT:    v_add3_u32 v5, v5, v2, 0x7fff13108; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc_lo13109; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13110; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v213111; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v3, v213112; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x013113; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2046 glc13114; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13115; GFX11-FAKE16-NEXT:    buffer_gl1_inv13116; GFX11-FAKE16-NEXT:    buffer_gl0_inv13117; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v313118; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v213119; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s013120; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)13121; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013122; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB43_113123; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end13124; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013125; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]13126;13127; GFX10-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:13128; GFX10:       ; %bb.0:13129; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13130; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fe, v013131; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo13132; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v213133; GFX10-NEXT:    s_mov_b32 s4, 013134; GFX10-NEXT:    flat_load_dword v3, v[0:1]13135; GFX10-NEXT:  .LBB43_1: ; %atomicrmw.start13136; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=113137; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13138; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v313139; GFX10-NEXT:    v_max_f32_e32 v2, v2, v413140; GFX10-NEXT:    v_bfe_u32 v5, v2, 16, 113141; GFX10-NEXT:    v_or_b32_e32 v6, 0x400000, v213142; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v213143; GFX10-NEXT:    v_add3_u32 v5, v5, v2, 0x7fff13144; GFX10-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc_lo13145; GFX10-NEXT:    v_lshrrev_b32_e32 v2, 16, v213146; GFX10-NEXT:    v_and_or_b32 v2, 0xffff0000, v3, v213147; GFX10-NEXT:    s_waitcnt_vscnt null, 0x013148; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc13149; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13150; GFX10-NEXT:    buffer_gl1_inv13151; GFX10-NEXT:    buffer_gl0_inv13152; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v313153; GFX10-NEXT:    v_mov_b32_e32 v3, v213154; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s413155; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s413156; GFX10-NEXT:    s_cbranch_execnz .LBB43_113157; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end13158; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s413159; GFX10-NEXT:    s_setpc_b64 s[30:31]13160;13161; GFX90A-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:13162; GFX90A:       ; %bb.0:13163; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13164; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:204613165; GFX90A-NEXT:    s_mov_b64 s[4:5], 013166; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v213167; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff13168; GFX90A-NEXT:    s_mov_b32 s7, 0xffff000013169; GFX90A-NEXT:  .LBB43_1: ; %atomicrmw.start13170; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=113171; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13172; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v313173; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v413174; GFX90A-NEXT:    v_bfe_u32 v5, v2, 16, 113175; GFX90A-NEXT:    v_or_b32_e32 v6, 0x400000, v213176; GFX90A-NEXT:    v_add3_u32 v5, v5, v2, s613177; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213178; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc13179; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, 16, v213180; GFX90A-NEXT:    v_and_or_b32 v2, v3, s7, v213181; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2046 glc13182; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13183; GFX90A-NEXT:    buffer_wbinvl113184; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313185; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13186; GFX90A-NEXT:    v_mov_b32_e32 v3, v213187; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]13188; GFX90A-NEXT:    s_cbranch_execnz .LBB43_113189; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end13190; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]13191; GFX90A-NEXT:    s_setpc_b64 s[30:31]13192;13193; GFX908-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:13194; GFX908:       ; %bb.0:13195; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13196; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:204613197; GFX908-NEXT:    s_mov_b64 s[4:5], 013198; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v213199; GFX908-NEXT:    s_movk_i32 s6, 0x7fff13200; GFX908-NEXT:    s_mov_b32 s7, 0xffff000013201; GFX908-NEXT:  .LBB43_1: ; %atomicrmw.start13202; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=113203; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13204; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v313205; GFX908-NEXT:    v_max_f32_e32 v2, v2, v413206; GFX908-NEXT:    v_bfe_u32 v5, v2, 16, 113207; GFX908-NEXT:    v_or_b32_e32 v6, 0x400000, v213208; GFX908-NEXT:    v_add3_u32 v5, v5, v2, s613209; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213210; GFX908-NEXT:    v_cndmask_b32_e32 v2, v5, v6, vcc13211; GFX908-NEXT:    v_lshrrev_b32_e32 v2, 16, v213212; GFX908-NEXT:    v_and_or_b32 v2, v3, s7, v213213; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2046 glc13214; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13215; GFX908-NEXT:    buffer_wbinvl113216; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313217; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13218; GFX908-NEXT:    v_mov_b32_e32 v3, v213219; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]13220; GFX908-NEXT:    s_cbranch_execnz .LBB43_113221; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end13222; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]13223; GFX908-NEXT:    s_setpc_b64 s[30:31]13224;13225; GFX8-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:13226; GFX8:       ; %bb.0:13227; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13228; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fe, v013229; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc13230; GFX8-NEXT:    flat_load_dword v3, v[0:1]13231; GFX8-NEXT:    s_mov_b64 s[4:5], 013232; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v213233; GFX8-NEXT:  .LBB43_1: ; %atomicrmw.start13234; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=113235; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13236; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v313237; GFX8-NEXT:    v_max_f32_e32 v2, v2, v413238; GFX8-NEXT:    v_bfe_u32 v6, v2, 16, 113239; GFX8-NEXT:    v_add_u32_e32 v6, vcc, v6, v213240; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0x7fff, v613241; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v213242; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213243; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v313244; GFX8-NEXT:    v_cndmask_b32_e32 v2, v6, v7, vcc13245; GFX8-NEXT:    v_or_b32_sdwa v2, v5, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113246; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc13247; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13248; GFX8-NEXT:    buffer_wbinvl113249; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313250; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13251; GFX8-NEXT:    v_mov_b32_e32 v3, v213252; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]13253; GFX8-NEXT:    s_cbranch_execnz .LBB43_113254; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end13255; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]13256; GFX8-NEXT:    s_setpc_b64 s[30:31]13257;13258; GFX7-LABEL: flat_agent_atomic_fmax_noret_bf16__offset12b__align4_pos__amdgpu_no_fine_grained_memory:13259; GFX7:       ; %bb.0:13260; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13261; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fe, v013262; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc13263; GFX7-NEXT:    flat_load_dword v3, v[0:1]13264; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v213265; GFX7-NEXT:    s_mov_b64 s[4:5], 013266; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v213267; GFX7-NEXT:  .LBB43_1: ; %atomicrmw.start13268; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=113269; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13270; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v313271; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v213272; GFX7-NEXT:    v_max_f32_e32 v2, v2, v413273; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v313274; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v213275; GFX7-NEXT:    v_or_b32_e32 v2, v5, v213276; GFX7-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc13277; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13278; GFX7-NEXT:    buffer_wbinvl113279; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313280; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13281; GFX7-NEXT:    v_mov_b32_e32 v3, v213282; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]13283; GFX7-NEXT:    s_cbranch_execnz .LBB43_113284; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end13285; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]13286; GFX7-NEXT:    s_setpc_b64 s[30:31]13287  %gep = getelementptr inbounds bfloat, ptr %ptr, i64 102313288  %unused = atomicrmw fmax ptr %gep, bfloat %val syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !013289  ret void13290}13291 13292define bfloat @flat_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, bfloat %val) #0 {13293; GFX12-TRUE16-LABEL: flat_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13294; GFX12-TRUE16:       ; %bb.0:13295; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x013296; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x013297; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x013298; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x013299; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x013300; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v013301; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)13302; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13303; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 013304; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v313305; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v313306; GFX12-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]13307; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v313308; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13309; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff13310; GFX12-TRUE16-NEXT:    v_not_b32_e32 v4, v413311; GFX12-TRUE16-NEXT:  .LBB44_1: ; %atomicrmw.start13312; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=113313; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x013314; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v513315; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 013316; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l13317; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)13318; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v613319; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v513320; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)13321; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v5, v5, v713322; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l13323; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 113324; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v513325; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v513326; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)13327; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff13328; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)13329; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo13330; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13331; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h13332; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v713333; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13334; GFX12-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v513335; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS13336; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x013337; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_SYS13338; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x013339; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS13340; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v613341; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13342; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s013343; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13344; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013345; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB44_113346; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end13347; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013348; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v513349; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x013350; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]13351;13352; GFX12-FAKE16-LABEL: flat_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13353; GFX12-FAKE16:       ; %bb.0:13354; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x013355; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x013356; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x013357; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x013358; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x013359; GFX12-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v013360; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)13361; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13362; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v213363; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)13364; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v313365; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v313366; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 013367; GFX12-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]13368; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v313369; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff13370; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13371; GFX12-FAKE16-NEXT:    v_not_b32_e32 v4, v413372; GFX12-FAKE16-NEXT:  .LBB44_1: ; %atomicrmw.start13373; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=113374; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x013375; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v513376; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13377; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v613378; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v513379; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13380; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v5, v5, v213381; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 113382; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v513383; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v513384; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)13385; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff13386; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)13387; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo13388; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13389; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v513390; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v513391; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13392; GFX12-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v513393; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS13394; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x013395; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_SYS13396; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x013397; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS13398; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v613399; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13400; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s013401; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13402; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013403; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB44_113404; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end13405; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013406; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v513407; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x013408; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]13409;13410; GFX942-LABEL: flat_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13411; GFX942:       ; %bb.0:13412; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13413; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe13414; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]13415; GFX942-NEXT:    v_and_b32_e32 v0, -4, v413416; GFX942-NEXT:    v_mov_b32_e32 v1, v513417; GFX942-NEXT:    flat_load_dword v3, v[0:1]13418; GFX942-NEXT:    v_and_b32_e32 v4, 3, v413419; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v413420; GFX942-NEXT:    s_mov_b32 s0, 0xffff13421; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s013422; GFX942-NEXT:    v_not_b32_e32 v5, v513423; GFX942-NEXT:    s_mov_b64 s[0:1], 013424; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v213425; GFX942-NEXT:    s_movk_i32 s2, 0x7fff13426; GFX942-NEXT:  .LBB44_1: ; %atomicrmw.start13427; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=113428; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13429; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13430; GFX942-NEXT:    s_nop 013431; GFX942-NEXT:    v_max_f32_e32 v2, v2, v613432; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 113433; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v213434; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s213435; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213436; GFX942-NEXT:    s_nop 113437; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc13438; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113439; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v213440; GFX942-NEXT:    buffer_wbl2 sc0 sc113441; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc0 sc113442; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13443; GFX942-NEXT:    buffer_inv sc0 sc113444; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313445; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]13446; GFX942-NEXT:    v_mov_b32_e32 v3, v213447; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]13448; GFX942-NEXT:    s_cbranch_execnz .LBB44_113449; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end13450; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]13451; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v4, v213452; GFX942-NEXT:    s_setpc_b64 s[30:31]13453;13454; GFX11-TRUE16-LABEL: flat_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13455; GFX11-TRUE16:       ; %bb.0:13456; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13457; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v013458; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13459; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13460; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 013461; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v313462; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v313463; GFX11-TRUE16-NEXT:    flat_load_b32 v5, v[0:1]13464; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v313465; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13466; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff13467; GFX11-TRUE16-NEXT:    v_not_b32_e32 v4, v413468; GFX11-TRUE16-NEXT:    .p2align 613469; GFX11-TRUE16-NEXT:  .LBB44_1: ; %atomicrmw.start13470; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=113471; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13472; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v513473; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 013474; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l13475; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)13476; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v613477; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v513478; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)13479; GFX11-TRUE16-NEXT:    v_max_f32_e32 v5, v5, v713480; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l13481; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 113482; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v513483; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v513484; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)13485; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff13486; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc_lo13487; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13488; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.h13489; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v713490; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13491; GFX11-TRUE16-NEXT:    v_and_or_b32 v5, v6, v4, v513492; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x013493; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc13494; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13495; GFX11-TRUE16-NEXT:    buffer_gl1_inv13496; GFX11-TRUE16-NEXT:    buffer_gl0_inv13497; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v613498; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s013499; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)13500; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013501; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB44_113502; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end13503; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013504; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v513505; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]13506;13507; GFX11-FAKE16-LABEL: flat_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13508; GFX11-FAKE16:       ; %bb.0:13509; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13510; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v013511; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)13512; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13513; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v213514; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v313515; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 3, v313516; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 013517; GFX11-FAKE16-NEXT:    flat_load_b32 v5, v[0:1]13518; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 3, v313519; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13520; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff13521; GFX11-FAKE16-NEXT:    v_not_b32_e32 v4, v413522; GFX11-FAKE16-NEXT:    .p2align 613523; GFX11-FAKE16-NEXT:  .LBB44_1: ; %atomicrmw.start13524; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=113525; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13526; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v513527; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13528; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, v3, v613529; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v513530; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13531; GFX11-FAKE16-NEXT:    v_max_f32_e32 v5, v5, v213532; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 113533; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v513534; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v513535; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)13536; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff13537; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo13538; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13539; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v513540; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v5, v3, v513541; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13542; GFX11-FAKE16-NEXT:    v_and_or_b32 v5, v6, v4, v513543; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x013544; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v5, v[0:1], v[5:6] glc13545; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13546; GFX11-FAKE16-NEXT:    buffer_gl1_inv13547; GFX11-FAKE16-NEXT:    buffer_gl0_inv13548; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v613549; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s013550; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)13551; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013552; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB44_113553; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end13554; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013555; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v3, v513556; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]13557;13558; GFX10-LABEL: flat_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13559; GFX10:       ; %bb.0:13560; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13561; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v013562; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo13563; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v213564; GFX10-NEXT:    v_and_b32_e32 v0, -4, v313565; GFX10-NEXT:    v_and_b32_e32 v3, 3, v313566; GFX10-NEXT:    s_mov_b32 s4, 013567; GFX10-NEXT:    flat_load_dword v5, v[0:1]13568; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 3, v313569; GFX10-NEXT:    v_lshlrev_b32_e64 v4, v3, 0xffff13570; GFX10-NEXT:    v_not_b32_e32 v4, v413571; GFX10-NEXT:  .LBB44_1: ; %atomicrmw.start13572; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=113573; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13574; GFX10-NEXT:    v_mov_b32_e32 v6, v513575; GFX10-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13576; GFX10-NEXT:    v_max_f32_e32 v5, v5, v213577; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 113578; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v513579; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v513580; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff13581; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc_lo13582; GFX10-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113583; GFX10-NEXT:    v_and_or_b32 v5, v6, v4, v513584; GFX10-NEXT:    s_waitcnt_vscnt null, 0x013585; GFX10-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc13586; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13587; GFX10-NEXT:    buffer_gl1_inv13588; GFX10-NEXT:    buffer_gl0_inv13589; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v5, v613590; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s413591; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s413592; GFX10-NEXT:    s_cbranch_execnz .LBB44_113593; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end13594; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s413595; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v3, v513596; GFX10-NEXT:    s_setpc_b64 s[30:31]13597;13598; GFX90A-LABEL: flat_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13599; GFX90A:       ; %bb.0:13600; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13601; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v013602; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc13603; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v413604; GFX90A-NEXT:    flat_load_dword v3, v[0:1]13605; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v413606; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v413607; GFX90A-NEXT:    s_mov_b32 s4, 0xffff13608; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s413609; GFX90A-NEXT:    v_not_b32_e32 v5, v513610; GFX90A-NEXT:    s_mov_b64 s[4:5], 013611; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v213612; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff13613; GFX90A-NEXT:  .LBB44_1: ; %atomicrmw.start13614; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=113615; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13616; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13617; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v613618; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 113619; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v213620; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s613621; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213622; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc13623; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113624; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v213625; GFX90A-NEXT:    buffer_wbl213626; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc13627; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13628; GFX90A-NEXT:    buffer_invl213629; GFX90A-NEXT:    buffer_wbinvl113630; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313631; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13632; GFX90A-NEXT:    v_mov_b32_e32 v3, v213633; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]13634; GFX90A-NEXT:    s_cbranch_execnz .LBB44_113635; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end13636; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]13637; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v4, v213638; GFX90A-NEXT:    s_setpc_b64 s[30:31]13639;13640; GFX908-LABEL: flat_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13641; GFX908:       ; %bb.0:13642; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13643; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0x7fe, v013644; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc13645; GFX908-NEXT:    v_and_b32_e32 v0, -4, v313646; GFX908-NEXT:    flat_load_dword v5, v[0:1]13647; GFX908-NEXT:    v_and_b32_e32 v3, 3, v313648; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 3, v313649; GFX908-NEXT:    s_mov_b32 s4, 0xffff13650; GFX908-NEXT:    v_lshlrev_b32_e64 v4, v3, s413651; GFX908-NEXT:    v_not_b32_e32 v4, v413652; GFX908-NEXT:    s_mov_b64 s[4:5], 013653; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v213654; GFX908-NEXT:    s_movk_i32 s6, 0x7fff13655; GFX908-NEXT:  .LBB44_1: ; %atomicrmw.start13656; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=113657; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13658; GFX908-NEXT:    v_mov_b32_e32 v6, v513659; GFX908-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13660; GFX908-NEXT:    v_max_f32_e32 v5, v5, v213661; GFX908-NEXT:    v_bfe_u32 v7, v5, 16, 113662; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v513663; GFX908-NEXT:    v_add3_u32 v7, v7, v5, s613664; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v513665; GFX908-NEXT:    v_cndmask_b32_e32 v5, v7, v8, vcc13666; GFX908-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113667; GFX908-NEXT:    v_and_or_b32 v5, v6, v4, v513668; GFX908-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc13669; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13670; GFX908-NEXT:    buffer_wbinvl113671; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v613672; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13673; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]13674; GFX908-NEXT:    s_cbranch_execnz .LBB44_113675; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end13676; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]13677; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v3, v513678; GFX908-NEXT:    s_setpc_b64 s[30:31]13679;13680; GFX8-LABEL: flat_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13681; GFX8:       ; %bb.0:13682; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13683; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fe, v013684; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc13685; GFX8-NEXT:    v_and_b32_e32 v0, -4, v313686; GFX8-NEXT:    flat_load_dword v5, v[0:1]13687; GFX8-NEXT:    v_and_b32_e32 v3, 3, v313688; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 3, v313689; GFX8-NEXT:    s_mov_b32 s4, 0xffff13690; GFX8-NEXT:    v_lshlrev_b32_e64 v4, v3, s413691; GFX8-NEXT:    v_not_b32_e32 v4, v413692; GFX8-NEXT:    s_mov_b64 s[4:5], 013693; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v213694; GFX8-NEXT:  .LBB44_1: ; %atomicrmw.start13695; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=113696; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13697; GFX8-NEXT:    v_mov_b32_e32 v6, v513698; GFX8-NEXT:    v_lshrrev_b32_sdwa v5, v3, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13699; GFX8-NEXT:    v_max_f32_e32 v5, v5, v213700; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 113701; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v513702; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v813703; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v513704; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v513705; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc13706; GFX8-NEXT:    v_and_b32_e32 v7, v6, v413707; GFX8-NEXT:    v_lshlrev_b32_sdwa v5, v3, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113708; GFX8-NEXT:    v_or_b32_e32 v5, v7, v513709; GFX8-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc13710; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13711; GFX8-NEXT:    buffer_wbinvl113712; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v613713; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13714; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]13715; GFX8-NEXT:    s_cbranch_execnz .LBB44_113716; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end13717; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]13718; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v3, v513719; GFX8-NEXT:    s_setpc_b64 s[30:31]13720;13721; GFX7-LABEL: flat_system_atomic_fmax_ret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13722; GFX7:       ; %bb.0:13723; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13724; GFX7-NEXT:    v_add_i32_e32 v3, vcc, 0x7fe, v013725; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc13726; GFX7-NEXT:    v_and_b32_e32 v0, -4, v313727; GFX7-NEXT:    flat_load_dword v5, v[0:1]13728; GFX7-NEXT:    v_and_b32_e32 v3, 3, v313729; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 3, v313730; GFX7-NEXT:    v_lshl_b32_e32 v4, 0xffff, v313731; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v213732; GFX7-NEXT:    v_not_b32_e32 v4, v413733; GFX7-NEXT:    s_mov_b64 s[4:5], 013734; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v213735; GFX7-NEXT:  .LBB44_1: ; %atomicrmw.start13736; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=113737; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13738; GFX7-NEXT:    v_mov_b32_e32 v6, v513739; GFX7-NEXT:    v_lshrrev_b32_e32 v5, v3, v613740; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v513741; GFX7-NEXT:    v_mul_f32_e32 v5, 1.0, v513742; GFX7-NEXT:    v_max_f32_e32 v5, v5, v213743; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v513744; GFX7-NEXT:    v_and_b32_e32 v7, v6, v413745; GFX7-NEXT:    v_lshlrev_b32_e32 v5, v3, v513746; GFX7-NEXT:    v_or_b32_e32 v5, v7, v513747; GFX7-NEXT:    flat_atomic_cmpswap v5, v[0:1], v[5:6] glc13748; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13749; GFX7-NEXT:    buffer_wbinvl113750; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v613751; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]13752; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]13753; GFX7-NEXT:    s_cbranch_execnz .LBB44_113754; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end13755; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]13756; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v3, v513757; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v013758; GFX7-NEXT:    s_setpc_b64 s[30:31]13759  %gep = getelementptr inbounds bfloat, ptr %ptr, i64 102313760  %result = atomicrmw fmax ptr %gep, bfloat %val seq_cst, !amdgpu.no.fine.grained.memory !013761  ret bfloat %result13762}13763 13764define void @flat_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, bfloat %val) #0 {13765; GFX12-TRUE16-LABEL: flat_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13766; GFX12-TRUE16:       ; %bb.0:13767; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x013768; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x013769; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x013770; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x013771; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x013772; GFX12-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v013773; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)13774; GFX12-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13775; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 013776; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v313777; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v313778; GFX12-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]13779; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v313780; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13781; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff13782; GFX12-TRUE16-NEXT:    v_not_b32_e32 v6, v313783; GFX12-TRUE16-NEXT:  .LBB45_1: ; %atomicrmw.start13784; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=113785; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x013786; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v413787; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 013788; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l13789; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)13790; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v313791; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v3, v3, v713792; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l13793; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)13794; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 113795; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v313796; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v313797; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff13798; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)13799; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13800; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo13801; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h13802; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13803; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v713804; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v313805; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS13806; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x013807; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_SYS13808; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x013809; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS13810; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v413811; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v313812; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13813; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s013814; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13815; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013816; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB45_113817; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end13818; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013819; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x013820; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]13821;13822; GFX12-FAKE16-LABEL: flat_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13823; GFX12-FAKE16:       ; %bb.0:13824; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x013825; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x013826; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x013827; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x013828; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x013829; GFX12-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v013830; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)13831; GFX12-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13832; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v213833; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(VALU_DEP_1)13834; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v413835; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v413836; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 013837; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]13838; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v413839; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff13840; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13841; GFX12-FAKE16-NEXT:    v_not_b32_e32 v5, v513842; GFX12-FAKE16-NEXT:  .LBB45_1: ; %atomicrmw.start13843; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=113844; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x013845; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v313846; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13847; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v213848; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v2, v2, v613849; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)13850; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 113851; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v213852; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v213853; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff13854; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)13855; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13856; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo13857; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v213858; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13859; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v213860; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v213861; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS13862; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x013863; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_SYS13864; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x013865; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS13866; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v313867; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v213868; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13869; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s013870; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)13871; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013872; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB45_113873; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end13874; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013875; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x013876; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]13877;13878; GFX942-LABEL: flat_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13879; GFX942:       ; %bb.0:13880; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13881; GFX942-NEXT:    s_mov_b64 s[0:1], 0x7fe13882; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]13883; GFX942-NEXT:    v_and_b32_e32 v0, -4, v413884; GFX942-NEXT:    v_mov_b32_e32 v1, v513885; GFX942-NEXT:    flat_load_dword v3, v[0:1]13886; GFX942-NEXT:    v_and_b32_e32 v4, 3, v413887; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 3, v413888; GFX942-NEXT:    s_mov_b32 s0, 0xffff13889; GFX942-NEXT:    v_lshlrev_b32_e64 v5, v4, s013890; GFX942-NEXT:    v_not_b32_e32 v5, v513891; GFX942-NEXT:    s_mov_b64 s[0:1], 013892; GFX942-NEXT:    v_lshlrev_b32_e32 v6, 16, v213893; GFX942-NEXT:    s_movk_i32 s2, 0x7fff13894; GFX942-NEXT:  .LBB45_1: ; %atomicrmw.start13895; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=113896; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13897; GFX942-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD13898; GFX942-NEXT:    s_nop 013899; GFX942-NEXT:    v_max_f32_e32 v2, v2, v613900; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 113901; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v213902; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s213903; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v213904; GFX942-NEXT:    s_nop 113905; GFX942-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc13906; GFX942-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_113907; GFX942-NEXT:    v_and_or_b32 v2, v3, v5, v213908; GFX942-NEXT:    buffer_wbl2 sc0 sc113909; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc0 sc113910; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13911; GFX942-NEXT:    buffer_inv sc0 sc113912; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v313913; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]13914; GFX942-NEXT:    v_mov_b32_e32 v3, v213915; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]13916; GFX942-NEXT:    s_cbranch_execnz .LBB45_113917; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end13918; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]13919; GFX942-NEXT:    s_setpc_b64 s[30:31]13920;13921; GFX11-TRUE16-LABEL: flat_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13922; GFX11-TRUE16:       ; %bb.0:13923; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13924; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fe, v013925; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)13926; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13927; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 013928; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v313929; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 3, v313930; GFX11-TRUE16-NEXT:    flat_load_b32 v4, v[0:1]13931; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 3, v313932; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13933; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v5, 0xffff13934; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v313935; GFX11-TRUE16-NEXT:    .p2align 613936; GFX11-TRUE16-NEXT:  .LBB45_1: ; %atomicrmw.start13937; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=113938; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13939; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v5, v413940; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 013941; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v2.l13942; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)13943; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v313944; GFX11-TRUE16-NEXT:    v_max_f32_e32 v3, v3, v713945; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.h, v7.l13946; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_3)13947; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v3, 16, 113948; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v313949; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v313950; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v3, 0x7fff13951; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13952; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v8, v9, vcc_lo13953; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.h13954; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13955; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v5, v713956; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v6, v313957; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x013958; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc13959; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13960; GFX11-TRUE16-NEXT:    buffer_gl1_inv13961; GFX11-TRUE16-NEXT:    buffer_gl0_inv13962; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v413963; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v313964; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s013965; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)13966; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s013967; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB45_113968; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end13969; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s013970; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]13971;13972; GFX11-FAKE16-LABEL: flat_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:13973; GFX11-FAKE16:       ; %bb.0:13974; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13975; GFX11-FAKE16-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v013976; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)13977; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo13978; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v6, 16, v213979; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v413980; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 3, v413981; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 013982; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]13983; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 3, v413984; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13985; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff13986; GFX11-FAKE16-NEXT:    v_not_b32_e32 v5, v513987; GFX11-FAKE16-NEXT:    .p2align 613988; GFX11-FAKE16-NEXT:  .LBB45_1: ; %atomicrmw.start13989; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=113990; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)13991; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, v4, v313992; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13993; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v213994; GFX11-FAKE16-NEXT:    v_max_f32_e32 v2, v2, v613995; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)13996; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 113997; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v213998; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v213999; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff14000; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14001; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo14002; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v214003; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14004; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, v4, v214005; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, v3, v5, v214006; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x014007; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] glc14008; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14009; GFX11-FAKE16-NEXT:    buffer_gl1_inv14010; GFX11-FAKE16-NEXT:    buffer_gl0_inv14011; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v314012; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v214013; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s014014; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)14015; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014016; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB45_114017; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end14018; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s014019; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]14020;14021; GFX10-LABEL: flat_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:14022; GFX10:       ; %bb.0:14023; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14024; GFX10-NEXT:    v_add_co_u32 v4, vcc_lo, 0x7fe, v014025; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo14026; GFX10-NEXT:    v_lshlrev_b32_e32 v6, 16, v214027; GFX10-NEXT:    v_and_b32_e32 v0, -4, v414028; GFX10-NEXT:    v_and_b32_e32 v4, 3, v414029; GFX10-NEXT:    s_mov_b32 s4, 014030; GFX10-NEXT:    flat_load_dword v3, v[0:1]14031; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 3, v414032; GFX10-NEXT:    v_lshlrev_b32_e64 v5, v4, 0xffff14033; GFX10-NEXT:    v_not_b32_e32 v5, v514034; GFX10-NEXT:  .LBB45_1: ; %atomicrmw.start14035; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=114036; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14037; GFX10-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD14038; GFX10-NEXT:    v_max_f32_e32 v2, v2, v614039; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 114040; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v214041; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v214042; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff14043; GFX10-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc_lo14044; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_114045; GFX10-NEXT:    v_and_or_b32 v2, v3, v5, v214046; GFX10-NEXT:    s_waitcnt_vscnt null, 0x014047; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc14048; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14049; GFX10-NEXT:    buffer_gl1_inv14050; GFX10-NEXT:    buffer_gl0_inv14051; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v314052; GFX10-NEXT:    v_mov_b32_e32 v3, v214053; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s414054; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s414055; GFX10-NEXT:    s_cbranch_execnz .LBB45_114056; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end14057; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s414058; GFX10-NEXT:    s_setpc_b64 s[30:31]14059;14060; GFX90A-LABEL: flat_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:14061; GFX90A:       ; %bb.0:14062; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14063; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v014064; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc14065; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v414066; GFX90A-NEXT:    flat_load_dword v3, v[0:1]14067; GFX90A-NEXT:    v_and_b32_e32 v4, 3, v414068; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 3, v414069; GFX90A-NEXT:    s_mov_b32 s4, 0xffff14070; GFX90A-NEXT:    v_lshlrev_b32_e64 v5, v4, s414071; GFX90A-NEXT:    v_not_b32_e32 v5, v514072; GFX90A-NEXT:    s_mov_b64 s[4:5], 014073; GFX90A-NEXT:    v_lshlrev_b32_e32 v6, 16, v214074; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff14075; GFX90A-NEXT:  .LBB45_1: ; %atomicrmw.start14076; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=114077; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14078; GFX90A-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD14079; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v614080; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 114081; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v214082; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s614083; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v214084; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc14085; GFX90A-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_114086; GFX90A-NEXT:    v_and_or_b32 v2, v3, v5, v214087; GFX90A-NEXT:    buffer_wbl214088; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc14089; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14090; GFX90A-NEXT:    buffer_invl214091; GFX90A-NEXT:    buffer_wbinvl114092; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v314093; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14094; GFX90A-NEXT:    v_mov_b32_e32 v3, v214095; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]14096; GFX90A-NEXT:    s_cbranch_execnz .LBB45_114097; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end14098; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]14099; GFX90A-NEXT:    s_setpc_b64 s[30:31]14100;14101; GFX908-LABEL: flat_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:14102; GFX908:       ; %bb.0:14103; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14104; GFX908-NEXT:    v_add_co_u32_e32 v4, vcc, 0x7fe, v014105; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc14106; GFX908-NEXT:    v_and_b32_e32 v0, -4, v414107; GFX908-NEXT:    flat_load_dword v3, v[0:1]14108; GFX908-NEXT:    v_and_b32_e32 v4, 3, v414109; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 3, v414110; GFX908-NEXT:    s_mov_b32 s4, 0xffff14111; GFX908-NEXT:    v_lshlrev_b32_e64 v5, v4, s414112; GFX908-NEXT:    v_not_b32_e32 v5, v514113; GFX908-NEXT:    s_mov_b64 s[4:5], 014114; GFX908-NEXT:    v_lshlrev_b32_e32 v6, 16, v214115; GFX908-NEXT:    s_movk_i32 s6, 0x7fff14116; GFX908-NEXT:  .LBB45_1: ; %atomicrmw.start14117; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=114118; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14119; GFX908-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD14120; GFX908-NEXT:    v_max_f32_e32 v2, v2, v614121; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 114122; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v214123; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s614124; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v2, v214125; GFX908-NEXT:    v_cndmask_b32_e32 v2, v7, v8, vcc14126; GFX908-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_114127; GFX908-NEXT:    v_and_or_b32 v2, v3, v5, v214128; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc14129; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14130; GFX908-NEXT:    buffer_wbinvl114131; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v314132; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14133; GFX908-NEXT:    v_mov_b32_e32 v3, v214134; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]14135; GFX908-NEXT:    s_cbranch_execnz .LBB45_114136; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end14137; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]14138; GFX908-NEXT:    s_setpc_b64 s[30:31]14139;14140; GFX8-LABEL: flat_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:14141; GFX8:       ; %bb.0:14142; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14143; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0x7fe, v014144; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc14145; GFX8-NEXT:    v_and_b32_e32 v0, -4, v414146; GFX8-NEXT:    flat_load_dword v3, v[0:1]14147; GFX8-NEXT:    v_and_b32_e32 v4, 3, v414148; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 3, v414149; GFX8-NEXT:    s_mov_b32 s4, 0xffff14150; GFX8-NEXT:    v_lshlrev_b32_e64 v5, v4, s414151; GFX8-NEXT:    v_not_b32_e32 v5, v514152; GFX8-NEXT:    s_mov_b64 s[4:5], 014153; GFX8-NEXT:    v_lshlrev_b32_e32 v6, 16, v214154; GFX8-NEXT:  .LBB45_1: ; %atomicrmw.start14155; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=114156; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14157; GFX8-NEXT:    v_lshrrev_b32_sdwa v2, v4, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD14158; GFX8-NEXT:    v_max_f32_e32 v2, v2, v614159; GFX8-NEXT:    v_bfe_u32 v8, v2, 16, 114160; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v214161; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v814162; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v214163; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v2, v214164; GFX8-NEXT:    v_cndmask_b32_e32 v2, v8, v9, vcc14165; GFX8-NEXT:    v_and_b32_e32 v7, v3, v514166; GFX8-NEXT:    v_lshlrev_b32_sdwa v2, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_114167; GFX8-NEXT:    v_or_b32_e32 v2, v7, v214168; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc14169; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14170; GFX8-NEXT:    buffer_wbinvl114171; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v314172; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14173; GFX8-NEXT:    v_mov_b32_e32 v3, v214174; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]14175; GFX8-NEXT:    s_cbranch_execnz .LBB45_114176; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end14177; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]14178; GFX8-NEXT:    s_setpc_b64 s[30:31]14179;14180; GFX7-LABEL: flat_system_atomic_fmax_noret_bf16__offset12b_pos__amdgpu_no_fine_grained_memory:14181; GFX7:       ; %bb.0:14182; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14183; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fe, v014184; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc14185; GFX7-NEXT:    v_and_b32_e32 v0, -4, v414186; GFX7-NEXT:    flat_load_dword v3, v[0:1]14187; GFX7-NEXT:    v_and_b32_e32 v4, 3, v414188; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 3, v414189; GFX7-NEXT:    v_lshl_b32_e32 v5, 0xffff, v414190; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v214191; GFX7-NEXT:    v_not_b32_e32 v5, v514192; GFX7-NEXT:    s_mov_b64 s[4:5], 014193; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v214194; GFX7-NEXT:  .LBB45_1: ; %atomicrmw.start14195; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=114196; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14197; GFX7-NEXT:    v_lshrrev_b32_e32 v2, v4, v314198; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v214199; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v214200; GFX7-NEXT:    v_max_f32_e32 v2, v2, v614201; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v214202; GFX7-NEXT:    v_and_b32_e32 v7, v3, v514203; GFX7-NEXT:    v_lshlrev_b32_e32 v2, v4, v214204; GFX7-NEXT:    v_or_b32_e32 v2, v7, v214205; GFX7-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc14206; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14207; GFX7-NEXT:    buffer_wbinvl114208; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v314209; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14210; GFX7-NEXT:    v_mov_b32_e32 v3, v214211; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]14212; GFX7-NEXT:    s_cbranch_execnz .LBB45_114213; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end14214; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]14215; GFX7-NEXT:    s_setpc_b64 s[30:31]14216  %gep = getelementptr inbounds bfloat, ptr %ptr, i64 102314217  %unused = atomicrmw fmax ptr %gep, bfloat %val seq_cst, !amdgpu.no.fine.grained.memory !014218  ret void14219}14220 14221; --------------------------------------------------------------------14222; <2 x half>14223; --------------------------------------------------------------------14224 14225define <2 x half> @flat_agent_atomic_fmax_ret_v2f16__amdgpu_no_fine_grained_memory(ptr %ptr, <2 x half> %val) #0 {14226; GFX12-LABEL: flat_agent_atomic_fmax_ret_v2f16__amdgpu_no_fine_grained_memory:14227; GFX12:       ; %bb.0:14228; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014229; GFX12-NEXT:    s_wait_expcnt 0x014230; GFX12-NEXT:    s_wait_samplecnt 0x014231; GFX12-NEXT:    s_wait_bvhcnt 0x014232; GFX12-NEXT:    s_wait_kmcnt 0x014233; GFX12-NEXT:    flat_load_b32 v3, v[0:1]14234; GFX12-NEXT:    v_pk_max_num_f16 v2, v2, v214235; GFX12-NEXT:    s_mov_b32 s0, 014236; GFX12-NEXT:  .LBB46_1: ; %atomicrmw.start14237; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=114238; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014239; GFX12-NEXT:    v_mov_b32_e32 v4, v314240; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14241; GFX12-NEXT:    v_pk_max_num_f16 v3, v4, v414242; GFX12-NEXT:    v_pk_max_num_f16 v3, v3, v214243; GFX12-NEXT:    s_wait_storecnt 0x014244; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] th:TH_ATOMIC_RETURN scope:SCOPE_DEV14245; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014246; GFX12-NEXT:    global_inv scope:SCOPE_DEV14247; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414248; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14249; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s014250; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14251; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014252; GFX12-NEXT:    s_cbranch_execnz .LBB46_114253; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end14254; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s014255; GFX12-NEXT:    v_mov_b32_e32 v0, v314256; GFX12-NEXT:    s_wait_loadcnt 0x014257; GFX12-NEXT:    s_setpc_b64 s[30:31]14258;14259; GFX942-LABEL: flat_agent_atomic_fmax_ret_v2f16__amdgpu_no_fine_grained_memory:14260; GFX942:       ; %bb.0:14261; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14262; GFX942-NEXT:    flat_load_dword v3, v[0:1]14263; GFX942-NEXT:    s_mov_b64 s[0:1], 014264; GFX942-NEXT:    v_pk_max_f16 v4, v2, v214265; GFX942-NEXT:  .LBB46_1: ; %atomicrmw.start14266; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=114267; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14268; GFX942-NEXT:    v_pk_max_f16 v2, v3, v314269; GFX942-NEXT:    s_nop 014270; GFX942-NEXT:    v_pk_max_f16 v2, v2, v414271; GFX942-NEXT:    buffer_wbl2 sc114272; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc014273; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14274; GFX942-NEXT:    buffer_inv sc114275; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v314276; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]14277; GFX942-NEXT:    v_mov_b32_e32 v3, v214278; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]14279; GFX942-NEXT:    s_cbranch_execnz .LBB46_114280; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end14281; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]14282; GFX942-NEXT:    v_mov_b32_e32 v0, v214283; GFX942-NEXT:    s_setpc_b64 s[30:31]14284;14285; GFX11-LABEL: flat_agent_atomic_fmax_ret_v2f16__amdgpu_no_fine_grained_memory:14286; GFX11:       ; %bb.0:14287; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14288; GFX11-NEXT:    flat_load_b32 v3, v[0:1]14289; GFX11-NEXT:    v_pk_max_f16 v2, v2, v214290; GFX11-NEXT:    s_mov_b32 s0, 014291; GFX11-NEXT:  .LBB46_1: ; %atomicrmw.start14292; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=114293; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14294; GFX11-NEXT:    v_mov_b32_e32 v4, v314295; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14296; GFX11-NEXT:    v_pk_max_f16 v3, v4, v414297; GFX11-NEXT:    v_pk_max_f16 v3, v3, v214298; GFX11-NEXT:    s_waitcnt_vscnt null, 0x014299; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] glc14300; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14301; GFX11-NEXT:    buffer_gl1_inv14302; GFX11-NEXT:    buffer_gl0_inv14303; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414304; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s014305; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)14306; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014307; GFX11-NEXT:    s_cbranch_execnz .LBB46_114308; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end14309; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s014310; GFX11-NEXT:    v_mov_b32_e32 v0, v314311; GFX11-NEXT:    s_setpc_b64 s[30:31]14312;14313; GFX10-LABEL: flat_agent_atomic_fmax_ret_v2f16__amdgpu_no_fine_grained_memory:14314; GFX10:       ; %bb.0:14315; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14316; GFX10-NEXT:    flat_load_dword v3, v[0:1]14317; GFX10-NEXT:    v_pk_max_f16 v2, v2, v214318; GFX10-NEXT:    s_mov_b32 s4, 014319; GFX10-NEXT:  .LBB46_1: ; %atomicrmw.start14320; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=114321; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14322; GFX10-NEXT:    v_mov_b32_e32 v4, v314323; GFX10-NEXT:    v_pk_max_f16 v3, v4, v414324; GFX10-NEXT:    v_pk_max_f16 v3, v3, v214325; GFX10-NEXT:    s_waitcnt_vscnt null, 0x014326; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc14327; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14328; GFX10-NEXT:    buffer_gl1_inv14329; GFX10-NEXT:    buffer_gl0_inv14330; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414331; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s414332; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s414333; GFX10-NEXT:    s_cbranch_execnz .LBB46_114334; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end14335; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s414336; GFX10-NEXT:    v_mov_b32_e32 v0, v314337; GFX10-NEXT:    s_setpc_b64 s[30:31]14338;14339; GFX90A-LABEL: flat_agent_atomic_fmax_ret_v2f16__amdgpu_no_fine_grained_memory:14340; GFX90A:       ; %bb.0:14341; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14342; GFX90A-NEXT:    flat_load_dword v3, v[0:1]14343; GFX90A-NEXT:    s_mov_b64 s[4:5], 014344; GFX90A-NEXT:    v_pk_max_f16 v4, v2, v214345; GFX90A-NEXT:  .LBB46_1: ; %atomicrmw.start14346; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=114347; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14348; GFX90A-NEXT:    v_pk_max_f16 v2, v3, v314349; GFX90A-NEXT:    v_pk_max_f16 v2, v2, v414350; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc14351; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14352; GFX90A-NEXT:    buffer_wbinvl114353; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v314354; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14355; GFX90A-NEXT:    v_mov_b32_e32 v3, v214356; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]14357; GFX90A-NEXT:    s_cbranch_execnz .LBB46_114358; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end14359; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]14360; GFX90A-NEXT:    v_mov_b32_e32 v0, v214361; GFX90A-NEXT:    s_setpc_b64 s[30:31]14362;14363; GFX908-LABEL: flat_agent_atomic_fmax_ret_v2f16__amdgpu_no_fine_grained_memory:14364; GFX908:       ; %bb.0:14365; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14366; GFX908-NEXT:    flat_load_dword v3, v[0:1]14367; GFX908-NEXT:    s_mov_b64 s[4:5], 014368; GFX908-NEXT:    v_pk_max_f16 v2, v2, v214369; GFX908-NEXT:  .LBB46_1: ; %atomicrmw.start14370; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=114371; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14372; GFX908-NEXT:    v_mov_b32_e32 v4, v314373; GFX908-NEXT:    v_pk_max_f16 v3, v4, v414374; GFX908-NEXT:    v_pk_max_f16 v3, v3, v214375; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] glc14376; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14377; GFX908-NEXT:    buffer_wbinvl114378; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v414379; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14380; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]14381; GFX908-NEXT:    s_cbranch_execnz .LBB46_114382; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end14383; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]14384; GFX908-NEXT:    v_mov_b32_e32 v0, v314385; GFX908-NEXT:    s_setpc_b64 s[30:31]14386;14387; GFX8-LABEL: flat_agent_atomic_fmax_ret_v2f16__amdgpu_no_fine_grained_memory:14388; GFX8:       ; %bb.0:14389; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14390; GFX8-NEXT:    flat_load_dword v3, v[0:1]14391; GFX8-NEXT:    s_mov_b64 s[4:5], 014392; GFX8-NEXT:    v_max_f16_sdwa v4, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_114393; GFX8-NEXT:    v_max_f16_e32 v2, v2, v214394; GFX8-NEXT:  .LBB46_1: ; %atomicrmw.start14395; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=114396; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14397; GFX8-NEXT:    v_mov_b32_e32 v6, v314398; GFX8-NEXT:    v_max_f16_sdwa v3, v6, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_114399; GFX8-NEXT:    v_max_f16_e32 v5, v6, v614400; GFX8-NEXT:    v_max_f16_sdwa v3, v3, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD14401; GFX8-NEXT:    v_max_f16_e32 v5, v5, v214402; GFX8-NEXT:    v_or_b32_e32 v5, v5, v314403; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[5:6] glc14404; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14405; GFX8-NEXT:    buffer_wbinvl114406; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v614407; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14408; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]14409; GFX8-NEXT:    s_cbranch_execnz .LBB46_114410; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end14411; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]14412; GFX8-NEXT:    v_mov_b32_e32 v0, v314413; GFX8-NEXT:    s_setpc_b64 s[30:31]14414;14415; GFX7-LABEL: flat_agent_atomic_fmax_ret_v2f16__amdgpu_no_fine_grained_memory:14416; GFX7:       ; %bb.0:14417; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14418; GFX7-NEXT:    flat_load_dword v5, v[0:1]14419; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v314420; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v214421; GFX7-NEXT:    s_mov_b64 s[4:5], 014422; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v314423; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14424; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v514425; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v514426; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v314427; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v614428; GFX7-NEXT:  .LBB46_1: ; %atomicrmw.start14429; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=114430; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v314431; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v214432; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v314433; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v214434; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v314435; GFX7-NEXT:    v_max_f32_e32 v6, v6, v414436; GFX7-NEXT:    v_max_f32_e32 v7, v7, v514437; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v614438; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v714439; GFX7-NEXT:    v_or_b32_e32 v7, v2, v314440; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v614441; GFX7-NEXT:    v_or_b32_e32 v6, v8, v214442; GFX7-NEXT:    flat_atomic_cmpswap v6, v[0:1], v[6:7] glc14443; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14444; GFX7-NEXT:    buffer_wbinvl114445; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v614446; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v614447; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v314448; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v714449; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14450; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]14451; GFX7-NEXT:    s_cbranch_execnz .LBB46_114452; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end14453; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]14454; GFX7-NEXT:    v_mov_b32_e32 v0, v214455; GFX7-NEXT:    v_mov_b32_e32 v1, v314456; GFX7-NEXT:    s_setpc_b64 s[30:31]14457  %result = atomicrmw fmax ptr %ptr, <2 x half> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !014458  ret <2 x half> %result14459}14460 14461define <2 x half> @flat_agent_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, <2 x half> %val) #0 {14462; GFX12-LABEL: flat_agent_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14463; GFX12:       ; %bb.0:14464; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014465; GFX12-NEXT:    s_wait_expcnt 0x014466; GFX12-NEXT:    s_wait_samplecnt 0x014467; GFX12-NEXT:    s_wait_bvhcnt 0x014468; GFX12-NEXT:    s_wait_kmcnt 0x014469; GFX12-NEXT:    flat_load_b32 v3, v[0:1] offset:204414470; GFX12-NEXT:    v_pk_max_num_f16 v2, v2, v214471; GFX12-NEXT:    s_mov_b32 s0, 014472; GFX12-NEXT:  .LBB47_1: ; %atomicrmw.start14473; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=114474; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014475; GFX12-NEXT:    v_mov_b32_e32 v4, v314476; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14477; GFX12-NEXT:    v_pk_max_num_f16 v3, v4, v414478; GFX12-NEXT:    v_pk_max_num_f16 v3, v3, v214479; GFX12-NEXT:    s_wait_storecnt 0x014480; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV14481; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014482; GFX12-NEXT:    global_inv scope:SCOPE_DEV14483; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414484; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14485; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s014486; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14487; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014488; GFX12-NEXT:    s_cbranch_execnz .LBB47_114489; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end14490; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s014491; GFX12-NEXT:    v_mov_b32_e32 v0, v314492; GFX12-NEXT:    s_wait_loadcnt 0x014493; GFX12-NEXT:    s_setpc_b64 s[30:31]14494;14495; GFX942-LABEL: flat_agent_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14496; GFX942:       ; %bb.0:14497; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14498; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:204414499; GFX942-NEXT:    s_mov_b64 s[0:1], 014500; GFX942-NEXT:    v_pk_max_f16 v4, v2, v214501; GFX942-NEXT:  .LBB47_1: ; %atomicrmw.start14502; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=114503; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14504; GFX942-NEXT:    v_pk_max_f16 v2, v3, v314505; GFX942-NEXT:    s_nop 014506; GFX942-NEXT:    v_pk_max_f16 v2, v2, v414507; GFX942-NEXT:    buffer_wbl2 sc114508; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 sc014509; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14510; GFX942-NEXT:    buffer_inv sc114511; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v314512; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]14513; GFX942-NEXT:    v_mov_b32_e32 v3, v214514; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]14515; GFX942-NEXT:    s_cbranch_execnz .LBB47_114516; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end14517; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]14518; GFX942-NEXT:    v_mov_b32_e32 v0, v214519; GFX942-NEXT:    s_setpc_b64 s[30:31]14520;14521; GFX11-LABEL: flat_agent_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14522; GFX11:       ; %bb.0:14523; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14524; GFX11-NEXT:    flat_load_b32 v3, v[0:1] offset:204414525; GFX11-NEXT:    v_pk_max_f16 v2, v2, v214526; GFX11-NEXT:    s_mov_b32 s0, 014527; GFX11-NEXT:  .LBB47_1: ; %atomicrmw.start14528; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=114529; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14530; GFX11-NEXT:    v_mov_b32_e32 v4, v314531; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14532; GFX11-NEXT:    v_pk_max_f16 v3, v4, v414533; GFX11-NEXT:    v_pk_max_f16 v3, v3, v214534; GFX11-NEXT:    s_waitcnt_vscnt null, 0x014535; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 glc14536; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14537; GFX11-NEXT:    buffer_gl1_inv14538; GFX11-NEXT:    buffer_gl0_inv14539; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414540; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s014541; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)14542; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014543; GFX11-NEXT:    s_cbranch_execnz .LBB47_114544; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end14545; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s014546; GFX11-NEXT:    v_mov_b32_e32 v0, v314547; GFX11-NEXT:    s_setpc_b64 s[30:31]14548;14549; GFX10-LABEL: flat_agent_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14550; GFX10:       ; %bb.0:14551; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14552; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fc, v014553; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, 0, v1, vcc_lo14554; GFX10-NEXT:    v_pk_max_f16 v1, v2, v214555; GFX10-NEXT:    s_mov_b32 s4, 014556; GFX10-NEXT:    flat_load_dword v0, v[3:4]14557; GFX10-NEXT:  .LBB47_1: ; %atomicrmw.start14558; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=114559; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14560; GFX10-NEXT:    v_mov_b32_e32 v6, v014561; GFX10-NEXT:    v_pk_max_f16 v0, v6, v614562; GFX10-NEXT:    v_pk_max_f16 v5, v0, v114563; GFX10-NEXT:    s_waitcnt_vscnt null, 0x014564; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc14565; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14566; GFX10-NEXT:    buffer_gl1_inv14567; GFX10-NEXT:    buffer_gl0_inv14568; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v614569; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s414570; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s414571; GFX10-NEXT:    s_cbranch_execnz .LBB47_114572; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end14573; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s414574; GFX10-NEXT:    s_setpc_b64 s[30:31]14575;14576; GFX90A-LABEL: flat_agent_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14577; GFX90A:       ; %bb.0:14578; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14579; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:204414580; GFX90A-NEXT:    s_mov_b64 s[4:5], 014581; GFX90A-NEXT:    v_pk_max_f16 v4, v2, v214582; GFX90A-NEXT:  .LBB47_1: ; %atomicrmw.start14583; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=114584; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14585; GFX90A-NEXT:    v_pk_max_f16 v2, v3, v314586; GFX90A-NEXT:    v_pk_max_f16 v2, v2, v414587; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc14588; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14589; GFX90A-NEXT:    buffer_wbinvl114590; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v314591; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14592; GFX90A-NEXT:    v_mov_b32_e32 v3, v214593; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]14594; GFX90A-NEXT:    s_cbranch_execnz .LBB47_114595; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end14596; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]14597; GFX90A-NEXT:    v_mov_b32_e32 v0, v214598; GFX90A-NEXT:    s_setpc_b64 s[30:31]14599;14600; GFX908-LABEL: flat_agent_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14601; GFX908:       ; %bb.0:14602; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14603; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:204414604; GFX908-NEXT:    s_mov_b64 s[4:5], 014605; GFX908-NEXT:    v_pk_max_f16 v2, v2, v214606; GFX908-NEXT:  .LBB47_1: ; %atomicrmw.start14607; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=114608; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14609; GFX908-NEXT:    v_mov_b32_e32 v4, v314610; GFX908-NEXT:    v_pk_max_f16 v3, v4, v414611; GFX908-NEXT:    v_pk_max_f16 v3, v3, v214612; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2044 glc14613; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14614; GFX908-NEXT:    buffer_wbinvl114615; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v414616; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14617; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]14618; GFX908-NEXT:    s_cbranch_execnz .LBB47_114619; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end14620; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]14621; GFX908-NEXT:    v_mov_b32_e32 v0, v314622; GFX908-NEXT:    s_setpc_b64 s[30:31]14623;14624; GFX8-LABEL: flat_agent_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14625; GFX8:       ; %bb.0:14626; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14627; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v014628; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc14629; GFX8-NEXT:    flat_load_dword v0, v[3:4]14630; GFX8-NEXT:    s_mov_b64 s[4:5], 014631; GFX8-NEXT:    v_max_f16_sdwa v1, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_114632; GFX8-NEXT:    v_max_f16_e32 v2, v2, v214633; GFX8-NEXT:  .LBB47_1: ; %atomicrmw.start14634; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=114635; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14636; GFX8-NEXT:    v_mov_b32_e32 v6, v014637; GFX8-NEXT:    v_max_f16_sdwa v0, v6, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_114638; GFX8-NEXT:    v_max_f16_e32 v5, v6, v614639; GFX8-NEXT:    v_max_f16_sdwa v0, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD14640; GFX8-NEXT:    v_max_f16_e32 v5, v5, v214641; GFX8-NEXT:    v_or_b32_e32 v5, v5, v014642; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc14643; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14644; GFX8-NEXT:    buffer_wbinvl114645; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v614646; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14647; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]14648; GFX8-NEXT:    s_cbranch_execnz .LBB47_114649; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end14650; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]14651; GFX8-NEXT:    s_setpc_b64 s[30:31]14652;14653; GFX7-LABEL: flat_agent_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:14654; GFX7:       ; %bb.0:14655; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14656; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fc, v014657; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc14658; GFX7-NEXT:    flat_load_dword v1, v[4:5]14659; GFX7-NEXT:    v_cvt_f16_f32_e32 v0, v314660; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v214661; GFX7-NEXT:    s_mov_b64 s[4:5], 014662; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v014663; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v314664; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14665; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v114666; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v114667; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v114668; GFX7-NEXT:  .LBB47_1: ; %atomicrmw.start14669; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=114670; GFX7-NEXT:    v_cvt_f16_f32_e32 v1, v114671; GFX7-NEXT:    v_cvt_f16_f32_e32 v0, v014672; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v114673; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v014674; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v114675; GFX7-NEXT:    v_max_f32_e32 v6, v6, v214676; GFX7-NEXT:    v_max_f32_e32 v7, v7, v314677; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v614678; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v714679; GFX7-NEXT:    v_or_b32_e32 v7, v0, v114680; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v614681; GFX7-NEXT:    v_or_b32_e32 v6, v8, v014682; GFX7-NEXT:    flat_atomic_cmpswap v6, v[4:5], v[6:7] glc14683; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14684; GFX7-NEXT:    buffer_wbinvl114685; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v614686; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v614687; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v114688; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v714689; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14690; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]14691; GFX7-NEXT:    s_cbranch_execnz .LBB47_114692; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end14693; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]14694; GFX7-NEXT:    s_setpc_b64 s[30:31]14695  %gep = getelementptr inbounds <2 x half>, ptr %ptr, i64 51114696  %result = atomicrmw fmax ptr %gep, <2 x half> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !014697  ret <2 x half> %result14698}14699 14700define <2 x half> @flat_agent_atomic_fmax_ret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory(ptr %ptr, <2 x half> %val) #0 {14701; GFX12-LABEL: flat_agent_atomic_fmax_ret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:14702; GFX12:       ; %bb.0:14703; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014704; GFX12-NEXT:    s_wait_expcnt 0x014705; GFX12-NEXT:    s_wait_samplecnt 0x014706; GFX12-NEXT:    s_wait_bvhcnt 0x014707; GFX12-NEXT:    s_wait_kmcnt 0x014708; GFX12-NEXT:    flat_load_b32 v3, v[0:1] offset:-204814709; GFX12-NEXT:    v_pk_max_num_f16 v2, v2, v214710; GFX12-NEXT:    s_mov_b32 s0, 014711; GFX12-NEXT:  .LBB48_1: ; %atomicrmw.start14712; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=114713; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014714; GFX12-NEXT:    v_mov_b32_e32 v4, v314715; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14716; GFX12-NEXT:    v_pk_max_num_f16 v3, v4, v414717; GFX12-NEXT:    v_pk_max_num_f16 v3, v3, v214718; GFX12-NEXT:    s_wait_storecnt 0x014719; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV14720; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014721; GFX12-NEXT:    global_inv scope:SCOPE_DEV14722; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v414723; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14724; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s014725; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14726; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014727; GFX12-NEXT:    s_cbranch_execnz .LBB48_114728; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end14729; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s014730; GFX12-NEXT:    v_mov_b32_e32 v0, v314731; GFX12-NEXT:    s_wait_loadcnt 0x014732; GFX12-NEXT:    s_setpc_b64 s[30:31]14733;14734; GFX942-LABEL: flat_agent_atomic_fmax_ret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:14735; GFX942:       ; %bb.0:14736; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14737; GFX942-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v014738; GFX942-NEXT:    s_movk_i32 s0, 0xf80014739; GFX942-NEXT:    s_nop 014740; GFX942-NEXT:    v_addc_co_u32_e32 v5, vcc, -1, v1, vcc14741; GFX942-NEXT:    flat_load_dword v3, v[4:5]14742; GFX942-NEXT:    s_mov_b32 s1, -114743; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]14744; GFX942-NEXT:    s_mov_b64 s[0:1], 014745; GFX942-NEXT:    v_pk_max_f16 v1, v2, v214746; GFX942-NEXT:  .LBB48_1: ; %atomicrmw.start14747; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=114748; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14749; GFX942-NEXT:    v_pk_max_f16 v0, v3, v314750; GFX942-NEXT:    s_nop 014751; GFX942-NEXT:    v_pk_max_f16 v2, v0, v114752; GFX942-NEXT:    buffer_wbl2 sc114753; GFX942-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[2:3] sc014754; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14755; GFX942-NEXT:    buffer_inv sc114756; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v314757; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]14758; GFX942-NEXT:    v_mov_b32_e32 v3, v014759; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]14760; GFX942-NEXT:    s_cbranch_execnz .LBB48_114761; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end14762; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]14763; GFX942-NEXT:    s_setpc_b64 s[30:31]14764;14765; GFX11-LABEL: flat_agent_atomic_fmax_ret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:14766; GFX11:       ; %bb.0:14767; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14768; GFX11-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v014769; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)14770; GFX11-NEXT:    v_add_co_ci_u32_e64 v4, null, -1, v1, vcc_lo14771; GFX11-NEXT:    v_pk_max_f16 v1, v2, v214772; GFX11-NEXT:    s_mov_b32 s0, 014773; GFX11-NEXT:    flat_load_b32 v0, v[3:4]14774; GFX11-NEXT:  .LBB48_1: ; %atomicrmw.start14775; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=114776; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14777; GFX11-NEXT:    v_mov_b32_e32 v6, v014778; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14779; GFX11-NEXT:    v_pk_max_f16 v0, v6, v614780; GFX11-NEXT:    v_pk_max_f16 v5, v0, v114781; GFX11-NEXT:    s_waitcnt_vscnt null, 0x014782; GFX11-NEXT:    flat_atomic_cmpswap_b32 v0, v[3:4], v[5:6] glc14783; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14784; GFX11-NEXT:    buffer_gl1_inv14785; GFX11-NEXT:    buffer_gl0_inv14786; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v614787; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s014788; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)14789; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014790; GFX11-NEXT:    s_cbranch_execnz .LBB48_114791; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end14792; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s014793; GFX11-NEXT:    s_setpc_b64 s[30:31]14794;14795; GFX10-LABEL: flat_agent_atomic_fmax_ret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:14796; GFX10:       ; %bb.0:14797; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14798; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v014799; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, -1, v1, vcc_lo14800; GFX10-NEXT:    v_pk_max_f16 v1, v2, v214801; GFX10-NEXT:    s_mov_b32 s4, 014802; GFX10-NEXT:    flat_load_dword v0, v[3:4]14803; GFX10-NEXT:  .LBB48_1: ; %atomicrmw.start14804; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=114805; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14806; GFX10-NEXT:    v_mov_b32_e32 v6, v014807; GFX10-NEXT:    v_pk_max_f16 v0, v6, v614808; GFX10-NEXT:    v_pk_max_f16 v5, v0, v114809; GFX10-NEXT:    s_waitcnt_vscnt null, 0x014810; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc14811; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14812; GFX10-NEXT:    buffer_gl1_inv14813; GFX10-NEXT:    buffer_gl0_inv14814; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v614815; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s414816; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s414817; GFX10-NEXT:    s_cbranch_execnz .LBB48_114818; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end14819; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s414820; GFX10-NEXT:    s_setpc_b64 s[30:31]14821;14822; GFX90A-LABEL: flat_agent_atomic_fmax_ret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:14823; GFX90A:       ; %bb.0:14824; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14825; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v014826; GFX90A-NEXT:    s_mov_b64 s[4:5], vcc14827; GFX90A-NEXT:    v_addc_co_u32_e64 v5, s[4:5], -1, v1, s[4:5]14828; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc14829; GFX90A-NEXT:    v_mov_b32_e32 v0, v414830; GFX90A-NEXT:    flat_load_dword v1, v[0:1]14831; GFX90A-NEXT:    s_mov_b64 s[4:5], 014832; GFX90A-NEXT:    v_pk_max_f16 v2, v2, v214833; GFX90A-NEXT:  .LBB48_1: ; %atomicrmw.start14834; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=114835; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14836; GFX90A-NEXT:    v_pk_max_f16 v0, v1, v114837; GFX90A-NEXT:    v_pk_max_f16 v0, v0, v214838; GFX90A-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc14839; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14840; GFX90A-NEXT:    buffer_wbinvl114841; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v114842; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14843; GFX90A-NEXT:    v_mov_b32_e32 v1, v014844; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]14845; GFX90A-NEXT:    s_cbranch_execnz .LBB48_114846; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end14847; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]14848; GFX90A-NEXT:    s_setpc_b64 s[30:31]14849;14850; GFX908-LABEL: flat_agent_atomic_fmax_ret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:14851; GFX908:       ; %bb.0:14852; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14853; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v014854; GFX908-NEXT:    s_mov_b64 s[4:5], vcc14855; GFX908-NEXT:    v_addc_co_u32_e64 v4, s[4:5], -1, v1, s[4:5]14856; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc14857; GFX908-NEXT:    v_mov_b32_e32 v0, v314858; GFX908-NEXT:    flat_load_dword v0, v[0:1]14859; GFX908-NEXT:    s_mov_b64 s[4:5], 014860; GFX908-NEXT:    v_pk_max_f16 v1, v2, v214861; GFX908-NEXT:  .LBB48_1: ; %atomicrmw.start14862; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=114863; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14864; GFX908-NEXT:    v_mov_b32_e32 v6, v014865; GFX908-NEXT:    v_pk_max_f16 v0, v6, v614866; GFX908-NEXT:    v_pk_max_f16 v5, v0, v114867; GFX908-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc14868; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14869; GFX908-NEXT:    buffer_wbinvl114870; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v614871; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14872; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]14873; GFX908-NEXT:    s_cbranch_execnz .LBB48_114874; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end14875; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]14876; GFX908-NEXT:    s_setpc_b64 s[30:31]14877;14878; GFX8-LABEL: flat_agent_atomic_fmax_ret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:14879; GFX8:       ; %bb.0:14880; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14881; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v014882; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, -1, v1, vcc14883; GFX8-NEXT:    flat_load_dword v0, v[3:4]14884; GFX8-NEXT:    s_mov_b64 s[4:5], 014885; GFX8-NEXT:    v_max_f16_sdwa v1, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_114886; GFX8-NEXT:    v_max_f16_e32 v2, v2, v214887; GFX8-NEXT:  .LBB48_1: ; %atomicrmw.start14888; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=114889; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14890; GFX8-NEXT:    v_mov_b32_e32 v6, v014891; GFX8-NEXT:    v_max_f16_sdwa v0, v6, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_114892; GFX8-NEXT:    v_max_f16_e32 v5, v6, v614893; GFX8-NEXT:    v_max_f16_sdwa v0, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD14894; GFX8-NEXT:    v_max_f16_e32 v5, v5, v214895; GFX8-NEXT:    v_or_b32_e32 v5, v5, v014896; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc14897; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14898; GFX8-NEXT:    buffer_wbinvl114899; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v614900; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14901; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]14902; GFX8-NEXT:    s_cbranch_execnz .LBB48_114903; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end14904; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]14905; GFX8-NEXT:    s_setpc_b64 s[30:31]14906;14907; GFX7-LABEL: flat_agent_atomic_fmax_ret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:14908; GFX7:       ; %bb.0:14909; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14910; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v014911; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, -1, v1, vcc14912; GFX7-NEXT:    flat_load_dword v1, v[4:5]14913; GFX7-NEXT:    v_cvt_f16_f32_e32 v0, v314914; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v214915; GFX7-NEXT:    s_mov_b64 s[4:5], 014916; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v014917; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v314918; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14919; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v114920; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v114921; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v114922; GFX7-NEXT:  .LBB48_1: ; %atomicrmw.start14923; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=114924; GFX7-NEXT:    v_cvt_f16_f32_e32 v1, v114925; GFX7-NEXT:    v_cvt_f16_f32_e32 v0, v014926; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v114927; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v014928; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v114929; GFX7-NEXT:    v_max_f32_e32 v6, v6, v214930; GFX7-NEXT:    v_max_f32_e32 v7, v7, v314931; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v614932; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v714933; GFX7-NEXT:    v_or_b32_e32 v7, v0, v114934; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v614935; GFX7-NEXT:    v_or_b32_e32 v6, v8, v014936; GFX7-NEXT:    flat_atomic_cmpswap v6, v[4:5], v[6:7] glc14937; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14938; GFX7-NEXT:    buffer_wbinvl114939; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v614940; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v614941; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v114942; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v714943; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]14944; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]14945; GFX7-NEXT:    s_cbranch_execnz .LBB48_114946; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end14947; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]14948; GFX7-NEXT:    s_setpc_b64 s[30:31]14949  %gep = getelementptr inbounds <2 x half>, ptr %ptr, i64 -51214950  %result = atomicrmw fmax ptr %gep, <2 x half> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !014951  ret <2 x half> %result14952}14953 14954define void @flat_agent_atomic_fmax_noret_v2f16__amdgpu_no_fine_grained_memory(ptr %ptr, <2 x half> %val) #0 {14955; GFX12-LABEL: flat_agent_atomic_fmax_noret_v2f16__amdgpu_no_fine_grained_memory:14956; GFX12:       ; %bb.0:14957; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014958; GFX12-NEXT:    s_wait_expcnt 0x014959; GFX12-NEXT:    s_wait_samplecnt 0x014960; GFX12-NEXT:    s_wait_bvhcnt 0x014961; GFX12-NEXT:    s_wait_kmcnt 0x014962; GFX12-NEXT:    flat_load_b32 v3, v[0:1]14963; GFX12-NEXT:    v_pk_max_num_f16 v4, v2, v214964; GFX12-NEXT:    s_mov_b32 s0, 014965; GFX12-NEXT:  .LBB49_1: ; %atomicrmw.start14966; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=114967; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014968; GFX12-NEXT:    v_pk_max_num_f16 v2, v3, v314969; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)14970; GFX12-NEXT:    v_pk_max_num_f16 v2, v2, v414971; GFX12-NEXT:    s_wait_storecnt 0x014972; GFX12-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV14973; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x014974; GFX12-NEXT:    global_inv scope:SCOPE_DEV14975; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v314976; GFX12-NEXT:    v_mov_b32_e32 v3, v214977; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14978; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s014979; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)14980; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s014981; GFX12-NEXT:    s_cbranch_execnz .LBB49_114982; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end14983; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s014984; GFX12-NEXT:    s_wait_loadcnt 0x014985; GFX12-NEXT:    s_setpc_b64 s[30:31]14986;14987; GFX942-LABEL: flat_agent_atomic_fmax_noret_v2f16__amdgpu_no_fine_grained_memory:14988; GFX942:       ; %bb.0:14989; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14990; GFX942-NEXT:    flat_load_dword v3, v[0:1]14991; GFX942-NEXT:    s_mov_b64 s[0:1], 014992; GFX942-NEXT:    v_pk_max_f16 v4, v2, v214993; GFX942-NEXT:  .LBB49_1: ; %atomicrmw.start14994; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=114995; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)14996; GFX942-NEXT:    v_pk_max_f16 v2, v3, v314997; GFX942-NEXT:    s_nop 014998; GFX942-NEXT:    v_pk_max_f16 v2, v2, v414999; GFX942-NEXT:    buffer_wbl2 sc115000; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc015001; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15002; GFX942-NEXT:    buffer_inv sc115003; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315004; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]15005; GFX942-NEXT:    v_mov_b32_e32 v3, v215006; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]15007; GFX942-NEXT:    s_cbranch_execnz .LBB49_115008; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end15009; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]15010; GFX942-NEXT:    s_setpc_b64 s[30:31]15011;15012; GFX11-LABEL: flat_agent_atomic_fmax_noret_v2f16__amdgpu_no_fine_grained_memory:15013; GFX11:       ; %bb.0:15014; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15015; GFX11-NEXT:    flat_load_b32 v3, v[0:1]15016; GFX11-NEXT:    v_pk_max_f16 v4, v2, v215017; GFX11-NEXT:    s_mov_b32 s0, 015018; GFX11-NEXT:  .LBB49_1: ; %atomicrmw.start15019; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=115020; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15021; GFX11-NEXT:    v_pk_max_f16 v2, v3, v315022; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)15023; GFX11-NEXT:    v_pk_max_f16 v2, v2, v415024; GFX11-NEXT:    s_waitcnt_vscnt null, 0x015025; GFX11-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] glc15026; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15027; GFX11-NEXT:    buffer_gl1_inv15028; GFX11-NEXT:    buffer_gl0_inv15029; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v315030; GFX11-NEXT:    v_mov_b32_e32 v3, v215031; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s015032; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15033; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015034; GFX11-NEXT:    s_cbranch_execnz .LBB49_115035; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end15036; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s015037; GFX11-NEXT:    s_setpc_b64 s[30:31]15038;15039; GFX10-LABEL: flat_agent_atomic_fmax_noret_v2f16__amdgpu_no_fine_grained_memory:15040; GFX10:       ; %bb.0:15041; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15042; GFX10-NEXT:    flat_load_dword v3, v[0:1]15043; GFX10-NEXT:    v_pk_max_f16 v4, v2, v215044; GFX10-NEXT:    s_mov_b32 s4, 015045; GFX10-NEXT:  .LBB49_1: ; %atomicrmw.start15046; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=115047; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15048; GFX10-NEXT:    v_pk_max_f16 v2, v3, v315049; GFX10-NEXT:    v_pk_max_f16 v2, v2, v415050; GFX10-NEXT:    s_waitcnt_vscnt null, 0x015051; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc15052; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15053; GFX10-NEXT:    buffer_gl1_inv15054; GFX10-NEXT:    buffer_gl0_inv15055; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v315056; GFX10-NEXT:    v_mov_b32_e32 v3, v215057; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s415058; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s415059; GFX10-NEXT:    s_cbranch_execnz .LBB49_115060; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end15061; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s415062; GFX10-NEXT:    s_setpc_b64 s[30:31]15063;15064; GFX90A-LABEL: flat_agent_atomic_fmax_noret_v2f16__amdgpu_no_fine_grained_memory:15065; GFX90A:       ; %bb.0:15066; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15067; GFX90A-NEXT:    flat_load_dword v3, v[0:1]15068; GFX90A-NEXT:    s_mov_b64 s[4:5], 015069; GFX90A-NEXT:    v_pk_max_f16 v4, v2, v215070; GFX90A-NEXT:  .LBB49_1: ; %atomicrmw.start15071; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=115072; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15073; GFX90A-NEXT:    v_pk_max_f16 v2, v3, v315074; GFX90A-NEXT:    v_pk_max_f16 v2, v2, v415075; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc15076; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15077; GFX90A-NEXT:    buffer_wbinvl115078; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315079; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15080; GFX90A-NEXT:    v_mov_b32_e32 v3, v215081; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]15082; GFX90A-NEXT:    s_cbranch_execnz .LBB49_115083; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end15084; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]15085; GFX90A-NEXT:    s_setpc_b64 s[30:31]15086;15087; GFX908-LABEL: flat_agent_atomic_fmax_noret_v2f16__amdgpu_no_fine_grained_memory:15088; GFX908:       ; %bb.0:15089; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15090; GFX908-NEXT:    flat_load_dword v3, v[0:1]15091; GFX908-NEXT:    s_mov_b64 s[4:5], 015092; GFX908-NEXT:    v_pk_max_f16 v4, v2, v215093; GFX908-NEXT:  .LBB49_1: ; %atomicrmw.start15094; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=115095; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15096; GFX908-NEXT:    v_pk_max_f16 v2, v3, v315097; GFX908-NEXT:    v_pk_max_f16 v2, v2, v415098; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc15099; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15100; GFX908-NEXT:    buffer_wbinvl115101; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315102; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15103; GFX908-NEXT:    v_mov_b32_e32 v3, v215104; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]15105; GFX908-NEXT:    s_cbranch_execnz .LBB49_115106; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end15107; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]15108; GFX908-NEXT:    s_setpc_b64 s[30:31]15109;15110; GFX8-LABEL: flat_agent_atomic_fmax_noret_v2f16__amdgpu_no_fine_grained_memory:15111; GFX8:       ; %bb.0:15112; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15113; GFX8-NEXT:    flat_load_dword v3, v[0:1]15114; GFX8-NEXT:    s_mov_b64 s[4:5], 015115; GFX8-NEXT:    v_max_f16_sdwa v4, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_115116; GFX8-NEXT:    v_max_f16_e32 v5, v2, v215117; GFX8-NEXT:  .LBB49_1: ; %atomicrmw.start15118; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=115119; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15120; GFX8-NEXT:    v_max_f16_sdwa v2, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_115121; GFX8-NEXT:    v_max_f16_e32 v6, v3, v315122; GFX8-NEXT:    v_max_f16_sdwa v2, v2, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD15123; GFX8-NEXT:    v_max_f16_e32 v6, v6, v515124; GFX8-NEXT:    v_or_b32_e32 v2, v6, v215125; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc15126; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15127; GFX8-NEXT:    buffer_wbinvl115128; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315129; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15130; GFX8-NEXT:    v_mov_b32_e32 v3, v215131; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]15132; GFX8-NEXT:    s_cbranch_execnz .LBB49_115133; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end15134; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]15135; GFX8-NEXT:    s_setpc_b64 s[30:31]15136;15137; GFX7-LABEL: flat_agent_atomic_fmax_noret_v2f16__amdgpu_no_fine_grained_memory:15138; GFX7:       ; %bb.0:15139; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15140; GFX7-NEXT:    flat_load_dword v5, v[0:1]15141; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v315142; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v215143; GFX7-NEXT:    s_mov_b64 s[4:5], 015144; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v315145; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15146; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v515147; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v515148; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v315149; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v615150; GFX7-NEXT:  .LBB49_1: ; %atomicrmw.start15151; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=115152; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v515153; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v415154; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v515155; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v415156; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v515157; GFX7-NEXT:    v_max_f32_e32 v6, v6, v215158; GFX7-NEXT:    v_max_f32_e32 v7, v7, v315159; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v615160; GFX7-NEXT:    v_cvt_f16_f32_e32 v7, v715161; GFX7-NEXT:    v_or_b32_e32 v6, v4, v515162; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v815163; GFX7-NEXT:    v_or_b32_e32 v5, v7, v415164; GFX7-NEXT:    flat_atomic_cmpswap v7, v[0:1], v[5:6] glc15165; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15166; GFX7-NEXT:    buffer_wbinvl115167; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v715168; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v715169; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v515170; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v615171; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15172; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]15173; GFX7-NEXT:    s_cbranch_execnz .LBB49_115174; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end15175; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]15176; GFX7-NEXT:    s_setpc_b64 s[30:31]15177  %unused = atomicrmw fmax ptr %ptr, <2 x half> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !015178  ret void15179}15180 15181define void @flat_agent_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, <2 x half> %val) #0 {15182; GFX12-LABEL: flat_agent_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15183; GFX12:       ; %bb.0:15184; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015185; GFX12-NEXT:    s_wait_expcnt 0x015186; GFX12-NEXT:    s_wait_samplecnt 0x015187; GFX12-NEXT:    s_wait_bvhcnt 0x015188; GFX12-NEXT:    s_wait_kmcnt 0x015189; GFX12-NEXT:    flat_load_b32 v3, v[0:1] offset:204415190; GFX12-NEXT:    v_pk_max_num_f16 v4, v2, v215191; GFX12-NEXT:    s_mov_b32 s0, 015192; GFX12-NEXT:  .LBB50_1: ; %atomicrmw.start15193; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=115194; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015195; GFX12-NEXT:    v_pk_max_num_f16 v2, v3, v315196; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)15197; GFX12-NEXT:    v_pk_max_num_f16 v2, v2, v415198; GFX12-NEXT:    s_wait_storecnt 0x015199; GFX12-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV15200; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015201; GFX12-NEXT:    global_inv scope:SCOPE_DEV15202; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v315203; GFX12-NEXT:    v_mov_b32_e32 v3, v215204; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15205; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s015206; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15207; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015208; GFX12-NEXT:    s_cbranch_execnz .LBB50_115209; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end15210; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s015211; GFX12-NEXT:    s_wait_loadcnt 0x015212; GFX12-NEXT:    s_setpc_b64 s[30:31]15213;15214; GFX942-LABEL: flat_agent_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15215; GFX942:       ; %bb.0:15216; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15217; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:204415218; GFX942-NEXT:    s_mov_b64 s[0:1], 015219; GFX942-NEXT:    v_pk_max_f16 v4, v2, v215220; GFX942-NEXT:  .LBB50_1: ; %atomicrmw.start15221; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=115222; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15223; GFX942-NEXT:    v_pk_max_f16 v2, v3, v315224; GFX942-NEXT:    s_nop 015225; GFX942-NEXT:    v_pk_max_f16 v2, v2, v415226; GFX942-NEXT:    buffer_wbl2 sc115227; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 sc015228; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15229; GFX942-NEXT:    buffer_inv sc115230; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315231; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]15232; GFX942-NEXT:    v_mov_b32_e32 v3, v215233; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]15234; GFX942-NEXT:    s_cbranch_execnz .LBB50_115235; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end15236; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]15237; GFX942-NEXT:    s_setpc_b64 s[30:31]15238;15239; GFX11-LABEL: flat_agent_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15240; GFX11:       ; %bb.0:15241; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15242; GFX11-NEXT:    flat_load_b32 v3, v[0:1] offset:204415243; GFX11-NEXT:    v_pk_max_f16 v4, v2, v215244; GFX11-NEXT:    s_mov_b32 s0, 015245; GFX11-NEXT:  .LBB50_1: ; %atomicrmw.start15246; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=115247; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15248; GFX11-NEXT:    v_pk_max_f16 v2, v3, v315249; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)15250; GFX11-NEXT:    v_pk_max_f16 v2, v2, v415251; GFX11-NEXT:    s_waitcnt_vscnt null, 0x015252; GFX11-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2044 glc15253; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15254; GFX11-NEXT:    buffer_gl1_inv15255; GFX11-NEXT:    buffer_gl0_inv15256; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v315257; GFX11-NEXT:    v_mov_b32_e32 v3, v215258; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s015259; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15260; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015261; GFX11-NEXT:    s_cbranch_execnz .LBB50_115262; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end15263; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s015264; GFX11-NEXT:    s_setpc_b64 s[30:31]15265;15266; GFX10-LABEL: flat_agent_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15267; GFX10:       ; %bb.0:15268; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15269; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fc, v015270; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo15271; GFX10-NEXT:    v_pk_max_f16 v4, v2, v215272; GFX10-NEXT:    s_mov_b32 s4, 015273; GFX10-NEXT:    flat_load_dword v3, v[0:1]15274; GFX10-NEXT:  .LBB50_1: ; %atomicrmw.start15275; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=115276; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15277; GFX10-NEXT:    v_pk_max_f16 v2, v3, v315278; GFX10-NEXT:    v_pk_max_f16 v2, v2, v415279; GFX10-NEXT:    s_waitcnt_vscnt null, 0x015280; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc15281; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15282; GFX10-NEXT:    buffer_gl1_inv15283; GFX10-NEXT:    buffer_gl0_inv15284; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v315285; GFX10-NEXT:    v_mov_b32_e32 v3, v215286; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s415287; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s415288; GFX10-NEXT:    s_cbranch_execnz .LBB50_115289; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end15290; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s415291; GFX10-NEXT:    s_setpc_b64 s[30:31]15292;15293; GFX90A-LABEL: flat_agent_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15294; GFX90A:       ; %bb.0:15295; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15296; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:204415297; GFX90A-NEXT:    s_mov_b64 s[4:5], 015298; GFX90A-NEXT:    v_pk_max_f16 v4, v2, v215299; GFX90A-NEXT:  .LBB50_1: ; %atomicrmw.start15300; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=115301; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15302; GFX90A-NEXT:    v_pk_max_f16 v2, v3, v315303; GFX90A-NEXT:    v_pk_max_f16 v2, v2, v415304; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc15305; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15306; GFX90A-NEXT:    buffer_wbinvl115307; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315308; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15309; GFX90A-NEXT:    v_mov_b32_e32 v3, v215310; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]15311; GFX90A-NEXT:    s_cbranch_execnz .LBB50_115312; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end15313; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]15314; GFX90A-NEXT:    s_setpc_b64 s[30:31]15315;15316; GFX908-LABEL: flat_agent_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15317; GFX908:       ; %bb.0:15318; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15319; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:204415320; GFX908-NEXT:    s_mov_b64 s[4:5], 015321; GFX908-NEXT:    v_pk_max_f16 v4, v2, v215322; GFX908-NEXT:  .LBB50_1: ; %atomicrmw.start15323; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=115324; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15325; GFX908-NEXT:    v_pk_max_f16 v2, v3, v315326; GFX908-NEXT:    v_pk_max_f16 v2, v2, v415327; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc15328; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15329; GFX908-NEXT:    buffer_wbinvl115330; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315331; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15332; GFX908-NEXT:    v_mov_b32_e32 v3, v215333; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]15334; GFX908-NEXT:    s_cbranch_execnz .LBB50_115335; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end15336; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]15337; GFX908-NEXT:    s_setpc_b64 s[30:31]15338;15339; GFX8-LABEL: flat_agent_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15340; GFX8:       ; %bb.0:15341; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15342; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v015343; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc15344; GFX8-NEXT:    flat_load_dword v3, v[0:1]15345; GFX8-NEXT:    s_mov_b64 s[4:5], 015346; GFX8-NEXT:    v_max_f16_sdwa v4, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_115347; GFX8-NEXT:    v_max_f16_e32 v5, v2, v215348; GFX8-NEXT:  .LBB50_1: ; %atomicrmw.start15349; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=115350; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15351; GFX8-NEXT:    v_max_f16_sdwa v2, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_115352; GFX8-NEXT:    v_max_f16_e32 v6, v3, v315353; GFX8-NEXT:    v_max_f16_sdwa v2, v2, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD15354; GFX8-NEXT:    v_max_f16_e32 v6, v6, v515355; GFX8-NEXT:    v_or_b32_e32 v2, v6, v215356; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc15357; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15358; GFX8-NEXT:    buffer_wbinvl115359; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315360; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15361; GFX8-NEXT:    v_mov_b32_e32 v3, v215362; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]15363; GFX8-NEXT:    s_cbranch_execnz .LBB50_115364; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end15365; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]15366; GFX8-NEXT:    s_setpc_b64 s[30:31]15367;15368; GFX7-LABEL: flat_agent_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15369; GFX7:       ; %bb.0:15370; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15371; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fc, v015372; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc15373; GFX7-NEXT:    flat_load_dword v5, v[0:1]15374; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v315375; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v215376; GFX7-NEXT:    s_mov_b64 s[4:5], 015377; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v315378; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15379; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v515380; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v515381; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v315382; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v615383; GFX7-NEXT:  .LBB50_1: ; %atomicrmw.start15384; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=115385; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v515386; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v415387; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v515388; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v415389; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v515390; GFX7-NEXT:    v_max_f32_e32 v6, v6, v215391; GFX7-NEXT:    v_max_f32_e32 v7, v7, v315392; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v615393; GFX7-NEXT:    v_cvt_f16_f32_e32 v7, v715394; GFX7-NEXT:    v_or_b32_e32 v6, v4, v515395; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v815396; GFX7-NEXT:    v_or_b32_e32 v5, v7, v415397; GFX7-NEXT:    flat_atomic_cmpswap v7, v[0:1], v[5:6] glc15398; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15399; GFX7-NEXT:    buffer_wbinvl115400; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v715401; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v715402; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v515403; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v615404; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15405; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]15406; GFX7-NEXT:    s_cbranch_execnz .LBB50_115407; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end15408; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]15409; GFX7-NEXT:    s_setpc_b64 s[30:31]15410  %gep = getelementptr inbounds <2 x half>, ptr %ptr, i64 51115411  %unused = atomicrmw fmax ptr %gep, <2 x half> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !015412  ret void15413}15414 15415define void @flat_agent_atomic_fmax_noret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory(ptr %ptr, <2 x half> %val) #0 {15416; GFX12-LABEL: flat_agent_atomic_fmax_noret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:15417; GFX12:       ; %bb.0:15418; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015419; GFX12-NEXT:    s_wait_expcnt 0x015420; GFX12-NEXT:    s_wait_samplecnt 0x015421; GFX12-NEXT:    s_wait_bvhcnt 0x015422; GFX12-NEXT:    s_wait_kmcnt 0x015423; GFX12-NEXT:    flat_load_b32 v3, v[0:1] offset:-204815424; GFX12-NEXT:    v_pk_max_num_f16 v4, v2, v215425; GFX12-NEXT:    s_mov_b32 s0, 015426; GFX12-NEXT:  .LBB51_1: ; %atomicrmw.start15427; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=115428; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015429; GFX12-NEXT:    v_pk_max_num_f16 v2, v3, v315430; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)15431; GFX12-NEXT:    v_pk_max_num_f16 v2, v2, v415432; GFX12-NEXT:    s_wait_storecnt 0x015433; GFX12-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV15434; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015435; GFX12-NEXT:    global_inv scope:SCOPE_DEV15436; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v315437; GFX12-NEXT:    v_mov_b32_e32 v3, v215438; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15439; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s015440; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15441; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015442; GFX12-NEXT:    s_cbranch_execnz .LBB51_115443; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end15444; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s015445; GFX12-NEXT:    s_wait_loadcnt 0x015446; GFX12-NEXT:    s_setpc_b64 s[30:31]15447;15448; GFX942-LABEL: flat_agent_atomic_fmax_noret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:15449; GFX942:       ; %bb.0:15450; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15451; GFX942-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v015452; GFX942-NEXT:    s_movk_i32 s0, 0xf80015453; GFX942-NEXT:    s_nop 015454; GFX942-NEXT:    v_addc_co_u32_e32 v5, vcc, -1, v1, vcc15455; GFX942-NEXT:    flat_load_dword v3, v[4:5]15456; GFX942-NEXT:    s_mov_b32 s1, -115457; GFX942-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, s[0:1]15458; GFX942-NEXT:    s_mov_b64 s[0:1], 015459; GFX942-NEXT:    v_pk_max_f16 v4, v2, v215460; GFX942-NEXT:  .LBB51_1: ; %atomicrmw.start15461; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=115462; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15463; GFX942-NEXT:    v_pk_max_f16 v2, v3, v315464; GFX942-NEXT:    s_nop 015465; GFX942-NEXT:    v_pk_max_f16 v2, v2, v415466; GFX942-NEXT:    buffer_wbl2 sc115467; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc015468; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15469; GFX942-NEXT:    buffer_inv sc115470; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315471; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]15472; GFX942-NEXT:    v_mov_b32_e32 v3, v215473; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]15474; GFX942-NEXT:    s_cbranch_execnz .LBB51_115475; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end15476; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]15477; GFX942-NEXT:    s_setpc_b64 s[30:31]15478;15479; GFX11-LABEL: flat_agent_atomic_fmax_noret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:15480; GFX11:       ; %bb.0:15481; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15482; GFX11-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v015483; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)15484; GFX11-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo15485; GFX11-NEXT:    v_pk_max_f16 v4, v2, v215486; GFX11-NEXT:    s_mov_b32 s0, 015487; GFX11-NEXT:    flat_load_b32 v3, v[0:1]15488; GFX11-NEXT:  .LBB51_1: ; %atomicrmw.start15489; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=115490; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15491; GFX11-NEXT:    v_pk_max_f16 v2, v3, v315492; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)15493; GFX11-NEXT:    v_pk_max_f16 v2, v2, v415494; GFX11-NEXT:    s_waitcnt_vscnt null, 0x015495; GFX11-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] glc15496; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15497; GFX11-NEXT:    buffer_gl1_inv15498; GFX11-NEXT:    buffer_gl0_inv15499; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v315500; GFX11-NEXT:    v_mov_b32_e32 v3, v215501; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s015502; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15503; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015504; GFX11-NEXT:    s_cbranch_execnz .LBB51_115505; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end15506; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s015507; GFX11-NEXT:    s_setpc_b64 s[30:31]15508;15509; GFX10-LABEL: flat_agent_atomic_fmax_noret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:15510; GFX10:       ; %bb.0:15511; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15512; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v015513; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo15514; GFX10-NEXT:    v_pk_max_f16 v4, v2, v215515; GFX10-NEXT:    s_mov_b32 s4, 015516; GFX10-NEXT:    flat_load_dword v3, v[0:1]15517; GFX10-NEXT:  .LBB51_1: ; %atomicrmw.start15518; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=115519; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15520; GFX10-NEXT:    v_pk_max_f16 v2, v3, v315521; GFX10-NEXT:    v_pk_max_f16 v2, v2, v415522; GFX10-NEXT:    s_waitcnt_vscnt null, 0x015523; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc15524; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15525; GFX10-NEXT:    buffer_gl1_inv15526; GFX10-NEXT:    buffer_gl0_inv15527; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v315528; GFX10-NEXT:    v_mov_b32_e32 v3, v215529; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s415530; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s415531; GFX10-NEXT:    s_cbranch_execnz .LBB51_115532; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end15533; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s415534; GFX10-NEXT:    s_setpc_b64 s[30:31]15535;15536; GFX90A-LABEL: flat_agent_atomic_fmax_noret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:15537; GFX90A:       ; %bb.0:15538; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15539; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v015540; GFX90A-NEXT:    s_mov_b64 s[4:5], vcc15541; GFX90A-NEXT:    v_addc_co_u32_e64 v5, s[4:5], -1, v1, s[4:5]15542; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc15543; GFX90A-NEXT:    v_mov_b32_e32 v0, v415544; GFX90A-NEXT:    flat_load_dword v1, v[0:1]15545; GFX90A-NEXT:    s_mov_b64 s[4:5], 015546; GFX90A-NEXT:    v_pk_max_f16 v2, v2, v215547; GFX90A-NEXT:  .LBB51_1: ; %atomicrmw.start15548; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=115549; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15550; GFX90A-NEXT:    v_pk_max_f16 v0, v1, v115551; GFX90A-NEXT:    v_pk_max_f16 v0, v0, v215552; GFX90A-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc15553; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15554; GFX90A-NEXT:    buffer_wbinvl115555; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v115556; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15557; GFX90A-NEXT:    v_mov_b32_e32 v1, v015558; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]15559; GFX90A-NEXT:    s_cbranch_execnz .LBB51_115560; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end15561; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]15562; GFX90A-NEXT:    s_setpc_b64 s[30:31]15563;15564; GFX908-LABEL: flat_agent_atomic_fmax_noret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:15565; GFX908:       ; %bb.0:15566; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15567; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v015568; GFX908-NEXT:    s_mov_b64 s[4:5], vcc15569; GFX908-NEXT:    v_addc_co_u32_e64 v4, s[4:5], -1, v1, s[4:5]15570; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc15571; GFX908-NEXT:    v_mov_b32_e32 v0, v315572; GFX908-NEXT:    flat_load_dword v1, v[0:1]15573; GFX908-NEXT:    s_mov_b64 s[4:5], 015574; GFX908-NEXT:    v_pk_max_f16 v2, v2, v215575; GFX908-NEXT:  .LBB51_1: ; %atomicrmw.start15576; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=115577; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15578; GFX908-NEXT:    v_pk_max_f16 v0, v1, v115579; GFX908-NEXT:    v_pk_max_f16 v0, v0, v215580; GFX908-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc15581; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15582; GFX908-NEXT:    buffer_wbinvl115583; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v115584; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15585; GFX908-NEXT:    v_mov_b32_e32 v1, v015586; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]15587; GFX908-NEXT:    s_cbranch_execnz .LBB51_115588; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end15589; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]15590; GFX908-NEXT:    s_setpc_b64 s[30:31]15591;15592; GFX8-LABEL: flat_agent_atomic_fmax_noret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:15593; GFX8:       ; %bb.0:15594; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15595; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffff800, v015596; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc15597; GFX8-NEXT:    flat_load_dword v3, v[0:1]15598; GFX8-NEXT:    s_mov_b64 s[4:5], 015599; GFX8-NEXT:    v_max_f16_sdwa v4, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_115600; GFX8-NEXT:    v_max_f16_e32 v5, v2, v215601; GFX8-NEXT:  .LBB51_1: ; %atomicrmw.start15602; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=115603; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15604; GFX8-NEXT:    v_max_f16_sdwa v2, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_115605; GFX8-NEXT:    v_max_f16_e32 v6, v3, v315606; GFX8-NEXT:    v_max_f16_sdwa v2, v2, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD15607; GFX8-NEXT:    v_max_f16_e32 v6, v6, v515608; GFX8-NEXT:    v_or_b32_e32 v2, v6, v215609; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc15610; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15611; GFX8-NEXT:    buffer_wbinvl115612; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315613; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15614; GFX8-NEXT:    v_mov_b32_e32 v3, v215615; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]15616; GFX8-NEXT:    s_cbranch_execnz .LBB51_115617; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end15618; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]15619; GFX8-NEXT:    s_setpc_b64 s[30:31]15620;15621; GFX7-LABEL: flat_agent_atomic_fmax_noret_v2f16__offset12b_neg__amdgpu_no_fine_grained_memory:15622; GFX7:       ; %bb.0:15623; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15624; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v015625; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc15626; GFX7-NEXT:    flat_load_dword v5, v[0:1]15627; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v315628; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v215629; GFX7-NEXT:    s_mov_b64 s[4:5], 015630; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v315631; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15632; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v515633; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v515634; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v315635; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v615636; GFX7-NEXT:  .LBB51_1: ; %atomicrmw.start15637; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=115638; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v515639; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v415640; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v515641; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v415642; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v515643; GFX7-NEXT:    v_max_f32_e32 v6, v6, v215644; GFX7-NEXT:    v_max_f32_e32 v7, v7, v315645; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v615646; GFX7-NEXT:    v_cvt_f16_f32_e32 v7, v715647; GFX7-NEXT:    v_or_b32_e32 v6, v4, v515648; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v815649; GFX7-NEXT:    v_or_b32_e32 v5, v7, v415650; GFX7-NEXT:    flat_atomic_cmpswap v7, v[0:1], v[5:6] glc15651; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15652; GFX7-NEXT:    buffer_wbinvl115653; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v715654; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v715655; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v515656; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v615657; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15658; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]15659; GFX7-NEXT:    s_cbranch_execnz .LBB51_115660; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end15661; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]15662; GFX7-NEXT:    s_setpc_b64 s[30:31]15663  %gep = getelementptr inbounds <2 x half>, ptr %ptr, i64 -51215664  %unused = atomicrmw fmax ptr %gep, <2 x half> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !015665  ret void15666}15667 15668define <2 x half> @flat_system_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, <2 x half> %val) #0 {15669; GFX12-LABEL: flat_system_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15670; GFX12:       ; %bb.0:15671; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015672; GFX12-NEXT:    s_wait_expcnt 0x015673; GFX12-NEXT:    s_wait_samplecnt 0x015674; GFX12-NEXT:    s_wait_bvhcnt 0x015675; GFX12-NEXT:    s_wait_kmcnt 0x015676; GFX12-NEXT:    flat_load_b32 v3, v[0:1] offset:204415677; GFX12-NEXT:    v_pk_max_num_f16 v2, v2, v215678; GFX12-NEXT:    s_mov_b32 s0, 015679; GFX12-NEXT:  .LBB52_1: ; %atomicrmw.start15680; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=115681; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015682; GFX12-NEXT:    v_mov_b32_e32 v4, v315683; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15684; GFX12-NEXT:    v_pk_max_num_f16 v3, v4, v415685; GFX12-NEXT:    v_pk_max_num_f16 v3, v3, v215686; GFX12-NEXT:    global_wb scope:SCOPE_SYS15687; GFX12-NEXT:    s_wait_storecnt 0x015688; GFX12-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS15689; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015690; GFX12-NEXT:    global_inv scope:SCOPE_SYS15691; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v415692; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15693; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s015694; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15695; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015696; GFX12-NEXT:    s_cbranch_execnz .LBB52_115697; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end15698; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s015699; GFX12-NEXT:    v_mov_b32_e32 v0, v315700; GFX12-NEXT:    s_wait_loadcnt 0x015701; GFX12-NEXT:    s_setpc_b64 s[30:31]15702;15703; GFX942-LABEL: flat_system_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15704; GFX942:       ; %bb.0:15705; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15706; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:204415707; GFX942-NEXT:    s_mov_b64 s[0:1], 015708; GFX942-NEXT:    v_pk_max_f16 v4, v2, v215709; GFX942-NEXT:  .LBB52_1: ; %atomicrmw.start15710; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=115711; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15712; GFX942-NEXT:    v_pk_max_f16 v2, v3, v315713; GFX942-NEXT:    s_nop 015714; GFX942-NEXT:    v_pk_max_f16 v2, v2, v415715; GFX942-NEXT:    buffer_wbl2 sc0 sc115716; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 sc0 sc115717; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15718; GFX942-NEXT:    buffer_inv sc0 sc115719; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315720; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]15721; GFX942-NEXT:    v_mov_b32_e32 v3, v215722; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]15723; GFX942-NEXT:    s_cbranch_execnz .LBB52_115724; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end15725; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]15726; GFX942-NEXT:    v_mov_b32_e32 v0, v215727; GFX942-NEXT:    s_setpc_b64 s[30:31]15728;15729; GFX11-LABEL: flat_system_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15730; GFX11:       ; %bb.0:15731; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15732; GFX11-NEXT:    flat_load_b32 v3, v[0:1] offset:204415733; GFX11-NEXT:    v_pk_max_f16 v2, v2, v215734; GFX11-NEXT:    s_mov_b32 s0, 015735; GFX11-NEXT:  .LBB52_1: ; %atomicrmw.start15736; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=115737; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15738; GFX11-NEXT:    v_mov_b32_e32 v4, v315739; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15740; GFX11-NEXT:    v_pk_max_f16 v3, v4, v415741; GFX11-NEXT:    v_pk_max_f16 v3, v3, v215742; GFX11-NEXT:    s_waitcnt_vscnt null, 0x015743; GFX11-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[3:4] offset:2044 glc15744; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15745; GFX11-NEXT:    buffer_gl1_inv15746; GFX11-NEXT:    buffer_gl0_inv15747; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v415748; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s015749; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15750; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015751; GFX11-NEXT:    s_cbranch_execnz .LBB52_115752; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end15753; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s015754; GFX11-NEXT:    v_mov_b32_e32 v0, v315755; GFX11-NEXT:    s_setpc_b64 s[30:31]15756;15757; GFX10-LABEL: flat_system_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15758; GFX10:       ; %bb.0:15759; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15760; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fc, v015761; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, 0, v1, vcc_lo15762; GFX10-NEXT:    v_pk_max_f16 v1, v2, v215763; GFX10-NEXT:    s_mov_b32 s4, 015764; GFX10-NEXT:    flat_load_dword v0, v[3:4]15765; GFX10-NEXT:  .LBB52_1: ; %atomicrmw.start15766; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=115767; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15768; GFX10-NEXT:    v_mov_b32_e32 v6, v015769; GFX10-NEXT:    v_pk_max_f16 v0, v6, v615770; GFX10-NEXT:    v_pk_max_f16 v5, v0, v115771; GFX10-NEXT:    s_waitcnt_vscnt null, 0x015772; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc15773; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15774; GFX10-NEXT:    buffer_gl1_inv15775; GFX10-NEXT:    buffer_gl0_inv15776; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v615777; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s415778; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s415779; GFX10-NEXT:    s_cbranch_execnz .LBB52_115780; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end15781; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s415782; GFX10-NEXT:    s_setpc_b64 s[30:31]15783;15784; GFX90A-LABEL: flat_system_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15785; GFX90A:       ; %bb.0:15786; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15787; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:204415788; GFX90A-NEXT:    s_mov_b64 s[4:5], 015789; GFX90A-NEXT:    v_pk_max_f16 v4, v2, v215790; GFX90A-NEXT:  .LBB52_1: ; %atomicrmw.start15791; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=115792; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15793; GFX90A-NEXT:    v_pk_max_f16 v2, v3, v315794; GFX90A-NEXT:    v_pk_max_f16 v2, v2, v415795; GFX90A-NEXT:    buffer_wbl215796; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc15797; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15798; GFX90A-NEXT:    buffer_invl215799; GFX90A-NEXT:    buffer_wbinvl115800; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315801; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15802; GFX90A-NEXT:    v_mov_b32_e32 v3, v215803; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]15804; GFX90A-NEXT:    s_cbranch_execnz .LBB52_115805; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end15806; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]15807; GFX90A-NEXT:    v_mov_b32_e32 v0, v215808; GFX90A-NEXT:    s_setpc_b64 s[30:31]15809;15810; GFX908-LABEL: flat_system_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15811; GFX908:       ; %bb.0:15812; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15813; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:204415814; GFX908-NEXT:    s_mov_b64 s[4:5], 015815; GFX908-NEXT:    v_pk_max_f16 v2, v2, v215816; GFX908-NEXT:  .LBB52_1: ; %atomicrmw.start15817; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=115818; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15819; GFX908-NEXT:    v_mov_b32_e32 v4, v315820; GFX908-NEXT:    v_pk_max_f16 v3, v4, v415821; GFX908-NEXT:    v_pk_max_f16 v3, v3, v215822; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[3:4] offset:2044 glc15823; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15824; GFX908-NEXT:    buffer_wbinvl115825; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v415826; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15827; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]15828; GFX908-NEXT:    s_cbranch_execnz .LBB52_115829; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end15830; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]15831; GFX908-NEXT:    v_mov_b32_e32 v0, v315832; GFX908-NEXT:    s_setpc_b64 s[30:31]15833;15834; GFX8-LABEL: flat_system_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15835; GFX8:       ; %bb.0:15836; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15837; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v015838; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc15839; GFX8-NEXT:    flat_load_dword v0, v[3:4]15840; GFX8-NEXT:    s_mov_b64 s[4:5], 015841; GFX8-NEXT:    v_max_f16_sdwa v1, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_115842; GFX8-NEXT:    v_max_f16_e32 v2, v2, v215843; GFX8-NEXT:  .LBB52_1: ; %atomicrmw.start15844; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=115845; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15846; GFX8-NEXT:    v_mov_b32_e32 v6, v015847; GFX8-NEXT:    v_max_f16_sdwa v0, v6, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_115848; GFX8-NEXT:    v_max_f16_e32 v5, v6, v615849; GFX8-NEXT:    v_max_f16_sdwa v0, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD15850; GFX8-NEXT:    v_max_f16_e32 v5, v5, v215851; GFX8-NEXT:    v_or_b32_e32 v5, v5, v015852; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc15853; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15854; GFX8-NEXT:    buffer_wbinvl115855; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v615856; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15857; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]15858; GFX8-NEXT:    s_cbranch_execnz .LBB52_115859; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end15860; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]15861; GFX8-NEXT:    s_setpc_b64 s[30:31]15862;15863; GFX7-LABEL: flat_system_atomic_fmax_ret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15864; GFX7:       ; %bb.0:15865; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15866; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fc, v015867; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc15868; GFX7-NEXT:    flat_load_dword v1, v[4:5]15869; GFX7-NEXT:    v_cvt_f16_f32_e32 v0, v315870; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v215871; GFX7-NEXT:    s_mov_b64 s[4:5], 015872; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v015873; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v315874; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15875; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v115876; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v115877; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v115878; GFX7-NEXT:  .LBB52_1: ; %atomicrmw.start15879; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=115880; GFX7-NEXT:    v_cvt_f16_f32_e32 v1, v115881; GFX7-NEXT:    v_cvt_f16_f32_e32 v0, v015882; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v115883; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v015884; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v115885; GFX7-NEXT:    v_max_f32_e32 v6, v6, v215886; GFX7-NEXT:    v_max_f32_e32 v7, v7, v315887; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v615888; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v715889; GFX7-NEXT:    v_or_b32_e32 v7, v0, v115890; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v615891; GFX7-NEXT:    v_or_b32_e32 v6, v8, v015892; GFX7-NEXT:    flat_atomic_cmpswap v6, v[4:5], v[6:7] glc15893; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15894; GFX7-NEXT:    buffer_wbinvl115895; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v615896; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v615897; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v115898; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v715899; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]15900; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]15901; GFX7-NEXT:    s_cbranch_execnz .LBB52_115902; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end15903; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]15904; GFX7-NEXT:    s_setpc_b64 s[30:31]15905  %gep = getelementptr inbounds <2 x half>, ptr %ptr, i64 51115906  %result = atomicrmw fmax ptr %gep, <2 x half> %val seq_cst, !amdgpu.no.fine.grained.memory !015907  ret <2 x half> %result15908}15909 15910define void @flat_system_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, <2 x half> %val) #0 {15911; GFX12-LABEL: flat_system_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15912; GFX12:       ; %bb.0:15913; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015914; GFX12-NEXT:    s_wait_expcnt 0x015915; GFX12-NEXT:    s_wait_samplecnt 0x015916; GFX12-NEXT:    s_wait_bvhcnt 0x015917; GFX12-NEXT:    s_wait_kmcnt 0x015918; GFX12-NEXT:    flat_load_b32 v3, v[0:1] offset:204415919; GFX12-NEXT:    v_pk_max_num_f16 v4, v2, v215920; GFX12-NEXT:    s_mov_b32 s0, 015921; GFX12-NEXT:  .LBB53_1: ; %atomicrmw.start15922; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=115923; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015924; GFX12-NEXT:    v_pk_max_num_f16 v2, v3, v315925; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)15926; GFX12-NEXT:    v_pk_max_num_f16 v2, v2, v415927; GFX12-NEXT:    global_wb scope:SCOPE_SYS15928; GFX12-NEXT:    s_wait_storecnt 0x015929; GFX12-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS15930; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x015931; GFX12-NEXT:    global_inv scope:SCOPE_SYS15932; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v315933; GFX12-NEXT:    v_mov_b32_e32 v3, v215934; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15935; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s015936; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)15937; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015938; GFX12-NEXT:    s_cbranch_execnz .LBB53_115939; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end15940; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s015941; GFX12-NEXT:    s_wait_loadcnt 0x015942; GFX12-NEXT:    s_setpc_b64 s[30:31]15943;15944; GFX942-LABEL: flat_system_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15945; GFX942:       ; %bb.0:15946; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15947; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:204415948; GFX942-NEXT:    s_mov_b64 s[0:1], 015949; GFX942-NEXT:    v_pk_max_f16 v4, v2, v215950; GFX942-NEXT:  .LBB53_1: ; %atomicrmw.start15951; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=115952; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15953; GFX942-NEXT:    v_pk_max_f16 v2, v3, v315954; GFX942-NEXT:    s_nop 015955; GFX942-NEXT:    v_pk_max_f16 v2, v2, v415956; GFX942-NEXT:    buffer_wbl2 sc0 sc115957; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 sc0 sc115958; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15959; GFX942-NEXT:    buffer_inv sc0 sc115960; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v315961; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]15962; GFX942-NEXT:    v_mov_b32_e32 v3, v215963; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]15964; GFX942-NEXT:    s_cbranch_execnz .LBB53_115965; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end15966; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]15967; GFX942-NEXT:    s_setpc_b64 s[30:31]15968;15969; GFX11-LABEL: flat_system_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15970; GFX11:       ; %bb.0:15971; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15972; GFX11-NEXT:    flat_load_b32 v3, v[0:1] offset:204415973; GFX11-NEXT:    v_pk_max_f16 v4, v2, v215974; GFX11-NEXT:    s_mov_b32 s0, 015975; GFX11-NEXT:  .LBB53_1: ; %atomicrmw.start15976; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=115977; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15978; GFX11-NEXT:    v_pk_max_f16 v2, v3, v315979; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)15980; GFX11-NEXT:    v_pk_max_f16 v2, v2, v415981; GFX11-NEXT:    s_waitcnt_vscnt null, 0x015982; GFX11-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2044 glc15983; GFX11-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)15984; GFX11-NEXT:    buffer_gl1_inv15985; GFX11-NEXT:    buffer_gl0_inv15986; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v315987; GFX11-NEXT:    v_mov_b32_e32 v3, v215988; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s015989; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15990; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s015991; GFX11-NEXT:    s_cbranch_execnz .LBB53_115992; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end15993; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s015994; GFX11-NEXT:    s_setpc_b64 s[30:31]15995;15996; GFX10-LABEL: flat_system_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:15997; GFX10:       ; %bb.0:15998; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15999; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fc, v016000; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo16001; GFX10-NEXT:    v_pk_max_f16 v4, v2, v216002; GFX10-NEXT:    s_mov_b32 s4, 016003; GFX10-NEXT:    flat_load_dword v3, v[0:1]16004; GFX10-NEXT:  .LBB53_1: ; %atomicrmw.start16005; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=116006; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16007; GFX10-NEXT:    v_pk_max_f16 v2, v3, v316008; GFX10-NEXT:    v_pk_max_f16 v2, v2, v416009; GFX10-NEXT:    s_waitcnt_vscnt null, 0x016010; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc16011; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16012; GFX10-NEXT:    buffer_gl1_inv16013; GFX10-NEXT:    buffer_gl0_inv16014; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v316015; GFX10-NEXT:    v_mov_b32_e32 v3, v216016; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s416017; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s416018; GFX10-NEXT:    s_cbranch_execnz .LBB53_116019; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end16020; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s416021; GFX10-NEXT:    s_setpc_b64 s[30:31]16022;16023; GFX90A-LABEL: flat_system_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:16024; GFX90A:       ; %bb.0:16025; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16026; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:204416027; GFX90A-NEXT:    s_mov_b64 s[4:5], 016028; GFX90A-NEXT:    v_pk_max_f16 v4, v2, v216029; GFX90A-NEXT:  .LBB53_1: ; %atomicrmw.start16030; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=116031; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16032; GFX90A-NEXT:    v_pk_max_f16 v2, v3, v316033; GFX90A-NEXT:    v_pk_max_f16 v2, v2, v416034; GFX90A-NEXT:    buffer_wbl216035; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc16036; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16037; GFX90A-NEXT:    buffer_invl216038; GFX90A-NEXT:    buffer_wbinvl116039; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v316040; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]16041; GFX90A-NEXT:    v_mov_b32_e32 v3, v216042; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]16043; GFX90A-NEXT:    s_cbranch_execnz .LBB53_116044; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end16045; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]16046; GFX90A-NEXT:    s_setpc_b64 s[30:31]16047;16048; GFX908-LABEL: flat_system_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:16049; GFX908:       ; %bb.0:16050; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16051; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:204416052; GFX908-NEXT:    s_mov_b64 s[4:5], 016053; GFX908-NEXT:    v_pk_max_f16 v4, v2, v216054; GFX908-NEXT:  .LBB53_1: ; %atomicrmw.start16055; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=116056; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16057; GFX908-NEXT:    v_pk_max_f16 v2, v3, v316058; GFX908-NEXT:    v_pk_max_f16 v2, v2, v416059; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc16060; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16061; GFX908-NEXT:    buffer_wbinvl116062; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v316063; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]16064; GFX908-NEXT:    v_mov_b32_e32 v3, v216065; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]16066; GFX908-NEXT:    s_cbranch_execnz .LBB53_116067; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end16068; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]16069; GFX908-NEXT:    s_setpc_b64 s[30:31]16070;16071; GFX8-LABEL: flat_system_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:16072; GFX8:       ; %bb.0:16073; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16074; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v016075; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc16076; GFX8-NEXT:    flat_load_dword v3, v[0:1]16077; GFX8-NEXT:    s_mov_b64 s[4:5], 016078; GFX8-NEXT:    v_max_f16_sdwa v4, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_116079; GFX8-NEXT:    v_max_f16_e32 v5, v2, v216080; GFX8-NEXT:  .LBB53_1: ; %atomicrmw.start16081; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=116082; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16083; GFX8-NEXT:    v_max_f16_sdwa v2, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_116084; GFX8-NEXT:    v_max_f16_e32 v6, v3, v316085; GFX8-NEXT:    v_max_f16_sdwa v2, v2, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD16086; GFX8-NEXT:    v_max_f16_e32 v6, v6, v516087; GFX8-NEXT:    v_or_b32_e32 v2, v6, v216088; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc16089; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16090; GFX8-NEXT:    buffer_wbinvl116091; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v316092; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]16093; GFX8-NEXT:    v_mov_b32_e32 v3, v216094; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]16095; GFX8-NEXT:    s_cbranch_execnz .LBB53_116096; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end16097; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]16098; GFX8-NEXT:    s_setpc_b64 s[30:31]16099;16100; GFX7-LABEL: flat_system_atomic_fmax_noret_v2f16__offset12b_pos__amdgpu_no_fine_grained_memory:16101; GFX7:       ; %bb.0:16102; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16103; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fc, v016104; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc16105; GFX7-NEXT:    flat_load_dword v5, v[0:1]16106; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v316107; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v216108; GFX7-NEXT:    s_mov_b64 s[4:5], 016109; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v316110; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16111; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v516112; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v516113; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v316114; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v616115; GFX7-NEXT:  .LBB53_1: ; %atomicrmw.start16116; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=116117; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v516118; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v416119; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v516120; GFX7-NEXT:    v_cvt_f32_f16_e32 v7, v416121; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v516122; GFX7-NEXT:    v_max_f32_e32 v6, v6, v216123; GFX7-NEXT:    v_max_f32_e32 v7, v7, v316124; GFX7-NEXT:    v_cvt_f16_f32_e32 v8, v616125; GFX7-NEXT:    v_cvt_f16_f32_e32 v7, v716126; GFX7-NEXT:    v_or_b32_e32 v6, v4, v516127; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v816128; GFX7-NEXT:    v_or_b32_e32 v5, v7, v416129; GFX7-NEXT:    flat_atomic_cmpswap v7, v[0:1], v[5:6] glc16130; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16131; GFX7-NEXT:    buffer_wbinvl116132; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v716133; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v716134; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v516135; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v616136; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]16137; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]16138; GFX7-NEXT:    s_cbranch_execnz .LBB53_116139; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end16140; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]16141; GFX7-NEXT:    s_setpc_b64 s[30:31]16142  %gep = getelementptr inbounds <2 x half>, ptr %ptr, i64 51116143  %unused = atomicrmw fmax ptr %gep, <2 x half> %val seq_cst, !amdgpu.no.fine.grained.memory !016144  ret void16145}16146 16147; --------------------------------------------------------------------16148; <2 x bfloat>16149; --------------------------------------------------------------------16150 16151define <2 x bfloat> @flat_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory(ptr %ptr, <2 x bfloat> %val) #0 {16152; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory:16153; GFX12-TRUE16:       ; %bb.0:16154; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x016155; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x016156; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x016157; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x016158; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x016159; GFX12-TRUE16-NEXT:    flat_load_b32 v3, v[0:1]16160; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v216161; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v216162; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 016163; GFX12-TRUE16-NEXT:  .LBB54_1: ; %atomicrmw.start16164; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=116165; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x016166; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v316167; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16168; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616169; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v5, v5, v416170; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616171; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16172; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 116173; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v3, v3, v216174; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516175; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)16176; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16177; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 116178; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316179; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v316180; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)16181; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16182; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)16183; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo16184; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516185; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)16186; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16187; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)16188; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h16189; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x016190; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV16191; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x016192; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV16193; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616194; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16195; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s016196; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16197; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s016198; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB54_116199; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end16200; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s016201; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v316202; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x016203; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]16204;16205; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory:16206; GFX12-FAKE16:       ; %bb.0:16207; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x016208; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x016209; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x016210; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x016211; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x016212; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]16213; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v216214; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216215; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 016216; GFX12-FAKE16-NEXT:  .LBB54_1: ; %atomicrmw.start16217; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=116218; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x016219; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v316220; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16221; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616222; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v5, v5, v216223; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616224; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16225; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 116226; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v3, v3, v416227; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516228; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516229; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16230; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16231; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 116232; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316233; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v316234; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)16235; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16236; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16237; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)16238; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16239; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s016240; GFX12-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030216241; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x016242; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] th:TH_ATOMIC_RETURN scope:SCOPE_DEV16243; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x016244; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV16245; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616246; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16247; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s116248; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16249; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s116250; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB54_116251; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end16252; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s116253; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v316254; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x016255; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]16256;16257; GFX942-LABEL: flat_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory:16258; GFX942:       ; %bb.0:16259; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16260; GFX942-NEXT:    flat_load_dword v3, v[0:1]16261; GFX942-NEXT:    s_mov_b64 s[2:3], 016262; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v216263; GFX942-NEXT:    s_movk_i32 s4, 0x7fff16264; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v216265; GFX942-NEXT:    s_mov_b32 s5, 0x706030216266; GFX942-NEXT:  .LBB54_1: ; %atomicrmw.start16267; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=116268; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16269; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v316270; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v316271; GFX942-NEXT:    v_max_f32_e32 v2, v2, v416272; GFX942-NEXT:    v_max_f32_e32 v6, v6, v516273; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 116274; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 116275; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v216276; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v616277; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s416278; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s416279; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v616280; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v216281; GFX942-NEXT:    s_nop 016282; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc16283; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]16284; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s516285; GFX942-NEXT:    buffer_wbl2 sc116286; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc016287; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16288; GFX942-NEXT:    buffer_inv sc116289; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v316290; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]16291; GFX942-NEXT:    v_mov_b32_e32 v3, v216292; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]16293; GFX942-NEXT:    s_cbranch_execnz .LBB54_116294; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end16295; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]16296; GFX942-NEXT:    v_mov_b32_e32 v0, v216297; GFX942-NEXT:    s_setpc_b64 s[30:31]16298;16299; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory:16300; GFX11-TRUE16:       ; %bb.0:16301; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16302; GFX11-TRUE16-NEXT:    flat_load_b32 v3, v[0:1]16303; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v216304; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v216305; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 016306; GFX11-TRUE16-NEXT:    .p2align 616307; GFX11-TRUE16-NEXT:  .LBB54_1: ; %atomicrmw.start16308; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=116309; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16310; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v316311; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16312; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616313; GFX11-TRUE16-NEXT:    v_max_f32_e32 v5, v5, v416314; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616315; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16316; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 116317; GFX11-TRUE16-NEXT:    v_max_f32_e32 v3, v3, v216318; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516319; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)16320; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16321; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 116322; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316323; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v316324; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)16325; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16326; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo16327; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516328; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16329; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)16330; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h16331; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x016332; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] glc16333; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16334; GFX11-TRUE16-NEXT:    buffer_gl1_inv16335; GFX11-TRUE16-NEXT:    buffer_gl0_inv16336; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616337; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s016338; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)16339; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s016340; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB54_116341; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end16342; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s016343; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, v316344; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]16345;16346; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory:16347; GFX11-FAKE16:       ; %bb.0:16348; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16349; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]16350; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v216351; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216352; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 016353; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x116354; GFX11-FAKE16-NEXT:    .p2align 616355; GFX11-FAKE16-NEXT:  .LBB54_1: ; %atomicrmw.start16356; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=116357; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16358; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v316359; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16360; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616361; GFX11-FAKE16-NEXT:    v_max_f32_e32 v5, v5, v216362; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616363; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16364; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 116365; GFX11-FAKE16-NEXT:    v_max_f32_e32 v3, v3, v416366; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516367; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516368; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16369; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16370; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 116371; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316372; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v316373; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16374; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16375; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16376; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16377; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s016378; GFX11-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030216379; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x016380; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] glc16381; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16382; GFX11-FAKE16-NEXT:    buffer_gl1_inv16383; GFX11-FAKE16-NEXT:    buffer_gl0_inv16384; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616385; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s116386; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)16387; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s116388; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB54_116389; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end16390; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x216391; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s116392; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v316393; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]16394;16395; GFX10-LABEL: flat_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory:16396; GFX10:       ; %bb.0:16397; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16398; GFX10-NEXT:    flat_load_dword v3, v[0:1]16399; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v216400; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216401; GFX10-NEXT:    s_mov_b32 s5, 016402; GFX10-NEXT:  .LBB54_1: ; %atomicrmw.start16403; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=116404; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16405; GFX10-NEXT:    v_mov_b32_e32 v6, v316406; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 16, v616407; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616408; GFX10-NEXT:    v_max_f32_e32 v3, v3, v416409; GFX10-NEXT:    v_max_f32_e32 v5, v5, v216410; GFX10-NEXT:    v_bfe_u32 v7, v3, 16, 116411; GFX10-NEXT:    v_bfe_u32 v8, v5, 16, 116412; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v316413; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v516414; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516415; GFX10-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16416; GFX10-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16417; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v3, v316418; GFX10-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16419; GFX10-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s416420; GFX10-NEXT:    v_perm_b32 v5, v5, v3, 0x706030216421; GFX10-NEXT:    s_waitcnt_vscnt null, 0x016422; GFX10-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[5:6] glc16423; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16424; GFX10-NEXT:    buffer_gl1_inv16425; GFX10-NEXT:    buffer_gl0_inv16426; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616427; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s516428; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s516429; GFX10-NEXT:    s_cbranch_execnz .LBB54_116430; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end16431; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s516432; GFX10-NEXT:    v_mov_b32_e32 v0, v316433; GFX10-NEXT:    s_setpc_b64 s[30:31]16434;16435; GFX90A-LABEL: flat_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory:16436; GFX90A:       ; %bb.0:16437; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16438; GFX90A-NEXT:    flat_load_dword v3, v[0:1]16439; GFX90A-NEXT:    s_mov_b64 s[6:7], 016440; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v216441; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff16442; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v216443; GFX90A-NEXT:    s_mov_b32 s9, 0x706030216444; GFX90A-NEXT:  .LBB54_1: ; %atomicrmw.start16445; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=116446; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16447; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v316448; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v316449; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v416450; GFX90A-NEXT:    v_max_f32_e32 v6, v6, v516451; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 116452; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 116453; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v216454; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v616455; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s816456; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s816457; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v616458; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v216459; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]16460; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc16461; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s916462; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc16463; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16464; GFX90A-NEXT:    buffer_wbinvl116465; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v316466; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]16467; GFX90A-NEXT:    v_mov_b32_e32 v3, v216468; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]16469; GFX90A-NEXT:    s_cbranch_execnz .LBB54_116470; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end16471; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]16472; GFX90A-NEXT:    v_mov_b32_e32 v0, v216473; GFX90A-NEXT:    s_setpc_b64 s[30:31]16474;16475; GFX908-LABEL: flat_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory:16476; GFX908:       ; %bb.0:16477; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16478; GFX908-NEXT:    flat_load_dword v3, v[0:1]16479; GFX908-NEXT:    s_mov_b64 s[6:7], 016480; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v216481; GFX908-NEXT:    s_movk_i32 s8, 0x7fff16482; GFX908-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216483; GFX908-NEXT:    s_mov_b32 s9, 0x706030216484; GFX908-NEXT:  .LBB54_1: ; %atomicrmw.start16485; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=116486; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16487; GFX908-NEXT:    v_mov_b32_e32 v6, v316488; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v616489; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616490; GFX908-NEXT:    v_max_f32_e32 v3, v3, v416491; GFX908-NEXT:    v_max_f32_e32 v5, v5, v216492; GFX908-NEXT:    v_bfe_u32 v7, v3, 16, 116493; GFX908-NEXT:    v_bfe_u32 v9, v5, 16, 116494; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v316495; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v516496; GFX908-NEXT:    v_add3_u32 v7, v7, v3, s816497; GFX908-NEXT:    v_add3_u32 v9, v9, v5, s816498; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v516499; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v3, v316500; GFX908-NEXT:    v_cndmask_b32_e64 v3, v7, v8, s[4:5]16501; GFX908-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc16502; GFX908-NEXT:    v_perm_b32 v5, v5, v3, s916503; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[5:6] glc16504; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16505; GFX908-NEXT:    buffer_wbinvl116506; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v616507; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]16508; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]16509; GFX908-NEXT:    s_cbranch_execnz .LBB54_116510; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end16511; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]16512; GFX908-NEXT:    v_mov_b32_e32 v0, v316513; GFX908-NEXT:    s_setpc_b64 s[30:31]16514;16515; GFX8-LABEL: flat_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory:16516; GFX8:       ; %bb.0:16517; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16518; GFX8-NEXT:    flat_load_dword v3, v[0:1]16519; GFX8-NEXT:    s_mov_b64 s[6:7], 016520; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v216521; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216522; GFX8-NEXT:  .LBB54_1: ; %atomicrmw.start16523; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=116524; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16525; GFX8-NEXT:    v_mov_b32_e32 v6, v316526; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 16, v616527; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616528; GFX8-NEXT:    v_max_f32_e32 v3, v3, v416529; GFX8-NEXT:    v_max_f32_e32 v5, v5, v216530; GFX8-NEXT:    v_bfe_u32 v7, v3, 16, 116531; GFX8-NEXT:    v_bfe_u32 v9, v5, 16, 116532; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v316533; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v516534; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v716535; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v916536; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v516537; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v516538; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v316539; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v3, v316540; GFX8-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc16541; GFX8-NEXT:    v_cndmask_b32_e64 v3, v7, v8, s[4:5]16542; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v516543; GFX8-NEXT:    v_alignbit_b32 v5, v5, v3, 1616544; GFX8-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[5:6] glc16545; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16546; GFX8-NEXT:    buffer_wbinvl116547; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v616548; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]16549; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]16550; GFX8-NEXT:    s_cbranch_execnz .LBB54_116551; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end16552; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]16553; GFX8-NEXT:    v_mov_b32_e32 v0, v316554; GFX8-NEXT:    s_setpc_b64 s[30:31]16555;16556; GFX7-LABEL: flat_agent_atomic_fmax_ret_v2bf16__amdgpu_no_fine_grained_memory:16557; GFX7:       ; %bb.0:16558; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16559; GFX7-NEXT:    flat_load_dword v5, v[0:1]16560; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v316561; GFX7-NEXT:    v_mul_f32_e32 v6, 1.0, v216562; GFX7-NEXT:    s_mov_b64 s[4:5], 016563; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v316564; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16565; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v516566; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v516567; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616568; GFX7-NEXT:  .LBB54_1: ; %atomicrmw.start16569; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=116570; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v216571; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v316572; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v216573; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v316574; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v216575; GFX7-NEXT:    v_max_f32_e32 v6, v6, v416576; GFX7-NEXT:    v_max_f32_e32 v7, v7, v516577; GFX7-NEXT:    v_alignbit_b32 v3, v2, v3, 1616578; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v616579; GFX7-NEXT:    v_alignbit_b32 v2, v2, v7, 1616580; GFX7-NEXT:    flat_atomic_cmpswap v6, v[0:1], v[2:3] glc16581; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16582; GFX7-NEXT:    buffer_wbinvl116583; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v6, v316584; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v616585; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]16586; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v616587; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]16588; GFX7-NEXT:    s_cbranch_execnz .LBB54_116589; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end16590; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]16591; GFX7-NEXT:    v_mov_b32_e32 v0, v316592; GFX7-NEXT:    v_mov_b32_e32 v1, v216593; GFX7-NEXT:    s_setpc_b64 s[30:31]16594  %result = atomicrmw fmax ptr %ptr, <2 x bfloat> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !016595  ret <2 x bfloat> %result16596}16597 16598define <2 x bfloat> @flat_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, <2 x bfloat> %val) #0 {16599; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:16600; GFX12-TRUE16:       ; %bb.0:16601; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x016602; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x016603; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x016604; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x016605; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x016606; GFX12-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204416607; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v216608; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v216609; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 016610; GFX12-TRUE16-NEXT:  .LBB55_1: ; %atomicrmw.start16611; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=116612; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x016613; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v316614; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16615; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616616; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v5, v5, v416617; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616618; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16619; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 116620; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v3, v3, v216621; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516622; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)16623; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16624; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 116625; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316626; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v316627; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)16628; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16629; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)16630; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo16631; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516632; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)16633; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16634; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)16635; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h16636; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x016637; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV16638; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x016639; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV16640; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616641; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16642; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s016643; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16644; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s016645; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB55_116646; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end16647; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s016648; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v316649; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x016650; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]16651;16652; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:16653; GFX12-FAKE16:       ; %bb.0:16654; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x016655; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x016656; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x016657; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x016658; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x016659; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204416660; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v216661; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216662; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 016663; GFX12-FAKE16-NEXT:  .LBB55_1: ; %atomicrmw.start16664; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=116665; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x016666; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v316667; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16668; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616669; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v5, v5, v216670; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616671; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16672; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 116673; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v3, v3, v416674; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516675; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516676; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16677; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16678; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 116679; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316680; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v316681; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)16682; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16683; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16684; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)16685; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16686; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s016687; GFX12-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030216688; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x016689; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV16690; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x016691; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV16692; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616693; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16694; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s116695; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)16696; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s116697; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB55_116698; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end16699; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s116700; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v316701; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x016702; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]16703;16704; GFX942-LABEL: flat_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:16705; GFX942:       ; %bb.0:16706; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16707; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:204416708; GFX942-NEXT:    s_mov_b64 s[2:3], 016709; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v216710; GFX942-NEXT:    s_movk_i32 s4, 0x7fff16711; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v216712; GFX942-NEXT:    s_mov_b32 s5, 0x706030216713; GFX942-NEXT:  .LBB55_1: ; %atomicrmw.start16714; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=116715; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16716; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v316717; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v316718; GFX942-NEXT:    v_max_f32_e32 v2, v2, v416719; GFX942-NEXT:    v_max_f32_e32 v6, v6, v516720; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 116721; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 116722; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v216723; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v616724; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s416725; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s416726; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v616727; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v216728; GFX942-NEXT:    s_nop 016729; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc16730; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]16731; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s516732; GFX942-NEXT:    buffer_wbl2 sc116733; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 sc016734; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16735; GFX942-NEXT:    buffer_inv sc116736; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v316737; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]16738; GFX942-NEXT:    v_mov_b32_e32 v3, v216739; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]16740; GFX942-NEXT:    s_cbranch_execnz .LBB55_116741; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end16742; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]16743; GFX942-NEXT:    v_mov_b32_e32 v0, v216744; GFX942-NEXT:    s_setpc_b64 s[30:31]16745;16746; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:16747; GFX11-TRUE16:       ; %bb.0:16748; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16749; GFX11-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204416750; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v216751; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v216752; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 016753; GFX11-TRUE16-NEXT:    .p2align 616754; GFX11-TRUE16-NEXT:  .LBB55_1: ; %atomicrmw.start16755; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=116756; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16757; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v316758; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16759; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616760; GFX11-TRUE16-NEXT:    v_max_f32_e32 v5, v5, v416761; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616762; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16763; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 116764; GFX11-TRUE16-NEXT:    v_max_f32_e32 v3, v3, v216765; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516766; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)16767; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16768; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 116769; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316770; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v316771; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)16772; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16773; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo16774; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516775; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16776; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)16777; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h16778; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x016779; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] offset:2044 glc16780; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16781; GFX11-TRUE16-NEXT:    buffer_gl1_inv16782; GFX11-TRUE16-NEXT:    buffer_gl0_inv16783; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616784; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s016785; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)16786; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s016787; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB55_116788; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end16789; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s016790; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, v316791; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]16792;16793; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:16794; GFX11-FAKE16:       ; %bb.0:16795; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16796; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204416797; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v216798; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216799; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 016800; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x116801; GFX11-FAKE16-NEXT:    .p2align 616802; GFX11-FAKE16-NEXT:  .LBB55_1: ; %atomicrmw.start16803; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=116804; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16805; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v316806; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16807; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616808; GFX11-FAKE16-NEXT:    v_max_f32_e32 v5, v5, v216809; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v616810; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)16811; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 116812; GFX11-FAKE16-NEXT:    v_max_f32_e32 v3, v3, v416813; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v516814; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516815; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16816; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16817; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 116818; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v316819; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v316820; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)16821; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16822; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff16823; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16824; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s016825; GFX11-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030216826; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x016827; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] offset:2044 glc16828; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16829; GFX11-FAKE16-NEXT:    buffer_gl1_inv16830; GFX11-FAKE16-NEXT:    buffer_gl0_inv16831; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v616832; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s116833; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)16834; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s116835; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB55_116836; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end16837; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x216838; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s116839; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v316840; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]16841;16842; GFX10-LABEL: flat_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:16843; GFX10:       ; %bb.0:16844; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16845; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fc, v016846; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, 0, v1, vcc_lo16847; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 16, v216848; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216849; GFX10-NEXT:    s_mov_b32 s5, 016850; GFX10-NEXT:    flat_load_dword v0, v[3:4]16851; GFX10-NEXT:  .LBB55_1: ; %atomicrmw.start16852; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=116853; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16854; GFX10-NEXT:    v_mov_b32_e32 v6, v016855; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 16, v616856; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616857; GFX10-NEXT:    v_max_f32_e32 v0, v0, v116858; GFX10-NEXT:    v_max_f32_e32 v5, v5, v216859; GFX10-NEXT:    v_bfe_u32 v7, v0, 16, 116860; GFX10-NEXT:    v_bfe_u32 v8, v5, 16, 116861; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v016862; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v516863; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v516864; GFX10-NEXT:    v_add3_u32 v7, v7, v0, 0x7fff16865; GFX10-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff16866; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v0, v016867; GFX10-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo16868; GFX10-NEXT:    v_cndmask_b32_e64 v0, v7, v9, s416869; GFX10-NEXT:    v_perm_b32 v5, v5, v0, 0x706030216870; GFX10-NEXT:    s_waitcnt_vscnt null, 0x016871; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc16872; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16873; GFX10-NEXT:    buffer_gl1_inv16874; GFX10-NEXT:    buffer_gl0_inv16875; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v616876; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s516877; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s516878; GFX10-NEXT:    s_cbranch_execnz .LBB55_116879; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end16880; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s516881; GFX10-NEXT:    s_setpc_b64 s[30:31]16882;16883; GFX90A-LABEL: flat_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:16884; GFX90A:       ; %bb.0:16885; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16886; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:204416887; GFX90A-NEXT:    s_mov_b64 s[6:7], 016888; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v216889; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff16890; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v216891; GFX90A-NEXT:    s_mov_b32 s9, 0x706030216892; GFX90A-NEXT:  .LBB55_1: ; %atomicrmw.start16893; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=116894; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16895; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v316896; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v316897; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v416898; GFX90A-NEXT:    v_max_f32_e32 v6, v6, v516899; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 116900; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 116901; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v216902; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v616903; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s816904; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s816905; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v616906; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v216907; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]16908; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc16909; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s916910; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc16911; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16912; GFX90A-NEXT:    buffer_wbinvl116913; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v316914; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]16915; GFX90A-NEXT:    v_mov_b32_e32 v3, v216916; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]16917; GFX90A-NEXT:    s_cbranch_execnz .LBB55_116918; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end16919; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]16920; GFX90A-NEXT:    v_mov_b32_e32 v0, v216921; GFX90A-NEXT:    s_setpc_b64 s[30:31]16922;16923; GFX908-LABEL: flat_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:16924; GFX908:       ; %bb.0:16925; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16926; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:204416927; GFX908-NEXT:    s_mov_b64 s[6:7], 016928; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v216929; GFX908-NEXT:    s_movk_i32 s8, 0x7fff16930; GFX908-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216931; GFX908-NEXT:    s_mov_b32 s9, 0x706030216932; GFX908-NEXT:  .LBB55_1: ; %atomicrmw.start16933; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=116934; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16935; GFX908-NEXT:    v_mov_b32_e32 v6, v316936; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v616937; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616938; GFX908-NEXT:    v_max_f32_e32 v3, v3, v416939; GFX908-NEXT:    v_max_f32_e32 v5, v5, v216940; GFX908-NEXT:    v_bfe_u32 v7, v3, 16, 116941; GFX908-NEXT:    v_bfe_u32 v9, v5, 16, 116942; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v316943; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v516944; GFX908-NEXT:    v_add3_u32 v7, v7, v3, s816945; GFX908-NEXT:    v_add3_u32 v9, v9, v5, s816946; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v516947; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v3, v316948; GFX908-NEXT:    v_cndmask_b32_e64 v3, v7, v8, s[4:5]16949; GFX908-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc16950; GFX908-NEXT:    v_perm_b32 v5, v5, v3, s916951; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[5:6] offset:2044 glc16952; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16953; GFX908-NEXT:    buffer_wbinvl116954; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v616955; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]16956; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]16957; GFX908-NEXT:    s_cbranch_execnz .LBB55_116958; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end16959; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]16960; GFX908-NEXT:    v_mov_b32_e32 v0, v316961; GFX908-NEXT:    s_setpc_b64 s[30:31]16962;16963; GFX8-LABEL: flat_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:16964; GFX8:       ; %bb.0:16965; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16966; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v016967; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc16968; GFX8-NEXT:    flat_load_dword v0, v[3:4]16969; GFX8-NEXT:    s_mov_b64 s[6:7], 016970; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 16, v216971; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v216972; GFX8-NEXT:  .LBB55_1: ; %atomicrmw.start16973; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=116974; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16975; GFX8-NEXT:    v_mov_b32_e32 v6, v016976; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 16, v616977; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v616978; GFX8-NEXT:    v_max_f32_e32 v0, v0, v116979; GFX8-NEXT:    v_max_f32_e32 v5, v5, v216980; GFX8-NEXT:    v_bfe_u32 v7, v0, 16, 116981; GFX8-NEXT:    v_bfe_u32 v9, v5, 16, 116982; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v016983; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v516984; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v716985; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v916986; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v516987; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v516988; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v016989; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v0, v016990; GFX8-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc16991; GFX8-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[4:5]16992; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v516993; GFX8-NEXT:    v_alignbit_b32 v5, v5, v0, 1616994; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc16995; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)16996; GFX8-NEXT:    buffer_wbinvl116997; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v616998; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]16999; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]17000; GFX8-NEXT:    s_cbranch_execnz .LBB55_117001; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end17002; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]17003; GFX8-NEXT:    s_setpc_b64 s[30:31]17004;17005; GFX7-LABEL: flat_agent_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:17006; GFX7:       ; %bb.0:17007; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17008; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fc, v017009; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc17010; GFX7-NEXT:    flat_load_dword v0, v[4:5]17011; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v317012; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v217013; GFX7-NEXT:    s_mov_b64 s[4:5], 017014; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v117015; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v317016; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17017; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v017018; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v017019; GFX7-NEXT:  .LBB55_1: ; %atomicrmw.start17020; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=117021; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v117022; GFX7-NEXT:    v_mul_f32_e32 v0, 1.0, v017023; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v117024; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v017025; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v117026; GFX7-NEXT:    v_max_f32_e32 v6, v6, v217027; GFX7-NEXT:    v_max_f32_e32 v7, v7, v317028; GFX7-NEXT:    v_alignbit_b32 v1, v1, v0, 1617029; GFX7-NEXT:    v_lshrrev_b32_e32 v0, 16, v617030; GFX7-NEXT:    v_alignbit_b32 v0, v0, v7, 1617031; GFX7-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc17032; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17033; GFX7-NEXT:    buffer_wbinvl117034; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v117035; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v017036; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]17037; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v017038; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]17039; GFX7-NEXT:    s_cbranch_execnz .LBB55_117040; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end17041; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]17042; GFX7-NEXT:    s_setpc_b64 s[30:31]17043  %gep = getelementptr inbounds <2 x bfloat>, ptr %ptr, i64 51117044  %result = atomicrmw fmax ptr %gep, <2 x bfloat> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !017045  ret <2 x bfloat> %result17046}17047 17048define <2 x bfloat> @flat_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory(ptr %ptr, <2 x bfloat> %val) #0 {17049; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:17050; GFX12-TRUE16:       ; %bb.0:17051; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x017052; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x017053; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x017054; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x017055; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x017056; GFX12-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:-204817057; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v217058; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v217059; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 017060; GFX12-TRUE16-NEXT:  .LBB56_1: ; %atomicrmw.start17061; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=117062; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x017063; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v317064; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17065; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617066; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v5, v5, v417067; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v617068; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17069; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 117070; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v3, v3, v217071; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v517072; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)17073; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff17074; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 117075; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v317076; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v317077; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)17078; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff17079; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)17080; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo17081; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v517082; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)17083; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo17084; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)17085; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h17086; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x017087; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV17088; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x017089; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV17090; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v617091; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17092; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s017093; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17094; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s017095; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB56_117096; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end17097; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s017098; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v317099; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x017100; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]17101;17102; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:17103; GFX12-FAKE16:       ; %bb.0:17104; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x017105; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x017106; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x017107; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x017108; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x017109; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:-204817110; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v217111; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217112; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 017113; GFX12-FAKE16-NEXT:  .LBB56_1: ; %atomicrmw.start17114; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=117115; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x017116; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v317117; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17118; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617119; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v5, v5, v217120; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v617121; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17122; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 117123; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v3, v3, v417124; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v517125; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v517126; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)17127; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff17128; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 117129; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v317130; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v317131; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)17132; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo17133; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff17134; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)17135; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17136; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s017137; GFX12-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030217138; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x017139; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV17140; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x017141; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV17142; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v617143; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17144; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s117145; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17146; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s117147; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB56_117148; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end17149; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s117150; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v317151; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x017152; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]17153;17154; GFX942-LABEL: flat_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:17155; GFX942:       ; %bb.0:17156; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17157; GFX942-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v017158; GFX942-NEXT:    s_movk_i32 s0, 0xf80017159; GFX942-NEXT:    s_nop 017160; GFX942-NEXT:    v_addc_co_u32_e32 v5, vcc, -1, v1, vcc17161; GFX942-NEXT:    flat_load_dword v3, v[4:5]17162; GFX942-NEXT:    s_mov_b32 s1, -117163; GFX942-NEXT:    v_lshl_add_u64 v[4:5], v[0:1], 0, s[0:1]17164; GFX942-NEXT:    s_mov_b64 s[2:3], 017165; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 16, v217166; GFX942-NEXT:    s_movk_i32 s4, 0x7fff17167; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v217168; GFX942-NEXT:    s_mov_b32 s5, 0x706030217169; GFX942-NEXT:  .LBB56_1: ; %atomicrmw.start17170; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=117171; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17172; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 16, v317173; GFX942-NEXT:    v_and_b32_e32 v2, 0xffff0000, v317174; GFX942-NEXT:    v_max_f32_e32 v0, v0, v117175; GFX942-NEXT:    v_max_f32_e32 v2, v2, v617176; GFX942-NEXT:    v_bfe_u32 v7, v0, 16, 117177; GFX942-NEXT:    v_bfe_u32 v9, v2, 16, 117178; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v017179; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v217180; GFX942-NEXT:    v_add3_u32 v7, v7, v0, s417181; GFX942-NEXT:    v_add3_u32 v9, v9, v2, s417182; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v217183; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v0, v017184; GFX942-NEXT:    s_nop 017185; GFX942-NEXT:    v_cndmask_b32_e32 v2, v9, v10, vcc17186; GFX942-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[0:1]17187; GFX942-NEXT:    v_perm_b32 v2, v2, v0, s517188; GFX942-NEXT:    buffer_wbl2 sc117189; GFX942-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[2:3] sc017190; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17191; GFX942-NEXT:    buffer_inv sc117192; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v317193; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]17194; GFX942-NEXT:    v_mov_b32_e32 v3, v017195; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]17196; GFX942-NEXT:    s_cbranch_execnz .LBB56_117197; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end17198; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]17199; GFX942-NEXT:    s_setpc_b64 s[30:31]17200;17201; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:17202; GFX11-TRUE16:       ; %bb.0:17203; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17204; GFX11-TRUE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v017205; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)17206; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v4, null, -1, v1, vcc_lo17207; GFX11-TRUE16-NEXT:    v_and_b32_e32 v1, 0xffff0000, v217208; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v217209; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 017210; GFX11-TRUE16-NEXT:    flat_load_b32 v0, v[3:4]17211; GFX11-TRUE16-NEXT:    .p2align 617212; GFX11-TRUE16-NEXT:  .LBB56_1: ; %atomicrmw.start17213; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=117214; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17215; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v017216; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17217; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617218; GFX11-TRUE16-NEXT:    v_dual_max_f32 v5, v5, v1 :: v_dual_lshlrev_b32 v0, 16, v617219; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)17220; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 117221; GFX11-TRUE16-NEXT:    v_max_f32_e32 v0, v0, v217222; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v517223; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)17224; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff17225; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v0, 16, 117226; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v017227; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v0, v017228; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)17229; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v0, 0x7fff17230; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v0, v7, v9, vcc_lo17231; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v517232; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo17233; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)17234; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v0.h17235; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x017236; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v0, v[3:4], v[5:6] glc17237; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17238; GFX11-TRUE16-NEXT:    buffer_gl1_inv17239; GFX11-TRUE16-NEXT:    buffer_gl0_inv17240; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v617241; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s017242; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17243; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s017244; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB56_117245; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end17246; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s017247; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]17248;17249; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:17250; GFX11-FAKE16:       ; %bb.0:17251; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17252; GFX11-FAKE16-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v017253; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)17254; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v4, null, -1, v1, vcc_lo17255; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v217256; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217257; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 017258; GFX11-FAKE16-NEXT:    flat_load_b32 v0, v[3:4]17259; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x117260; GFX11-FAKE16-NEXT:    .p2align 617261; GFX11-FAKE16-NEXT:  .LBB56_1: ; %atomicrmw.start17262; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=117263; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17264; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v017265; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17266; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617267; GFX11-FAKE16-NEXT:    v_max_f32_e32 v5, v5, v217268; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 16, v617269; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17270; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 117271; GFX11-FAKE16-NEXT:    v_max_f32_e32 v0, v0, v117272; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v517273; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v517274; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)17275; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff17276; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v0, 16, 117277; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v017278; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v0, v017279; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)17280; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo17281; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v0, 0x7fff17282; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17283; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, v7, v9, s017284; GFX11-FAKE16-NEXT:    v_perm_b32 v5, v5, v0, 0x706030217285; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x017286; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v0, v[3:4], v[5:6] glc17287; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17288; GFX11-FAKE16-NEXT:    buffer_gl1_inv17289; GFX11-FAKE16-NEXT:    buffer_gl0_inv17290; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v617291; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s117292; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17293; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s117294; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB56_117295; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end17296; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x217297; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s117298; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]17299;17300; GFX10-LABEL: flat_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:17301; GFX10:       ; %bb.0:17302; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17303; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0xfffff800, v017304; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, -1, v1, vcc_lo17305; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 16, v217306; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217307; GFX10-NEXT:    s_mov_b32 s5, 017308; GFX10-NEXT:    flat_load_dword v0, v[3:4]17309; GFX10-NEXT:  .LBB56_1: ; %atomicrmw.start17310; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=117311; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17312; GFX10-NEXT:    v_mov_b32_e32 v6, v017313; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 16, v617314; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617315; GFX10-NEXT:    v_max_f32_e32 v0, v0, v117316; GFX10-NEXT:    v_max_f32_e32 v5, v5, v217317; GFX10-NEXT:    v_bfe_u32 v7, v0, 16, 117318; GFX10-NEXT:    v_bfe_u32 v8, v5, 16, 117319; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v017320; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v517321; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v517322; GFX10-NEXT:    v_add3_u32 v7, v7, v0, 0x7fff17323; GFX10-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff17324; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v0, v017325; GFX10-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo17326; GFX10-NEXT:    v_cndmask_b32_e64 v0, v7, v9, s417327; GFX10-NEXT:    v_perm_b32 v5, v5, v0, 0x706030217328; GFX10-NEXT:    s_waitcnt_vscnt null, 0x017329; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc17330; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17331; GFX10-NEXT:    buffer_gl1_inv17332; GFX10-NEXT:    buffer_gl0_inv17333; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v617334; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s517335; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s517336; GFX10-NEXT:    s_cbranch_execnz .LBB56_117337; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end17338; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s517339; GFX10-NEXT:    s_setpc_b64 s[30:31]17340;17341; GFX90A-LABEL: flat_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:17342; GFX90A:       ; %bb.0:17343; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17344; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v017345; GFX90A-NEXT:    s_mov_b64 s[4:5], vcc17346; GFX90A-NEXT:    v_addc_co_u32_e64 v5, s[4:5], -1, v1, s[4:5]17347; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc17348; GFX90A-NEXT:    v_mov_b32_e32 v0, v417349; GFX90A-NEXT:    flat_load_dword v1, v[0:1]17350; GFX90A-NEXT:    s_mov_b64 s[6:7], 017351; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 16, v217352; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff17353; GFX90A-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217354; GFX90A-NEXT:    s_mov_b32 s9, 0x706030217355; GFX90A-NEXT:  .LBB56_1: ; %atomicrmw.start17356; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=117357; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17358; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v117359; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v117360; GFX90A-NEXT:    v_max_f32_e32 v0, v0, v317361; GFX90A-NEXT:    v_max_f32_e32 v6, v6, v217362; GFX90A-NEXT:    v_bfe_u32 v7, v0, 16, 117363; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 117364; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v017365; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v617366; GFX90A-NEXT:    v_add3_u32 v7, v7, v0, s817367; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s817368; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617369; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v0, v017370; GFX90A-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[4:5]17371; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17372; GFX90A-NEXT:    v_perm_b32 v0, v6, v0, s917373; GFX90A-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc17374; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17375; GFX90A-NEXT:    buffer_wbinvl117376; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v117377; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17378; GFX90A-NEXT:    v_mov_b32_e32 v1, v017379; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]17380; GFX90A-NEXT:    s_cbranch_execnz .LBB56_117381; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end17382; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]17383; GFX90A-NEXT:    s_setpc_b64 s[30:31]17384;17385; GFX908-LABEL: flat_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:17386; GFX908:       ; %bb.0:17387; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17388; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v017389; GFX908-NEXT:    s_mov_b64 s[4:5], vcc17390; GFX908-NEXT:    v_addc_co_u32_e64 v4, s[4:5], -1, v1, s[4:5]17391; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc17392; GFX908-NEXT:    v_mov_b32_e32 v0, v317393; GFX908-NEXT:    flat_load_dword v0, v[0:1]17394; GFX908-NEXT:    s_mov_b64 s[6:7], 017395; GFX908-NEXT:    v_lshlrev_b32_e32 v1, 16, v217396; GFX908-NEXT:    s_movk_i32 s8, 0x7fff17397; GFX908-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217398; GFX908-NEXT:    s_mov_b32 s9, 0x706030217399; GFX908-NEXT:  .LBB56_1: ; %atomicrmw.start17400; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=117401; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17402; GFX908-NEXT:    v_mov_b32_e32 v6, v017403; GFX908-NEXT:    v_lshlrev_b32_e32 v0, 16, v617404; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617405; GFX908-NEXT:    v_max_f32_e32 v0, v0, v117406; GFX908-NEXT:    v_max_f32_e32 v5, v5, v217407; GFX908-NEXT:    v_bfe_u32 v7, v0, 16, 117408; GFX908-NEXT:    v_bfe_u32 v9, v5, 16, 117409; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v017410; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v517411; GFX908-NEXT:    v_add3_u32 v7, v7, v0, s817412; GFX908-NEXT:    v_add3_u32 v9, v9, v5, s817413; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v517414; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v0, v017415; GFX908-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[4:5]17416; GFX908-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc17417; GFX908-NEXT:    v_perm_b32 v5, v5, v0, s917418; GFX908-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc17419; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17420; GFX908-NEXT:    buffer_wbinvl117421; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v617422; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17423; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]17424; GFX908-NEXT:    s_cbranch_execnz .LBB56_117425; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end17426; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]17427; GFX908-NEXT:    s_setpc_b64 s[30:31]17428;17429; GFX8-LABEL: flat_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:17430; GFX8:       ; %bb.0:17431; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17432; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0xfffff800, v017433; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, -1, v1, vcc17434; GFX8-NEXT:    flat_load_dword v0, v[3:4]17435; GFX8-NEXT:    s_mov_b64 s[6:7], 017436; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 16, v217437; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v217438; GFX8-NEXT:  .LBB56_1: ; %atomicrmw.start17439; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=117440; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17441; GFX8-NEXT:    v_mov_b32_e32 v6, v017442; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 16, v617443; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v617444; GFX8-NEXT:    v_max_f32_e32 v0, v0, v117445; GFX8-NEXT:    v_max_f32_e32 v5, v5, v217446; GFX8-NEXT:    v_bfe_u32 v7, v0, 16, 117447; GFX8-NEXT:    v_bfe_u32 v9, v5, 16, 117448; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v017449; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v517450; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v717451; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v917452; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v517453; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v517454; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v017455; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v0, v017456; GFX8-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc17457; GFX8-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[4:5]17458; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v517459; GFX8-NEXT:    v_alignbit_b32 v5, v5, v0, 1617460; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc17461; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17462; GFX8-NEXT:    buffer_wbinvl117463; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v617464; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17465; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]17466; GFX8-NEXT:    s_cbranch_execnz .LBB56_117467; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end17468; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]17469; GFX8-NEXT:    s_setpc_b64 s[30:31]17470;17471; GFX7-LABEL: flat_agent_atomic_fmax_ret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:17472; GFX7:       ; %bb.0:17473; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17474; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0xfffff800, v017475; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, -1, v1, vcc17476; GFX7-NEXT:    flat_load_dword v0, v[4:5]17477; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v317478; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v217479; GFX7-NEXT:    s_mov_b64 s[4:5], 017480; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v117481; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v317482; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17483; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v017484; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v017485; GFX7-NEXT:  .LBB56_1: ; %atomicrmw.start17486; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=117487; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v117488; GFX7-NEXT:    v_mul_f32_e32 v0, 1.0, v017489; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v117490; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v017491; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v117492; GFX7-NEXT:    v_max_f32_e32 v6, v6, v217493; GFX7-NEXT:    v_max_f32_e32 v7, v7, v317494; GFX7-NEXT:    v_alignbit_b32 v1, v1, v0, 1617495; GFX7-NEXT:    v_lshrrev_b32_e32 v0, 16, v617496; GFX7-NEXT:    v_alignbit_b32 v0, v0, v7, 1617497; GFX7-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc17498; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17499; GFX7-NEXT:    buffer_wbinvl117500; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v117501; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v017502; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]17503; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v017504; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]17505; GFX7-NEXT:    s_cbranch_execnz .LBB56_117506; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end17507; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]17508; GFX7-NEXT:    s_setpc_b64 s[30:31]17509  %gep = getelementptr inbounds <2 x bfloat>, ptr %ptr, i64 -51217510  %result = atomicrmw fmax ptr %gep, <2 x bfloat> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !017511  ret <2 x bfloat> %result17512}17513 17514define void @flat_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory(ptr %ptr, <2 x bfloat> %val) #0 {17515; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory:17516; GFX12-TRUE16:       ; %bb.0:17517; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x017518; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x017519; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x017520; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x017521; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x017522; GFX12-TRUE16-NEXT:    flat_load_b32 v3, v[0:1]17523; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v217524; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v217525; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 017526; GFX12-TRUE16-NEXT:  .LBB57_1: ; %atomicrmw.start17527; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=117528; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x017529; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317530; GFX12-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317531; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17532; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v2, v2, v517533; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v6, v6, v417534; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17535; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 117536; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 117537; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217538; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v217539; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617540; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17541; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17542; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)17543; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_3)17544; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo17545; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617546; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)17547; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo17548; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h17549; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x017550; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV17551; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x017552; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV17553; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317554; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v217555; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17556; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s017557; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17558; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s017559; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB57_117560; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end17561; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s017562; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x017563; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]17564;17565; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory:17566; GFX12-FAKE16:       ; %bb.0:17567; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x017568; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x017569; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x017570; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x017571; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x017572; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]17573; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v217574; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217575; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 017576; GFX12-FAKE16-NEXT:  .LBB57_1: ; %atomicrmw.start17577; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=117578; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x017579; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317580; GFX12-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317581; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17582; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v2, v2, v417583; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v6, v6, v517584; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17585; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 117586; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 117587; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217588; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617589; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617590; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17591; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17592; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v217593; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)17594; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)17595; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo17596; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)17597; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s017598; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)17599; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030217600; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x017601; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] th:TH_ATOMIC_RETURN scope:SCOPE_DEV17602; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x017603; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV17604; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317605; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v217606; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17607; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s117608; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17609; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s117610; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB57_117611; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end17612; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s117613; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x017614; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]17615;17616; GFX942-LABEL: flat_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory:17617; GFX942:       ; %bb.0:17618; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17619; GFX942-NEXT:    flat_load_dword v3, v[0:1]17620; GFX942-NEXT:    s_mov_b64 s[2:3], 017621; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v217622; GFX942-NEXT:    s_movk_i32 s4, 0x7fff17623; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217624; GFX942-NEXT:    s_mov_b32 s5, 0x706030217625; GFX942-NEXT:  .LBB57_1: ; %atomicrmw.start17626; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=117627; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17628; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v317629; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317630; GFX942-NEXT:    v_max_f32_e32 v2, v2, v417631; GFX942-NEXT:    v_max_f32_e32 v6, v6, v517632; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 117633; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 117634; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v217635; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v617636; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s417637; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s417638; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617639; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v217640; GFX942-NEXT:    s_nop 017641; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17642; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]17643; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s517644; GFX942-NEXT:    buffer_wbl2 sc117645; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc017646; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17647; GFX942-NEXT:    buffer_inv sc117648; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317649; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]17650; GFX942-NEXT:    v_mov_b32_e32 v3, v217651; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]17652; GFX942-NEXT:    s_cbranch_execnz .LBB57_117653; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end17654; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]17655; GFX942-NEXT:    s_setpc_b64 s[30:31]17656;17657; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory:17658; GFX11-TRUE16:       ; %bb.0:17659; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17660; GFX11-TRUE16-NEXT:    flat_load_b32 v3, v[0:1]17661; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v217662; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v217663; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 017664; GFX11-TRUE16-NEXT:    .p2align 617665; GFX11-TRUE16-NEXT:  .LBB57_1: ; %atomicrmw.start17666; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=117667; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17668; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317669; GFX11-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317670; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17671; GFX11-TRUE16-NEXT:    v_max_f32_e32 v2, v2, v517672; GFX11-TRUE16-NEXT:    v_max_f32_e32 v6, v6, v417673; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17674; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 117675; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 117676; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217677; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v217678; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617679; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17680; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17681; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)17682; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo17683; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617684; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo17685; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)17686; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h17687; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x017688; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] glc17689; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17690; GFX11-TRUE16-NEXT:    buffer_gl1_inv17691; GFX11-TRUE16-NEXT:    buffer_gl0_inv17692; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317693; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v217694; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s017695; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17696; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s017697; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB57_117698; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end17699; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s017700; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]17701;17702; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory:17703; GFX11-FAKE16:       ; %bb.0:17704; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17705; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]17706; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v217707; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217708; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 017709; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x117710; GFX11-FAKE16-NEXT:    .p2align 617711; GFX11-FAKE16-NEXT:  .LBB57_1: ; %atomicrmw.start17712; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=117713; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17714; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317715; GFX11-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317716; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17717; GFX11-FAKE16-NEXT:    v_max_f32_e32 v2, v2, v417718; GFX11-FAKE16-NEXT:    v_max_f32_e32 v6, v6, v517719; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17720; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 117721; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 117722; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217723; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617724; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617725; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17726; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17727; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v217728; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17729; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo17730; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s017731; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)17732; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030217733; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x017734; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] glc17735; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17736; GFX11-FAKE16-NEXT:    buffer_gl1_inv17737; GFX11-FAKE16-NEXT:    buffer_gl0_inv17738; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317739; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v217740; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s117741; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17742; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s117743; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB57_117744; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end17745; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x217746; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s117747; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]17748;17749; GFX10-LABEL: flat_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory:17750; GFX10:       ; %bb.0:17751; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17752; GFX10-NEXT:    flat_load_dword v3, v[0:1]17753; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v217754; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217755; GFX10-NEXT:    s_mov_b32 s5, 017756; GFX10-NEXT:  .LBB57_1: ; %atomicrmw.start17757; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=117758; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17759; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v317760; GFX10-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317761; GFX10-NEXT:    v_max_f32_e32 v2, v2, v417762; GFX10-NEXT:    v_max_f32_e32 v6, v6, v517763; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 117764; GFX10-NEXT:    v_bfe_u32 v8, v6, 16, 117765; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v217766; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v617767; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617768; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17769; GFX10-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17770; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v2, v217771; GFX10-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo17772; GFX10-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s417773; GFX10-NEXT:    v_perm_b32 v2, v6, v2, 0x706030217774; GFX10-NEXT:    s_waitcnt_vscnt null, 0x017775; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc17776; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17777; GFX10-NEXT:    buffer_gl1_inv17778; GFX10-NEXT:    buffer_gl0_inv17779; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317780; GFX10-NEXT:    v_mov_b32_e32 v3, v217781; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s517782; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s517783; GFX10-NEXT:    s_cbranch_execnz .LBB57_117784; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end17785; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s517786; GFX10-NEXT:    s_setpc_b64 s[30:31]17787;17788; GFX90A-LABEL: flat_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory:17789; GFX90A:       ; %bb.0:17790; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17791; GFX90A-NEXT:    flat_load_dword v3, v[0:1]17792; GFX90A-NEXT:    s_mov_b64 s[6:7], 017793; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v217794; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff17795; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217796; GFX90A-NEXT:    s_mov_b32 s9, 0x706030217797; GFX90A-NEXT:  .LBB57_1: ; %atomicrmw.start17798; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=117799; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17800; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v317801; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317802; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v417803; GFX90A-NEXT:    v_max_f32_e32 v6, v6, v517804; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 117805; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 117806; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v217807; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v617808; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s817809; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s817810; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617811; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v217812; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]17813; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17814; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s917815; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc17816; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17817; GFX90A-NEXT:    buffer_wbinvl117818; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317819; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17820; GFX90A-NEXT:    v_mov_b32_e32 v3, v217821; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]17822; GFX90A-NEXT:    s_cbranch_execnz .LBB57_117823; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end17824; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]17825; GFX90A-NEXT:    s_setpc_b64 s[30:31]17826;17827; GFX908-LABEL: flat_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory:17828; GFX908:       ; %bb.0:17829; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17830; GFX908-NEXT:    flat_load_dword v3, v[0:1]17831; GFX908-NEXT:    s_mov_b64 s[6:7], 017832; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v217833; GFX908-NEXT:    s_movk_i32 s8, 0x7fff17834; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217835; GFX908-NEXT:    s_mov_b32 s9, 0x706030217836; GFX908-NEXT:  .LBB57_1: ; %atomicrmw.start17837; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=117838; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17839; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v317840; GFX908-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317841; GFX908-NEXT:    v_max_f32_e32 v2, v2, v417842; GFX908-NEXT:    v_max_f32_e32 v6, v6, v517843; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 117844; GFX908-NEXT:    v_bfe_u32 v9, v6, 16, 117845; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v217846; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v617847; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s817848; GFX908-NEXT:    v_add3_u32 v9, v9, v6, s817849; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617850; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v217851; GFX908-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]17852; GFX908-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17853; GFX908-NEXT:    v_perm_b32 v2, v6, v2, s917854; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc17855; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17856; GFX908-NEXT:    buffer_wbinvl117857; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317858; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17859; GFX908-NEXT:    v_mov_b32_e32 v3, v217860; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]17861; GFX908-NEXT:    s_cbranch_execnz .LBB57_117862; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end17863; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]17864; GFX908-NEXT:    s_setpc_b64 s[30:31]17865;17866; GFX8-LABEL: flat_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory:17867; GFX8:       ; %bb.0:17868; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17869; GFX8-NEXT:    flat_load_dword v3, v[0:1]17870; GFX8-NEXT:    s_mov_b64 s[6:7], 017871; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v217872; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v217873; GFX8-NEXT:  .LBB57_1: ; %atomicrmw.start17874; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=117875; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17876; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v317877; GFX8-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317878; GFX8-NEXT:    v_max_f32_e32 v2, v2, v417879; GFX8-NEXT:    v_max_f32_e32 v6, v6, v517880; GFX8-NEXT:    v_bfe_u32 v7, v2, 16, 117881; GFX8-NEXT:    v_bfe_u32 v9, v6, 16, 117882; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v217883; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v617884; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v717885; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v917886; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v617887; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v6, v617888; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v217889; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v217890; GFX8-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc17891; GFX8-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]17892; GFX8-NEXT:    v_lshrrev_b32_e32 v6, 16, v617893; GFX8-NEXT:    v_alignbit_b32 v2, v6, v2, 1617894; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc17895; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17896; GFX8-NEXT:    buffer_wbinvl117897; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v317898; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]17899; GFX8-NEXT:    v_mov_b32_e32 v3, v217900; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]17901; GFX8-NEXT:    s_cbranch_execnz .LBB57_117902; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end17903; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]17904; GFX8-NEXT:    s_setpc_b64 s[30:31]17905;17906; GFX7-LABEL: flat_agent_atomic_fmax_noret_v2bf16__amdgpu_no_fine_grained_memory:17907; GFX7:       ; %bb.0:17908; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17909; GFX7-NEXT:    flat_load_dword v4, v[0:1]17910; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v317911; GFX7-NEXT:    v_mul_f32_e32 v6, 1.0, v217912; GFX7-NEXT:    s_mov_b64 s[4:5], 017913; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v317914; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v617915; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17916; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v417917; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v417918; GFX7-NEXT:  .LBB57_1: ; %atomicrmw.start17919; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=117920; GFX7-NEXT:    v_mul_f32_e32 v5, 1.0, v517921; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v417922; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v517923; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v417924; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v517925; GFX7-NEXT:    v_max_f32_e32 v6, v6, v217926; GFX7-NEXT:    v_max_f32_e32 v7, v7, v317927; GFX7-NEXT:    v_alignbit_b32 v5, v5, v4, 1617928; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v617929; GFX7-NEXT:    v_alignbit_b32 v4, v4, v7, 1617930; GFX7-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] glc17931; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)17932; GFX7-NEXT:    buffer_wbinvl117933; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v517934; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v417935; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]17936; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v417937; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]17938; GFX7-NEXT:    s_cbranch_execnz .LBB57_117939; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end17940; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]17941; GFX7-NEXT:    s_setpc_b64 s[30:31]17942  %unused = atomicrmw fmax ptr %ptr, <2 x bfloat> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !017943  ret void17944}17945 17946define void @flat_agent_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, <2 x bfloat> %val) #0 {17947; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:17948; GFX12-TRUE16:       ; %bb.0:17949; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x017950; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x017951; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x017952; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x017953; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x017954; GFX12-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204417955; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v217956; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v217957; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 017958; GFX12-TRUE16-NEXT:  .LBB58_1: ; %atomicrmw.start17959; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=117960; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x017961; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v317962; GFX12-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v317963; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17964; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v2, v2, v517965; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v6, v6, v417966; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17967; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 117968; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 117969; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v217970; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v217971; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v617972; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff17973; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff17974; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)17975; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_3)17976; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo17977; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v617978; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)17979; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo17980; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h17981; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x017982; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV17983; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x017984; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV17985; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v317986; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v217987; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17988; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s017989; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)17990; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s017991; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB58_117992; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end17993; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s017994; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x017995; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]17996;17997; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:17998; GFX12-FAKE16:       ; %bb.0:17999; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x018000; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x018001; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x018002; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x018003; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x018004; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204418005; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v218006; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218007; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 018008; GFX12-FAKE16-NEXT:  .LBB58_1: ; %atomicrmw.start18009; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=118010; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x018011; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318012; GFX12-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318013; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18014; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v2, v2, v418015; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v6, v6, v518016; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18017; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 118018; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 118019; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218020; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618021; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618022; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18023; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18024; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v218025; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)18026; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)18027; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18028; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)18029; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s018030; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)18031; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218032; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x018033; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_DEV18034; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x018035; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV18036; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318037; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v218038; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18039; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s118040; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18041; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s118042; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB58_118043; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end18044; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s118045; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x018046; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]18047;18048; GFX942-LABEL: flat_agent_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:18049; GFX942:       ; %bb.0:18050; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18051; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:204418052; GFX942-NEXT:    s_mov_b64 s[2:3], 018053; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v218054; GFX942-NEXT:    s_movk_i32 s4, 0x7fff18055; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218056; GFX942-NEXT:    s_mov_b32 s5, 0x706030218057; GFX942-NEXT:  .LBB58_1: ; %atomicrmw.start18058; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=118059; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18060; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v318061; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318062; GFX942-NEXT:    v_max_f32_e32 v2, v2, v418063; GFX942-NEXT:    v_max_f32_e32 v6, v6, v518064; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 118065; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 118066; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v218067; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v618068; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s418069; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s418070; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618071; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v218072; GFX942-NEXT:    s_nop 018073; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18074; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]18075; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s518076; GFX942-NEXT:    buffer_wbl2 sc118077; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 sc018078; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18079; GFX942-NEXT:    buffer_inv sc118080; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318081; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]18082; GFX942-NEXT:    v_mov_b32_e32 v3, v218083; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]18084; GFX942-NEXT:    s_cbranch_execnz .LBB58_118085; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end18086; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]18087; GFX942-NEXT:    s_setpc_b64 s[30:31]18088;18089; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:18090; GFX11-TRUE16:       ; %bb.0:18091; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18092; GFX11-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204418093; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v218094; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v218095; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 018096; GFX11-TRUE16-NEXT:    .p2align 618097; GFX11-TRUE16-NEXT:  .LBB58_1: ; %atomicrmw.start18098; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=118099; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18100; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318101; GFX11-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318102; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18103; GFX11-TRUE16-NEXT:    v_max_f32_e32 v2, v2, v518104; GFX11-TRUE16-NEXT:    v_max_f32_e32 v6, v6, v418105; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18106; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 118107; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 118108; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218109; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v218110; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618111; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18112; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18113; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)18114; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo18115; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618116; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo18117; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)18118; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h18119; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x018120; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2044 glc18121; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18122; GFX11-TRUE16-NEXT:    buffer_gl1_inv18123; GFX11-TRUE16-NEXT:    buffer_gl0_inv18124; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318125; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v218126; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s018127; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)18128; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s018129; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB58_118130; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end18131; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s018132; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]18133;18134; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:18135; GFX11-FAKE16:       ; %bb.0:18136; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18137; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204418138; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v218139; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218140; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 018141; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x118142; GFX11-FAKE16-NEXT:    .p2align 618143; GFX11-FAKE16-NEXT:  .LBB58_1: ; %atomicrmw.start18144; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=118145; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18146; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318147; GFX11-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318148; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18149; GFX11-FAKE16-NEXT:    v_max_f32_e32 v2, v2, v418150; GFX11-FAKE16-NEXT:    v_max_f32_e32 v6, v6, v518151; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18152; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 118153; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 118154; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218155; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618156; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618157; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18158; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18159; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v218160; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18161; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18162; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s018163; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)18164; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218165; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x018166; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2044 glc18167; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18168; GFX11-FAKE16-NEXT:    buffer_gl1_inv18169; GFX11-FAKE16-NEXT:    buffer_gl0_inv18170; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318171; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v218172; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s118173; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)18174; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s118175; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB58_118176; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end18177; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x218178; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s118179; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]18180;18181; GFX10-LABEL: flat_agent_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:18182; GFX10:       ; %bb.0:18183; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18184; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fc, v018185; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo18186; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v218187; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218188; GFX10-NEXT:    s_mov_b32 s5, 018189; GFX10-NEXT:    flat_load_dword v3, v[0:1]18190; GFX10-NEXT:  .LBB58_1: ; %atomicrmw.start18191; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=118192; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(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:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc18210; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(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: flat_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:    flat_load_dword v3, v[0:1] 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) lgkmcnt(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:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc18250; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(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: flat_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:    flat_load_dword v3, v[0:1] 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) lgkmcnt(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:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc18289; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(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: flat_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) lgkmcnt(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) lgkmcnt(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: flat_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:    v_add_i32_e32 v0, vcc, 0x7fc, v018346; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc18347; GFX7-NEXT:    flat_load_dword v4, v[0:1]18348; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v318349; GFX7-NEXT:    v_mul_f32_e32 v6, 1.0, v218350; GFX7-NEXT:    s_mov_b64 s[4:5], 018351; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v318352; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v618353; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18354; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v418355; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v418356; GFX7-NEXT:  .LBB58_1: ; %atomicrmw.start18357; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=118358; GFX7-NEXT:    v_mul_f32_e32 v5, 1.0, v518359; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v418360; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v518361; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v418362; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v518363; GFX7-NEXT:    v_max_f32_e32 v6, v6, v218364; GFX7-NEXT:    v_max_f32_e32 v7, v7, v318365; GFX7-NEXT:    v_alignbit_b32 v5, v5, v4, 1618366; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v618367; GFX7-NEXT:    v_alignbit_b32 v4, v4, v7, 1618368; GFX7-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] glc18369; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18370; GFX7-NEXT:    buffer_wbinvl118371; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v518372; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v418373; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]18374; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v418375; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]18376; GFX7-NEXT:    s_cbranch_execnz .LBB58_118377; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end18378; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]18379; GFX7-NEXT:    s_setpc_b64 s[30:31]18380  %gep = getelementptr inbounds <2 x bfloat>, ptr %ptr, i64 51118381  %unused = atomicrmw fmax ptr %gep, <2 x bfloat> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !018382  ret void18383}18384 18385define void @flat_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory(ptr %ptr, <2 x bfloat> %val) #0 {18386; GFX12-TRUE16-LABEL: flat_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:18387; GFX12-TRUE16:       ; %bb.0:18388; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x018389; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x018390; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x018391; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x018392; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x018393; GFX12-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:-204818394; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v218395; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v218396; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 018397; GFX12-TRUE16-NEXT:  .LBB59_1: ; %atomicrmw.start18398; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=118399; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x018400; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318401; GFX12-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318402; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18403; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v2, v2, v518404; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v6, v6, v418405; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18406; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 118407; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 118408; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218409; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v218410; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618411; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18412; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18413; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)18414; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_3)18415; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo18416; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618417; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)18418; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo18419; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h18420; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x018421; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV18422; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x018423; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_DEV18424; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318425; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v218426; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18427; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s018428; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18429; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s018430; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB59_118431; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end18432; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s018433; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x018434; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]18435;18436; GFX12-FAKE16-LABEL: flat_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:18437; GFX12-FAKE16:       ; %bb.0:18438; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x018439; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x018440; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x018441; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x018442; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x018443; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:-204818444; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v218445; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218446; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 018447; GFX12-FAKE16-NEXT:  .LBB59_1: ; %atomicrmw.start18448; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=118449; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x018450; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318451; GFX12-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318452; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18453; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v2, v2, v418454; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v6, v6, v518455; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18456; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 118457; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 118458; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218459; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618460; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618461; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18462; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18463; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v218464; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)18465; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)18466; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18467; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)18468; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s018469; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)18470; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218471; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x018472; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:-2048 th:TH_ATOMIC_RETURN scope:SCOPE_DEV18473; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x018474; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_DEV18475; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318476; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v218477; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18478; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s118479; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18480; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s118481; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB59_118482; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end18483; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s118484; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x018485; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]18486;18487; GFX942-LABEL: flat_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:18488; GFX942:       ; %bb.0:18489; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18490; GFX942-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v018491; GFX942-NEXT:    s_movk_i32 s0, 0xf80018492; GFX942-NEXT:    s_nop 018493; GFX942-NEXT:    v_addc_co_u32_e32 v5, vcc, -1, v1, vcc18494; GFX942-NEXT:    flat_load_dword v3, v[4:5]18495; GFX942-NEXT:    s_mov_b32 s1, -118496; GFX942-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, s[0:1]18497; GFX942-NEXT:    s_mov_b64 s[2:3], 018498; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v218499; GFX942-NEXT:    s_movk_i32 s4, 0x7fff18500; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218501; GFX942-NEXT:    s_mov_b32 s5, 0x706030218502; GFX942-NEXT:  .LBB59_1: ; %atomicrmw.start18503; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=118504; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18505; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v318506; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318507; GFX942-NEXT:    v_max_f32_e32 v2, v2, v418508; GFX942-NEXT:    v_max_f32_e32 v6, v6, v518509; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 118510; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 118511; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v218512; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v618513; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s418514; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s418515; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618516; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v218517; GFX942-NEXT:    s_nop 018518; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18519; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]18520; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s518521; GFX942-NEXT:    buffer_wbl2 sc118522; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] sc018523; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18524; GFX942-NEXT:    buffer_inv sc118525; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318526; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]18527; GFX942-NEXT:    v_mov_b32_e32 v3, v218528; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]18529; GFX942-NEXT:    s_cbranch_execnz .LBB59_118530; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end18531; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]18532; GFX942-NEXT:    s_setpc_b64 s[30:31]18533;18534; GFX11-TRUE16-LABEL: flat_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:18535; GFX11-TRUE16:       ; %bb.0:18536; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18537; GFX11-TRUE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v018538; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)18539; GFX11-TRUE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo18540; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v218541; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v218542; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 018543; GFX11-TRUE16-NEXT:    flat_load_b32 v3, v[0:1]18544; GFX11-TRUE16-NEXT:    .p2align 618545; GFX11-TRUE16-NEXT:  .LBB59_1: ; %atomicrmw.start18546; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=118547; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18548; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318549; GFX11-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318550; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18551; GFX11-TRUE16-NEXT:    v_max_f32_e32 v2, v2, v518552; GFX11-TRUE16-NEXT:    v_max_f32_e32 v6, v6, v418553; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18554; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 118555; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 118556; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218557; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v218558; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618559; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18560; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18561; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)18562; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo18563; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618564; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo18565; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)18566; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h18567; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x018568; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] glc18569; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18570; GFX11-TRUE16-NEXT:    buffer_gl1_inv18571; GFX11-TRUE16-NEXT:    buffer_gl0_inv18572; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318573; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v218574; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s018575; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)18576; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s018577; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB59_118578; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end18579; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s018580; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]18581;18582; GFX11-FAKE16-LABEL: flat_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:18583; GFX11-FAKE16:       ; %bb.0:18584; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18585; GFX11-FAKE16-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v018586; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)18587; GFX11-FAKE16-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo18588; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v218589; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218590; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 018591; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1]18592; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x118593; GFX11-FAKE16-NEXT:    .p2align 618594; GFX11-FAKE16-NEXT:  .LBB59_1: ; %atomicrmw.start18595; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=118596; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18597; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v318598; GFX11-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318599; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18600; GFX11-FAKE16-NEXT:    v_max_f32_e32 v2, v2, v418601; GFX11-FAKE16-NEXT:    v_max_f32_e32 v6, v6, v518602; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18603; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 118604; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 118605; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v218606; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v618607; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618608; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18609; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18610; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v218611; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18612; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18613; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s018614; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)18615; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218616; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x018617; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] glc18618; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18619; GFX11-FAKE16-NEXT:    buffer_gl1_inv18620; GFX11-FAKE16-NEXT:    buffer_gl0_inv18621; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318622; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v218623; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s118624; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)18625; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s118626; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB59_118627; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end18628; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x218629; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s118630; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]18631;18632; GFX10-LABEL: flat_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:18633; GFX10:       ; %bb.0:18634; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18635; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v018636; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo18637; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v218638; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218639; GFX10-NEXT:    s_mov_b32 s5, 018640; GFX10-NEXT:    flat_load_dword v3, v[0:1]18641; GFX10-NEXT:  .LBB59_1: ; %atomicrmw.start18642; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=118643; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18644; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v318645; GFX10-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318646; GFX10-NEXT:    v_max_f32_e32 v2, v2, v418647; GFX10-NEXT:    v_max_f32_e32 v6, v6, v518648; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 118649; GFX10-NEXT:    v_bfe_u32 v8, v6, 16, 118650; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v218651; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v618652; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v618653; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff18654; GFX10-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff18655; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v2, v218656; GFX10-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo18657; GFX10-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s418658; GFX10-NEXT:    v_perm_b32 v2, v6, v2, 0x706030218659; GFX10-NEXT:    s_waitcnt_vscnt null, 0x018660; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc18661; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18662; GFX10-NEXT:    buffer_gl1_inv18663; GFX10-NEXT:    buffer_gl0_inv18664; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v318665; GFX10-NEXT:    v_mov_b32_e32 v3, v218666; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s518667; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s518668; GFX10-NEXT:    s_cbranch_execnz .LBB59_118669; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end18670; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s518671; GFX10-NEXT:    s_setpc_b64 s[30:31]18672;18673; GFX90A-LABEL: flat_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:18674; GFX90A:       ; %bb.0:18675; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18676; GFX90A-NEXT:    v_add_co_u32_e32 v4, vcc, 0xfffff800, v018677; GFX90A-NEXT:    s_mov_b64 s[4:5], vcc18678; GFX90A-NEXT:    v_addc_co_u32_e64 v5, s[4:5], -1, v1, s[4:5]18679; GFX90A-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc18680; GFX90A-NEXT:    v_mov_b32_e32 v0, v418681; GFX90A-NEXT:    flat_load_dword v1, v[0:1]18682; GFX90A-NEXT:    s_mov_b64 s[6:7], 018683; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 16, v218684; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff18685; GFX90A-NEXT:    v_and_b32_e32 v2, 0xffff0000, v218686; GFX90A-NEXT:    s_mov_b32 s9, 0x706030218687; GFX90A-NEXT:  .LBB59_1: ; %atomicrmw.start18688; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=118689; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18690; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v118691; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v118692; GFX90A-NEXT:    v_max_f32_e32 v0, v0, v318693; GFX90A-NEXT:    v_max_f32_e32 v6, v6, v218694; GFX90A-NEXT:    v_bfe_u32 v7, v0, 16, 118695; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 118696; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v018697; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v618698; GFX90A-NEXT:    v_add3_u32 v7, v7, v0, s818699; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s818700; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618701; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v0, v018702; GFX90A-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[4:5]18703; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18704; GFX90A-NEXT:    v_perm_b32 v0, v6, v0, s918705; GFX90A-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc18706; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18707; GFX90A-NEXT:    buffer_wbinvl118708; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v118709; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]18710; GFX90A-NEXT:    v_mov_b32_e32 v1, v018711; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]18712; GFX90A-NEXT:    s_cbranch_execnz .LBB59_118713; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end18714; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]18715; GFX90A-NEXT:    s_setpc_b64 s[30:31]18716;18717; GFX908-LABEL: flat_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:18718; GFX908:       ; %bb.0:18719; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18720; GFX908-NEXT:    v_add_co_u32_e32 v3, vcc, 0xfffff800, v018721; GFX908-NEXT:    s_mov_b64 s[4:5], vcc18722; GFX908-NEXT:    v_addc_co_u32_e64 v4, s[4:5], -1, v1, s[4:5]18723; GFX908-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc18724; GFX908-NEXT:    v_mov_b32_e32 v0, v318725; GFX908-NEXT:    flat_load_dword v1, v[0:1]18726; GFX908-NEXT:    s_mov_b64 s[6:7], 018727; GFX908-NEXT:    v_lshlrev_b32_e32 v5, 16, v218728; GFX908-NEXT:    s_movk_i32 s8, 0x7fff18729; GFX908-NEXT:    v_and_b32_e32 v2, 0xffff0000, v218730; GFX908-NEXT:    s_mov_b32 s9, 0x706030218731; GFX908-NEXT:  .LBB59_1: ; %atomicrmw.start18732; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=118733; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18734; GFX908-NEXT:    v_lshlrev_b32_e32 v0, 16, v118735; GFX908-NEXT:    v_and_b32_e32 v6, 0xffff0000, v118736; GFX908-NEXT:    v_max_f32_e32 v0, v0, v518737; GFX908-NEXT:    v_max_f32_e32 v6, v6, v218738; GFX908-NEXT:    v_bfe_u32 v7, v0, 16, 118739; GFX908-NEXT:    v_bfe_u32 v9, v6, 16, 118740; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v018741; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v618742; GFX908-NEXT:    v_add3_u32 v7, v7, v0, s818743; GFX908-NEXT:    v_add3_u32 v9, v9, v6, s818744; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618745; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v0, v018746; GFX908-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[4:5]18747; GFX908-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18748; GFX908-NEXT:    v_perm_b32 v0, v6, v0, s918749; GFX908-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[0:1] glc18750; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18751; GFX908-NEXT:    buffer_wbinvl118752; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v118753; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]18754; GFX908-NEXT:    v_mov_b32_e32 v1, v018755; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]18756; GFX908-NEXT:    s_cbranch_execnz .LBB59_118757; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end18758; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]18759; GFX908-NEXT:    s_setpc_b64 s[30:31]18760;18761; GFX8-LABEL: flat_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:18762; GFX8:       ; %bb.0:18763; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18764; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffff800, v018765; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc18766; GFX8-NEXT:    flat_load_dword v3, v[0:1]18767; GFX8-NEXT:    s_mov_b64 s[6:7], 018768; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v218769; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218770; GFX8-NEXT:  .LBB59_1: ; %atomicrmw.start18771; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=118772; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18773; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v318774; GFX8-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318775; GFX8-NEXT:    v_max_f32_e32 v2, v2, v418776; GFX8-NEXT:    v_max_f32_e32 v6, v6, v518777; GFX8-NEXT:    v_bfe_u32 v7, v2, 16, 118778; GFX8-NEXT:    v_bfe_u32 v9, v6, 16, 118779; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v218780; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v618781; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v718782; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v918783; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v618784; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618785; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v218786; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v218787; GFX8-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18788; GFX8-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]18789; GFX8-NEXT:    v_lshrrev_b32_e32 v6, 16, v618790; GFX8-NEXT:    v_alignbit_b32 v2, v6, v2, 1618791; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc18792; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18793; GFX8-NEXT:    buffer_wbinvl118794; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318795; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]18796; GFX8-NEXT:    v_mov_b32_e32 v3, v218797; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]18798; GFX8-NEXT:    s_cbranch_execnz .LBB59_118799; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end18800; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]18801; GFX8-NEXT:    s_setpc_b64 s[30:31]18802;18803; GFX7-LABEL: flat_agent_atomic_fmax_noret_v2bf16__offset12b_neg__amdgpu_no_fine_grained_memory:18804; GFX7:       ; %bb.0:18805; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18806; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0xfffff800, v018807; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, -1, v1, vcc18808; GFX7-NEXT:    flat_load_dword v4, v[0:1]18809; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v318810; GFX7-NEXT:    v_mul_f32_e32 v6, 1.0, v218811; GFX7-NEXT:    s_mov_b64 s[4:5], 018812; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v318813; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v618814; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18815; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v418816; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v418817; GFX7-NEXT:  .LBB59_1: ; %atomicrmw.start18818; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=118819; GFX7-NEXT:    v_mul_f32_e32 v5, 1.0, v518820; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v418821; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v518822; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v418823; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v518824; GFX7-NEXT:    v_max_f32_e32 v6, v6, v218825; GFX7-NEXT:    v_max_f32_e32 v7, v7, v318826; GFX7-NEXT:    v_alignbit_b32 v5, v5, v4, 1618827; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v618828; GFX7-NEXT:    v_alignbit_b32 v4, v4, v7, 1618829; GFX7-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] glc18830; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18831; GFX7-NEXT:    buffer_wbinvl118832; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v518833; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v418834; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]18835; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v418836; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]18837; GFX7-NEXT:    s_cbranch_execnz .LBB59_118838; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end18839; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]18840; GFX7-NEXT:    s_setpc_b64 s[30:31]18841  %gep = getelementptr inbounds <2 x bfloat>, ptr %ptr, i64 -51218842  %unused = atomicrmw fmax ptr %gep, <2 x bfloat> %val syncscope("agent") seq_cst, !amdgpu.no.fine.grained.memory !018843  ret void18844}18845 18846define <2 x bfloat> @flat_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, <2 x bfloat> %val) #0 {18847; GFX12-TRUE16-LABEL: flat_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:18848; GFX12-TRUE16:       ; %bb.0:18849; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x018850; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x018851; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x018852; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x018853; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x018854; GFX12-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204418855; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v218856; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v218857; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 018858; GFX12-TRUE16-NEXT:  .LBB60_1: ; %atomicrmw.start18859; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=118860; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x018861; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v6, v318862; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18863; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v618864; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v5, v5, v418865; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v618866; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18867; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 118868; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v3, v3, v218869; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v518870; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)18871; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff18872; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 118873; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v318874; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v318875; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)18876; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff18877; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)18878; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo18879; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v518880; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)18881; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo18882; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)18883; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h18884; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS18885; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x018886; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS18887; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x018888; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS18889; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v618890; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18891; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s018892; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18893; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s018894; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB60_118895; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end18896; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s018897; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v318898; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x018899; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]18900;18901; GFX12-FAKE16-LABEL: flat_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:18902; GFX12-FAKE16:       ; %bb.0:18903; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x018904; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x018905; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x018906; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x018907; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x018908; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204418909; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v218910; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v218911; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 018912; GFX12-FAKE16-NEXT:  .LBB60_1: ; %atomicrmw.start18913; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=118914; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x018915; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v6, v318916; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18917; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v618918; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v5, v5, v218919; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v618920; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18921; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 118922; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v3, v3, v418923; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v518924; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v518925; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)18926; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff18927; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 118928; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v318929; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v318930; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)18931; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo18932; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff18933; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)18934; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18935; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s018936; GFX12-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030218937; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS18938; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x018939; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS18940; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x018941; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS18942; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v618943; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18944; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s118945; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)18946; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s118947; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB60_118948; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end18949; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s118950; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v318951; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x018952; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]18953;18954; GFX942-LABEL: flat_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:18955; GFX942:       ; %bb.0:18956; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18957; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:204418958; GFX942-NEXT:    s_mov_b64 s[2:3], 018959; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v218960; GFX942-NEXT:    s_movk_i32 s4, 0x7fff18961; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v218962; GFX942-NEXT:    s_mov_b32 s5, 0x706030218963; GFX942-NEXT:  .LBB60_1: ; %atomicrmw.start18964; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=118965; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18966; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v318967; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v318968; GFX942-NEXT:    v_max_f32_e32 v2, v2, v418969; GFX942-NEXT:    v_max_f32_e32 v6, v6, v518970; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 118971; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 118972; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v218973; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v618974; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s418975; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s418976; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v618977; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v218978; GFX942-NEXT:    s_nop 018979; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc18980; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]18981; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s518982; GFX942-NEXT:    buffer_wbl2 sc0 sc118983; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 sc0 sc118984; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18985; GFX942-NEXT:    buffer_inv sc0 sc118986; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v318987; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]18988; GFX942-NEXT:    v_mov_b32_e32 v3, v218989; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]18990; GFX942-NEXT:    s_cbranch_execnz .LBB60_118991; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end18992; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]18993; GFX942-NEXT:    v_mov_b32_e32 v0, v218994; GFX942-NEXT:    s_setpc_b64 s[30:31]18995;18996; GFX11-TRUE16-LABEL: flat_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:18997; GFX11-TRUE16:       ; %bb.0:18998; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)18999; GFX11-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204419000; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v219001; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v219002; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 019003; GFX11-TRUE16-NEXT:    .p2align 619004; GFX11-TRUE16-NEXT:  .LBB60_1: ; %atomicrmw.start19005; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=119006; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19007; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v319008; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)19009; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619010; GFX11-TRUE16-NEXT:    v_max_f32_e32 v5, v5, v419011; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v619012; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19013; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v5, 16, 119014; GFX11-TRUE16-NEXT:    v_max_f32_e32 v3, v3, v219015; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v519016; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)19017; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff19018; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v3, 16, 119019; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v319020; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v319021; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)19022; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff19023; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v7, v9, vcc_lo19024; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v519025; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo19026; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)19027; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h19028; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x019029; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] offset:2044 glc19030; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19031; GFX11-TRUE16-NEXT:    buffer_gl1_inv19032; GFX11-TRUE16-NEXT:    buffer_gl0_inv19033; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v619034; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s019035; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)19036; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s019037; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB60_119038; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end19039; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s019040; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, v319041; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]19042;19043; GFX11-FAKE16-LABEL: flat_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19044; GFX11-FAKE16:       ; %bb.0:19045; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19046; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204419047; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v219048; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v219049; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 019050; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x119051; GFX11-FAKE16-NEXT:    .p2align 619052; GFX11-FAKE16-NEXT:  .LBB60_1: ; %atomicrmw.start19053; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=119054; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19055; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v319056; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)19057; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619058; GFX11-FAKE16-NEXT:    v_max_f32_e32 v5, v5, v219059; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v619060; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19061; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v5, 16, 119062; GFX11-FAKE16-NEXT:    v_max_f32_e32 v3, v3, v419063; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v519064; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v519065; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)19066; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff19067; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v3, 16, 119068; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v319069; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v3, v319070; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)19071; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo19072; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v3, 0x7fff19073; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)19074; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v3, v7, v9, s019075; GFX11-FAKE16-NEXT:    v_perm_b32 v5, v5, v3, 0x706030219076; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x019077; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v3, v[0:1], v[5:6] offset:2044 glc19078; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19079; GFX11-FAKE16-NEXT:    buffer_gl1_inv19080; GFX11-FAKE16-NEXT:    buffer_gl0_inv19081; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v619082; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s119083; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)19084; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s119085; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB60_119086; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end19087; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x219088; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s119089; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v319090; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]19091;19092; GFX10-LABEL: flat_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19093; GFX10:       ; %bb.0:19094; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19095; GFX10-NEXT:    v_add_co_u32 v3, vcc_lo, 0x7fc, v019096; GFX10-NEXT:    v_add_co_ci_u32_e32 v4, vcc_lo, 0, v1, vcc_lo19097; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 16, v219098; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff0000, v219099; GFX10-NEXT:    s_mov_b32 s5, 019100; GFX10-NEXT:    flat_load_dword v0, v[3:4]19101; GFX10-NEXT:  .LBB60_1: ; %atomicrmw.start19102; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=119103; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19104; GFX10-NEXT:    v_mov_b32_e32 v6, v019105; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 16, v619106; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619107; GFX10-NEXT:    v_max_f32_e32 v0, v0, v119108; GFX10-NEXT:    v_max_f32_e32 v5, v5, v219109; GFX10-NEXT:    v_bfe_u32 v7, v0, 16, 119110; GFX10-NEXT:    v_bfe_u32 v8, v5, 16, 119111; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v019112; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v519113; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v519114; GFX10-NEXT:    v_add3_u32 v7, v7, v0, 0x7fff19115; GFX10-NEXT:    v_add3_u32 v8, v8, v5, 0x7fff19116; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v0, v019117; GFX10-NEXT:    v_cndmask_b32_e32 v5, v8, v10, vcc_lo19118; GFX10-NEXT:    v_cndmask_b32_e64 v0, v7, v9, s419119; GFX10-NEXT:    v_perm_b32 v5, v5, v0, 0x706030219120; GFX10-NEXT:    s_waitcnt_vscnt null, 0x019121; GFX10-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc19122; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19123; GFX10-NEXT:    buffer_gl1_inv19124; GFX10-NEXT:    buffer_gl0_inv19125; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v0, v619126; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s519127; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s519128; GFX10-NEXT:    s_cbranch_execnz .LBB60_119129; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end19130; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s519131; GFX10-NEXT:    s_setpc_b64 s[30:31]19132;19133; GFX90A-LABEL: flat_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19134; GFX90A:       ; %bb.0:19135; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19136; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:204419137; GFX90A-NEXT:    s_mov_b64 s[6:7], 019138; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v219139; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff19140; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219141; GFX90A-NEXT:    s_mov_b32 s9, 0x706030219142; GFX90A-NEXT:  .LBB60_1: ; %atomicrmw.start19143; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=119144; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19145; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v319146; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319147; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v419148; GFX90A-NEXT:    v_max_f32_e32 v6, v6, v519149; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 119150; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 119151; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v219152; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v619153; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s819154; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s819155; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v619156; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v219157; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]19158; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc19159; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s919160; GFX90A-NEXT:    buffer_wbl219161; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc19162; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19163; GFX90A-NEXT:    buffer_invl219164; GFX90A-NEXT:    buffer_wbinvl119165; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v319166; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]19167; GFX90A-NEXT:    v_mov_b32_e32 v3, v219168; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]19169; GFX90A-NEXT:    s_cbranch_execnz .LBB60_119170; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end19171; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]19172; GFX90A-NEXT:    v_mov_b32_e32 v0, v219173; GFX90A-NEXT:    s_setpc_b64 s[30:31]19174;19175; GFX908-LABEL: flat_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19176; GFX908:       ; %bb.0:19177; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19178; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:204419179; GFX908-NEXT:    s_mov_b64 s[6:7], 019180; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v219181; GFX908-NEXT:    s_movk_i32 s8, 0x7fff19182; GFX908-NEXT:    v_and_b32_e32 v2, 0xffff0000, v219183; GFX908-NEXT:    s_mov_b32 s9, 0x706030219184; GFX908-NEXT:  .LBB60_1: ; %atomicrmw.start19185; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=119186; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19187; GFX908-NEXT:    v_mov_b32_e32 v6, v319188; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v619189; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619190; GFX908-NEXT:    v_max_f32_e32 v3, v3, v419191; GFX908-NEXT:    v_max_f32_e32 v5, v5, v219192; GFX908-NEXT:    v_bfe_u32 v7, v3, 16, 119193; GFX908-NEXT:    v_bfe_u32 v9, v5, 16, 119194; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v319195; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v519196; GFX908-NEXT:    v_add3_u32 v7, v7, v3, s819197; GFX908-NEXT:    v_add3_u32 v9, v9, v5, s819198; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v519199; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v3, v319200; GFX908-NEXT:    v_cndmask_b32_e64 v3, v7, v8, s[4:5]19201; GFX908-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc19202; GFX908-NEXT:    v_perm_b32 v5, v5, v3, s919203; GFX908-NEXT:    flat_atomic_cmpswap v3, v[0:1], v[5:6] offset:2044 glc19204; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19205; GFX908-NEXT:    buffer_wbinvl119206; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v619207; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]19208; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]19209; GFX908-NEXT:    s_cbranch_execnz .LBB60_119210; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end19211; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]19212; GFX908-NEXT:    v_mov_b32_e32 v0, v319213; GFX908-NEXT:    s_setpc_b64 s[30:31]19214;19215; GFX8-LABEL: flat_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19216; GFX8:       ; %bb.0:19217; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19218; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 0x7fc, v019219; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v1, vcc19220; GFX8-NEXT:    flat_load_dword v0, v[3:4]19221; GFX8-NEXT:    s_mov_b64 s[6:7], 019222; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 16, v219223; GFX8-NEXT:    v_and_b32_e32 v2, 0xffff0000, v219224; GFX8-NEXT:  .LBB60_1: ; %atomicrmw.start19225; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=119226; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19227; GFX8-NEXT:    v_mov_b32_e32 v6, v019228; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 16, v619229; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v619230; GFX8-NEXT:    v_max_f32_e32 v0, v0, v119231; GFX8-NEXT:    v_max_f32_e32 v5, v5, v219232; GFX8-NEXT:    v_bfe_u32 v7, v0, 16, 119233; GFX8-NEXT:    v_bfe_u32 v9, v5, 16, 119234; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v019235; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v519236; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v719237; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v919238; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v519239; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v519240; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v019241; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v0, v019242; GFX8-NEXT:    v_cndmask_b32_e32 v5, v9, v10, vcc19243; GFX8-NEXT:    v_cndmask_b32_e64 v0, v7, v8, s[4:5]19244; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v519245; GFX8-NEXT:    v_alignbit_b32 v5, v5, v0, 1619246; GFX8-NEXT:    flat_atomic_cmpswap v0, v[3:4], v[5:6] glc19247; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19248; GFX8-NEXT:    buffer_wbinvl119249; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v619250; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]19251; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]19252; GFX8-NEXT:    s_cbranch_execnz .LBB60_119253; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end19254; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]19255; GFX8-NEXT:    s_setpc_b64 s[30:31]19256;19257; GFX7-LABEL: flat_system_atomic_fmax_ret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19258; GFX7:       ; %bb.0:19259; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19260; GFX7-NEXT:    v_add_i32_e32 v4, vcc, 0x7fc, v019261; GFX7-NEXT:    v_addc_u32_e32 v5, vcc, 0, v1, vcc19262; GFX7-NEXT:    flat_load_dword v0, v[4:5]19263; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v319264; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v219265; GFX7-NEXT:    s_mov_b64 s[4:5], 019266; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v119267; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v319268; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19269; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v019270; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v019271; GFX7-NEXT:  .LBB60_1: ; %atomicrmw.start19272; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=119273; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v119274; GFX7-NEXT:    v_mul_f32_e32 v0, 1.0, v019275; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v119276; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v019277; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v119278; GFX7-NEXT:    v_max_f32_e32 v6, v6, v219279; GFX7-NEXT:    v_max_f32_e32 v7, v7, v319280; GFX7-NEXT:    v_alignbit_b32 v1, v1, v0, 1619281; GFX7-NEXT:    v_lshrrev_b32_e32 v0, 16, v619282; GFX7-NEXT:    v_alignbit_b32 v0, v0, v7, 1619283; GFX7-NEXT:    flat_atomic_cmpswap v0, v[4:5], v[0:1] glc19284; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19285; GFX7-NEXT:    buffer_wbinvl119286; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v119287; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v019288; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]19289; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v019290; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]19291; GFX7-NEXT:    s_cbranch_execnz .LBB60_119292; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end19293; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]19294; GFX7-NEXT:    s_setpc_b64 s[30:31]19295  %gep = getelementptr inbounds <2 x bfloat>, ptr %ptr, i64 51119296  %result = atomicrmw fmax ptr %gep, <2 x bfloat> %val seq_cst, !amdgpu.no.fine.grained.memory !019297  ret <2 x bfloat> %result19298}19299 19300define void @flat_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory(ptr %ptr, <2 x bfloat> %val) #0 {19301; GFX12-TRUE16-LABEL: flat_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19302; GFX12-TRUE16:       ; %bb.0:19303; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x019304; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x019305; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x019306; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x019307; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x019308; GFX12-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204419309; GFX12-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v219310; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v219311; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 019312; GFX12-TRUE16-NEXT:  .LBB61_1: ; %atomicrmw.start19313; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=119314; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x019315; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v319316; GFX12-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319317; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19318; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v2, v2, v519319; GFX12-TRUE16-NEXT:    v_max_num_f32_e32 v6, v6, v419320; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19321; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 119322; GFX12-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 119323; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v219324; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v219325; GFX12-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v619326; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff19327; GFX12-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff19328; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)19329; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_3)19330; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo19331; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v619332; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)19333; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo19334; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h19335; GFX12-TRUE16-NEXT:    global_wb scope:SCOPE_SYS19336; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x019337; GFX12-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS19338; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x019339; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SYS19340; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v319341; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v219342; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)19343; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s019344; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)19345; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s019346; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB61_119347; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end19348; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s019349; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x019350; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]19351;19352; GFX12-FAKE16-LABEL: flat_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19353; GFX12-FAKE16:       ; %bb.0:19354; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x019355; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x019356; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x019357; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x019358; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x019359; GFX12-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204419360; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v219361; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219362; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 019363; GFX12-FAKE16-NEXT:  .LBB61_1: ; %atomicrmw.start19364; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=119365; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x019366; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v319367; GFX12-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319368; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19369; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v2, v2, v419370; GFX12-FAKE16-NEXT:    v_max_num_f32_e32 v6, v6, v519371; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19372; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 119373; GFX12-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 119374; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v219375; GFX12-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v619376; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v619377; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff19378; GFX12-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff19379; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v219380; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)19381; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)19382; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo19383; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)19384; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s019385; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)19386; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030219387; GFX12-FAKE16-NEXT:    global_wb scope:SCOPE_SYS19388; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x019389; GFX12-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2044 th:TH_ATOMIC_RETURN scope:SCOPE_SYS19390; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x019391; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SYS19392; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v319393; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v219394; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)19395; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s119396; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)19397; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s119398; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB61_119399; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end19400; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s119401; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x019402; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]19403;19404; GFX942-LABEL: flat_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19405; GFX942:       ; %bb.0:19406; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19407; GFX942-NEXT:    flat_load_dword v3, v[0:1] offset:204419408; GFX942-NEXT:    s_mov_b64 s[2:3], 019409; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v219410; GFX942-NEXT:    s_movk_i32 s4, 0x7fff19411; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219412; GFX942-NEXT:    s_mov_b32 s5, 0x706030219413; GFX942-NEXT:  .LBB61_1: ; %atomicrmw.start19414; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=119415; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19416; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v319417; GFX942-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319418; GFX942-NEXT:    v_max_f32_e32 v2, v2, v419419; GFX942-NEXT:    v_max_f32_e32 v6, v6, v519420; GFX942-NEXT:    v_bfe_u32 v7, v2, 16, 119421; GFX942-NEXT:    v_bfe_u32 v9, v6, 16, 119422; GFX942-NEXT:    v_or_b32_e32 v8, 0x400000, v219423; GFX942-NEXT:    v_or_b32_e32 v10, 0x400000, v619424; GFX942-NEXT:    v_add3_u32 v7, v7, v2, s419425; GFX942-NEXT:    v_add3_u32 v9, v9, v6, s419426; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v6, v619427; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v2, v219428; GFX942-NEXT:    s_nop 019429; GFX942-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc19430; GFX942-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[0:1]19431; GFX942-NEXT:    v_perm_b32 v2, v6, v2, s519432; GFX942-NEXT:    buffer_wbl2 sc0 sc119433; GFX942-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 sc0 sc119434; GFX942-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19435; GFX942-NEXT:    buffer_inv sc0 sc119436; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v319437; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]19438; GFX942-NEXT:    v_mov_b32_e32 v3, v219439; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]19440; GFX942-NEXT:    s_cbranch_execnz .LBB61_119441; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end19442; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]19443; GFX942-NEXT:    s_setpc_b64 s[30:31]19444;19445; GFX11-TRUE16-LABEL: flat_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19446; GFX11-TRUE16:       ; %bb.0:19447; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19448; GFX11-TRUE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204419449; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xffff0000, v219450; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v5, 16, v219451; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 019452; GFX11-TRUE16-NEXT:    .p2align 619453; GFX11-TRUE16-NEXT:  .LBB61_1: ; %atomicrmw.start19454; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=119455; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19456; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v319457; GFX11-TRUE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319458; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19459; GFX11-TRUE16-NEXT:    v_max_f32_e32 v2, v2, v519460; GFX11-TRUE16-NEXT:    v_max_f32_e32 v6, v6, v419461; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19462; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v2, 16, 119463; GFX11-TRUE16-NEXT:    v_bfe_u32 v8, v6, 16, 119464; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v219465; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v219466; GFX11-TRUE16-NEXT:    v_or_b32_e32 v10, 0x400000, v619467; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff19468; GFX11-TRUE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff19469; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)19470; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo19471; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v619472; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v8, v10, vcc_lo19473; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)19474; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v7.h19475; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x019476; GFX11-TRUE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2044 glc19477; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19478; GFX11-TRUE16-NEXT:    buffer_gl1_inv19479; GFX11-TRUE16-NEXT:    buffer_gl0_inv19480; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v319481; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v219482; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s019483; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)19484; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s019485; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB61_119486; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end19487; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s019488; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]19489;19490; GFX11-FAKE16-LABEL: flat_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19491; GFX11-FAKE16:       ; %bb.0:19492; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19493; GFX11-FAKE16-NEXT:    flat_load_b32 v3, v[0:1] offset:204419494; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v219495; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219496; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 019497; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x119498; GFX11-FAKE16-NEXT:    .p2align 619499; GFX11-FAKE16-NEXT:  .LBB61_1: ; %atomicrmw.start19500; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=119501; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19502; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v319503; GFX11-FAKE16-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319504; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19505; GFX11-FAKE16-NEXT:    v_max_f32_e32 v2, v2, v419506; GFX11-FAKE16-NEXT:    v_max_f32_e32 v6, v6, v519507; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19508; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v2, 16, 119509; GFX11-FAKE16-NEXT:    v_bfe_u32 v8, v6, 16, 119510; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v219511; GFX11-FAKE16-NEXT:    v_or_b32_e32 v10, 0x400000, v619512; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v619513; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff19514; GFX11-FAKE16-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff19515; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v219516; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)19517; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo19518; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s019519; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)19520; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v6, v2, 0x706030219521; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x019522; GFX11-FAKE16-NEXT:    flat_atomic_cmpswap_b32 v2, v[0:1], v[2:3] offset:2044 glc19523; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19524; GFX11-FAKE16-NEXT:    buffer_gl1_inv19525; GFX11-FAKE16-NEXT:    buffer_gl0_inv19526; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v319527; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v219528; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s119529; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)19530; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s119531; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB61_119532; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end19533; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x219534; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s119535; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]19536;19537; GFX10-LABEL: flat_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19538; GFX10:       ; %bb.0:19539; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19540; GFX10-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fc, v019541; GFX10-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo19542; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v219543; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219544; GFX10-NEXT:    s_mov_b32 s5, 019545; GFX10-NEXT:    flat_load_dword v3, v[0:1]19546; GFX10-NEXT:  .LBB61_1: ; %atomicrmw.start19547; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=119548; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19549; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v319550; GFX10-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319551; GFX10-NEXT:    v_max_f32_e32 v2, v2, v419552; GFX10-NEXT:    v_max_f32_e32 v6, v6, v519553; GFX10-NEXT:    v_bfe_u32 v7, v2, 16, 119554; GFX10-NEXT:    v_bfe_u32 v8, v6, 16, 119555; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v219556; GFX10-NEXT:    v_or_b32_e32 v10, 0x400000, v619557; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v6, v619558; GFX10-NEXT:    v_add3_u32 v7, v7, v2, 0x7fff19559; GFX10-NEXT:    v_add3_u32 v8, v8, v6, 0x7fff19560; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v2, v219561; GFX10-NEXT:    v_cndmask_b32_e32 v6, v8, v10, vcc_lo19562; GFX10-NEXT:    v_cndmask_b32_e64 v2, v7, v9, s419563; GFX10-NEXT:    v_perm_b32 v2, v6, v2, 0x706030219564; GFX10-NEXT:    s_waitcnt_vscnt null, 0x019565; GFX10-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc19566; GFX10-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19567; GFX10-NEXT:    buffer_gl1_inv19568; GFX10-NEXT:    buffer_gl0_inv19569; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v319570; GFX10-NEXT:    v_mov_b32_e32 v3, v219571; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s519572; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s519573; GFX10-NEXT:    s_cbranch_execnz .LBB61_119574; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end19575; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s519576; GFX10-NEXT:    s_setpc_b64 s[30:31]19577;19578; GFX90A-LABEL: flat_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19579; GFX90A:       ; %bb.0:19580; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19581; GFX90A-NEXT:    flat_load_dword v3, v[0:1] offset:204419582; GFX90A-NEXT:    s_mov_b64 s[6:7], 019583; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v219584; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff19585; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219586; GFX90A-NEXT:    s_mov_b32 s9, 0x706030219587; GFX90A-NEXT:  .LBB61_1: ; %atomicrmw.start19588; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=119589; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19590; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v319591; GFX90A-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319592; GFX90A-NEXT:    v_max_f32_e32 v2, v2, v419593; GFX90A-NEXT:    v_max_f32_e32 v6, v6, v519594; GFX90A-NEXT:    v_bfe_u32 v7, v2, 16, 119595; GFX90A-NEXT:    v_bfe_u32 v9, v6, 16, 119596; GFX90A-NEXT:    v_or_b32_e32 v8, 0x400000, v219597; GFX90A-NEXT:    v_or_b32_e32 v10, 0x400000, v619598; GFX90A-NEXT:    v_add3_u32 v7, v7, v2, s819599; GFX90A-NEXT:    v_add3_u32 v9, v9, v6, s819600; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v6, v619601; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v219602; GFX90A-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]19603; GFX90A-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc19604; GFX90A-NEXT:    v_perm_b32 v2, v6, v2, s919605; GFX90A-NEXT:    buffer_wbl219606; GFX90A-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc19607; GFX90A-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19608; GFX90A-NEXT:    buffer_invl219609; GFX90A-NEXT:    buffer_wbinvl119610; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v319611; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]19612; GFX90A-NEXT:    v_mov_b32_e32 v3, v219613; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]19614; GFX90A-NEXT:    s_cbranch_execnz .LBB61_119615; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end19616; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]19617; GFX90A-NEXT:    s_setpc_b64 s[30:31]19618;19619; GFX908-LABEL: flat_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19620; GFX908:       ; %bb.0:19621; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19622; GFX908-NEXT:    flat_load_dword v3, v[0:1] offset:204419623; GFX908-NEXT:    s_mov_b64 s[6:7], 019624; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v219625; GFX908-NEXT:    s_movk_i32 s8, 0x7fff19626; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219627; GFX908-NEXT:    s_mov_b32 s9, 0x706030219628; GFX908-NEXT:  .LBB61_1: ; %atomicrmw.start19629; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=119630; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19631; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v319632; GFX908-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319633; GFX908-NEXT:    v_max_f32_e32 v2, v2, v419634; GFX908-NEXT:    v_max_f32_e32 v6, v6, v519635; GFX908-NEXT:    v_bfe_u32 v7, v2, 16, 119636; GFX908-NEXT:    v_bfe_u32 v9, v6, 16, 119637; GFX908-NEXT:    v_or_b32_e32 v8, 0x400000, v219638; GFX908-NEXT:    v_or_b32_e32 v10, 0x400000, v619639; GFX908-NEXT:    v_add3_u32 v7, v7, v2, s819640; GFX908-NEXT:    v_add3_u32 v9, v9, v6, s819641; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v6, v619642; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v219643; GFX908-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]19644; GFX908-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc19645; GFX908-NEXT:    v_perm_b32 v2, v6, v2, s919646; GFX908-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] offset:2044 glc19647; GFX908-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19648; GFX908-NEXT:    buffer_wbinvl119649; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v319650; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]19651; GFX908-NEXT:    v_mov_b32_e32 v3, v219652; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]19653; GFX908-NEXT:    s_cbranch_execnz .LBB61_119654; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end19655; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]19656; GFX908-NEXT:    s_setpc_b64 s[30:31]19657;19658; GFX8-LABEL: flat_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19659; GFX8:       ; %bb.0:19660; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19661; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0x7fc, v019662; GFX8-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc19663; GFX8-NEXT:    flat_load_dword v3, v[0:1]19664; GFX8-NEXT:    s_mov_b64 s[6:7], 019665; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v219666; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v219667; GFX8-NEXT:  .LBB61_1: ; %atomicrmw.start19668; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=119669; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19670; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v319671; GFX8-NEXT:    v_and_b32_e32 v6, 0xffff0000, v319672; GFX8-NEXT:    v_max_f32_e32 v2, v2, v419673; GFX8-NEXT:    v_max_f32_e32 v6, v6, v519674; GFX8-NEXT:    v_bfe_u32 v7, v2, 16, 119675; GFX8-NEXT:    v_bfe_u32 v9, v6, 16, 119676; GFX8-NEXT:    v_add_u32_e32 v7, vcc, v7, v219677; GFX8-NEXT:    v_add_u32_e32 v9, vcc, v9, v619678; GFX8-NEXT:    v_add_u32_e32 v7, vcc, 0x7fff, v719679; GFX8-NEXT:    v_add_u32_e32 v9, vcc, 0x7fff, v919680; GFX8-NEXT:    v_or_b32_e32 v10, 0x400000, v619681; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v6, v619682; GFX8-NEXT:    v_or_b32_e32 v8, 0x400000, v219683; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v219684; GFX8-NEXT:    v_cndmask_b32_e32 v6, v9, v10, vcc19685; GFX8-NEXT:    v_cndmask_b32_e64 v2, v7, v8, s[4:5]19686; GFX8-NEXT:    v_lshrrev_b32_e32 v6, 16, v619687; GFX8-NEXT:    v_alignbit_b32 v2, v6, v2, 1619688; GFX8-NEXT:    flat_atomic_cmpswap v2, v[0:1], v[2:3] glc19689; GFX8-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19690; GFX8-NEXT:    buffer_wbinvl119691; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v319692; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]19693; GFX8-NEXT:    v_mov_b32_e32 v3, v219694; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]19695; GFX8-NEXT:    s_cbranch_execnz .LBB61_119696; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end19697; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]19698; GFX8-NEXT:    s_setpc_b64 s[30:31]19699;19700; GFX7-LABEL: flat_system_atomic_fmax_noret_v2bf16__offset12b_pos__amdgpu_no_fine_grained_memory:19701; GFX7:       ; %bb.0:19702; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)19703; GFX7-NEXT:    v_add_i32_e32 v0, vcc, 0x7fc, v019704; GFX7-NEXT:    v_addc_u32_e32 v1, vcc, 0, v1, vcc19705; GFX7-NEXT:    flat_load_dword v4, v[0:1]19706; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v319707; GFX7-NEXT:    v_mul_f32_e32 v6, 1.0, v219708; GFX7-NEXT:    s_mov_b64 s[4:5], 019709; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v319710; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v619711; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19712; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v419713; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v419714; GFX7-NEXT:  .LBB61_1: ; %atomicrmw.start19715; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=119716; GFX7-NEXT:    v_mul_f32_e32 v5, 1.0, v519717; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v419718; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v519719; GFX7-NEXT:    v_and_b32_e32 v7, 0xffff0000, v419720; GFX7-NEXT:    v_lshrrev_b32_e32 v5, 16, v519721; GFX7-NEXT:    v_max_f32_e32 v6, v6, v219722; GFX7-NEXT:    v_max_f32_e32 v7, v7, v319723; GFX7-NEXT:    v_alignbit_b32 v5, v5, v4, 1619724; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v619725; GFX7-NEXT:    v_alignbit_b32 v4, v4, v7, 1619726; GFX7-NEXT:    flat_atomic_cmpswap v4, v[0:1], v[4:5] glc19727; GFX7-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)19728; GFX7-NEXT:    buffer_wbinvl119729; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v519730; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v419731; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]19732; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v419733; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]19734; GFX7-NEXT:    s_cbranch_execnz .LBB61_119735; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end19736; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]19737; GFX7-NEXT:    s_setpc_b64 s[30:31]19738  %gep = getelementptr inbounds <2 x bfloat>, ptr %ptr, i64 51119739  %unused = atomicrmw fmax ptr %gep, <2 x bfloat> %val seq_cst, !amdgpu.no.fine.grained.memory !019740  ret void19741}19742 19743attributes #0 = { nounwind }19744attributes #1 = { nounwind "denormal-fp-math-f32"="preserve-sign,preserve-sign" }19745 19746!0 = !{}19747