brintos

brintos / llvm-project-archived public Read only

0
0
Text · 387.1 KiB · 1144291 Raw
8680 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1200 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-TRUE16 %s3; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1200 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-FAKE16 %s4; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx942 < %s | FileCheck -check-prefix=GFX942 %s5; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-TRUE16 %s6; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1100 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-FAKE16 %s7; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx1010 < %s | FileCheck -check-prefix=GFX10 %s8; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx90a < %s | FileCheck -check-prefix=GFX90A %s9; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx908 < %s | FileCheck -check-prefix=GFX908 %s10; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=tonga < %s | FileCheck -check-prefix=GFX8 %s11; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=hawaii < %s | FileCheck -check-prefix=GFX7 %s12; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=tahiti < %s | FileCheck -check-prefix=GFX6 %s13 14; --------------------------------------------------------------------15; float16; --------------------------------------------------------------------17 18define float @local_atomic_fmin_ret_f32(ptr addrspace(3) %ptr) nounwind {19; GFX12-LABEL: local_atomic_fmin_ret_f32:20; GFX12:       ; %bb.0:21; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x022; GFX12-NEXT:    s_wait_expcnt 0x023; GFX12-NEXT:    s_wait_samplecnt 0x024; GFX12-NEXT:    s_wait_bvhcnt 0x025; GFX12-NEXT:    s_wait_kmcnt 0x026; GFX12-NEXT:    v_mov_b32_e32 v1, 4.027; GFX12-NEXT:    s_wait_storecnt 0x028; GFX12-NEXT:    ds_min_num_rtn_f32 v0, v0, v129; GFX12-NEXT:    s_wait_dscnt 0x030; GFX12-NEXT:    global_inv scope:SCOPE_SE31; GFX12-NEXT:    s_wait_loadcnt 0x032; GFX12-NEXT:    s_setpc_b64 s[30:31]33;34; GFX942-LABEL: local_atomic_fmin_ret_f32:35; GFX942:       ; %bb.0:36; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)37; GFX942-NEXT:    v_mov_b32_e32 v1, 4.038; GFX942-NEXT:    ds_min_rtn_f32 v0, v0, v139; GFX942-NEXT:    s_waitcnt lgkmcnt(0)40; GFX942-NEXT:    s_setpc_b64 s[30:31]41;42; GFX11-LABEL: local_atomic_fmin_ret_f32:43; GFX11:       ; %bb.0:44; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)45; GFX11-NEXT:    v_mov_b32_e32 v1, 4.046; GFX11-NEXT:    s_waitcnt_vscnt null, 0x047; GFX11-NEXT:    ds_min_rtn_f32 v0, v0, v148; GFX11-NEXT:    s_waitcnt lgkmcnt(0)49; GFX11-NEXT:    buffer_gl0_inv50; GFX11-NEXT:    s_setpc_b64 s[30:31]51;52; GFX10-LABEL: local_atomic_fmin_ret_f32:53; GFX10:       ; %bb.0:54; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)55; GFX10-NEXT:    v_mov_b32_e32 v1, 4.056; GFX10-NEXT:    s_waitcnt_vscnt null, 0x057; GFX10-NEXT:    ds_min_rtn_f32 v0, v0, v158; GFX10-NEXT:    s_waitcnt lgkmcnt(0)59; GFX10-NEXT:    buffer_gl0_inv60; GFX10-NEXT:    s_setpc_b64 s[30:31]61;62; GFX90A-LABEL: local_atomic_fmin_ret_f32:63; GFX90A:       ; %bb.0:64; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)65; GFX90A-NEXT:    v_mov_b32_e32 v1, 4.066; GFX90A-NEXT:    ds_min_rtn_f32 v0, v0, v167; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)68; GFX90A-NEXT:    s_setpc_b64 s[30:31]69;70; GFX908-LABEL: local_atomic_fmin_ret_f32:71; GFX908:       ; %bb.0:72; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)73; GFX908-NEXT:    v_mov_b32_e32 v1, 4.074; GFX908-NEXT:    ds_min_rtn_f32 v0, v0, v175; GFX908-NEXT:    s_waitcnt lgkmcnt(0)76; GFX908-NEXT:    s_setpc_b64 s[30:31]77;78; GFX8-LABEL: local_atomic_fmin_ret_f32:79; GFX8:       ; %bb.0:80; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)81; GFX8-NEXT:    v_mov_b32_e32 v1, 4.082; GFX8-NEXT:    s_mov_b32 m0, -183; GFX8-NEXT:    ds_min_rtn_f32 v0, v0, v184; GFX8-NEXT:    s_waitcnt lgkmcnt(0)85; GFX8-NEXT:    s_setpc_b64 s[30:31]86;87; GFX7-LABEL: local_atomic_fmin_ret_f32:88; GFX7:       ; %bb.0:89; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)90; GFX7-NEXT:    v_mov_b32_e32 v1, 4.091; GFX7-NEXT:    s_mov_b32 m0, -192; GFX7-NEXT:    ds_min_rtn_f32 v0, v0, v193; GFX7-NEXT:    s_waitcnt lgkmcnt(0)94; GFX7-NEXT:    s_setpc_b64 s[30:31]95;96; GFX6-LABEL: local_atomic_fmin_ret_f32:97; GFX6:       ; %bb.0:98; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)99; GFX6-NEXT:    v_mov_b32_e32 v1, 4.0100; GFX6-NEXT:    s_mov_b32 m0, -1101; GFX6-NEXT:    ds_min_rtn_f32 v0, v0, v1102; GFX6-NEXT:    s_waitcnt lgkmcnt(0)103; GFX6-NEXT:    s_setpc_b64 s[30:31]104  %result = atomicrmw fmin ptr addrspace(3) %ptr, float 4.0 seq_cst105  ret float %result106}107 108define float @local_atomic_fmin_ret_f32__offset(ptr addrspace(3) %ptr) nounwind {109; GFX12-LABEL: local_atomic_fmin_ret_f32__offset:110; GFX12:       ; %bb.0:111; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0112; GFX12-NEXT:    s_wait_expcnt 0x0113; GFX12-NEXT:    s_wait_samplecnt 0x0114; GFX12-NEXT:    s_wait_bvhcnt 0x0115; GFX12-NEXT:    s_wait_kmcnt 0x0116; GFX12-NEXT:    v_mov_b32_e32 v1, 4.0117; GFX12-NEXT:    s_wait_storecnt 0x0118; GFX12-NEXT:    ds_min_num_rtn_f32 v0, v0, v1 offset:65532119; GFX12-NEXT:    s_wait_dscnt 0x0120; GFX12-NEXT:    global_inv scope:SCOPE_SE121; GFX12-NEXT:    s_wait_loadcnt 0x0122; GFX12-NEXT:    s_setpc_b64 s[30:31]123;124; GFX942-LABEL: local_atomic_fmin_ret_f32__offset:125; GFX942:       ; %bb.0:126; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)127; GFX942-NEXT:    v_mov_b32_e32 v1, 4.0128; GFX942-NEXT:    ds_min_rtn_f32 v0, v0, v1 offset:65532129; GFX942-NEXT:    s_waitcnt lgkmcnt(0)130; GFX942-NEXT:    s_setpc_b64 s[30:31]131;132; GFX11-LABEL: local_atomic_fmin_ret_f32__offset:133; GFX11:       ; %bb.0:134; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)135; GFX11-NEXT:    v_mov_b32_e32 v1, 4.0136; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0137; GFX11-NEXT:    ds_min_rtn_f32 v0, v0, v1 offset:65532138; GFX11-NEXT:    s_waitcnt lgkmcnt(0)139; GFX11-NEXT:    buffer_gl0_inv140; GFX11-NEXT:    s_setpc_b64 s[30:31]141;142; GFX10-LABEL: local_atomic_fmin_ret_f32__offset:143; GFX10:       ; %bb.0:144; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)145; GFX10-NEXT:    v_mov_b32_e32 v1, 4.0146; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0147; GFX10-NEXT:    ds_min_rtn_f32 v0, v0, v1 offset:65532148; GFX10-NEXT:    s_waitcnt lgkmcnt(0)149; GFX10-NEXT:    buffer_gl0_inv150; GFX10-NEXT:    s_setpc_b64 s[30:31]151;152; GFX90A-LABEL: local_atomic_fmin_ret_f32__offset:153; GFX90A:       ; %bb.0:154; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)155; GFX90A-NEXT:    v_mov_b32_e32 v1, 4.0156; GFX90A-NEXT:    ds_min_rtn_f32 v0, v0, v1 offset:65532157; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)158; GFX90A-NEXT:    s_setpc_b64 s[30:31]159;160; GFX908-LABEL: local_atomic_fmin_ret_f32__offset:161; GFX908:       ; %bb.0:162; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)163; GFX908-NEXT:    v_mov_b32_e32 v1, 4.0164; GFX908-NEXT:    ds_min_rtn_f32 v0, v0, v1 offset:65532165; GFX908-NEXT:    s_waitcnt lgkmcnt(0)166; GFX908-NEXT:    s_setpc_b64 s[30:31]167;168; GFX8-LABEL: local_atomic_fmin_ret_f32__offset:169; GFX8:       ; %bb.0:170; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)171; GFX8-NEXT:    v_mov_b32_e32 v1, 4.0172; GFX8-NEXT:    s_mov_b32 m0, -1173; GFX8-NEXT:    ds_min_rtn_f32 v0, v0, v1 offset:65532174; GFX8-NEXT:    s_waitcnt lgkmcnt(0)175; GFX8-NEXT:    s_setpc_b64 s[30:31]176;177; GFX7-LABEL: local_atomic_fmin_ret_f32__offset:178; GFX7:       ; %bb.0:179; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)180; GFX7-NEXT:    v_mov_b32_e32 v1, 4.0181; GFX7-NEXT:    s_mov_b32 m0, -1182; GFX7-NEXT:    ds_min_rtn_f32 v0, v0, v1 offset:65532183; GFX7-NEXT:    s_waitcnt lgkmcnt(0)184; GFX7-NEXT:    s_setpc_b64 s[30:31]185;186; GFX6-LABEL: local_atomic_fmin_ret_f32__offset:187; GFX6:       ; %bb.0:188; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)189; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffc, v0190; GFX6-NEXT:    v_mov_b32_e32 v1, 4.0191; GFX6-NEXT:    s_mov_b32 m0, -1192; GFX6-NEXT:    ds_min_rtn_f32 v0, v0, v1193; GFX6-NEXT:    s_waitcnt lgkmcnt(0)194; GFX6-NEXT:    s_setpc_b64 s[30:31]195  %gep = getelementptr float, ptr addrspace(3) %ptr, i32 16383196  %result = atomicrmw fmin ptr addrspace(3) %gep, float 4.0 seq_cst197  ret float %result198}199 200define void @local_atomic_fmin_noret_f32(ptr addrspace(3) %ptr) nounwind {201; GFX12-LABEL: local_atomic_fmin_noret_f32:202; GFX12:       ; %bb.0:203; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0204; GFX12-NEXT:    s_wait_expcnt 0x0205; GFX12-NEXT:    s_wait_samplecnt 0x0206; GFX12-NEXT:    s_wait_bvhcnt 0x0207; GFX12-NEXT:    s_wait_kmcnt 0x0208; GFX12-NEXT:    v_mov_b32_e32 v1, 4.0209; GFX12-NEXT:    s_wait_storecnt 0x0210; GFX12-NEXT:    ds_min_num_f32 v0, v1211; GFX12-NEXT:    s_wait_dscnt 0x0212; GFX12-NEXT:    global_inv scope:SCOPE_SE213; GFX12-NEXT:    s_wait_loadcnt 0x0214; GFX12-NEXT:    s_setpc_b64 s[30:31]215;216; GFX942-LABEL: local_atomic_fmin_noret_f32:217; GFX942:       ; %bb.0:218; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)219; GFX942-NEXT:    v_mov_b32_e32 v1, 4.0220; GFX942-NEXT:    ds_min_f32 v0, v1221; GFX942-NEXT:    s_waitcnt lgkmcnt(0)222; GFX942-NEXT:    s_setpc_b64 s[30:31]223;224; GFX11-LABEL: local_atomic_fmin_noret_f32:225; GFX11:       ; %bb.0:226; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)227; GFX11-NEXT:    v_mov_b32_e32 v1, 4.0228; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0229; GFX11-NEXT:    ds_min_f32 v0, v1230; GFX11-NEXT:    s_waitcnt lgkmcnt(0)231; GFX11-NEXT:    buffer_gl0_inv232; GFX11-NEXT:    s_setpc_b64 s[30:31]233;234; GFX10-LABEL: local_atomic_fmin_noret_f32:235; GFX10:       ; %bb.0:236; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)237; GFX10-NEXT:    v_mov_b32_e32 v1, 4.0238; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0239; GFX10-NEXT:    ds_min_f32 v0, v1240; GFX10-NEXT:    s_waitcnt lgkmcnt(0)241; GFX10-NEXT:    buffer_gl0_inv242; GFX10-NEXT:    s_setpc_b64 s[30:31]243;244; GFX90A-LABEL: local_atomic_fmin_noret_f32:245; GFX90A:       ; %bb.0:246; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)247; GFX90A-NEXT:    v_mov_b32_e32 v1, 4.0248; GFX90A-NEXT:    ds_min_f32 v0, v1249; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)250; GFX90A-NEXT:    s_setpc_b64 s[30:31]251;252; GFX908-LABEL: local_atomic_fmin_noret_f32:253; GFX908:       ; %bb.0:254; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)255; GFX908-NEXT:    v_mov_b32_e32 v1, 4.0256; GFX908-NEXT:    ds_min_f32 v0, v1257; GFX908-NEXT:    s_waitcnt lgkmcnt(0)258; GFX908-NEXT:    s_setpc_b64 s[30:31]259;260; GFX8-LABEL: local_atomic_fmin_noret_f32:261; GFX8:       ; %bb.0:262; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)263; GFX8-NEXT:    v_mov_b32_e32 v1, 4.0264; GFX8-NEXT:    s_mov_b32 m0, -1265; GFX8-NEXT:    ds_min_f32 v0, v1266; GFX8-NEXT:    s_waitcnt lgkmcnt(0)267; GFX8-NEXT:    s_setpc_b64 s[30:31]268;269; GFX7-LABEL: local_atomic_fmin_noret_f32:270; GFX7:       ; %bb.0:271; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)272; GFX7-NEXT:    v_mov_b32_e32 v1, 4.0273; GFX7-NEXT:    s_mov_b32 m0, -1274; GFX7-NEXT:    ds_min_f32 v0, v1275; GFX7-NEXT:    s_waitcnt lgkmcnt(0)276; GFX7-NEXT:    s_setpc_b64 s[30:31]277;278; GFX6-LABEL: local_atomic_fmin_noret_f32:279; GFX6:       ; %bb.0:280; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)281; GFX6-NEXT:    v_mov_b32_e32 v1, 4.0282; GFX6-NEXT:    s_mov_b32 m0, -1283; GFX6-NEXT:    ds_min_f32 v0, v1284; GFX6-NEXT:    s_waitcnt lgkmcnt(0)285; GFX6-NEXT:    s_setpc_b64 s[30:31]286  %result = atomicrmw fmin ptr addrspace(3) %ptr, float 4.0 seq_cst287  ret void288}289 290define void @local_atomic_fmin_noret_f32__offset(ptr addrspace(3) %ptr) nounwind {291; GFX12-LABEL: local_atomic_fmin_noret_f32__offset:292; GFX12:       ; %bb.0:293; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0294; GFX12-NEXT:    s_wait_expcnt 0x0295; GFX12-NEXT:    s_wait_samplecnt 0x0296; GFX12-NEXT:    s_wait_bvhcnt 0x0297; GFX12-NEXT:    s_wait_kmcnt 0x0298; GFX12-NEXT:    v_mov_b32_e32 v1, 4.0299; GFX12-NEXT:    s_wait_storecnt 0x0300; GFX12-NEXT:    ds_min_num_f32 v0, v1 offset:65532301; GFX12-NEXT:    s_wait_dscnt 0x0302; GFX12-NEXT:    global_inv scope:SCOPE_SE303; GFX12-NEXT:    s_wait_loadcnt 0x0304; GFX12-NEXT:    s_setpc_b64 s[30:31]305;306; GFX942-LABEL: local_atomic_fmin_noret_f32__offset:307; GFX942:       ; %bb.0:308; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)309; GFX942-NEXT:    v_mov_b32_e32 v1, 4.0310; GFX942-NEXT:    ds_min_f32 v0, v1 offset:65532311; GFX942-NEXT:    s_waitcnt lgkmcnt(0)312; GFX942-NEXT:    s_setpc_b64 s[30:31]313;314; GFX11-LABEL: local_atomic_fmin_noret_f32__offset:315; GFX11:       ; %bb.0:316; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)317; GFX11-NEXT:    v_mov_b32_e32 v1, 4.0318; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0319; GFX11-NEXT:    ds_min_f32 v0, v1 offset:65532320; GFX11-NEXT:    s_waitcnt lgkmcnt(0)321; GFX11-NEXT:    buffer_gl0_inv322; GFX11-NEXT:    s_setpc_b64 s[30:31]323;324; GFX10-LABEL: local_atomic_fmin_noret_f32__offset:325; GFX10:       ; %bb.0:326; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)327; GFX10-NEXT:    v_mov_b32_e32 v1, 4.0328; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0329; GFX10-NEXT:    ds_min_f32 v0, v1 offset:65532330; GFX10-NEXT:    s_waitcnt lgkmcnt(0)331; GFX10-NEXT:    buffer_gl0_inv332; GFX10-NEXT:    s_setpc_b64 s[30:31]333;334; GFX90A-LABEL: local_atomic_fmin_noret_f32__offset:335; GFX90A:       ; %bb.0:336; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)337; GFX90A-NEXT:    v_mov_b32_e32 v1, 4.0338; GFX90A-NEXT:    ds_min_f32 v0, v1 offset:65532339; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)340; GFX90A-NEXT:    s_setpc_b64 s[30:31]341;342; GFX908-LABEL: local_atomic_fmin_noret_f32__offset:343; GFX908:       ; %bb.0:344; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)345; GFX908-NEXT:    v_mov_b32_e32 v1, 4.0346; GFX908-NEXT:    ds_min_f32 v0, v1 offset:65532347; GFX908-NEXT:    s_waitcnt lgkmcnt(0)348; GFX908-NEXT:    s_setpc_b64 s[30:31]349;350; GFX8-LABEL: local_atomic_fmin_noret_f32__offset:351; GFX8:       ; %bb.0:352; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)353; GFX8-NEXT:    v_mov_b32_e32 v1, 4.0354; GFX8-NEXT:    s_mov_b32 m0, -1355; GFX8-NEXT:    ds_min_f32 v0, v1 offset:65532356; GFX8-NEXT:    s_waitcnt lgkmcnt(0)357; GFX8-NEXT:    s_setpc_b64 s[30:31]358;359; GFX7-LABEL: local_atomic_fmin_noret_f32__offset:360; GFX7:       ; %bb.0:361; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)362; GFX7-NEXT:    v_mov_b32_e32 v1, 4.0363; GFX7-NEXT:    s_mov_b32 m0, -1364; GFX7-NEXT:    ds_min_f32 v0, v1 offset:65532365; GFX7-NEXT:    s_waitcnt lgkmcnt(0)366; GFX7-NEXT:    s_setpc_b64 s[30:31]367;368; GFX6-LABEL: local_atomic_fmin_noret_f32__offset:369; GFX6:       ; %bb.0:370; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)371; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffc, v0372; GFX6-NEXT:    v_mov_b32_e32 v1, 4.0373; GFX6-NEXT:    s_mov_b32 m0, -1374; GFX6-NEXT:    ds_min_f32 v0, v1375; GFX6-NEXT:    s_waitcnt lgkmcnt(0)376; GFX6-NEXT:    s_setpc_b64 s[30:31]377  %gep = getelementptr float, ptr addrspace(3) %ptr, i32 16383378  %unused = atomicrmw fmin ptr addrspace(3) %gep, float 4.0 seq_cst379  ret void380}381 382; --------------------------------------------------------------------383; double384; --------------------------------------------------------------------385 386define double @local_atomic_fmin_ret_f64(ptr addrspace(3) %ptr) nounwind {387; GFX12-LABEL: local_atomic_fmin_ret_f64:388; GFX12:       ; %bb.0:389; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0390; GFX12-NEXT:    s_wait_expcnt 0x0391; GFX12-NEXT:    s_wait_samplecnt 0x0392; GFX12-NEXT:    s_wait_bvhcnt 0x0393; GFX12-NEXT:    s_wait_kmcnt 0x0394; GFX12-NEXT:    v_mov_b32_e32 v1, 0395; GFX12-NEXT:    v_mov_b32_e32 v2, 0x40100000396; GFX12-NEXT:    s_wait_storecnt 0x0397; GFX12-NEXT:    ds_min_num_rtn_f64 v[0:1], v0, v[1:2]398; GFX12-NEXT:    s_wait_dscnt 0x0399; GFX12-NEXT:    global_inv scope:SCOPE_SE400; GFX12-NEXT:    s_wait_loadcnt 0x0401; GFX12-NEXT:    s_setpc_b64 s[30:31]402;403; GFX942-LABEL: local_atomic_fmin_ret_f64:404; GFX942:       ; %bb.0:405; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)406; GFX942-NEXT:    v_mov_b64_e32 v[2:3], 4.0407; GFX942-NEXT:    ds_min_rtn_f64 v[0:1], v0, v[2:3]408; GFX942-NEXT:    s_waitcnt lgkmcnt(0)409; GFX942-NEXT:    s_setpc_b64 s[30:31]410;411; GFX11-LABEL: local_atomic_fmin_ret_f64:412; GFX11:       ; %bb.0:413; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)414; GFX11-NEXT:    v_mov_b32_e32 v1, 0415; GFX11-NEXT:    v_mov_b32_e32 v2, 0x40100000416; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0417; GFX11-NEXT:    ds_min_rtn_f64 v[0:1], v0, v[1:2]418; GFX11-NEXT:    s_waitcnt lgkmcnt(0)419; GFX11-NEXT:    buffer_gl0_inv420; GFX11-NEXT:    s_setpc_b64 s[30:31]421;422; GFX10-LABEL: local_atomic_fmin_ret_f64:423; GFX10:       ; %bb.0:424; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)425; GFX10-NEXT:    v_mov_b32_e32 v1, 0426; GFX10-NEXT:    v_mov_b32_e32 v2, 0x40100000427; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0428; GFX10-NEXT:    ds_min_rtn_f64 v[0:1], v0, v[1:2]429; GFX10-NEXT:    s_waitcnt lgkmcnt(0)430; GFX10-NEXT:    buffer_gl0_inv431; GFX10-NEXT:    s_setpc_b64 s[30:31]432;433; GFX90A-LABEL: local_atomic_fmin_ret_f64:434; GFX90A:       ; %bb.0:435; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)436; GFX90A-NEXT:    v_mov_b32_e32 v2, 0437; GFX90A-NEXT:    v_mov_b32_e32 v3, 0x40100000438; GFX90A-NEXT:    ds_min_rtn_f64 v[0:1], v0, v[2:3]439; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)440; GFX90A-NEXT:    s_setpc_b64 s[30:31]441;442; GFX908-LABEL: local_atomic_fmin_ret_f64:443; GFX908:       ; %bb.0:444; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)445; GFX908-NEXT:    v_mov_b32_e32 v1, 0446; GFX908-NEXT:    v_mov_b32_e32 v2, 0x40100000447; GFX908-NEXT:    ds_min_rtn_f64 v[0:1], v0, v[1:2]448; GFX908-NEXT:    s_waitcnt lgkmcnt(0)449; GFX908-NEXT:    s_setpc_b64 s[30:31]450;451; GFX8-LABEL: local_atomic_fmin_ret_f64:452; GFX8:       ; %bb.0:453; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)454; GFX8-NEXT:    v_mov_b32_e32 v1, 0455; GFX8-NEXT:    v_mov_b32_e32 v2, 0x40100000456; GFX8-NEXT:    s_mov_b32 m0, -1457; GFX8-NEXT:    ds_min_rtn_f64 v[0:1], v0, v[1:2]458; GFX8-NEXT:    s_waitcnt lgkmcnt(0)459; GFX8-NEXT:    s_setpc_b64 s[30:31]460;461; GFX7-LABEL: local_atomic_fmin_ret_f64:462; GFX7:       ; %bb.0:463; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)464; GFX7-NEXT:    v_mov_b32_e32 v1, 0465; GFX7-NEXT:    v_mov_b32_e32 v2, 0x40100000466; GFX7-NEXT:    s_mov_b32 m0, -1467; GFX7-NEXT:    ds_min_rtn_f64 v[0:1], v0, v[1:2]468; GFX7-NEXT:    s_waitcnt lgkmcnt(0)469; GFX7-NEXT:    s_setpc_b64 s[30:31]470;471; GFX6-LABEL: local_atomic_fmin_ret_f64:472; GFX6:       ; %bb.0:473; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)474; GFX6-NEXT:    v_mov_b32_e32 v1, 0475; GFX6-NEXT:    v_mov_b32_e32 v2, 0x40100000476; GFX6-NEXT:    s_mov_b32 m0, -1477; GFX6-NEXT:    ds_min_rtn_f64 v[0:1], v0, v[1:2]478; GFX6-NEXT:    s_waitcnt lgkmcnt(0)479; GFX6-NEXT:    s_setpc_b64 s[30:31]480  %result = atomicrmw fmin ptr addrspace(3) %ptr, double 4.0 seq_cst481  ret double %result482}483 484define double @local_atomic_fmin_ret_f64__offset(ptr addrspace(3) %ptr) nounwind {485; GFX12-LABEL: local_atomic_fmin_ret_f64__offset:486; GFX12:       ; %bb.0:487; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0488; GFX12-NEXT:    s_wait_expcnt 0x0489; GFX12-NEXT:    s_wait_samplecnt 0x0490; GFX12-NEXT:    s_wait_bvhcnt 0x0491; GFX12-NEXT:    s_wait_kmcnt 0x0492; GFX12-NEXT:    v_mov_b32_e32 v1, 0493; GFX12-NEXT:    v_mov_b32_e32 v2, 0x40100000494; GFX12-NEXT:    s_wait_storecnt 0x0495; GFX12-NEXT:    ds_min_num_rtn_f64 v[0:1], v0, v[1:2] offset:65528496; GFX12-NEXT:    s_wait_dscnt 0x0497; GFX12-NEXT:    global_inv scope:SCOPE_SE498; GFX12-NEXT:    s_wait_loadcnt 0x0499; GFX12-NEXT:    s_setpc_b64 s[30:31]500;501; GFX942-LABEL: local_atomic_fmin_ret_f64__offset:502; GFX942:       ; %bb.0:503; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)504; GFX942-NEXT:    v_mov_b64_e32 v[2:3], 4.0505; GFX942-NEXT:    ds_min_rtn_f64 v[0:1], v0, v[2:3] offset:65528506; GFX942-NEXT:    s_waitcnt lgkmcnt(0)507; GFX942-NEXT:    s_setpc_b64 s[30:31]508;509; GFX11-LABEL: local_atomic_fmin_ret_f64__offset:510; GFX11:       ; %bb.0:511; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)512; GFX11-NEXT:    v_mov_b32_e32 v1, 0513; GFX11-NEXT:    v_mov_b32_e32 v2, 0x40100000514; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0515; GFX11-NEXT:    ds_min_rtn_f64 v[0:1], v0, v[1:2] offset:65528516; GFX11-NEXT:    s_waitcnt lgkmcnt(0)517; GFX11-NEXT:    buffer_gl0_inv518; GFX11-NEXT:    s_setpc_b64 s[30:31]519;520; GFX10-LABEL: local_atomic_fmin_ret_f64__offset:521; GFX10:       ; %bb.0:522; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)523; GFX10-NEXT:    v_mov_b32_e32 v1, 0524; GFX10-NEXT:    v_mov_b32_e32 v2, 0x40100000525; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0526; GFX10-NEXT:    ds_min_rtn_f64 v[0:1], v0, v[1:2] offset:65528527; GFX10-NEXT:    s_waitcnt lgkmcnt(0)528; GFX10-NEXT:    buffer_gl0_inv529; GFX10-NEXT:    s_setpc_b64 s[30:31]530;531; GFX90A-LABEL: local_atomic_fmin_ret_f64__offset:532; GFX90A:       ; %bb.0:533; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)534; GFX90A-NEXT:    v_mov_b32_e32 v2, 0535; GFX90A-NEXT:    v_mov_b32_e32 v3, 0x40100000536; GFX90A-NEXT:    ds_min_rtn_f64 v[0:1], v0, v[2:3] offset:65528537; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)538; GFX90A-NEXT:    s_setpc_b64 s[30:31]539;540; GFX908-LABEL: local_atomic_fmin_ret_f64__offset:541; GFX908:       ; %bb.0:542; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)543; GFX908-NEXT:    v_mov_b32_e32 v1, 0544; GFX908-NEXT:    v_mov_b32_e32 v2, 0x40100000545; GFX908-NEXT:    ds_min_rtn_f64 v[0:1], v0, v[1:2] offset:65528546; GFX908-NEXT:    s_waitcnt lgkmcnt(0)547; GFX908-NEXT:    s_setpc_b64 s[30:31]548;549; GFX8-LABEL: local_atomic_fmin_ret_f64__offset:550; GFX8:       ; %bb.0:551; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)552; GFX8-NEXT:    v_mov_b32_e32 v1, 0553; GFX8-NEXT:    v_mov_b32_e32 v2, 0x40100000554; GFX8-NEXT:    s_mov_b32 m0, -1555; GFX8-NEXT:    ds_min_rtn_f64 v[0:1], v0, v[1:2] offset:65528556; GFX8-NEXT:    s_waitcnt lgkmcnt(0)557; GFX8-NEXT:    s_setpc_b64 s[30:31]558;559; GFX7-LABEL: local_atomic_fmin_ret_f64__offset:560; GFX7:       ; %bb.0:561; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)562; GFX7-NEXT:    v_mov_b32_e32 v1, 0563; GFX7-NEXT:    v_mov_b32_e32 v2, 0x40100000564; GFX7-NEXT:    s_mov_b32 m0, -1565; GFX7-NEXT:    ds_min_rtn_f64 v[0:1], v0, v[1:2] offset:65528566; GFX7-NEXT:    s_waitcnt lgkmcnt(0)567; GFX7-NEXT:    s_setpc_b64 s[30:31]568;569; GFX6-LABEL: local_atomic_fmin_ret_f64__offset:570; GFX6:       ; %bb.0:571; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)572; GFX6-NEXT:    v_add_i32_e32 v2, vcc, 0xfff8, v0573; GFX6-NEXT:    v_mov_b32_e32 v0, 0574; GFX6-NEXT:    v_mov_b32_e32 v1, 0x40100000575; GFX6-NEXT:    s_mov_b32 m0, -1576; GFX6-NEXT:    ds_min_rtn_f64 v[0:1], v2, v[0:1]577; GFX6-NEXT:    s_waitcnt lgkmcnt(0)578; GFX6-NEXT:    s_setpc_b64 s[30:31]579  %gep = getelementptr double, ptr addrspace(3) %ptr, i32 8191580  %result = atomicrmw fmin ptr addrspace(3) %gep, double 4.0 seq_cst581  ret double %result582}583 584define void @local_atomic_fmin_noret_f64(ptr addrspace(3) %ptr) nounwind {585; GFX12-LABEL: local_atomic_fmin_noret_f64:586; GFX12:       ; %bb.0:587; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0588; GFX12-NEXT:    s_wait_expcnt 0x0589; GFX12-NEXT:    s_wait_samplecnt 0x0590; GFX12-NEXT:    s_wait_bvhcnt 0x0591; GFX12-NEXT:    s_wait_kmcnt 0x0592; GFX12-NEXT:    v_mov_b32_e32 v1, 0593; GFX12-NEXT:    v_mov_b32_e32 v2, 0x40100000594; GFX12-NEXT:    s_wait_storecnt 0x0595; GFX12-NEXT:    ds_min_num_f64 v0, v[1:2]596; GFX12-NEXT:    s_wait_dscnt 0x0597; GFX12-NEXT:    global_inv scope:SCOPE_SE598; GFX12-NEXT:    s_wait_loadcnt 0x0599; GFX12-NEXT:    s_setpc_b64 s[30:31]600;601; GFX942-LABEL: local_atomic_fmin_noret_f64:602; GFX942:       ; %bb.0:603; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)604; GFX942-NEXT:    v_mov_b64_e32 v[2:3], 4.0605; GFX942-NEXT:    ds_min_f64 v0, v[2:3]606; GFX942-NEXT:    s_waitcnt lgkmcnt(0)607; GFX942-NEXT:    s_setpc_b64 s[30:31]608;609; GFX11-LABEL: local_atomic_fmin_noret_f64:610; GFX11:       ; %bb.0:611; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)612; GFX11-NEXT:    v_mov_b32_e32 v1, 0613; GFX11-NEXT:    v_mov_b32_e32 v2, 0x40100000614; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0615; GFX11-NEXT:    ds_min_f64 v0, v[1:2]616; GFX11-NEXT:    s_waitcnt lgkmcnt(0)617; GFX11-NEXT:    buffer_gl0_inv618; GFX11-NEXT:    s_setpc_b64 s[30:31]619;620; GFX10-LABEL: local_atomic_fmin_noret_f64:621; GFX10:       ; %bb.0:622; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)623; GFX10-NEXT:    v_mov_b32_e32 v1, 0624; GFX10-NEXT:    v_mov_b32_e32 v2, 0x40100000625; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0626; GFX10-NEXT:    ds_min_f64 v0, v[1:2]627; GFX10-NEXT:    s_waitcnt lgkmcnt(0)628; GFX10-NEXT:    buffer_gl0_inv629; GFX10-NEXT:    s_setpc_b64 s[30:31]630;631; GFX90A-LABEL: local_atomic_fmin_noret_f64:632; GFX90A:       ; %bb.0:633; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)634; GFX90A-NEXT:    v_mov_b32_e32 v2, 0635; GFX90A-NEXT:    v_mov_b32_e32 v3, 0x40100000636; GFX90A-NEXT:    ds_min_f64 v0, v[2:3]637; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)638; GFX90A-NEXT:    s_setpc_b64 s[30:31]639;640; GFX908-LABEL: local_atomic_fmin_noret_f64:641; GFX908:       ; %bb.0:642; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)643; GFX908-NEXT:    v_mov_b32_e32 v1, 0644; GFX908-NEXT:    v_mov_b32_e32 v2, 0x40100000645; GFX908-NEXT:    ds_min_f64 v0, v[1:2]646; GFX908-NEXT:    s_waitcnt lgkmcnt(0)647; GFX908-NEXT:    s_setpc_b64 s[30:31]648;649; GFX8-LABEL: local_atomic_fmin_noret_f64:650; GFX8:       ; %bb.0:651; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)652; GFX8-NEXT:    v_mov_b32_e32 v1, 0653; GFX8-NEXT:    v_mov_b32_e32 v2, 0x40100000654; GFX8-NEXT:    s_mov_b32 m0, -1655; GFX8-NEXT:    ds_min_f64 v0, v[1:2]656; GFX8-NEXT:    s_waitcnt lgkmcnt(0)657; GFX8-NEXT:    s_setpc_b64 s[30:31]658;659; GFX7-LABEL: local_atomic_fmin_noret_f64:660; GFX7:       ; %bb.0:661; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)662; GFX7-NEXT:    v_mov_b32_e32 v1, 0663; GFX7-NEXT:    v_mov_b32_e32 v2, 0x40100000664; GFX7-NEXT:    s_mov_b32 m0, -1665; GFX7-NEXT:    ds_min_f64 v0, v[1:2]666; GFX7-NEXT:    s_waitcnt lgkmcnt(0)667; GFX7-NEXT:    s_setpc_b64 s[30:31]668;669; GFX6-LABEL: local_atomic_fmin_noret_f64:670; GFX6:       ; %bb.0:671; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)672; GFX6-NEXT:    v_mov_b32_e32 v1, 0673; GFX6-NEXT:    v_mov_b32_e32 v2, 0x40100000674; GFX6-NEXT:    s_mov_b32 m0, -1675; GFX6-NEXT:    ds_min_f64 v0, v[1:2]676; GFX6-NEXT:    s_waitcnt lgkmcnt(0)677; GFX6-NEXT:    s_setpc_b64 s[30:31]678  %result = atomicrmw fmin ptr addrspace(3) %ptr, double 4.0 seq_cst679  ret void680}681 682define void @local_atomic_fmin_noret_f64__offset(ptr addrspace(3) %ptr) nounwind {683; GFX12-LABEL: local_atomic_fmin_noret_f64__offset:684; GFX12:       ; %bb.0:685; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0686; GFX12-NEXT:    s_wait_expcnt 0x0687; GFX12-NEXT:    s_wait_samplecnt 0x0688; GFX12-NEXT:    s_wait_bvhcnt 0x0689; GFX12-NEXT:    s_wait_kmcnt 0x0690; GFX12-NEXT:    v_mov_b32_e32 v1, 0691; GFX12-NEXT:    v_mov_b32_e32 v2, 0x40100000692; GFX12-NEXT:    s_wait_storecnt 0x0693; GFX12-NEXT:    ds_min_num_f64 v0, v[1:2] offset:65528694; GFX12-NEXT:    s_wait_dscnt 0x0695; GFX12-NEXT:    global_inv scope:SCOPE_SE696; GFX12-NEXT:    s_wait_loadcnt 0x0697; GFX12-NEXT:    s_setpc_b64 s[30:31]698;699; GFX942-LABEL: local_atomic_fmin_noret_f64__offset:700; GFX942:       ; %bb.0:701; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)702; GFX942-NEXT:    v_mov_b64_e32 v[2:3], 4.0703; GFX942-NEXT:    ds_min_f64 v0, v[2:3] offset:65528704; GFX942-NEXT:    s_waitcnt lgkmcnt(0)705; GFX942-NEXT:    s_setpc_b64 s[30:31]706;707; GFX11-LABEL: local_atomic_fmin_noret_f64__offset:708; GFX11:       ; %bb.0:709; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)710; GFX11-NEXT:    v_mov_b32_e32 v1, 0711; GFX11-NEXT:    v_mov_b32_e32 v2, 0x40100000712; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0713; GFX11-NEXT:    ds_min_f64 v0, v[1:2] offset:65528714; GFX11-NEXT:    s_waitcnt lgkmcnt(0)715; GFX11-NEXT:    buffer_gl0_inv716; GFX11-NEXT:    s_setpc_b64 s[30:31]717;718; GFX10-LABEL: local_atomic_fmin_noret_f64__offset:719; GFX10:       ; %bb.0:720; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)721; GFX10-NEXT:    v_mov_b32_e32 v1, 0722; GFX10-NEXT:    v_mov_b32_e32 v2, 0x40100000723; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0724; GFX10-NEXT:    ds_min_f64 v0, v[1:2] offset:65528725; GFX10-NEXT:    s_waitcnt lgkmcnt(0)726; GFX10-NEXT:    buffer_gl0_inv727; GFX10-NEXT:    s_setpc_b64 s[30:31]728;729; GFX90A-LABEL: local_atomic_fmin_noret_f64__offset:730; GFX90A:       ; %bb.0:731; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)732; GFX90A-NEXT:    v_mov_b32_e32 v2, 0733; GFX90A-NEXT:    v_mov_b32_e32 v3, 0x40100000734; GFX90A-NEXT:    ds_min_f64 v0, v[2:3] offset:65528735; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)736; GFX90A-NEXT:    s_setpc_b64 s[30:31]737;738; GFX908-LABEL: local_atomic_fmin_noret_f64__offset:739; GFX908:       ; %bb.0:740; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)741; GFX908-NEXT:    v_mov_b32_e32 v1, 0742; GFX908-NEXT:    v_mov_b32_e32 v2, 0x40100000743; GFX908-NEXT:    ds_min_f64 v0, v[1:2] offset:65528744; GFX908-NEXT:    s_waitcnt lgkmcnt(0)745; GFX908-NEXT:    s_setpc_b64 s[30:31]746;747; GFX8-LABEL: local_atomic_fmin_noret_f64__offset:748; GFX8:       ; %bb.0:749; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)750; GFX8-NEXT:    v_mov_b32_e32 v1, 0751; GFX8-NEXT:    v_mov_b32_e32 v2, 0x40100000752; GFX8-NEXT:    s_mov_b32 m0, -1753; GFX8-NEXT:    ds_min_f64 v0, v[1:2] offset:65528754; GFX8-NEXT:    s_waitcnt lgkmcnt(0)755; GFX8-NEXT:    s_setpc_b64 s[30:31]756;757; GFX7-LABEL: local_atomic_fmin_noret_f64__offset:758; GFX7:       ; %bb.0:759; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)760; GFX7-NEXT:    v_mov_b32_e32 v1, 0761; GFX7-NEXT:    v_mov_b32_e32 v2, 0x40100000762; GFX7-NEXT:    s_mov_b32 m0, -1763; GFX7-NEXT:    ds_min_f64 v0, v[1:2] offset:65528764; GFX7-NEXT:    s_waitcnt lgkmcnt(0)765; GFX7-NEXT:    s_setpc_b64 s[30:31]766;767; GFX6-LABEL: local_atomic_fmin_noret_f64__offset:768; GFX6:       ; %bb.0:769; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)770; GFX6-NEXT:    v_add_i32_e32 v2, vcc, 0xfff8, v0771; GFX6-NEXT:    v_mov_b32_e32 v0, 0772; GFX6-NEXT:    v_mov_b32_e32 v1, 0x40100000773; GFX6-NEXT:    s_mov_b32 m0, -1774; GFX6-NEXT:    ds_min_f64 v2, v[0:1]775; GFX6-NEXT:    s_waitcnt lgkmcnt(0)776; GFX6-NEXT:    s_setpc_b64 s[30:31]777  %gep = getelementptr double, ptr addrspace(3) %ptr, i32 8191778  %unused = atomicrmw fmin ptr addrspace(3) %gep, double 4.0 seq_cst779  ret void780}781 782; --------------------------------------------------------------------783; half784; --------------------------------------------------------------------785 786define half @local_atomic_fmin_ret_f16(ptr addrspace(3) %ptr) nounwind {787; GFX12-TRUE16-LABEL: local_atomic_fmin_ret_f16:788; GFX12-TRUE16:       ; %bb.0:789; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0790; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x0791; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0792; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x0793; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x0794; GFX12-TRUE16-NEXT:    v_and_b32_e32 v1, -4, v0795; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v0796; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 0797; GFX12-TRUE16-NEXT:    ds_load_b32 v3, v1798; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v0, 0xffff799; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, 24, v0800; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)801; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v2802; GFX12-TRUE16-NEXT:  .LBB8_1: ; %atomicrmw.start803; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1804; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x0805; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v3806; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)807; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v0, v4808; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 0809; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v3.l, v3.l, v3.l810; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)811; GFX12-TRUE16-NEXT:    v_min_num_f16_e32 v3.l, 4.0, v3.l812; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v0, v3813; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)814; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v2, v3815; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x0816; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v3, v1, v3, v4817; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x0818; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE819; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4820; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)821; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s0822; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)823; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0824; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB8_1825; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end826; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s0827; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v0, v3828; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x0829; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]830;831; GFX12-FAKE16-LABEL: local_atomic_fmin_ret_f16:832; GFX12-FAKE16:       ; %bb.0:833; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0834; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x0835; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0836; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x0837; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x0838; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, -4, v0839; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v0840; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 0841; GFX12-FAKE16-NEXT:    ds_load_b32 v3, v1842; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v0, 0xffff843; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, 24, v0844; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)845; GFX12-FAKE16-NEXT:    v_not_b32_e32 v2, v2846; GFX12-FAKE16-NEXT:  .LBB8_1: ; %atomicrmw.start847; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1848; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x0849; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v3850; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)851; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v0, v4852; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v3, v3, v3853; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)854; GFX12-FAKE16-NEXT:    v_min_num_f16_e32 v3, 4.0, v3855; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v3856; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)857; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v0, v3858; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, v4, v2, v3859; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x0860; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v3, v1, v3, v4861; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x0862; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE863; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4864; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)865; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s0866; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)867; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0868; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB8_1869; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end870; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s0871; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v0, v3872; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x0873; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]874;875; GFX942-LABEL: local_atomic_fmin_ret_f16:876; GFX942:       ; %bb.0:877; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)878; GFX942-NEXT:    v_and_b32_e32 v1, -4, v0879; GFX942-NEXT:    ds_read_b32 v3, v1880; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 3, v0881; GFX942-NEXT:    s_mov_b32 s0, 0xffff882; GFX942-NEXT:    v_and_b32_e32 v0, 24, v2883; GFX942-NEXT:    v_lshlrev_b32_e64 v2, v2, s0884; GFX942-NEXT:    v_not_b32_e32 v2, v2885; GFX942-NEXT:    s_mov_b64 s[0:1], 0886; GFX942-NEXT:  .LBB8_1: ; %atomicrmw.start887; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=1888; GFX942-NEXT:    s_waitcnt lgkmcnt(0)889; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v0, v3890; GFX942-NEXT:    v_max_f16_e32 v4, v4, v4891; GFX942-NEXT:    v_min_f16_e32 v4, 4.0, v4892; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v0, v4893; GFX942-NEXT:    v_and_or_b32 v4, v3, v2, v4894; GFX942-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v4895; GFX942-NEXT:    s_waitcnt lgkmcnt(0)896; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v3897; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]898; GFX942-NEXT:    v_mov_b32_e32 v3, v4899; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]900; GFX942-NEXT:    s_cbranch_execnz .LBB8_1901; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end902; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]903; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v0, v4904; GFX942-NEXT:    s_setpc_b64 s[30:31]905;906; GFX11-TRUE16-LABEL: local_atomic_fmin_ret_f16:907; GFX11-TRUE16:       ; %bb.0:908; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)909; GFX11-TRUE16-NEXT:    v_and_b32_e32 v1, -4, v0910; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v0911; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 0912; GFX11-TRUE16-NEXT:    ds_load_b32 v3, v1913; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v0, 0xffff914; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, 24, v0915; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)916; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v2917; GFX11-TRUE16-NEXT:  .LBB8_1: ; %atomicrmw.start918; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1919; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)920; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v3921; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)922; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v0, v4923; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 0924; GFX11-TRUE16-NEXT:    v_max_f16_e32 v3.l, v3.l, v3.l925; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)926; GFX11-TRUE16-NEXT:    v_min_f16_e32 v3.l, 4.0, v3.l927; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v0, v3928; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)929; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v2, v3930; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x0931; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v3, v1, v3, v4932; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)933; GFX11-TRUE16-NEXT:    buffer_gl0_inv934; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4935; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s0936; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)937; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0938; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB8_1939; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end940; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s0941; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v0, v3942; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]943;944; GFX11-FAKE16-LABEL: local_atomic_fmin_ret_f16:945; GFX11-FAKE16:       ; %bb.0:946; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)947; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, -4, v0948; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v0949; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 0950; GFX11-FAKE16-NEXT:    ds_load_b32 v3, v1951; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v0, 0xffff952; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, 24, v0953; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)954; GFX11-FAKE16-NEXT:    v_not_b32_e32 v2, v2955; GFX11-FAKE16-NEXT:  .LBB8_1: ; %atomicrmw.start956; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1957; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)958; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v3959; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)960; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v0, v4961; GFX11-FAKE16-NEXT:    v_max_f16_e32 v3, v3, v3962; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)963; GFX11-FAKE16-NEXT:    v_min_f16_e32 v3, 4.0, v3964; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v3965; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)966; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v0, v3967; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, v4, v2, v3968; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x0969; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v3, v1, v3, v4970; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)971; GFX11-FAKE16-NEXT:    buffer_gl0_inv972; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v4973; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s0974; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)975; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s0976; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB8_1977; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end978; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s0979; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v0, v3980; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]981;982; GFX10-LABEL: local_atomic_fmin_ret_f16:983; GFX10:       ; %bb.0:984; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)985; GFX10-NEXT:    v_and_b32_e32 v1, -4, v0986; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 3, v0987; GFX10-NEXT:    s_mov_b32 s4, 0988; GFX10-NEXT:    ds_read_b32 v2, v1989; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff990; GFX10-NEXT:    v_and_b32_e32 v0, 24, v0991; GFX10-NEXT:    v_not_b32_e32 v3, v3992; GFX10-NEXT:  .LBB8_1: ; %atomicrmw.start993; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1994; GFX10-NEXT:    s_waitcnt lgkmcnt(0)995; GFX10-NEXT:    v_mov_b32_e32 v4, v2996; GFX10-NEXT:    v_lshrrev_b32_e32 v2, v0, v4997; GFX10-NEXT:    v_max_f16_e32 v2, v2, v2998; GFX10-NEXT:    v_min_f16_e32 v2, 4.0, v2999; GFX10-NEXT:    v_lshlrev_b32_sdwa v2, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_01000; GFX10-NEXT:    v_and_or_b32 v2, v4, v3, v21001; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01002; GFX10-NEXT:    ds_cmpst_rtn_b32 v2, v1, v4, v21003; GFX10-NEXT:    s_waitcnt lgkmcnt(0)1004; GFX10-NEXT:    buffer_gl0_inv1005; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v41006; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s41007; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s41008; GFX10-NEXT:    s_cbranch_execnz .LBB8_11009; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end1010; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s41011; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v0, v21012; GFX10-NEXT:    s_setpc_b64 s[30:31]1013;1014; GFX90A-LABEL: local_atomic_fmin_ret_f16:1015; GFX90A:       ; %bb.0:1016; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1017; GFX90A-NEXT:    v_and_b32_e32 v1, -4, v01018; GFX90A-NEXT:    ds_read_b32 v3, v11019; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 3, v01020; GFX90A-NEXT:    s_mov_b32 s4, 0xffff1021; GFX90A-NEXT:    v_and_b32_e32 v0, 24, v21022; GFX90A-NEXT:    v_lshlrev_b32_e64 v2, v2, s41023; GFX90A-NEXT:    v_not_b32_e32 v2, v21024; GFX90A-NEXT:    s_mov_b64 s[4:5], 01025; GFX90A-NEXT:  .LBB8_1: ; %atomicrmw.start1026; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11027; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)1028; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v0, v31029; GFX90A-NEXT:    v_max_f16_e32 v4, v4, v41030; GFX90A-NEXT:    v_min_f16_e32 v4, 4.0, v41031; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v0, v41032; GFX90A-NEXT:    v_and_or_b32 v4, v3, v2, v41033; GFX90A-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v41034; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)1035; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v31036; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1037; GFX90A-NEXT:    v_mov_b32_e32 v3, v41038; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1039; GFX90A-NEXT:    s_cbranch_execnz .LBB8_11040; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1041; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1042; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v0, v41043; GFX90A-NEXT:    s_setpc_b64 s[30:31]1044;1045; GFX908-LABEL: local_atomic_fmin_ret_f16:1046; GFX908:       ; %bb.0:1047; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1048; GFX908-NEXT:    v_and_b32_e32 v1, -4, v01049; GFX908-NEXT:    ds_read_b32 v3, v11050; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 3, v01051; GFX908-NEXT:    s_mov_b32 s4, 0xffff1052; GFX908-NEXT:    v_and_b32_e32 v0, 24, v21053; GFX908-NEXT:    v_lshlrev_b32_e64 v2, v2, s41054; GFX908-NEXT:    v_not_b32_e32 v2, v21055; GFX908-NEXT:    s_mov_b64 s[4:5], 01056; GFX908-NEXT:  .LBB8_1: ; %atomicrmw.start1057; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11058; GFX908-NEXT:    s_waitcnt lgkmcnt(0)1059; GFX908-NEXT:    v_mov_b32_e32 v4, v31060; GFX908-NEXT:    v_lshrrev_b32_e32 v3, v0, v41061; GFX908-NEXT:    v_max_f16_e32 v3, v3, v31062; GFX908-NEXT:    v_min_f16_e32 v3, 4.0, v31063; GFX908-NEXT:    v_lshlrev_b32_e32 v3, v0, v31064; GFX908-NEXT:    v_and_or_b32 v3, v4, v2, v31065; GFX908-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v31066; GFX908-NEXT:    s_waitcnt lgkmcnt(0)1067; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41068; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1069; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1070; GFX908-NEXT:    s_cbranch_execnz .LBB8_11071; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1072; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1073; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v0, v31074; GFX908-NEXT:    s_setpc_b64 s[30:31]1075;1076; GFX8-LABEL: local_atomic_fmin_ret_f16:1077; GFX8:       ; %bb.0:1078; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1079; GFX8-NEXT:    v_and_b32_e32 v1, -4, v01080; GFX8-NEXT:    s_mov_b32 m0, -11081; GFX8-NEXT:    ds_read_b32 v3, v11082; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 3, v01083; GFX8-NEXT:    s_mov_b32 s4, 0xffff1084; GFX8-NEXT:    v_and_b32_e32 v0, 24, v21085; GFX8-NEXT:    v_lshlrev_b32_e64 v2, v2, s41086; GFX8-NEXT:    v_not_b32_e32 v2, v21087; GFX8-NEXT:    s_mov_b64 s[4:5], 01088; GFX8-NEXT:  .LBB8_1: ; %atomicrmw.start1089; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11090; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1091; GFX8-NEXT:    v_mov_b32_e32 v4, v31092; GFX8-NEXT:    v_lshrrev_b32_e32 v3, v0, v41093; GFX8-NEXT:    v_max_f16_e32 v3, v3, v31094; GFX8-NEXT:    v_min_f16_e32 v3, 4.0, v31095; GFX8-NEXT:    v_and_b32_e32 v5, v4, v21096; GFX8-NEXT:    v_lshlrev_b32_e32 v3, v0, v31097; GFX8-NEXT:    v_or_b32_e32 v3, v5, v31098; GFX8-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v31099; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1100; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41101; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1102; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1103; GFX8-NEXT:    s_cbranch_execnz .LBB8_11104; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1105; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1106; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v0, v31107; GFX8-NEXT:    s_setpc_b64 s[30:31]1108;1109; GFX7-LABEL: local_atomic_fmin_ret_f16:1110; GFX7:       ; %bb.0:1111; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1112; GFX7-NEXT:    v_and_b32_e32 v1, -4, v01113; GFX7-NEXT:    s_mov_b32 m0, -11114; GFX7-NEXT:    ds_read_b32 v3, v11115; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 3, v01116; GFX7-NEXT:    v_and_b32_e32 v0, 24, v21117; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v21118; GFX7-NEXT:    v_not_b32_e32 v2, v21119; GFX7-NEXT:    s_mov_b64 s[4:5], 01120; GFX7-NEXT:  .LBB8_1: ; %atomicrmw.start1121; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=11122; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1123; GFX7-NEXT:    v_mov_b32_e32 v4, v31124; GFX7-NEXT:    v_lshrrev_b32_e32 v3, v0, v41125; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v31126; GFX7-NEXT:    v_and_b32_e32 v5, v4, v21127; GFX7-NEXT:    v_min_f32_e32 v3, 4.0, v31128; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v31129; GFX7-NEXT:    v_lshlrev_b32_e32 v3, v0, v31130; GFX7-NEXT:    v_or_b32_e32 v3, v5, v31131; GFX7-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v31132; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1133; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41134; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1135; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]1136; GFX7-NEXT:    s_cbranch_execnz .LBB8_11137; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end1138; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]1139; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v0, v31140; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v01141; GFX7-NEXT:    s_setpc_b64 s[30:31]1142;1143; GFX6-LABEL: local_atomic_fmin_ret_f16:1144; GFX6:       ; %bb.0:1145; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1146; GFX6-NEXT:    v_and_b32_e32 v1, -4, v01147; GFX6-NEXT:    s_mov_b32 m0, -11148; GFX6-NEXT:    ds_read_b32 v3, v11149; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 3, v01150; GFX6-NEXT:    v_and_b32_e32 v0, 24, v21151; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v21152; GFX6-NEXT:    v_not_b32_e32 v2, v21153; GFX6-NEXT:    s_mov_b64 s[4:5], 01154; GFX6-NEXT:  .LBB8_1: ; %atomicrmw.start1155; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=11156; GFX6-NEXT:    s_waitcnt lgkmcnt(0)1157; GFX6-NEXT:    v_mov_b32_e32 v4, v31158; GFX6-NEXT:    v_lshrrev_b32_e32 v3, v0, v41159; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v31160; GFX6-NEXT:    v_and_b32_e32 v5, v4, v21161; GFX6-NEXT:    v_min_f32_e32 v3, 4.0, v31162; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v31163; GFX6-NEXT:    v_lshlrev_b32_e32 v3, v0, v31164; GFX6-NEXT:    v_or_b32_e32 v3, v5, v31165; GFX6-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v31166; GFX6-NEXT:    s_waitcnt lgkmcnt(0)1167; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41168; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1169; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]1170; GFX6-NEXT:    s_cbranch_execnz .LBB8_11171; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end1172; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]1173; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v0, v31174; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v01175; GFX6-NEXT:    s_setpc_b64 s[30:31]1176  %result = atomicrmw fmin ptr addrspace(3) %ptr, half 4.0 seq_cst1177  ret half %result1178}1179 1180define half @local_atomic_fmin_ret_f16__offset(ptr addrspace(3) %ptr) nounwind {1181; GFX12-TRUE16-LABEL: local_atomic_fmin_ret_f16__offset:1182; GFX12-TRUE16:       ; %bb.0:1183; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x01184; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x01185; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x01186; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x01187; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x01188; GFX12-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v01189; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 01190; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)1191; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v11192; GFX12-TRUE16-NEXT:    v_and_b32_e32 v1, 3, v11193; GFX12-TRUE16-NEXT:    ds_load_b32 v3, v01194; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v11195; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff1196; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1197; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v21198; GFX12-TRUE16-NEXT:  .LBB9_1: ; %atomicrmw.start1199; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=11200; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x01201; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v31202; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)1203; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v1, v41204; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 01205; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v3.l, v3.l, v3.l1206; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1207; GFX12-TRUE16-NEXT:    v_min_num_f16_e32 v3.l, 4.0, v3.l1208; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v1, v31209; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1210; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v2, v31211; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x01212; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v41213; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x01214; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE1215; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41216; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)1217; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s01218; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)1219; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01220; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB9_11221; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end1222; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s01223; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v31224; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x01225; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]1226;1227; GFX12-FAKE16-LABEL: local_atomic_fmin_ret_f16__offset:1228; GFX12-FAKE16:       ; %bb.0:1229; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x01230; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x01231; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x01232; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x01233; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x01234; GFX12-FAKE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v01235; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 01236; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)1237; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v11238; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, 3, v11239; GFX12-FAKE16-NEXT:    ds_load_b32 v3, v01240; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v11241; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff1242; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1243; GFX12-FAKE16-NEXT:    v_not_b32_e32 v2, v21244; GFX12-FAKE16-NEXT:  .LBB9_1: ; %atomicrmw.start1245; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=11246; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x01247; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v31248; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1249; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v1, v41250; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v3, v3, v31251; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1252; GFX12-FAKE16-NEXT:    v_min_num_f16_e32 v3, 4.0, v31253; GFX12-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v31254; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1255; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v1, v31256; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, v4, v2, v31257; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x01258; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v41259; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x01260; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE1261; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41262; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)1263; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s01264; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)1265; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01266; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB9_11267; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end1268; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s01269; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v31270; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x01271; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]1272;1273; GFX942-LABEL: local_atomic_fmin_ret_f16__offset:1274; GFX942:       ; %bb.0:1275; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1276; GFX942-NEXT:    v_add_u32_e32 v0, 0xfffe, v01277; GFX942-NEXT:    v_and_b32_e32 v1, -4, v01278; GFX942-NEXT:    ds_read_b32 v3, v11279; GFX942-NEXT:    v_and_b32_e32 v0, 3, v01280; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 3, v01281; GFX942-NEXT:    s_mov_b32 s0, 0xffff1282; GFX942-NEXT:    v_lshlrev_b32_e64 v2, v0, s01283; GFX942-NEXT:    v_not_b32_e32 v2, v21284; GFX942-NEXT:    s_mov_b64 s[0:1], 01285; GFX942-NEXT:  .LBB9_1: ; %atomicrmw.start1286; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11287; GFX942-NEXT:    s_waitcnt lgkmcnt(0)1288; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v0, v31289; GFX942-NEXT:    v_max_f16_e32 v4, v4, v41290; GFX942-NEXT:    v_min_f16_e32 v4, 4.0, v41291; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v0, v41292; GFX942-NEXT:    v_and_or_b32 v4, v3, v2, v41293; GFX942-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v41294; GFX942-NEXT:    s_waitcnt lgkmcnt(0)1295; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v31296; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1297; GFX942-NEXT:    v_mov_b32_e32 v3, v41298; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1299; GFX942-NEXT:    s_cbranch_execnz .LBB9_11300; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1301; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1302; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v0, v41303; GFX942-NEXT:    s_setpc_b64 s[30:31]1304;1305; GFX11-TRUE16-LABEL: local_atomic_fmin_ret_f16__offset:1306; GFX11-TRUE16:       ; %bb.0:1307; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1308; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v01309; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 01310; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)1311; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v11312; GFX11-TRUE16-NEXT:    v_and_b32_e32 v1, 3, v11313; GFX11-TRUE16-NEXT:    ds_load_b32 v3, v01314; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v11315; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff1316; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1317; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v21318; GFX11-TRUE16-NEXT:  .LBB9_1: ; %atomicrmw.start1319; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=11320; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)1321; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v31322; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)1323; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v1, v41324; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 01325; GFX11-TRUE16-NEXT:    v_max_f16_e32 v3.l, v3.l, v3.l1326; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1327; GFX11-TRUE16-NEXT:    v_min_f16_e32 v3.l, 4.0, v3.l1328; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v1, v31329; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1330; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v2, v31331; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x01332; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v41333; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)1334; GFX11-TRUE16-NEXT:    buffer_gl0_inv1335; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41336; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s01337; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1338; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01339; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB9_11340; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end1341; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s01342; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v31343; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]1344;1345; GFX11-FAKE16-LABEL: local_atomic_fmin_ret_f16__offset:1346; GFX11-FAKE16:       ; %bb.0:1347; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1348; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v01349; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 01350; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)1351; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v11352; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 3, v11353; GFX11-FAKE16-NEXT:    ds_load_b32 v3, v01354; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v11355; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff1356; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1357; GFX11-FAKE16-NEXT:    v_not_b32_e32 v2, v21358; GFX11-FAKE16-NEXT:  .LBB9_1: ; %atomicrmw.start1359; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=11360; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)1361; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v31362; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1363; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v1, v41364; GFX11-FAKE16-NEXT:    v_max_f16_e32 v3, v3, v31365; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1366; GFX11-FAKE16-NEXT:    v_min_f16_e32 v3, 4.0, v31367; GFX11-FAKE16-NEXT:    v_and_b32_e32 v3, 0xffff, v31368; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1369; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v1, v31370; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, v4, v2, v31371; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x01372; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v41373; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)1374; GFX11-FAKE16-NEXT:    buffer_gl0_inv1375; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41376; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s01377; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1378; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01379; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB9_11380; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end1381; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s01382; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v31383; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]1384;1385; GFX10-LABEL: local_atomic_fmin_ret_f16__offset:1386; GFX10:       ; %bb.0:1387; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1388; GFX10-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v01389; GFX10-NEXT:    s_mov_b32 s4, 01390; GFX10-NEXT:    v_and_b32_e32 v0, -4, v11391; GFX10-NEXT:    v_and_b32_e32 v1, 3, v11392; GFX10-NEXT:    ds_read_b32 v3, v01393; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 3, v11394; GFX10-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff1395; GFX10-NEXT:    v_not_b32_e32 v2, v21396; GFX10-NEXT:  .LBB9_1: ; %atomicrmw.start1397; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=11398; GFX10-NEXT:    s_waitcnt lgkmcnt(0)1399; GFX10-NEXT:    v_mov_b32_e32 v4, v31400; GFX10-NEXT:    v_lshrrev_b32_e32 v3, v1, v41401; GFX10-NEXT:    v_max_f16_e32 v3, v3, v31402; GFX10-NEXT:    v_min_f16_e32 v3, 4.0, v31403; GFX10-NEXT:    v_lshlrev_b32_sdwa v3, v1, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_01404; GFX10-NEXT:    v_and_or_b32 v3, v4, v2, v31405; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01406; GFX10-NEXT:    ds_cmpst_rtn_b32 v3, v0, v4, v31407; GFX10-NEXT:    s_waitcnt lgkmcnt(0)1408; GFX10-NEXT:    buffer_gl0_inv1409; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v41410; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s41411; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s41412; GFX10-NEXT:    s_cbranch_execnz .LBB9_11413; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end1414; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s41415; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v1, v31416; GFX10-NEXT:    s_setpc_b64 s[30:31]1417;1418; GFX90A-LABEL: local_atomic_fmin_ret_f16__offset:1419; GFX90A:       ; %bb.0:1420; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1421; GFX90A-NEXT:    v_add_u32_e32 v0, 0xfffe, v01422; GFX90A-NEXT:    v_and_b32_e32 v1, -4, v01423; GFX90A-NEXT:    ds_read_b32 v3, v11424; GFX90A-NEXT:    v_and_b32_e32 v0, 3, v01425; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 3, v01426; GFX90A-NEXT:    s_mov_b32 s4, 0xffff1427; GFX90A-NEXT:    v_lshlrev_b32_e64 v2, v0, s41428; GFX90A-NEXT:    v_not_b32_e32 v2, v21429; GFX90A-NEXT:    s_mov_b64 s[4:5], 01430; GFX90A-NEXT:  .LBB9_1: ; %atomicrmw.start1431; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11432; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)1433; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v0, v31434; GFX90A-NEXT:    v_max_f16_e32 v4, v4, v41435; GFX90A-NEXT:    v_min_f16_e32 v4, 4.0, v41436; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v0, v41437; GFX90A-NEXT:    v_and_or_b32 v4, v3, v2, v41438; GFX90A-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v41439; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)1440; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v31441; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1442; GFX90A-NEXT:    v_mov_b32_e32 v3, v41443; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1444; GFX90A-NEXT:    s_cbranch_execnz .LBB9_11445; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1446; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1447; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v0, v41448; GFX90A-NEXT:    s_setpc_b64 s[30:31]1449;1450; GFX908-LABEL: local_atomic_fmin_ret_f16__offset:1451; GFX908:       ; %bb.0:1452; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1453; GFX908-NEXT:    v_add_u32_e32 v0, 0xfffe, v01454; GFX908-NEXT:    v_and_b32_e32 v1, -4, v01455; GFX908-NEXT:    ds_read_b32 v3, v11456; GFX908-NEXT:    v_and_b32_e32 v0, 3, v01457; GFX908-NEXT:    v_lshlrev_b32_e32 v0, 3, v01458; GFX908-NEXT:    s_mov_b32 s4, 0xffff1459; GFX908-NEXT:    v_lshlrev_b32_e64 v2, v0, s41460; GFX908-NEXT:    v_not_b32_e32 v2, v21461; GFX908-NEXT:    s_mov_b64 s[4:5], 01462; GFX908-NEXT:  .LBB9_1: ; %atomicrmw.start1463; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11464; GFX908-NEXT:    s_waitcnt lgkmcnt(0)1465; GFX908-NEXT:    v_mov_b32_e32 v4, v31466; GFX908-NEXT:    v_lshrrev_b32_e32 v3, v0, v41467; GFX908-NEXT:    v_max_f16_e32 v3, v3, v31468; GFX908-NEXT:    v_min_f16_e32 v3, 4.0, v31469; GFX908-NEXT:    v_lshlrev_b32_e32 v3, v0, v31470; GFX908-NEXT:    v_and_or_b32 v3, v4, v2, v31471; GFX908-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v31472; GFX908-NEXT:    s_waitcnt lgkmcnt(0)1473; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41474; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1475; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1476; GFX908-NEXT:    s_cbranch_execnz .LBB9_11477; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1478; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1479; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v0, v31480; GFX908-NEXT:    s_setpc_b64 s[30:31]1481;1482; GFX8-LABEL: local_atomic_fmin_ret_f16__offset:1483; GFX8:       ; %bb.0:1484; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1485; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffe, v01486; GFX8-NEXT:    v_and_b32_e32 v1, -4, v01487; GFX8-NEXT:    s_mov_b32 m0, -11488; GFX8-NEXT:    ds_read_b32 v3, v11489; GFX8-NEXT:    v_and_b32_e32 v0, 3, v01490; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 3, v01491; GFX8-NEXT:    s_mov_b32 s4, 0xffff1492; GFX8-NEXT:    v_lshlrev_b32_e64 v2, v0, s41493; GFX8-NEXT:    v_not_b32_e32 v2, v21494; GFX8-NEXT:    s_mov_b64 s[4:5], 01495; GFX8-NEXT:  .LBB9_1: ; %atomicrmw.start1496; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11497; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1498; GFX8-NEXT:    v_mov_b32_e32 v4, v31499; GFX8-NEXT:    v_lshrrev_b32_e32 v3, v0, v41500; GFX8-NEXT:    v_max_f16_e32 v3, v3, v31501; GFX8-NEXT:    v_min_f16_e32 v3, 4.0, v31502; GFX8-NEXT:    v_and_b32_e32 v5, v4, v21503; GFX8-NEXT:    v_lshlrev_b32_e32 v3, v0, v31504; GFX8-NEXT:    v_or_b32_e32 v3, v5, v31505; GFX8-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v31506; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1507; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41508; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1509; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1510; GFX8-NEXT:    s_cbranch_execnz .LBB9_11511; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1512; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1513; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v0, v31514; GFX8-NEXT:    s_setpc_b64 s[30:31]1515;1516; GFX7-LABEL: local_atomic_fmin_ret_f16__offset:1517; GFX7:       ; %bb.0:1518; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1519; GFX7-NEXT:    v_add_i32_e32 v1, vcc, 0xfffe, v01520; GFX7-NEXT:    v_and_b32_e32 v0, -4, v11521; GFX7-NEXT:    s_mov_b32 m0, -11522; GFX7-NEXT:    ds_read_b32 v3, v01523; GFX7-NEXT:    v_and_b32_e32 v1, 3, v11524; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 3, v11525; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v11526; GFX7-NEXT:    v_not_b32_e32 v2, v21527; GFX7-NEXT:    s_mov_b64 s[4:5], 01528; GFX7-NEXT:  .LBB9_1: ; %atomicrmw.start1529; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=11530; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1531; GFX7-NEXT:    v_mov_b32_e32 v4, v31532; GFX7-NEXT:    v_lshrrev_b32_e32 v3, v1, v41533; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v31534; GFX7-NEXT:    v_and_b32_e32 v5, v4, v21535; GFX7-NEXT:    v_min_f32_e32 v3, 4.0, v31536; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v31537; GFX7-NEXT:    v_lshlrev_b32_e32 v3, v1, v31538; GFX7-NEXT:    v_or_b32_e32 v3, v5, v31539; GFX7-NEXT:    ds_cmpst_rtn_b32 v3, v0, v4, v31540; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1541; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41542; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1543; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]1544; GFX7-NEXT:    s_cbranch_execnz .LBB9_11545; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end1546; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]1547; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v1, v31548; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v01549; GFX7-NEXT:    s_setpc_b64 s[30:31]1550;1551; GFX6-LABEL: local_atomic_fmin_ret_f16__offset:1552; GFX6:       ; %bb.0:1553; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1554; GFX6-NEXT:    v_add_i32_e32 v1, vcc, 0xfffe, v01555; GFX6-NEXT:    v_and_b32_e32 v0, -4, v11556; GFX6-NEXT:    s_mov_b32 m0, -11557; GFX6-NEXT:    ds_read_b32 v3, v01558; GFX6-NEXT:    v_and_b32_e32 v1, 3, v11559; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 3, v11560; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v11561; GFX6-NEXT:    v_not_b32_e32 v2, v21562; GFX6-NEXT:    s_mov_b64 s[4:5], 01563; GFX6-NEXT:  .LBB9_1: ; %atomicrmw.start1564; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=11565; GFX6-NEXT:    s_waitcnt lgkmcnt(0)1566; GFX6-NEXT:    v_mov_b32_e32 v4, v31567; GFX6-NEXT:    v_lshrrev_b32_e32 v3, v1, v41568; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v31569; GFX6-NEXT:    v_and_b32_e32 v5, v4, v21570; GFX6-NEXT:    v_min_f32_e32 v3, 4.0, v31571; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v31572; GFX6-NEXT:    v_lshlrev_b32_e32 v3, v1, v31573; GFX6-NEXT:    v_or_b32_e32 v3, v5, v31574; GFX6-NEXT:    ds_cmpst_rtn_b32 v3, v0, v4, v31575; GFX6-NEXT:    s_waitcnt lgkmcnt(0)1576; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v41577; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1578; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]1579; GFX6-NEXT:    s_cbranch_execnz .LBB9_11580; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end1581; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]1582; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v1, v31583; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v01584; GFX6-NEXT:    s_setpc_b64 s[30:31]1585  %gep = getelementptr half, ptr addrspace(3) %ptr, i32 327671586  %result = atomicrmw fmin ptr addrspace(3) %gep, half 4.0 seq_cst1587  ret half %result1588}1589 1590define void @local_atomic_fmin_noret_f16(ptr addrspace(3) %ptr) nounwind {1591; GFX12-TRUE16-LABEL: local_atomic_fmin_noret_f16:1592; GFX12-TRUE16:       ; %bb.0:1593; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x01594; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x01595; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x01596; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x01597; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x01598; GFX12-TRUE16-NEXT:    v_and_b32_e32 v1, -4, v01599; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v01600; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 01601; GFX12-TRUE16-NEXT:    ds_load_b32 v2, v11602; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff1603; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, 24, v01604; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)1605; GFX12-TRUE16-NEXT:    v_not_b32_e32 v3, v31606; GFX12-TRUE16-NEXT:  .LBB10_1: ; %atomicrmw.start1607; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=11608; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x01609; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)1610; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v4, v0, v21611; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v4.h, 01612; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v4.l, v4.l, v4.l1613; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1614; GFX12-TRUE16-NEXT:    v_min_num_f16_e32 v4.l, 4.0, v4.l1615; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, v0, v41616; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1617; GFX12-TRUE16-NEXT:    v_and_or_b32 v4, v2, v3, v41618; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x01619; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v1, v4, v21620; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x01621; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE1622; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v21623; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v2, v41624; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)1625; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s01626; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)1627; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01628; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB10_11629; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end1630; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s01631; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x01632; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]1633;1634; GFX12-FAKE16-LABEL: local_atomic_fmin_noret_f16:1635; GFX12-FAKE16:       ; %bb.0:1636; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x01637; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x01638; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x01639; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x01640; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x01641; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, -4, v01642; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v01643; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 01644; GFX12-FAKE16-NEXT:    ds_load_b32 v2, v11645; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff1646; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, 24, v01647; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)1648; GFX12-FAKE16-NEXT:    v_not_b32_e32 v3, v31649; GFX12-FAKE16-NEXT:  .LBB10_1: ; %atomicrmw.start1650; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=11651; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x01652; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1653; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, v0, v21654; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v4, v4, v41655; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1656; GFX12-FAKE16-NEXT:    v_min_num_f16_e32 v4, 4.0, v41657; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 0xffff, v41658; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1659; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, v0, v41660; GFX12-FAKE16-NEXT:    v_and_or_b32 v4, v2, v3, v41661; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x01662; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v1, v4, v21663; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x01664; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE1665; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v21666; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v2, v41667; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)1668; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s01669; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)1670; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01671; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB10_11672; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end1673; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s01674; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x01675; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]1676;1677; GFX942-LABEL: local_atomic_fmin_noret_f16:1678; GFX942:       ; %bb.0:1679; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1680; GFX942-NEXT:    v_and_b32_e32 v1, -4, v01681; GFX942-NEXT:    ds_read_b32 v3, v11682; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 3, v01683; GFX942-NEXT:    s_mov_b32 s0, 0xffff1684; GFX942-NEXT:    v_and_b32_e32 v0, 24, v21685; GFX942-NEXT:    v_lshlrev_b32_e64 v2, v2, s01686; GFX942-NEXT:    v_not_b32_e32 v2, v21687; GFX942-NEXT:    s_mov_b64 s[0:1], 01688; GFX942-NEXT:  .LBB10_1: ; %atomicrmw.start1689; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=11690; GFX942-NEXT:    s_waitcnt lgkmcnt(0)1691; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v0, v31692; GFX942-NEXT:    v_max_f16_e32 v4, v4, v41693; GFX942-NEXT:    v_min_f16_e32 v4, 4.0, v41694; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v0, v41695; GFX942-NEXT:    v_and_or_b32 v4, v3, v2, v41696; GFX942-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v41697; GFX942-NEXT:    s_waitcnt lgkmcnt(0)1698; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v31699; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]1700; GFX942-NEXT:    v_mov_b32_e32 v3, v41701; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]1702; GFX942-NEXT:    s_cbranch_execnz .LBB10_11703; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end1704; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]1705; GFX942-NEXT:    s_setpc_b64 s[30:31]1706;1707; GFX11-TRUE16-LABEL: local_atomic_fmin_noret_f16:1708; GFX11-TRUE16:       ; %bb.0:1709; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1710; GFX11-TRUE16-NEXT:    v_and_b32_e32 v1, -4, v01711; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v01712; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 01713; GFX11-TRUE16-NEXT:    ds_load_b32 v2, v11714; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff1715; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, 24, v01716; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)1717; GFX11-TRUE16-NEXT:    v_not_b32_e32 v3, v31718; GFX11-TRUE16-NEXT:  .LBB10_1: ; %atomicrmw.start1719; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=11720; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)1721; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)1722; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v4, v0, v21723; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v4.h, 01724; GFX11-TRUE16-NEXT:    v_max_f16_e32 v4.l, v4.l, v4.l1725; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1726; GFX11-TRUE16-NEXT:    v_min_f16_e32 v4.l, 4.0, v4.l1727; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, v0, v41728; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1729; GFX11-TRUE16-NEXT:    v_and_or_b32 v4, v2, v3, v41730; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x01731; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v1, v4, v21732; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)1733; GFX11-TRUE16-NEXT:    buffer_gl0_inv1734; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v21735; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, v41736; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s01737; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1738; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01739; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB10_11740; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end1741; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s01742; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]1743;1744; GFX11-FAKE16-LABEL: local_atomic_fmin_noret_f16:1745; GFX11-FAKE16:       ; %bb.0:1746; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1747; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, -4, v01748; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v01749; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 01750; GFX11-FAKE16-NEXT:    ds_load_b32 v2, v11751; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff1752; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, 24, v01753; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)1754; GFX11-FAKE16-NEXT:    v_not_b32_e32 v3, v31755; GFX11-FAKE16-NEXT:  .LBB10_1: ; %atomicrmw.start1756; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=11757; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)1758; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1759; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, v0, v21760; GFX11-FAKE16-NEXT:    v_max_f16_e32 v4, v4, v41761; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1762; GFX11-FAKE16-NEXT:    v_min_f16_e32 v4, 4.0, v41763; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 0xffff, v41764; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1765; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, v0, v41766; GFX11-FAKE16-NEXT:    v_and_or_b32 v4, v2, v3, v41767; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x01768; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v1, v4, v21769; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)1770; GFX11-FAKE16-NEXT:    buffer_gl0_inv1771; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v21772; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v41773; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s01774; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1775; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s01776; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB10_11777; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end1778; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s01779; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]1780;1781; GFX10-LABEL: local_atomic_fmin_noret_f16:1782; GFX10:       ; %bb.0:1783; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1784; GFX10-NEXT:    v_and_b32_e32 v1, -4, v01785; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 3, v01786; GFX10-NEXT:    s_mov_b32 s4, 01787; GFX10-NEXT:    ds_read_b32 v2, v11788; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff1789; GFX10-NEXT:    v_and_b32_e32 v0, 24, v01790; GFX10-NEXT:    v_not_b32_e32 v3, v31791; GFX10-NEXT:  .LBB10_1: ; %atomicrmw.start1792; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=11793; GFX10-NEXT:    s_waitcnt lgkmcnt(0)1794; GFX10-NEXT:    v_lshrrev_b32_e32 v4, v0, v21795; GFX10-NEXT:    v_max_f16_e32 v4, v4, v41796; GFX10-NEXT:    v_min_f16_e32 v4, 4.0, v41797; GFX10-NEXT:    v_lshlrev_b32_sdwa v4, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_01798; GFX10-NEXT:    v_and_or_b32 v4, v2, v3, v41799; GFX10-NEXT:    s_waitcnt_vscnt null, 0x01800; GFX10-NEXT:    ds_cmpst_rtn_b32 v4, v1, v2, v41801; GFX10-NEXT:    s_waitcnt lgkmcnt(0)1802; GFX10-NEXT:    buffer_gl0_inv1803; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v21804; GFX10-NEXT:    v_mov_b32_e32 v2, v41805; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s41806; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s41807; GFX10-NEXT:    s_cbranch_execnz .LBB10_11808; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end1809; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s41810; GFX10-NEXT:    s_setpc_b64 s[30:31]1811;1812; GFX90A-LABEL: local_atomic_fmin_noret_f16:1813; GFX90A:       ; %bb.0:1814; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1815; GFX90A-NEXT:    v_and_b32_e32 v1, -4, v01816; GFX90A-NEXT:    ds_read_b32 v3, v11817; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 3, v01818; GFX90A-NEXT:    s_mov_b32 s4, 0xffff1819; GFX90A-NEXT:    v_and_b32_e32 v0, 24, v21820; GFX90A-NEXT:    v_lshlrev_b32_e64 v2, v2, s41821; GFX90A-NEXT:    v_not_b32_e32 v2, v21822; GFX90A-NEXT:    s_mov_b64 s[4:5], 01823; GFX90A-NEXT:  .LBB10_1: ; %atomicrmw.start1824; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=11825; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)1826; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v0, v31827; GFX90A-NEXT:    v_max_f16_e32 v4, v4, v41828; GFX90A-NEXT:    v_min_f16_e32 v4, 4.0, v41829; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v0, v41830; GFX90A-NEXT:    v_and_or_b32 v4, v3, v2, v41831; GFX90A-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v41832; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)1833; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v31834; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1835; GFX90A-NEXT:    v_mov_b32_e32 v3, v41836; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]1837; GFX90A-NEXT:    s_cbranch_execnz .LBB10_11838; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end1839; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]1840; GFX90A-NEXT:    s_setpc_b64 s[30:31]1841;1842; GFX908-LABEL: local_atomic_fmin_noret_f16:1843; GFX908:       ; %bb.0:1844; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1845; GFX908-NEXT:    v_and_b32_e32 v1, -4, v01846; GFX908-NEXT:    ds_read_b32 v3, v11847; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 3, v01848; GFX908-NEXT:    s_mov_b32 s4, 0xffff1849; GFX908-NEXT:    v_and_b32_e32 v0, 24, v21850; GFX908-NEXT:    v_lshlrev_b32_e64 v2, v2, s41851; GFX908-NEXT:    v_not_b32_e32 v2, v21852; GFX908-NEXT:    s_mov_b64 s[4:5], 01853; GFX908-NEXT:  .LBB10_1: ; %atomicrmw.start1854; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=11855; GFX908-NEXT:    s_waitcnt lgkmcnt(0)1856; GFX908-NEXT:    v_lshrrev_b32_e32 v4, v0, v31857; GFX908-NEXT:    v_max_f16_e32 v4, v4, v41858; GFX908-NEXT:    v_min_f16_e32 v4, 4.0, v41859; GFX908-NEXT:    v_lshlrev_b32_e32 v4, v0, v41860; GFX908-NEXT:    v_and_or_b32 v4, v3, v2, v41861; GFX908-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v41862; GFX908-NEXT:    s_waitcnt lgkmcnt(0)1863; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v31864; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1865; GFX908-NEXT:    v_mov_b32_e32 v3, v41866; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]1867; GFX908-NEXT:    s_cbranch_execnz .LBB10_11868; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end1869; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]1870; GFX908-NEXT:    s_setpc_b64 s[30:31]1871;1872; GFX8-LABEL: local_atomic_fmin_noret_f16:1873; GFX8:       ; %bb.0:1874; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1875; GFX8-NEXT:    v_and_b32_e32 v1, -4, v01876; GFX8-NEXT:    s_mov_b32 m0, -11877; GFX8-NEXT:    ds_read_b32 v3, v11878; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 3, v01879; GFX8-NEXT:    s_mov_b32 s4, 0xffff1880; GFX8-NEXT:    v_and_b32_e32 v0, 24, v21881; GFX8-NEXT:    v_lshlrev_b32_e64 v2, v2, s41882; GFX8-NEXT:    v_not_b32_e32 v2, v21883; GFX8-NEXT:    s_mov_b64 s[4:5], 01884; GFX8-NEXT:  .LBB10_1: ; %atomicrmw.start1885; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=11886; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1887; GFX8-NEXT:    v_lshrrev_b32_e32 v4, v0, v31888; GFX8-NEXT:    v_max_f16_e32 v4, v4, v41889; GFX8-NEXT:    v_min_f16_e32 v4, 4.0, v41890; GFX8-NEXT:    v_and_b32_e32 v5, v3, v21891; GFX8-NEXT:    v_lshlrev_b32_e32 v4, v0, v41892; GFX8-NEXT:    v_or_b32_e32 v4, v5, v41893; GFX8-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v41894; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1895; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v31896; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1897; GFX8-NEXT:    v_mov_b32_e32 v3, v41898; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]1899; GFX8-NEXT:    s_cbranch_execnz .LBB10_11900; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end1901; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]1902; GFX8-NEXT:    s_setpc_b64 s[30:31]1903;1904; GFX7-LABEL: local_atomic_fmin_noret_f16:1905; GFX7:       ; %bb.0:1906; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1907; GFX7-NEXT:    v_and_b32_e32 v1, -4, v01908; GFX7-NEXT:    s_mov_b32 m0, -11909; GFX7-NEXT:    ds_read_b32 v3, v11910; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 3, v01911; GFX7-NEXT:    v_and_b32_e32 v0, 24, v21912; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v21913; GFX7-NEXT:    v_not_b32_e32 v2, v21914; GFX7-NEXT:    s_mov_b64 s[4:5], 01915; GFX7-NEXT:  .LBB10_1: ; %atomicrmw.start1916; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=11917; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1918; GFX7-NEXT:    v_lshrrev_b32_e32 v4, v0, v31919; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v41920; GFX7-NEXT:    v_and_b32_e32 v5, v3, v21921; GFX7-NEXT:    v_min_f32_e32 v4, 4.0, v41922; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v41923; GFX7-NEXT:    v_lshlrev_b32_e32 v4, v0, v41924; GFX7-NEXT:    v_or_b32_e32 v4, v5, v41925; GFX7-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v41926; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1927; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v31928; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1929; GFX7-NEXT:    v_mov_b32_e32 v3, v41930; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]1931; GFX7-NEXT:    s_cbranch_execnz .LBB10_11932; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end1933; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]1934; GFX7-NEXT:    s_setpc_b64 s[30:31]1935;1936; GFX6-LABEL: local_atomic_fmin_noret_f16:1937; GFX6:       ; %bb.0:1938; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1939; GFX6-NEXT:    v_and_b32_e32 v1, -4, v01940; GFX6-NEXT:    s_mov_b32 m0, -11941; GFX6-NEXT:    ds_read_b32 v3, v11942; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 3, v01943; GFX6-NEXT:    v_and_b32_e32 v0, 24, v21944; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v21945; GFX6-NEXT:    v_not_b32_e32 v2, v21946; GFX6-NEXT:    s_mov_b64 s[4:5], 01947; GFX6-NEXT:  .LBB10_1: ; %atomicrmw.start1948; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=11949; GFX6-NEXT:    s_waitcnt lgkmcnt(0)1950; GFX6-NEXT:    v_lshrrev_b32_e32 v4, v0, v31951; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v41952; GFX6-NEXT:    v_and_b32_e32 v5, v3, v21953; GFX6-NEXT:    v_min_f32_e32 v4, 4.0, v41954; GFX6-NEXT:    v_cvt_f16_f32_e32 v4, v41955; GFX6-NEXT:    v_lshlrev_b32_e32 v4, v0, v41956; GFX6-NEXT:    v_or_b32_e32 v4, v5, v41957; GFX6-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v41958; GFX6-NEXT:    s_waitcnt lgkmcnt(0)1959; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v31960; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]1961; GFX6-NEXT:    v_mov_b32_e32 v3, v41962; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]1963; GFX6-NEXT:    s_cbranch_execnz .LBB10_11964; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end1965; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]1966; GFX6-NEXT:    s_setpc_b64 s[30:31]1967  %result = atomicrmw fmin ptr addrspace(3) %ptr, half 4.0 seq_cst1968  ret void1969}1970 1971define void @local_atomic_fmin_noret_f16__offset(ptr addrspace(3) %ptr) nounwind {1972; GFX12-TRUE16-LABEL: local_atomic_fmin_noret_f16__offset:1973; GFX12-TRUE16:       ; %bb.0:1974; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x01975; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x01976; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x01977; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x01978; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x01979; GFX12-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v01980; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 01981; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)1982; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v11983; GFX12-TRUE16-NEXT:    v_and_b32_e32 v1, 3, v11984; GFX12-TRUE16-NEXT:    ds_load_b32 v3, v01985; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v11986; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff1987; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1988; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v21989; GFX12-TRUE16-NEXT:  .LBB11_1: ; %atomicrmw.start1990; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=11991; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x01992; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v4, v1, v31993; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v4.h, 01994; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1995; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v4.l, v4.l, v4.l1996; GFX12-TRUE16-NEXT:    v_min_num_f16_e32 v4.l, 4.0, v4.l1997; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1998; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, v1, v41999; GFX12-TRUE16-NEXT:    v_and_or_b32 v4, v3, v2, v42000; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x02001; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v32002; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x02003; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE2004; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v32005; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v42006; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2007; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s02008; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2009; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02010; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB11_12011; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end2012; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02013; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x02014; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]2015;2016; GFX12-FAKE16-LABEL: local_atomic_fmin_noret_f16__offset:2017; GFX12-FAKE16:       ; %bb.0:2018; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x02019; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x02020; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x02021; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x02022; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x02023; GFX12-FAKE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v02024; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 02025; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)2026; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v12027; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, 3, v12028; GFX12-FAKE16-NEXT:    ds_load_b32 v3, v02029; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v12030; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff2031; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2032; GFX12-FAKE16-NEXT:    v_not_b32_e32 v2, v22033; GFX12-FAKE16-NEXT:  .LBB11_1: ; %atomicrmw.start2034; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=12035; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x02036; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, v1, v32037; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2038; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v4, v4, v42039; GFX12-FAKE16-NEXT:    v_min_num_f16_e32 v4, 4.0, v42040; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2041; GFX12-FAKE16-NEXT:    v_and_b32_e32 v4, 0xffff, v42042; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, v1, v42043; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2044; GFX12-FAKE16-NEXT:    v_and_or_b32 v4, v3, v2, v42045; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x02046; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v32047; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x02048; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE2049; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v32050; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v42051; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2052; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s02053; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2054; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02055; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB11_12056; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end2057; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02058; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x02059; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]2060;2061; GFX942-LABEL: local_atomic_fmin_noret_f16__offset:2062; GFX942:       ; %bb.0:2063; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2064; GFX942-NEXT:    v_add_u32_e32 v1, 0xfffe, v02065; GFX942-NEXT:    v_and_b32_e32 v0, -4, v12066; GFX942-NEXT:    ds_read_b32 v3, v02067; GFX942-NEXT:    v_and_b32_e32 v1, 3, v12068; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 3, v12069; GFX942-NEXT:    s_mov_b32 s0, 0xffff2070; GFX942-NEXT:    v_lshlrev_b32_e64 v2, v1, s02071; GFX942-NEXT:    v_not_b32_e32 v2, v22072; GFX942-NEXT:    s_mov_b64 s[0:1], 02073; GFX942-NEXT:  .LBB11_1: ; %atomicrmw.start2074; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12075; GFX942-NEXT:    s_waitcnt lgkmcnt(0)2076; GFX942-NEXT:    v_lshrrev_b32_e32 v4, v1, v32077; GFX942-NEXT:    v_max_f16_e32 v4, v4, v42078; GFX942-NEXT:    v_min_f16_e32 v4, 4.0, v42079; GFX942-NEXT:    v_lshlrev_b32_e32 v4, v1, v42080; GFX942-NEXT:    v_and_or_b32 v4, v3, v2, v42081; GFX942-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v42082; GFX942-NEXT:    s_waitcnt lgkmcnt(0)2083; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v32084; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2085; GFX942-NEXT:    v_mov_b32_e32 v3, v42086; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2087; GFX942-NEXT:    s_cbranch_execnz .LBB11_12088; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2089; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2090; GFX942-NEXT:    s_setpc_b64 s[30:31]2091;2092; GFX11-TRUE16-LABEL: local_atomic_fmin_noret_f16__offset:2093; GFX11-TRUE16:       ; %bb.0:2094; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2095; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v02096; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 02097; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)2098; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v12099; GFX11-TRUE16-NEXT:    v_and_b32_e32 v1, 3, v12100; GFX11-TRUE16-NEXT:    ds_load_b32 v3, v02101; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v12102; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff2103; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2104; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v22105; GFX11-TRUE16-NEXT:  .LBB11_1: ; %atomicrmw.start2106; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=12107; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)2108; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v4, v1, v32109; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v4.h, 02110; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2111; GFX11-TRUE16-NEXT:    v_max_f16_e32 v4.l, v4.l, v4.l2112; GFX11-TRUE16-NEXT:    v_min_f16_e32 v4.l, 4.0, v4.l2113; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2114; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, v1, v42115; GFX11-TRUE16-NEXT:    v_and_or_b32 v4, v3, v2, v42116; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x02117; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v32118; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)2119; GFX11-TRUE16-NEXT:    buffer_gl0_inv2120; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v32121; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v42122; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s02123; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2124; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02125; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB11_12126; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end2127; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02128; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]2129;2130; GFX11-FAKE16-LABEL: local_atomic_fmin_noret_f16__offset:2131; GFX11-FAKE16:       ; %bb.0:2132; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2133; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v02134; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 02135; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)2136; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v12137; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 3, v12138; GFX11-FAKE16-NEXT:    ds_load_b32 v3, v02139; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v12140; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff2141; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2142; GFX11-FAKE16-NEXT:    v_not_b32_e32 v2, v22143; GFX11-FAKE16-NEXT:  .LBB11_1: ; %atomicrmw.start2144; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=12145; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)2146; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, v1, v32147; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2148; GFX11-FAKE16-NEXT:    v_max_f16_e32 v4, v4, v42149; GFX11-FAKE16-NEXT:    v_min_f16_e32 v4, 4.0, v42150; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2151; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 0xffff, v42152; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, v1, v42153; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2154; GFX11-FAKE16-NEXT:    v_and_or_b32 v4, v3, v2, v42155; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x02156; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v32157; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)2158; GFX11-FAKE16-NEXT:    buffer_gl0_inv2159; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v32160; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v42161; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s02162; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2163; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02164; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB11_12165; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end2166; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02167; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]2168;2169; GFX10-LABEL: local_atomic_fmin_noret_f16__offset:2170; GFX10:       ; %bb.0:2171; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2172; GFX10-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v02173; GFX10-NEXT:    s_mov_b32 s4, 02174; GFX10-NEXT:    v_and_b32_e32 v0, -4, v12175; GFX10-NEXT:    v_and_b32_e32 v1, 3, v12176; GFX10-NEXT:    ds_read_b32 v3, v02177; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 3, v12178; GFX10-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff2179; GFX10-NEXT:    v_not_b32_e32 v2, v22180; GFX10-NEXT:  .LBB11_1: ; %atomicrmw.start2181; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=12182; GFX10-NEXT:    s_waitcnt lgkmcnt(0)2183; GFX10-NEXT:    v_lshrrev_b32_e32 v4, v1, v32184; GFX10-NEXT:    v_max_f16_e32 v4, v4, v42185; GFX10-NEXT:    v_min_f16_e32 v4, 4.0, v42186; GFX10-NEXT:    v_lshlrev_b32_sdwa v4, v1, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_02187; GFX10-NEXT:    v_and_or_b32 v4, v3, v2, v42188; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02189; GFX10-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v42190; GFX10-NEXT:    s_waitcnt lgkmcnt(0)2191; GFX10-NEXT:    buffer_gl0_inv2192; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v32193; GFX10-NEXT:    v_mov_b32_e32 v3, v42194; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s42195; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s42196; GFX10-NEXT:    s_cbranch_execnz .LBB11_12197; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end2198; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s42199; GFX10-NEXT:    s_setpc_b64 s[30:31]2200;2201; GFX90A-LABEL: local_atomic_fmin_noret_f16__offset:2202; GFX90A:       ; %bb.0:2203; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2204; GFX90A-NEXT:    v_add_u32_e32 v1, 0xfffe, v02205; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v12206; GFX90A-NEXT:    ds_read_b32 v3, v02207; GFX90A-NEXT:    v_and_b32_e32 v1, 3, v12208; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 3, v12209; GFX90A-NEXT:    s_mov_b32 s4, 0xffff2210; GFX90A-NEXT:    v_lshlrev_b32_e64 v2, v1, s42211; GFX90A-NEXT:    v_not_b32_e32 v2, v22212; GFX90A-NEXT:    s_mov_b64 s[4:5], 02213; GFX90A-NEXT:  .LBB11_1: ; %atomicrmw.start2214; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12215; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)2216; GFX90A-NEXT:    v_lshrrev_b32_e32 v4, v1, v32217; GFX90A-NEXT:    v_max_f16_e32 v4, v4, v42218; GFX90A-NEXT:    v_min_f16_e32 v4, 4.0, v42219; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, v1, v42220; GFX90A-NEXT:    v_and_or_b32 v4, v3, v2, v42221; GFX90A-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v42222; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)2223; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v32224; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2225; GFX90A-NEXT:    v_mov_b32_e32 v3, v42226; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2227; GFX90A-NEXT:    s_cbranch_execnz .LBB11_12228; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2229; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2230; GFX90A-NEXT:    s_setpc_b64 s[30:31]2231;2232; GFX908-LABEL: local_atomic_fmin_noret_f16__offset:2233; GFX908:       ; %bb.0:2234; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2235; GFX908-NEXT:    v_add_u32_e32 v1, 0xfffe, v02236; GFX908-NEXT:    v_and_b32_e32 v0, -4, v12237; GFX908-NEXT:    ds_read_b32 v3, v02238; GFX908-NEXT:    v_and_b32_e32 v1, 3, v12239; GFX908-NEXT:    v_lshlrev_b32_e32 v1, 3, v12240; GFX908-NEXT:    s_mov_b32 s4, 0xffff2241; GFX908-NEXT:    v_lshlrev_b32_e64 v2, v1, s42242; GFX908-NEXT:    v_not_b32_e32 v2, v22243; GFX908-NEXT:    s_mov_b64 s[4:5], 02244; GFX908-NEXT:  .LBB11_1: ; %atomicrmw.start2245; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12246; GFX908-NEXT:    s_waitcnt lgkmcnt(0)2247; GFX908-NEXT:    v_lshrrev_b32_e32 v4, v1, v32248; GFX908-NEXT:    v_max_f16_e32 v4, v4, v42249; GFX908-NEXT:    v_min_f16_e32 v4, 4.0, v42250; GFX908-NEXT:    v_lshlrev_b32_e32 v4, v1, v42251; GFX908-NEXT:    v_and_or_b32 v4, v3, v2, v42252; GFX908-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v42253; GFX908-NEXT:    s_waitcnt lgkmcnt(0)2254; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v32255; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2256; GFX908-NEXT:    v_mov_b32_e32 v3, v42257; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2258; GFX908-NEXT:    s_cbranch_execnz .LBB11_12259; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2260; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2261; GFX908-NEXT:    s_setpc_b64 s[30:31]2262;2263; GFX8-LABEL: local_atomic_fmin_noret_f16__offset:2264; GFX8:       ; %bb.0:2265; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2266; GFX8-NEXT:    v_add_u32_e32 v1, vcc, 0xfffe, v02267; GFX8-NEXT:    v_and_b32_e32 v0, -4, v12268; GFX8-NEXT:    s_mov_b32 m0, -12269; GFX8-NEXT:    ds_read_b32 v3, v02270; GFX8-NEXT:    v_and_b32_e32 v1, 3, v12271; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 3, v12272; GFX8-NEXT:    s_mov_b32 s4, 0xffff2273; GFX8-NEXT:    v_lshlrev_b32_e64 v2, v1, s42274; GFX8-NEXT:    v_not_b32_e32 v2, v22275; GFX8-NEXT:    s_mov_b64 s[4:5], 02276; GFX8-NEXT:  .LBB11_1: ; %atomicrmw.start2277; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12278; GFX8-NEXT:    s_waitcnt lgkmcnt(0)2279; GFX8-NEXT:    v_lshrrev_b32_e32 v4, v1, v32280; GFX8-NEXT:    v_max_f16_e32 v4, v4, v42281; GFX8-NEXT:    v_min_f16_e32 v4, 4.0, v42282; GFX8-NEXT:    v_and_b32_e32 v5, v3, v22283; GFX8-NEXT:    v_lshlrev_b32_e32 v4, v1, v42284; GFX8-NEXT:    v_or_b32_e32 v4, v5, v42285; GFX8-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v42286; GFX8-NEXT:    s_waitcnt lgkmcnt(0)2287; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v32288; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2289; GFX8-NEXT:    v_mov_b32_e32 v3, v42290; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2291; GFX8-NEXT:    s_cbranch_execnz .LBB11_12292; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2293; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2294; GFX8-NEXT:    s_setpc_b64 s[30:31]2295;2296; GFX7-LABEL: local_atomic_fmin_noret_f16__offset:2297; GFX7:       ; %bb.0:2298; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2299; GFX7-NEXT:    v_add_i32_e32 v1, vcc, 0xfffe, v02300; GFX7-NEXT:    v_and_b32_e32 v0, -4, v12301; GFX7-NEXT:    s_mov_b32 m0, -12302; GFX7-NEXT:    ds_read_b32 v3, v02303; GFX7-NEXT:    v_and_b32_e32 v1, 3, v12304; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 3, v12305; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v12306; GFX7-NEXT:    v_not_b32_e32 v2, v22307; GFX7-NEXT:    s_mov_b64 s[4:5], 02308; GFX7-NEXT:  .LBB11_1: ; %atomicrmw.start2309; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=12310; GFX7-NEXT:    s_waitcnt lgkmcnt(0)2311; GFX7-NEXT:    v_lshrrev_b32_e32 v4, v1, v32312; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v42313; GFX7-NEXT:    v_and_b32_e32 v5, v3, v22314; GFX7-NEXT:    v_min_f32_e32 v4, 4.0, v42315; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v42316; GFX7-NEXT:    v_lshlrev_b32_e32 v4, v1, v42317; GFX7-NEXT:    v_or_b32_e32 v4, v5, v42318; GFX7-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v42319; GFX7-NEXT:    s_waitcnt lgkmcnt(0)2320; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v32321; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2322; GFX7-NEXT:    v_mov_b32_e32 v3, v42323; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]2324; GFX7-NEXT:    s_cbranch_execnz .LBB11_12325; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end2326; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]2327; GFX7-NEXT:    s_setpc_b64 s[30:31]2328;2329; GFX6-LABEL: local_atomic_fmin_noret_f16__offset:2330; GFX6:       ; %bb.0:2331; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2332; GFX6-NEXT:    v_add_i32_e32 v1, vcc, 0xfffe, v02333; GFX6-NEXT:    v_and_b32_e32 v0, -4, v12334; GFX6-NEXT:    s_mov_b32 m0, -12335; GFX6-NEXT:    ds_read_b32 v3, v02336; GFX6-NEXT:    v_and_b32_e32 v1, 3, v12337; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 3, v12338; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v12339; GFX6-NEXT:    v_not_b32_e32 v2, v22340; GFX6-NEXT:    s_mov_b64 s[4:5], 02341; GFX6-NEXT:  .LBB11_1: ; %atomicrmw.start2342; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=12343; GFX6-NEXT:    s_waitcnt lgkmcnt(0)2344; GFX6-NEXT:    v_lshrrev_b32_e32 v4, v1, v32345; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v42346; GFX6-NEXT:    v_and_b32_e32 v5, v3, v22347; GFX6-NEXT:    v_min_f32_e32 v4, 4.0, v42348; GFX6-NEXT:    v_cvt_f16_f32_e32 v4, v42349; GFX6-NEXT:    v_lshlrev_b32_e32 v4, v1, v42350; GFX6-NEXT:    v_or_b32_e32 v4, v5, v42351; GFX6-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v42352; GFX6-NEXT:    s_waitcnt lgkmcnt(0)2353; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v32354; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2355; GFX6-NEXT:    v_mov_b32_e32 v3, v42356; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]2357; GFX6-NEXT:    s_cbranch_execnz .LBB11_12358; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end2359; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]2360; GFX6-NEXT:    s_setpc_b64 s[30:31]2361  %gep = getelementptr half, ptr addrspace(3) %ptr, i32 327672362  %unused = atomicrmw fmin ptr addrspace(3) %gep, half 4.0 seq_cst2363  ret void2364}2365 2366define half @local_atomic_fmin_ret_f16__offset__align4(ptr addrspace(3) %ptr) nounwind {2367; GFX12-TRUE16-LABEL: local_atomic_fmin_ret_f16__offset__align4:2368; GFX12-TRUE16:       ; %bb.0:2369; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x02370; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x02371; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x02372; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x02373; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x02374; GFX12-TRUE16-NEXT:    ds_load_b32 v1, v0 offset:655342375; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 02376; GFX12-TRUE16-NEXT:  .LBB12_1: ; %atomicrmw.start2377; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=12378; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x02379; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v2, v12380; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v1.h, 02381; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2382; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v1.l, v2.l, v2.l2383; GFX12-TRUE16-NEXT:    v_min_num_f16_e32 v1.l, 4.0, v1.l2384; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2385; GFX12-TRUE16-NEXT:    v_and_or_b32 v1, 0xffff0000, v2, v12386; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x02387; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v2 offset:655342388; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x02389; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE2390; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v22391; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2392; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s02393; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2394; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02395; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB12_12396; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end2397; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02398; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v1.l2399; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x02400; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]2401;2402; GFX12-FAKE16-LABEL: local_atomic_fmin_ret_f16__offset__align4:2403; GFX12-FAKE16:       ; %bb.0:2404; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x02405; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x02406; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x02407; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x02408; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x02409; GFX12-FAKE16-NEXT:    ds_load_b32 v1, v0 offset:655342410; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 02411; GFX12-FAKE16-NEXT:  .LBB12_1: ; %atomicrmw.start2412; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=12413; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x02414; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v2, v12415; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2416; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v1, v2, v22417; GFX12-FAKE16-NEXT:    v_min_num_f16_e32 v1, 4.0, v12418; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2419; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff, v12420; GFX12-FAKE16-NEXT:    v_and_or_b32 v1, 0xffff0000, v2, v12421; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x02422; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v2 offset:655342423; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x02424; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE2425; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v22426; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2427; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s02428; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2429; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02430; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB12_12431; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end2432; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02433; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v12434; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x02435; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]2436;2437; GFX942-LABEL: local_atomic_fmin_ret_f16__offset__align4:2438; GFX942:       ; %bb.0:2439; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2440; GFX942-NEXT:    ds_read_b32 v2, v0 offset:655342441; GFX942-NEXT:    s_mov_b64 s[0:1], 02442; GFX942-NEXT:    s_mov_b32 s2, 0xffff00002443; GFX942-NEXT:  .LBB12_1: ; %atomicrmw.start2444; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12445; GFX942-NEXT:    s_waitcnt lgkmcnt(0)2446; GFX942-NEXT:    v_max_f16_e32 v1, v2, v22447; GFX942-NEXT:    v_min_f16_e32 v1, 4.0, v12448; GFX942-NEXT:    v_and_or_b32 v1, v2, s2, v12449; GFX942-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655342450; GFX942-NEXT:    s_waitcnt lgkmcnt(0)2451; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v22452; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2453; GFX942-NEXT:    v_mov_b32_e32 v2, v12454; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2455; GFX942-NEXT:    s_cbranch_execnz .LBB12_12456; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2457; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2458; GFX942-NEXT:    v_mov_b32_e32 v0, v12459; GFX942-NEXT:    s_setpc_b64 s[30:31]2460;2461; GFX11-TRUE16-LABEL: local_atomic_fmin_ret_f16__offset__align4:2462; GFX11-TRUE16:       ; %bb.0:2463; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2464; GFX11-TRUE16-NEXT:    ds_load_b32 v1, v0 offset:655342465; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 02466; GFX11-TRUE16-NEXT:  .LBB12_1: ; %atomicrmw.start2467; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=12468; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)2469; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, v12470; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v1.h, 02471; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2472; GFX11-TRUE16-NEXT:    v_max_f16_e32 v1.l, v2.l, v2.l2473; GFX11-TRUE16-NEXT:    v_min_f16_e32 v1.l, 4.0, v1.l2474; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2475; GFX11-TRUE16-NEXT:    v_and_or_b32 v1, 0xffff0000, v2, v12476; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x02477; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v2 offset:655342478; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)2479; GFX11-TRUE16-NEXT:    buffer_gl0_inv2480; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v22481; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s02482; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2483; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02484; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB12_12485; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end2486; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02487; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v1.l2488; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]2489;2490; GFX11-FAKE16-LABEL: local_atomic_fmin_ret_f16__offset__align4:2491; GFX11-FAKE16:       ; %bb.0:2492; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2493; GFX11-FAKE16-NEXT:    ds_load_b32 v1, v0 offset:655342494; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 02495; GFX11-FAKE16-NEXT:  .LBB12_1: ; %atomicrmw.start2496; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=12497; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)2498; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v12499; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2500; GFX11-FAKE16-NEXT:    v_max_f16_e32 v1, v2, v22501; GFX11-FAKE16-NEXT:    v_min_f16_e32 v1, 4.0, v12502; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2503; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff, v12504; GFX11-FAKE16-NEXT:    v_and_or_b32 v1, 0xffff0000, v2, v12505; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x02506; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v2 offset:655342507; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)2508; GFX11-FAKE16-NEXT:    buffer_gl0_inv2509; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v22510; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s02511; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2512; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02513; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB12_12514; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end2515; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02516; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v12517; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]2518;2519; GFX10-LABEL: local_atomic_fmin_ret_f16__offset__align4:2520; GFX10:       ; %bb.0:2521; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2522; GFX10-NEXT:    ds_read_b32 v1, v0 offset:655342523; GFX10-NEXT:    s_mov_b32 s4, 02524; GFX10-NEXT:  .LBB12_1: ; %atomicrmw.start2525; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=12526; GFX10-NEXT:    s_waitcnt lgkmcnt(0)2527; GFX10-NEXT:    v_mov_b32_e32 v2, v12528; GFX10-NEXT:    v_max_f16_e32 v1, v2, v22529; GFX10-NEXT:    v_min_f16_e32 v1, 4.0, v12530; GFX10-NEXT:    v_and_b32_e32 v1, 0xffff, v12531; GFX10-NEXT:    v_and_or_b32 v1, 0xffff0000, v2, v12532; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02533; GFX10-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655342534; GFX10-NEXT:    s_waitcnt lgkmcnt(0)2535; GFX10-NEXT:    buffer_gl0_inv2536; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v22537; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s42538; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s42539; GFX10-NEXT:    s_cbranch_execnz .LBB12_12540; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end2541; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s42542; GFX10-NEXT:    v_mov_b32_e32 v0, v12543; GFX10-NEXT:    s_setpc_b64 s[30:31]2544;2545; GFX90A-LABEL: local_atomic_fmin_ret_f16__offset__align4:2546; GFX90A:       ; %bb.0:2547; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2548; GFX90A-NEXT:    ds_read_b32 v2, v0 offset:655342549; GFX90A-NEXT:    s_mov_b64 s[4:5], 02550; GFX90A-NEXT:    s_mov_b32 s6, 0xffff00002551; GFX90A-NEXT:  .LBB12_1: ; %atomicrmw.start2552; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12553; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)2554; GFX90A-NEXT:    v_max_f16_e32 v1, v2, v22555; GFX90A-NEXT:    v_min_f16_e32 v1, 4.0, v12556; GFX90A-NEXT:    v_and_or_b32 v1, v2, s6, v12557; GFX90A-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655342558; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)2559; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v22560; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2561; GFX90A-NEXT:    v_mov_b32_e32 v2, v12562; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2563; GFX90A-NEXT:    s_cbranch_execnz .LBB12_12564; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2565; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2566; GFX90A-NEXT:    v_mov_b32_e32 v0, v12567; GFX90A-NEXT:    s_setpc_b64 s[30:31]2568;2569; GFX908-LABEL: local_atomic_fmin_ret_f16__offset__align4:2570; GFX908:       ; %bb.0:2571; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2572; GFX908-NEXT:    ds_read_b32 v1, v0 offset:655342573; GFX908-NEXT:    s_mov_b64 s[4:5], 02574; GFX908-NEXT:    s_mov_b32 s6, 0xffff00002575; GFX908-NEXT:  .LBB12_1: ; %atomicrmw.start2576; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12577; GFX908-NEXT:    s_waitcnt lgkmcnt(0)2578; GFX908-NEXT:    v_mov_b32_e32 v2, v12579; GFX908-NEXT:    v_max_f16_e32 v1, v2, v22580; GFX908-NEXT:    v_min_f16_e32 v1, 4.0, v12581; GFX908-NEXT:    v_and_or_b32 v1, v2, s6, v12582; GFX908-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655342583; GFX908-NEXT:    s_waitcnt lgkmcnt(0)2584; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v22585; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2586; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2587; GFX908-NEXT:    s_cbranch_execnz .LBB12_12588; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2589; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2590; GFX908-NEXT:    v_mov_b32_e32 v0, v12591; GFX908-NEXT:    s_setpc_b64 s[30:31]2592;2593; GFX8-LABEL: local_atomic_fmin_ret_f16__offset__align4:2594; GFX8:       ; %bb.0:2595; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2596; GFX8-NEXT:    s_mov_b32 m0, -12597; GFX8-NEXT:    ds_read_b32 v1, v0 offset:655342598; GFX8-NEXT:    s_mov_b64 s[4:5], 02599; GFX8-NEXT:  .LBB12_1: ; %atomicrmw.start2600; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12601; GFX8-NEXT:    s_waitcnt lgkmcnt(0)2602; GFX8-NEXT:    v_mov_b32_e32 v2, v12603; GFX8-NEXT:    v_max_f16_e32 v1, v2, v22604; GFX8-NEXT:    v_and_b32_e32 v3, 0xffff0000, v22605; GFX8-NEXT:    v_min_f16_e32 v1, 4.0, v12606; GFX8-NEXT:    v_or_b32_e32 v1, v3, v12607; GFX8-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655342608; GFX8-NEXT:    s_waitcnt lgkmcnt(0)2609; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v22610; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2611; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2612; GFX8-NEXT:    s_cbranch_execnz .LBB12_12613; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2614; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2615; GFX8-NEXT:    v_mov_b32_e32 v0, v12616; GFX8-NEXT:    s_setpc_b64 s[30:31]2617;2618; GFX7-LABEL: local_atomic_fmin_ret_f16__offset__align4:2619; GFX7:       ; %bb.0:2620; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2621; GFX7-NEXT:    s_mov_b32 m0, -12622; GFX7-NEXT:    ds_read_b32 v1, v0 offset:655342623; GFX7-NEXT:    s_mov_b64 s[4:5], 02624; GFX7-NEXT:  .LBB12_1: ; %atomicrmw.start2625; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=12626; GFX7-NEXT:    s_waitcnt lgkmcnt(0)2627; GFX7-NEXT:    v_mov_b32_e32 v2, v12628; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v22629; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v22630; GFX7-NEXT:    v_min_f32_e32 v1, 4.0, v12631; GFX7-NEXT:    v_cvt_f16_f32_e32 v1, v12632; GFX7-NEXT:    v_or_b32_e32 v1, v3, v12633; GFX7-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655342634; GFX7-NEXT:    s_waitcnt lgkmcnt(0)2635; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v22636; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2637; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]2638; GFX7-NEXT:    s_cbranch_execnz .LBB12_12639; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end2640; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]2641; GFX7-NEXT:    v_cvt_f32_f16_e32 v0, v12642; GFX7-NEXT:    s_setpc_b64 s[30:31]2643;2644; GFX6-LABEL: local_atomic_fmin_ret_f16__offset__align4:2645; GFX6:       ; %bb.0:2646; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2647; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffe, v02648; GFX6-NEXT:    s_mov_b32 m0, -12649; GFX6-NEXT:    ds_read_b32 v1, v02650; GFX6-NEXT:    s_mov_b64 s[4:5], 02651; GFX6-NEXT:  .LBB12_1: ; %atomicrmw.start2652; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=12653; GFX6-NEXT:    s_waitcnt lgkmcnt(0)2654; GFX6-NEXT:    v_mov_b32_e32 v2, v12655; GFX6-NEXT:    v_cvt_f32_f16_e32 v1, v22656; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v22657; GFX6-NEXT:    v_min_f32_e32 v1, 4.0, v12658; GFX6-NEXT:    v_cvt_f16_f32_e32 v1, v12659; GFX6-NEXT:    v_or_b32_e32 v1, v3, v12660; GFX6-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v12661; GFX6-NEXT:    s_waitcnt lgkmcnt(0)2662; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v22663; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2664; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]2665; GFX6-NEXT:    s_cbranch_execnz .LBB12_12666; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end2667; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]2668; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v12669; GFX6-NEXT:    s_setpc_b64 s[30:31]2670  %gep = getelementptr half, ptr addrspace(3) %ptr, i32 327672671  %result = atomicrmw fmin ptr addrspace(3) %gep, half 4.0 seq_cst, align 42672  ret half %result2673}2674 2675define void @local_atomic_fmin_noret_f16__offset__align4(ptr addrspace(3) %ptr) nounwind {2676; GFX12-TRUE16-LABEL: local_atomic_fmin_noret_f16__offset__align4:2677; GFX12-TRUE16:       ; %bb.0:2678; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x02679; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x02680; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x02681; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x02682; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x02683; GFX12-TRUE16-NEXT:    ds_load_b32 v1, v0 offset:655342684; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 02685; GFX12-TRUE16-NEXT:  .LBB13_1: ; %atomicrmw.start2686; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=12687; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x02688; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v2.l, v1.l, v1.l2689; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v2.h, 02690; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2691; GFX12-TRUE16-NEXT:    v_min_num_f16_e32 v2.l, 4.0, v2.l2692; GFX12-TRUE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v1, v22693; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x02694; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v1 offset:655342695; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x02696; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE2697; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v12698; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v1, v22699; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2700; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s02701; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2702; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02703; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB13_12704; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end2705; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02706; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x02707; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]2708;2709; GFX12-FAKE16-LABEL: local_atomic_fmin_noret_f16__offset__align4:2710; GFX12-FAKE16:       ; %bb.0:2711; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x02712; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x02713; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x02714; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x02715; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x02716; GFX12-FAKE16-NEXT:    ds_load_b32 v1, v0 offset:655342717; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 02718; GFX12-FAKE16-NEXT:  .LBB13_1: ; %atomicrmw.start2719; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=12720; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x02721; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v2, v1, v12722; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2723; GFX12-FAKE16-NEXT:    v_min_num_f16_e32 v2, 4.0, v22724; GFX12-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v22725; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2726; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v1, v22727; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x02728; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v1 offset:655342729; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x02730; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE2731; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v12732; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v1, v22733; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2734; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s02735; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)2736; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02737; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB13_12738; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end2739; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02740; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x02741; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]2742;2743; GFX942-LABEL: local_atomic_fmin_noret_f16__offset__align4:2744; GFX942:       ; %bb.0:2745; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2746; GFX942-NEXT:    ds_read_b32 v1, v0 offset:655342747; GFX942-NEXT:    s_mov_b64 s[0:1], 02748; GFX942-NEXT:    s_mov_b32 s2, 0xffff00002749; GFX942-NEXT:  .LBB13_1: ; %atomicrmw.start2750; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=12751; GFX942-NEXT:    s_waitcnt lgkmcnt(0)2752; GFX942-NEXT:    v_max_f16_e32 v2, v1, v12753; GFX942-NEXT:    v_min_f16_e32 v2, 4.0, v22754; GFX942-NEXT:    v_and_or_b32 v2, v1, s2, v22755; GFX942-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655342756; GFX942-NEXT:    s_waitcnt lgkmcnt(0)2757; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v12758; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]2759; GFX942-NEXT:    v_mov_b32_e32 v1, v22760; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]2761; GFX942-NEXT:    s_cbranch_execnz .LBB13_12762; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end2763; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]2764; GFX942-NEXT:    s_setpc_b64 s[30:31]2765;2766; GFX11-TRUE16-LABEL: local_atomic_fmin_noret_f16__offset__align4:2767; GFX11-TRUE16:       ; %bb.0:2768; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2769; GFX11-TRUE16-NEXT:    ds_load_b32 v1, v0 offset:655342770; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 02771; GFX11-TRUE16-NEXT:  .LBB13_1: ; %atomicrmw.start2772; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=12773; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)2774; GFX11-TRUE16-NEXT:    v_max_f16_e32 v2.l, v1.l, v1.l2775; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.h, 02776; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2777; GFX11-TRUE16-NEXT:    v_min_f16_e32 v2.l, 4.0, v2.l2778; GFX11-TRUE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v1, v22779; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x02780; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v1 offset:655342781; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)2782; GFX11-TRUE16-NEXT:    buffer_gl0_inv2783; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v12784; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, v22785; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s02786; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2787; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02788; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB13_12789; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end2790; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02791; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]2792;2793; GFX11-FAKE16-LABEL: local_atomic_fmin_noret_f16__offset__align4:2794; GFX11-FAKE16:       ; %bb.0:2795; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2796; GFX11-FAKE16-NEXT:    ds_load_b32 v1, v0 offset:655342797; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 02798; GFX11-FAKE16-NEXT:  .LBB13_1: ; %atomicrmw.start2799; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=12800; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)2801; GFX11-FAKE16-NEXT:    v_max_f16_e32 v2, v1, v12802; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2803; GFX11-FAKE16-NEXT:    v_min_f16_e32 v2, 4.0, v22804; GFX11-FAKE16-NEXT:    v_and_b32_e32 v2, 0xffff, v22805; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2806; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v1, v22807; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x02808; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v1 offset:655342809; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)2810; GFX11-FAKE16-NEXT:    buffer_gl0_inv2811; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v12812; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v22813; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s02814; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2815; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s02816; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB13_12817; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end2818; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s02819; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]2820;2821; GFX10-LABEL: local_atomic_fmin_noret_f16__offset__align4:2822; GFX10:       ; %bb.0:2823; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2824; GFX10-NEXT:    ds_read_b32 v1, v0 offset:655342825; GFX10-NEXT:    s_mov_b32 s4, 02826; GFX10-NEXT:  .LBB13_1: ; %atomicrmw.start2827; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=12828; GFX10-NEXT:    s_waitcnt lgkmcnt(0)2829; GFX10-NEXT:    v_max_f16_e32 v2, v1, v12830; GFX10-NEXT:    v_min_f16_e32 v2, 4.0, v22831; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff, v22832; GFX10-NEXT:    v_and_or_b32 v2, 0xffff0000, v1, v22833; GFX10-NEXT:    s_waitcnt_vscnt null, 0x02834; GFX10-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655342835; GFX10-NEXT:    s_waitcnt lgkmcnt(0)2836; GFX10-NEXT:    buffer_gl0_inv2837; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v12838; GFX10-NEXT:    v_mov_b32_e32 v1, v22839; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s42840; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s42841; GFX10-NEXT:    s_cbranch_execnz .LBB13_12842; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end2843; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s42844; GFX10-NEXT:    s_setpc_b64 s[30:31]2845;2846; GFX90A-LABEL: local_atomic_fmin_noret_f16__offset__align4:2847; GFX90A:       ; %bb.0:2848; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2849; GFX90A-NEXT:    ds_read_b32 v1, v0 offset:655342850; GFX90A-NEXT:    s_mov_b64 s[4:5], 02851; GFX90A-NEXT:    s_mov_b32 s6, 0xffff00002852; GFX90A-NEXT:  .LBB13_1: ; %atomicrmw.start2853; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=12854; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)2855; GFX90A-NEXT:    v_max_f16_e32 v2, v1, v12856; GFX90A-NEXT:    v_min_f16_e32 v2, 4.0, v22857; GFX90A-NEXT:    v_and_or_b32 v2, v1, s6, v22858; GFX90A-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655342859; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)2860; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v12861; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2862; GFX90A-NEXT:    v_mov_b32_e32 v1, v22863; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]2864; GFX90A-NEXT:    s_cbranch_execnz .LBB13_12865; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end2866; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]2867; GFX90A-NEXT:    s_setpc_b64 s[30:31]2868;2869; GFX908-LABEL: local_atomic_fmin_noret_f16__offset__align4:2870; GFX908:       ; %bb.0:2871; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2872; GFX908-NEXT:    ds_read_b32 v1, v0 offset:655342873; GFX908-NEXT:    s_mov_b64 s[4:5], 02874; GFX908-NEXT:    s_mov_b32 s6, 0xffff00002875; GFX908-NEXT:  .LBB13_1: ; %atomicrmw.start2876; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=12877; GFX908-NEXT:    s_waitcnt lgkmcnt(0)2878; GFX908-NEXT:    v_max_f16_e32 v2, v1, v12879; GFX908-NEXT:    v_min_f16_e32 v2, 4.0, v22880; GFX908-NEXT:    v_and_or_b32 v2, v1, s6, v22881; GFX908-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655342882; GFX908-NEXT:    s_waitcnt lgkmcnt(0)2883; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v12884; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2885; GFX908-NEXT:    v_mov_b32_e32 v1, v22886; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]2887; GFX908-NEXT:    s_cbranch_execnz .LBB13_12888; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end2889; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]2890; GFX908-NEXT:    s_setpc_b64 s[30:31]2891;2892; GFX8-LABEL: local_atomic_fmin_noret_f16__offset__align4:2893; GFX8:       ; %bb.0:2894; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2895; GFX8-NEXT:    s_mov_b32 m0, -12896; GFX8-NEXT:    ds_read_b32 v1, v0 offset:655342897; GFX8-NEXT:    s_mov_b64 s[4:5], 02898; GFX8-NEXT:  .LBB13_1: ; %atomicrmw.start2899; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=12900; GFX8-NEXT:    s_waitcnt lgkmcnt(0)2901; GFX8-NEXT:    v_max_f16_e32 v2, v1, v12902; GFX8-NEXT:    v_and_b32_e32 v3, 0xffff0000, v12903; GFX8-NEXT:    v_min_f16_e32 v2, 4.0, v22904; GFX8-NEXT:    v_or_b32_e32 v2, v3, v22905; GFX8-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655342906; GFX8-NEXT:    s_waitcnt lgkmcnt(0)2907; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v12908; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2909; GFX8-NEXT:    v_mov_b32_e32 v1, v22910; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]2911; GFX8-NEXT:    s_cbranch_execnz .LBB13_12912; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end2913; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]2914; GFX8-NEXT:    s_setpc_b64 s[30:31]2915;2916; GFX7-LABEL: local_atomic_fmin_noret_f16__offset__align4:2917; GFX7:       ; %bb.0:2918; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2919; GFX7-NEXT:    s_mov_b32 m0, -12920; GFX7-NEXT:    ds_read_b32 v1, v0 offset:655342921; GFX7-NEXT:    s_mov_b64 s[4:5], 02922; GFX7-NEXT:  .LBB13_1: ; %atomicrmw.start2923; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=12924; GFX7-NEXT:    s_waitcnt lgkmcnt(0)2925; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v12926; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v12927; GFX7-NEXT:    v_min_f32_e32 v2, 4.0, v22928; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v22929; GFX7-NEXT:    v_or_b32_e32 v2, v3, v22930; GFX7-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655342931; GFX7-NEXT:    s_waitcnt lgkmcnt(0)2932; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v12933; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2934; GFX7-NEXT:    v_mov_b32_e32 v1, v22935; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]2936; GFX7-NEXT:    s_cbranch_execnz .LBB13_12937; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end2938; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]2939; GFX7-NEXT:    s_setpc_b64 s[30:31]2940;2941; GFX6-LABEL: local_atomic_fmin_noret_f16__offset__align4:2942; GFX6:       ; %bb.0:2943; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2944; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffe, v02945; GFX6-NEXT:    s_mov_b32 m0, -12946; GFX6-NEXT:    ds_read_b32 v1, v02947; GFX6-NEXT:    s_mov_b64 s[4:5], 02948; GFX6-NEXT:  .LBB13_1: ; %atomicrmw.start2949; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=12950; GFX6-NEXT:    s_waitcnt lgkmcnt(0)2951; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v12952; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v12953; GFX6-NEXT:    v_min_f32_e32 v2, 4.0, v22954; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v22955; GFX6-NEXT:    v_or_b32_e32 v2, v3, v22956; GFX6-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v22957; GFX6-NEXT:    s_waitcnt lgkmcnt(0)2958; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v12959; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]2960; GFX6-NEXT:    v_mov_b32_e32 v1, v22961; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]2962; GFX6-NEXT:    s_cbranch_execnz .LBB13_12963; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end2964; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]2965; GFX6-NEXT:    s_setpc_b64 s[30:31]2966  %gep = getelementptr half, ptr addrspace(3) %ptr, i32 327672967  %unused = atomicrmw fmin ptr addrspace(3) %gep, half 4.0 seq_cst, align 42968  ret void2969}2970 2971; --------------------------------------------------------------------2972; bfloat2973; --------------------------------------------------------------------2974 2975define bfloat @local_atomic_fmin_ret_bf16(ptr addrspace(3) %ptr) nounwind {2976; GFX12-TRUE16-LABEL: local_atomic_fmin_ret_bf16:2977; GFX12-TRUE16:       ; %bb.0:2978; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x02979; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x02980; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x02981; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x02982; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x02983; GFX12-TRUE16-NEXT:    v_and_b32_e32 v1, -4, v02984; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v02985; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 02986; GFX12-TRUE16-NEXT:    ds_load_b32 v3, v12987; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v0, 0xffff2988; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, 24, v02989; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)2990; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v22991; GFX12-TRUE16-NEXT:  .LBB14_1: ; %atomicrmw.start2992; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=12993; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x02994; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v32995; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2996; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v0, v42997; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v32998; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2999; GFX12-TRUE16-NEXT:    v_min_num_f32_e32 v3, 4.0, v33000; GFX12-TRUE16-NEXT:    v_bfe_u32 v5, v3, 16, 13001; GFX12-TRUE16-NEXT:    v_or_b32_e32 v6, 0x400000, v33002; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v33003; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)3004; GFX12-TRUE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff3005; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)3006; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo3007; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 03008; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3009; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h3010; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v0, v53011; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)3012; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v2, v33013; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x03014; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v3, v1, v3, v43015; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x03016; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE3017; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43018; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3019; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s03020; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3021; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03022; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB14_13023; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end3024; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s03025; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v0, v33026; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x03027; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]3028;3029; GFX12-FAKE16-LABEL: local_atomic_fmin_ret_bf16:3030; GFX12-FAKE16:       ; %bb.0:3031; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x03032; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x03033; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x03034; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x03035; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x03036; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, -4, v03037; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v03038; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 03039; GFX12-FAKE16-NEXT:    ds_load_b32 v3, v13040; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v0, 0xffff3041; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, 24, v03042; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)3043; GFX12-FAKE16-NEXT:    v_not_b32_e32 v2, v23044; GFX12-FAKE16-NEXT:  .LBB14_1: ; %atomicrmw.start3045; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=13046; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x03047; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v33048; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3049; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v0, v43050; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v33051; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3052; GFX12-FAKE16-NEXT:    v_min_num_f32_e32 v3, 4.0, v33053; GFX12-FAKE16-NEXT:    v_bfe_u32 v5, v3, 16, 13054; GFX12-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v33055; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v33056; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)3057; GFX12-FAKE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff3058; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)3059; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo3060; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3061; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v33062; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v0, v33063; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)3064; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, v4, v2, v33065; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x03066; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v3, v1, v3, v43067; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x03068; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE3069; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43070; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3071; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s03072; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3073; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03074; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB14_13075; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end3076; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s03077; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v0, v33078; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x03079; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]3080;3081; GFX942-LABEL: local_atomic_fmin_ret_bf16:3082; GFX942:       ; %bb.0:3083; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3084; GFX942-NEXT:    v_and_b32_e32 v1, -4, v03085; GFX942-NEXT:    ds_read_b32 v3, v13086; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 3, v03087; GFX942-NEXT:    s_mov_b32 s0, 0xffff3088; GFX942-NEXT:    v_and_b32_e32 v0, 24, v23089; GFX942-NEXT:    v_lshlrev_b32_e64 v2, v2, s03090; GFX942-NEXT:    v_not_b32_e32 v2, v23091; GFX942-NEXT:    s_mov_b64 s[0:1], 03092; GFX942-NEXT:    s_movk_i32 s2, 0x7fff3093; GFX942-NEXT:  .LBB14_1: ; %atomicrmw.start3094; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=13095; GFX942-NEXT:    s_waitcnt lgkmcnt(0)3096; GFX942-NEXT:    v_lshrrev_b32_sdwa v4, v0, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD3097; GFX942-NEXT:    s_nop 03098; GFX942-NEXT:    v_min_f32_e32 v4, 4.0, v43099; GFX942-NEXT:    v_bfe_u32 v5, v4, 16, 13100; GFX942-NEXT:    v_or_b32_e32 v6, 0x400000, v43101; GFX942-NEXT:    v_add3_u32 v5, v5, v4, s23102; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v4, v43103; GFX942-NEXT:    s_nop 13104; GFX942-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc3105; GFX942-NEXT:    v_lshlrev_b32_sdwa v4, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_13106; GFX942-NEXT:    v_and_or_b32 v4, v3, v2, v43107; GFX942-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v43108; GFX942-NEXT:    s_waitcnt lgkmcnt(0)3109; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v33110; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]3111; GFX942-NEXT:    v_mov_b32_e32 v3, v43112; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]3113; GFX942-NEXT:    s_cbranch_execnz .LBB14_13114; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end3115; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]3116; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v0, v43117; GFX942-NEXT:    s_setpc_b64 s[30:31]3118;3119; GFX11-TRUE16-LABEL: local_atomic_fmin_ret_bf16:3120; GFX11-TRUE16:       ; %bb.0:3121; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3122; GFX11-TRUE16-NEXT:    v_and_b32_e32 v1, -4, v03123; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v03124; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 03125; GFX11-TRUE16-NEXT:    ds_load_b32 v3, v13126; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v0, 0xffff3127; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, 24, v03128; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)3129; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v23130; GFX11-TRUE16-NEXT:    .p2align 63131; GFX11-TRUE16-NEXT:  .LBB14_1: ; %atomicrmw.start3132; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=13133; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)3134; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v33135; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3136; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v0, v43137; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v33138; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3139; GFX11-TRUE16-NEXT:    v_min_f32_e32 v3, 4.0, v33140; GFX11-TRUE16-NEXT:    v_bfe_u32 v5, v3, 16, 13141; GFX11-TRUE16-NEXT:    v_or_b32_e32 v6, 0x400000, v33142; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v33143; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)3144; GFX11-TRUE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff3145; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo3146; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 03147; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3148; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h3149; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v0, v53150; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)3151; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v2, v33152; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x03153; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v3, v1, v3, v43154; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)3155; GFX11-TRUE16-NEXT:    buffer_gl0_inv3156; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43157; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s03158; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3159; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03160; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB14_13161; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end3162; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s03163; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v0, v33164; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]3165;3166; GFX11-FAKE16-LABEL: local_atomic_fmin_ret_bf16:3167; GFX11-FAKE16:       ; %bb.0:3168; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3169; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, -4, v03170; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v03171; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 03172; GFX11-FAKE16-NEXT:    ds_load_b32 v3, v13173; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v0, 0xffff3174; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, 24, v03175; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)3176; GFX11-FAKE16-NEXT:    v_not_b32_e32 v2, v23177; GFX11-FAKE16-NEXT:    .p2align 63178; GFX11-FAKE16-NEXT:  .LBB14_1: ; %atomicrmw.start3179; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=13180; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)3181; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v33182; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3183; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v0, v43184; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v33185; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3186; GFX11-FAKE16-NEXT:    v_min_f32_e32 v3, 4.0, v33187; GFX11-FAKE16-NEXT:    v_bfe_u32 v5, v3, 16, 13188; GFX11-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v33189; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v33190; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)3191; GFX11-FAKE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff3192; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo3193; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3194; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v33195; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v0, v33196; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)3197; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, v4, v2, v33198; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x03199; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v3, v1, v3, v43200; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)3201; GFX11-FAKE16-NEXT:    buffer_gl0_inv3202; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43203; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s03204; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3205; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03206; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB14_13207; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end3208; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s03209; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v0, v33210; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]3211;3212; GFX10-LABEL: local_atomic_fmin_ret_bf16:3213; GFX10:       ; %bb.0:3214; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3215; GFX10-NEXT:    v_and_b32_e32 v1, -4, v03216; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 3, v03217; GFX10-NEXT:    s_mov_b32 s4, 03218; GFX10-NEXT:    ds_read_b32 v3, v13219; GFX10-NEXT:    v_lshlrev_b32_e64 v2, v0, 0xffff3220; GFX10-NEXT:    v_and_b32_e32 v0, 24, v03221; GFX10-NEXT:    v_not_b32_e32 v2, v23222; GFX10-NEXT:  .LBB14_1: ; %atomicrmw.start3223; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=13224; GFX10-NEXT:    s_waitcnt lgkmcnt(0)3225; GFX10-NEXT:    v_mov_b32_e32 v4, v33226; GFX10-NEXT:    v_lshrrev_b32_sdwa v3, v0, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD3227; GFX10-NEXT:    v_min_f32_e32 v3, 4.0, v33228; GFX10-NEXT:    v_bfe_u32 v5, v3, 16, 13229; GFX10-NEXT:    v_or_b32_e32 v6, 0x400000, v33230; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v33231; GFX10-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff3232; GFX10-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo3233; GFX10-NEXT:    v_lshlrev_b32_sdwa v3, v0, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_13234; GFX10-NEXT:    v_and_or_b32 v3, v4, v2, v33235; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03236; GFX10-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v33237; GFX10-NEXT:    s_waitcnt lgkmcnt(0)3238; GFX10-NEXT:    buffer_gl0_inv3239; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43240; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s43241; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s43242; GFX10-NEXT:    s_cbranch_execnz .LBB14_13243; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end3244; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s43245; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v0, v33246; GFX10-NEXT:    s_setpc_b64 s[30:31]3247;3248; GFX90A-LABEL: local_atomic_fmin_ret_bf16:3249; GFX90A:       ; %bb.0:3250; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3251; GFX90A-NEXT:    v_and_b32_e32 v1, -4, v03252; GFX90A-NEXT:    ds_read_b32 v3, v13253; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 3, v03254; GFX90A-NEXT:    s_mov_b32 s4, 0xffff3255; GFX90A-NEXT:    v_and_b32_e32 v0, 24, v23256; GFX90A-NEXT:    v_lshlrev_b32_e64 v2, v2, s43257; GFX90A-NEXT:    v_not_b32_e32 v2, v23258; GFX90A-NEXT:    s_mov_b64 s[4:5], 03259; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff3260; GFX90A-NEXT:  .LBB14_1: ; %atomicrmw.start3261; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=13262; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)3263; GFX90A-NEXT:    v_lshrrev_b32_sdwa v4, v0, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD3264; GFX90A-NEXT:    v_min_f32_e32 v4, 4.0, v43265; GFX90A-NEXT:    v_bfe_u32 v5, v4, 16, 13266; GFX90A-NEXT:    v_or_b32_e32 v6, 0x400000, v43267; GFX90A-NEXT:    v_add3_u32 v5, v5, v4, s63268; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v4, v43269; GFX90A-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc3270; GFX90A-NEXT:    v_lshlrev_b32_sdwa v4, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_13271; GFX90A-NEXT:    v_and_or_b32 v4, v3, v2, v43272; GFX90A-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v43273; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)3274; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v33275; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3276; GFX90A-NEXT:    v_mov_b32_e32 v3, v43277; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]3278; GFX90A-NEXT:    s_cbranch_execnz .LBB14_13279; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end3280; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]3281; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v0, v43282; GFX90A-NEXT:    s_setpc_b64 s[30:31]3283;3284; GFX908-LABEL: local_atomic_fmin_ret_bf16:3285; GFX908:       ; %bb.0:3286; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3287; GFX908-NEXT:    v_and_b32_e32 v1, -4, v03288; GFX908-NEXT:    ds_read_b32 v3, v13289; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 3, v03290; GFX908-NEXT:    s_mov_b32 s4, 0xffff3291; GFX908-NEXT:    v_and_b32_e32 v0, 24, v23292; GFX908-NEXT:    v_lshlrev_b32_e64 v2, v2, s43293; GFX908-NEXT:    v_not_b32_e32 v2, v23294; GFX908-NEXT:    s_mov_b64 s[4:5], 03295; GFX908-NEXT:    s_movk_i32 s6, 0x7fff3296; GFX908-NEXT:  .LBB14_1: ; %atomicrmw.start3297; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=13298; GFX908-NEXT:    s_waitcnt lgkmcnt(0)3299; GFX908-NEXT:    v_mov_b32_e32 v4, v33300; GFX908-NEXT:    v_lshrrev_b32_sdwa v3, v0, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD3301; GFX908-NEXT:    v_min_f32_e32 v3, 4.0, v33302; GFX908-NEXT:    v_bfe_u32 v5, v3, 16, 13303; GFX908-NEXT:    v_or_b32_e32 v6, 0x400000, v33304; GFX908-NEXT:    v_add3_u32 v5, v5, v3, s63305; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v3, v33306; GFX908-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc3307; GFX908-NEXT:    v_lshlrev_b32_sdwa v3, v0, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_13308; GFX908-NEXT:    v_and_or_b32 v3, v4, v2, v33309; GFX908-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v33310; GFX908-NEXT:    s_waitcnt lgkmcnt(0)3311; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v43312; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3313; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]3314; GFX908-NEXT:    s_cbranch_execnz .LBB14_13315; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end3316; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3317; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v0, v33318; GFX908-NEXT:    s_setpc_b64 s[30:31]3319;3320; GFX8-LABEL: local_atomic_fmin_ret_bf16:3321; GFX8:       ; %bb.0:3322; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3323; GFX8-NEXT:    v_and_b32_e32 v1, -4, v03324; GFX8-NEXT:    s_mov_b32 m0, -13325; GFX8-NEXT:    ds_read_b32 v3, v13326; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 3, v03327; GFX8-NEXT:    s_mov_b32 s4, 0xffff3328; GFX8-NEXT:    v_and_b32_e32 v0, 24, v23329; GFX8-NEXT:    v_lshlrev_b32_e64 v2, v2, s43330; GFX8-NEXT:    v_not_b32_e32 v2, v23331; GFX8-NEXT:    s_mov_b64 s[4:5], 03332; GFX8-NEXT:  .LBB14_1: ; %atomicrmw.start3333; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=13334; GFX8-NEXT:    s_waitcnt lgkmcnt(0)3335; GFX8-NEXT:    v_mov_b32_e32 v4, v33336; GFX8-NEXT:    v_lshrrev_b32_sdwa v3, v0, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD3337; GFX8-NEXT:    v_min_f32_e32 v3, 4.0, v33338; GFX8-NEXT:    v_bfe_u32 v6, v3, 16, 13339; GFX8-NEXT:    v_add_u32_e32 v6, vcc, v6, v33340; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0x7fff, v63341; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v33342; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v3, v33343; GFX8-NEXT:    v_cndmask_b32_e32 v3, v6, v7, vcc3344; GFX8-NEXT:    v_and_b32_e32 v5, v4, v23345; GFX8-NEXT:    v_lshlrev_b32_sdwa v3, v0, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_13346; GFX8-NEXT:    v_or_b32_e32 v3, v5, v33347; GFX8-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v33348; GFX8-NEXT:    s_waitcnt lgkmcnt(0)3349; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v43350; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3351; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]3352; GFX8-NEXT:    s_cbranch_execnz .LBB14_13353; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end3354; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3355; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v0, v33356; GFX8-NEXT:    s_setpc_b64 s[30:31]3357;3358; GFX7-LABEL: local_atomic_fmin_ret_bf16:3359; GFX7:       ; %bb.0:3360; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3361; GFX7-NEXT:    v_and_b32_e32 v1, -4, v03362; GFX7-NEXT:    s_mov_b32 m0, -13363; GFX7-NEXT:    ds_read_b32 v3, v13364; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 3, v03365; GFX7-NEXT:    v_and_b32_e32 v0, 24, v23366; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v23367; GFX7-NEXT:    v_not_b32_e32 v2, v23368; GFX7-NEXT:    s_mov_b64 s[4:5], 03369; GFX7-NEXT:  .LBB14_1: ; %atomicrmw.start3370; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=13371; GFX7-NEXT:    s_waitcnt lgkmcnt(0)3372; GFX7-NEXT:    v_mov_b32_e32 v4, v33373; GFX7-NEXT:    v_lshrrev_b32_e32 v3, v0, v43374; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v33375; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v33376; GFX7-NEXT:    v_min_f32_e32 v3, 4.0, v33377; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v33378; GFX7-NEXT:    v_and_b32_e32 v5, v4, v23379; GFX7-NEXT:    v_lshlrev_b32_e32 v3, v0, v33380; GFX7-NEXT:    v_or_b32_e32 v3, v5, v33381; GFX7-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v33382; GFX7-NEXT:    s_waitcnt lgkmcnt(0)3383; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v43384; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3385; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]3386; GFX7-NEXT:    s_cbranch_execnz .LBB14_13387; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end3388; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]3389; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v0, v33390; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v03391; GFX7-NEXT:    s_setpc_b64 s[30:31]3392;3393; GFX6-LABEL: local_atomic_fmin_ret_bf16:3394; GFX6:       ; %bb.0:3395; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3396; GFX6-NEXT:    v_and_b32_e32 v1, -4, v03397; GFX6-NEXT:    s_mov_b32 m0, -13398; GFX6-NEXT:    ds_read_b32 v3, v13399; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 3, v03400; GFX6-NEXT:    v_and_b32_e32 v0, 24, v23401; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v23402; GFX6-NEXT:    v_not_b32_e32 v2, v23403; GFX6-NEXT:    s_mov_b64 s[4:5], 03404; GFX6-NEXT:  .LBB14_1: ; %atomicrmw.start3405; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=13406; GFX6-NEXT:    s_waitcnt lgkmcnt(0)3407; GFX6-NEXT:    v_mov_b32_e32 v4, v33408; GFX6-NEXT:    v_lshrrev_b32_e32 v3, v0, v43409; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v33410; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v33411; GFX6-NEXT:    v_min_f32_e32 v3, 4.0, v33412; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v33413; GFX6-NEXT:    v_and_b32_e32 v5, v4, v23414; GFX6-NEXT:    v_lshlrev_b32_e32 v3, v0, v33415; GFX6-NEXT:    v_or_b32_e32 v3, v5, v33416; GFX6-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v33417; GFX6-NEXT:    s_waitcnt lgkmcnt(0)3418; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v43419; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3420; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]3421; GFX6-NEXT:    s_cbranch_execnz .LBB14_13422; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end3423; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]3424; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v0, v33425; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v03426; GFX6-NEXT:    s_setpc_b64 s[30:31]3427  %result = atomicrmw fmin ptr addrspace(3) %ptr, bfloat 4.0 seq_cst3428  ret bfloat %result3429}3430 3431define bfloat @local_atomic_fmin_ret_bf16__offset(ptr addrspace(3) %ptr) nounwind {3432; GFX12-TRUE16-LABEL: local_atomic_fmin_ret_bf16__offset:3433; GFX12-TRUE16:       ; %bb.0:3434; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x03435; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x03436; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x03437; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x03438; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x03439; GFX12-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v03440; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 03441; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)3442; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v13443; GFX12-TRUE16-NEXT:    v_and_b32_e32 v1, 3, v13444; GFX12-TRUE16-NEXT:    ds_load_b32 v3, v03445; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v13446; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff3447; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)3448; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v23449; GFX12-TRUE16-NEXT:  .LBB15_1: ; %atomicrmw.start3450; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=13451; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x03452; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v33453; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3454; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v1, v43455; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v33456; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3457; GFX12-TRUE16-NEXT:    v_min_num_f32_e32 v3, 4.0, v33458; GFX12-TRUE16-NEXT:    v_bfe_u32 v5, v3, 16, 13459; GFX12-TRUE16-NEXT:    v_or_b32_e32 v6, 0x400000, v33460; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v33461; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)3462; GFX12-TRUE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff3463; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)3464; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo3465; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 03466; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3467; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h3468; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v1, v53469; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)3470; GFX12-TRUE16-NEXT:    v_and_or_b32 v3, v4, v2, v33471; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x03472; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v43473; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x03474; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE3475; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43476; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3477; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s03478; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3479; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03480; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB15_13481; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end3482; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s03483; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v33484; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x03485; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]3486;3487; GFX12-FAKE16-LABEL: local_atomic_fmin_ret_bf16__offset:3488; GFX12-FAKE16:       ; %bb.0:3489; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x03490; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x03491; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x03492; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x03493; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x03494; GFX12-FAKE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v03495; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 03496; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)3497; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v13498; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, 3, v13499; GFX12-FAKE16-NEXT:    ds_load_b32 v3, v03500; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v13501; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff3502; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)3503; GFX12-FAKE16-NEXT:    v_not_b32_e32 v2, v23504; GFX12-FAKE16-NEXT:  .LBB15_1: ; %atomicrmw.start3505; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=13506; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x03507; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v33508; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3509; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v1, v43510; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v33511; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3512; GFX12-FAKE16-NEXT:    v_min_num_f32_e32 v3, 4.0, v33513; GFX12-FAKE16-NEXT:    v_bfe_u32 v5, v3, 16, 13514; GFX12-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v33515; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v33516; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)3517; GFX12-FAKE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff3518; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)3519; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo3520; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3521; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v33522; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v1, v33523; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)3524; GFX12-FAKE16-NEXT:    v_and_or_b32 v3, v4, v2, v33525; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x03526; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v43527; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x03528; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE3529; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43530; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3531; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s03532; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3533; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03534; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB15_13535; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end3536; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s03537; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v33538; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x03539; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]3540;3541; GFX942-LABEL: local_atomic_fmin_ret_bf16__offset:3542; GFX942:       ; %bb.0:3543; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3544; GFX942-NEXT:    v_add_u32_e32 v0, 0xfffe, v03545; GFX942-NEXT:    v_and_b32_e32 v1, -4, v03546; GFX942-NEXT:    ds_read_b32 v3, v13547; GFX942-NEXT:    v_and_b32_e32 v0, 3, v03548; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 3, v03549; GFX942-NEXT:    s_mov_b32 s0, 0xffff3550; GFX942-NEXT:    v_lshlrev_b32_e64 v2, v0, s03551; GFX942-NEXT:    v_not_b32_e32 v2, v23552; GFX942-NEXT:    s_mov_b64 s[0:1], 03553; GFX942-NEXT:    s_movk_i32 s2, 0x7fff3554; GFX942-NEXT:  .LBB15_1: ; %atomicrmw.start3555; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=13556; GFX942-NEXT:    s_waitcnt lgkmcnt(0)3557; GFX942-NEXT:    v_lshrrev_b32_sdwa v4, v0, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD3558; GFX942-NEXT:    s_nop 03559; GFX942-NEXT:    v_min_f32_e32 v4, 4.0, v43560; GFX942-NEXT:    v_bfe_u32 v5, v4, 16, 13561; GFX942-NEXT:    v_or_b32_e32 v6, 0x400000, v43562; GFX942-NEXT:    v_add3_u32 v5, v5, v4, s23563; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v4, v43564; GFX942-NEXT:    s_nop 13565; GFX942-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc3566; GFX942-NEXT:    v_lshlrev_b32_sdwa v4, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_13567; GFX942-NEXT:    v_and_or_b32 v4, v3, v2, v43568; GFX942-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v43569; GFX942-NEXT:    s_waitcnt lgkmcnt(0)3570; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v33571; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]3572; GFX942-NEXT:    v_mov_b32_e32 v3, v43573; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]3574; GFX942-NEXT:    s_cbranch_execnz .LBB15_13575; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end3576; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]3577; GFX942-NEXT:    v_lshrrev_b32_e32 v0, v0, v43578; GFX942-NEXT:    s_setpc_b64 s[30:31]3579;3580; GFX11-TRUE16-LABEL: local_atomic_fmin_ret_bf16__offset:3581; GFX11-TRUE16:       ; %bb.0:3582; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3583; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v03584; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 03585; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)3586; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v13587; GFX11-TRUE16-NEXT:    v_and_b32_e32 v1, 3, v13588; GFX11-TRUE16-NEXT:    ds_load_b32 v3, v03589; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v13590; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff3591; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)3592; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v23593; GFX11-TRUE16-NEXT:    .p2align 63594; GFX11-TRUE16-NEXT:  .LBB15_1: ; %atomicrmw.start3595; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=13596; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)3597; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v33598; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3599; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, v1, v43600; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v33601; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3602; GFX11-TRUE16-NEXT:    v_min_f32_e32 v3, 4.0, v33603; GFX11-TRUE16-NEXT:    v_bfe_u32 v5, v3, 16, 13604; GFX11-TRUE16-NEXT:    v_or_b32_e32 v6, 0x400000, v33605; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v33606; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)3607; GFX11-TRUE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff3608; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo3609; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 03610; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3611; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v3.h3612; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v3, v1, v53613; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)3614; GFX11-TRUE16-NEXT:    v_and_or_b32 v3, v4, v2, v33615; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x03616; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v43617; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)3618; GFX11-TRUE16-NEXT:    buffer_gl0_inv3619; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43620; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s03621; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3622; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03623; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB15_13624; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end3625; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s03626; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v33627; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]3628;3629; GFX11-FAKE16-LABEL: local_atomic_fmin_ret_bf16__offset:3630; GFX11-FAKE16:       ; %bb.0:3631; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3632; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v03633; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 03634; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)3635; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v13636; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 3, v13637; GFX11-FAKE16-NEXT:    ds_load_b32 v3, v03638; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v13639; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff3640; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)3641; GFX11-FAKE16-NEXT:    v_not_b32_e32 v2, v23642; GFX11-FAKE16-NEXT:    .p2align 63643; GFX11-FAKE16-NEXT:  .LBB15_1: ; %atomicrmw.start3644; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=13645; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)3646; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v33647; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3648; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, v1, v43649; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v33650; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3651; GFX11-FAKE16-NEXT:    v_min_f32_e32 v3, 4.0, v33652; GFX11-FAKE16-NEXT:    v_bfe_u32 v5, v3, 16, 13653; GFX11-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v33654; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v33655; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)3656; GFX11-FAKE16-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff3657; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo3658; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3659; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v33660; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, v1, v33661; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)3662; GFX11-FAKE16-NEXT:    v_and_or_b32 v3, v4, v2, v33663; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x03664; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v43665; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)3666; GFX11-FAKE16-NEXT:    buffer_gl0_inv3667; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43668; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s03669; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)3670; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03671; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB15_13672; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end3673; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s03674; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v0, v1, v33675; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]3676;3677; GFX10-LABEL: local_atomic_fmin_ret_bf16__offset:3678; GFX10:       ; %bb.0:3679; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3680; GFX10-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v03681; GFX10-NEXT:    s_mov_b32 s4, 03682; GFX10-NEXT:    v_and_b32_e32 v0, -4, v13683; GFX10-NEXT:    v_and_b32_e32 v1, 3, v13684; GFX10-NEXT:    ds_read_b32 v3, v03685; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 3, v13686; GFX10-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff3687; GFX10-NEXT:    v_not_b32_e32 v2, v23688; GFX10-NEXT:  .LBB15_1: ; %atomicrmw.start3689; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=13690; GFX10-NEXT:    s_waitcnt lgkmcnt(0)3691; GFX10-NEXT:    v_mov_b32_e32 v4, v33692; GFX10-NEXT:    v_lshrrev_b32_sdwa v3, v1, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD3693; GFX10-NEXT:    v_min_f32_e32 v3, 4.0, v33694; GFX10-NEXT:    v_bfe_u32 v5, v3, 16, 13695; GFX10-NEXT:    v_or_b32_e32 v6, 0x400000, v33696; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v3, v33697; GFX10-NEXT:    v_add3_u32 v5, v5, v3, 0x7fff3698; GFX10-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc_lo3699; GFX10-NEXT:    v_lshlrev_b32_sdwa v3, v1, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_13700; GFX10-NEXT:    v_and_or_b32 v3, v4, v2, v33701; GFX10-NEXT:    s_waitcnt_vscnt null, 0x03702; GFX10-NEXT:    ds_cmpst_rtn_b32 v3, v0, v4, v33703; GFX10-NEXT:    s_waitcnt lgkmcnt(0)3704; GFX10-NEXT:    buffer_gl0_inv3705; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v43706; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s43707; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s43708; GFX10-NEXT:    s_cbranch_execnz .LBB15_13709; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end3710; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s43711; GFX10-NEXT:    v_lshrrev_b32_e32 v0, v1, v33712; GFX10-NEXT:    s_setpc_b64 s[30:31]3713;3714; GFX90A-LABEL: local_atomic_fmin_ret_bf16__offset:3715; GFX90A:       ; %bb.0:3716; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3717; GFX90A-NEXT:    v_add_u32_e32 v0, 0xfffe, v03718; GFX90A-NEXT:    v_and_b32_e32 v1, -4, v03719; GFX90A-NEXT:    ds_read_b32 v3, v13720; GFX90A-NEXT:    v_and_b32_e32 v0, 3, v03721; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 3, v03722; GFX90A-NEXT:    s_mov_b32 s4, 0xffff3723; GFX90A-NEXT:    v_lshlrev_b32_e64 v2, v0, s43724; GFX90A-NEXT:    v_not_b32_e32 v2, v23725; GFX90A-NEXT:    s_mov_b64 s[4:5], 03726; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff3727; GFX90A-NEXT:  .LBB15_1: ; %atomicrmw.start3728; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=13729; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)3730; GFX90A-NEXT:    v_lshrrev_b32_sdwa v4, v0, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD3731; GFX90A-NEXT:    v_min_f32_e32 v4, 4.0, v43732; GFX90A-NEXT:    v_bfe_u32 v5, v4, 16, 13733; GFX90A-NEXT:    v_or_b32_e32 v6, 0x400000, v43734; GFX90A-NEXT:    v_add3_u32 v5, v5, v4, s63735; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v4, v43736; GFX90A-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc3737; GFX90A-NEXT:    v_lshlrev_b32_sdwa v4, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_13738; GFX90A-NEXT:    v_and_or_b32 v4, v3, v2, v43739; GFX90A-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v43740; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)3741; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v33742; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3743; GFX90A-NEXT:    v_mov_b32_e32 v3, v43744; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]3745; GFX90A-NEXT:    s_cbranch_execnz .LBB15_13746; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end3747; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]3748; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, v0, v43749; GFX90A-NEXT:    s_setpc_b64 s[30:31]3750;3751; GFX908-LABEL: local_atomic_fmin_ret_bf16__offset:3752; GFX908:       ; %bb.0:3753; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3754; GFX908-NEXT:    v_add_u32_e32 v0, 0xfffe, v03755; GFX908-NEXT:    v_and_b32_e32 v1, -4, v03756; GFX908-NEXT:    ds_read_b32 v3, v13757; GFX908-NEXT:    v_and_b32_e32 v0, 3, v03758; GFX908-NEXT:    v_lshlrev_b32_e32 v0, 3, v03759; GFX908-NEXT:    s_mov_b32 s4, 0xffff3760; GFX908-NEXT:    v_lshlrev_b32_e64 v2, v0, s43761; GFX908-NEXT:    v_not_b32_e32 v2, v23762; GFX908-NEXT:    s_mov_b64 s[4:5], 03763; GFX908-NEXT:    s_movk_i32 s6, 0x7fff3764; GFX908-NEXT:  .LBB15_1: ; %atomicrmw.start3765; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=13766; GFX908-NEXT:    s_waitcnt lgkmcnt(0)3767; GFX908-NEXT:    v_mov_b32_e32 v4, v33768; GFX908-NEXT:    v_lshrrev_b32_sdwa v3, v0, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD3769; GFX908-NEXT:    v_min_f32_e32 v3, 4.0, v33770; GFX908-NEXT:    v_bfe_u32 v5, v3, 16, 13771; GFX908-NEXT:    v_or_b32_e32 v6, 0x400000, v33772; GFX908-NEXT:    v_add3_u32 v5, v5, v3, s63773; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v3, v33774; GFX908-NEXT:    v_cndmask_b32_e32 v3, v5, v6, vcc3775; GFX908-NEXT:    v_lshlrev_b32_sdwa v3, v0, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_13776; GFX908-NEXT:    v_and_or_b32 v3, v4, v2, v33777; GFX908-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v33778; GFX908-NEXT:    s_waitcnt lgkmcnt(0)3779; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v43780; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3781; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]3782; GFX908-NEXT:    s_cbranch_execnz .LBB15_13783; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end3784; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]3785; GFX908-NEXT:    v_lshrrev_b32_e32 v0, v0, v33786; GFX908-NEXT:    s_setpc_b64 s[30:31]3787;3788; GFX8-LABEL: local_atomic_fmin_ret_bf16__offset:3789; GFX8:       ; %bb.0:3790; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3791; GFX8-NEXT:    v_add_u32_e32 v0, vcc, 0xfffe, v03792; GFX8-NEXT:    v_and_b32_e32 v1, -4, v03793; GFX8-NEXT:    s_mov_b32 m0, -13794; GFX8-NEXT:    ds_read_b32 v3, v13795; GFX8-NEXT:    v_and_b32_e32 v0, 3, v03796; GFX8-NEXT:    v_lshlrev_b32_e32 v0, 3, v03797; GFX8-NEXT:    s_mov_b32 s4, 0xffff3798; GFX8-NEXT:    v_lshlrev_b32_e64 v2, v0, s43799; GFX8-NEXT:    v_not_b32_e32 v2, v23800; GFX8-NEXT:    s_mov_b64 s[4:5], 03801; GFX8-NEXT:  .LBB15_1: ; %atomicrmw.start3802; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=13803; GFX8-NEXT:    s_waitcnt lgkmcnt(0)3804; GFX8-NEXT:    v_mov_b32_e32 v4, v33805; GFX8-NEXT:    v_lshrrev_b32_sdwa v3, v0, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD3806; GFX8-NEXT:    v_min_f32_e32 v3, 4.0, v33807; GFX8-NEXT:    v_bfe_u32 v6, v3, 16, 13808; GFX8-NEXT:    v_add_u32_e32 v6, vcc, v6, v33809; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0x7fff, v63810; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v33811; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v3, v33812; GFX8-NEXT:    v_cndmask_b32_e32 v3, v6, v7, vcc3813; GFX8-NEXT:    v_and_b32_e32 v5, v4, v23814; GFX8-NEXT:    v_lshlrev_b32_sdwa v3, v0, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_13815; GFX8-NEXT:    v_or_b32_e32 v3, v5, v33816; GFX8-NEXT:    ds_cmpst_rtn_b32 v3, v1, v4, v33817; GFX8-NEXT:    s_waitcnt lgkmcnt(0)3818; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v43819; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3820; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]3821; GFX8-NEXT:    s_cbranch_execnz .LBB15_13822; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end3823; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]3824; GFX8-NEXT:    v_lshrrev_b32_e32 v0, v0, v33825; GFX8-NEXT:    s_setpc_b64 s[30:31]3826;3827; GFX7-LABEL: local_atomic_fmin_ret_bf16__offset:3828; GFX7:       ; %bb.0:3829; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3830; GFX7-NEXT:    v_add_i32_e32 v1, vcc, 0xfffe, v03831; GFX7-NEXT:    v_and_b32_e32 v0, -4, v13832; GFX7-NEXT:    s_mov_b32 m0, -13833; GFX7-NEXT:    ds_read_b32 v3, v03834; GFX7-NEXT:    v_and_b32_e32 v1, 3, v13835; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 3, v13836; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v13837; GFX7-NEXT:    v_not_b32_e32 v2, v23838; GFX7-NEXT:    s_mov_b64 s[4:5], 03839; GFX7-NEXT:  .LBB15_1: ; %atomicrmw.start3840; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=13841; GFX7-NEXT:    s_waitcnt lgkmcnt(0)3842; GFX7-NEXT:    v_mov_b32_e32 v4, v33843; GFX7-NEXT:    v_lshrrev_b32_e32 v3, v1, v43844; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v33845; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v33846; GFX7-NEXT:    v_min_f32_e32 v3, 4.0, v33847; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v33848; GFX7-NEXT:    v_and_b32_e32 v5, v4, v23849; GFX7-NEXT:    v_lshlrev_b32_e32 v3, v1, v33850; GFX7-NEXT:    v_or_b32_e32 v3, v5, v33851; GFX7-NEXT:    ds_cmpst_rtn_b32 v3, v0, v4, v33852; GFX7-NEXT:    s_waitcnt lgkmcnt(0)3853; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v43854; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3855; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]3856; GFX7-NEXT:    s_cbranch_execnz .LBB15_13857; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end3858; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]3859; GFX7-NEXT:    v_lshrrev_b32_e32 v0, v1, v33860; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v03861; GFX7-NEXT:    s_setpc_b64 s[30:31]3862;3863; GFX6-LABEL: local_atomic_fmin_ret_bf16__offset:3864; GFX6:       ; %bb.0:3865; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3866; GFX6-NEXT:    v_add_i32_e32 v1, vcc, 0xfffe, v03867; GFX6-NEXT:    v_and_b32_e32 v0, -4, v13868; GFX6-NEXT:    s_mov_b32 m0, -13869; GFX6-NEXT:    ds_read_b32 v3, v03870; GFX6-NEXT:    v_and_b32_e32 v1, 3, v13871; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 3, v13872; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v13873; GFX6-NEXT:    v_not_b32_e32 v2, v23874; GFX6-NEXT:    s_mov_b64 s[4:5], 03875; GFX6-NEXT:  .LBB15_1: ; %atomicrmw.start3876; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=13877; GFX6-NEXT:    s_waitcnt lgkmcnt(0)3878; GFX6-NEXT:    v_mov_b32_e32 v4, v33879; GFX6-NEXT:    v_lshrrev_b32_e32 v3, v1, v43880; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v33881; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v33882; GFX6-NEXT:    v_min_f32_e32 v3, 4.0, v33883; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v33884; GFX6-NEXT:    v_and_b32_e32 v5, v4, v23885; GFX6-NEXT:    v_lshlrev_b32_e32 v3, v1, v33886; GFX6-NEXT:    v_or_b32_e32 v3, v5, v33887; GFX6-NEXT:    ds_cmpst_rtn_b32 v3, v0, v4, v33888; GFX6-NEXT:    s_waitcnt lgkmcnt(0)3889; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v43890; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]3891; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]3892; GFX6-NEXT:    s_cbranch_execnz .LBB15_13893; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end3894; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]3895; GFX6-NEXT:    v_lshrrev_b32_e32 v0, v1, v33896; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v03897; GFX6-NEXT:    s_setpc_b64 s[30:31]3898  %gep = getelementptr bfloat, ptr addrspace(3) %ptr, i32 327673899  %result = atomicrmw fmin ptr addrspace(3) %gep, bfloat 4.0 seq_cst3900  ret bfloat %result3901}3902 3903define void @local_atomic_fmin_noret_bf16(ptr addrspace(3) %ptr) nounwind {3904; GFX12-TRUE16-LABEL: local_atomic_fmin_noret_bf16:3905; GFX12-TRUE16:       ; %bb.0:3906; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x03907; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x03908; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x03909; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x03910; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x03911; GFX12-TRUE16-NEXT:    v_and_b32_e32 v1, -4, v03912; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v03913; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 03914; GFX12-TRUE16-NEXT:    ds_load_b32 v2, v13915; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff3916; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, 24, v03917; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)3918; GFX12-TRUE16-NEXT:    v_not_b32_e32 v3, v33919; GFX12-TRUE16-NEXT:  .LBB16_1: ; %atomicrmw.start3920; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=13921; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x03922; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3923; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v4, v0, v23924; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v43925; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3926; GFX12-TRUE16-NEXT:    v_min_num_f32_e32 v4, 4.0, v43927; GFX12-TRUE16-NEXT:    v_bfe_u32 v5, v4, 16, 13928; GFX12-TRUE16-NEXT:    v_or_b32_e32 v6, 0x400000, v43929; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v43930; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)3931; GFX12-TRUE16-NEXT:    v_add3_u32 v5, v5, v4, 0x7fff3932; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)3933; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc_lo3934; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 03935; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3936; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v4.h3937; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, v0, v53938; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)3939; GFX12-TRUE16-NEXT:    v_and_or_b32 v4, v2, v3, v43940; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x03941; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v1, v4, v23942; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x03943; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE3944; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v23945; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v2, v43946; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3947; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s03948; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3949; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s03950; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB16_13951; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end3952; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s03953; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x03954; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]3955;3956; GFX12-FAKE16-LABEL: local_atomic_fmin_noret_bf16:3957; GFX12-FAKE16:       ; %bb.0:3958; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x03959; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x03960; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x03961; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x03962; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x03963; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, -4, v03964; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v03965; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 03966; GFX12-FAKE16-NEXT:    ds_load_b32 v2, v13967; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff3968; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, 24, v03969; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)3970; GFX12-FAKE16-NEXT:    v_not_b32_e32 v3, v33971; GFX12-FAKE16-NEXT:  .LBB16_1: ; %atomicrmw.start3972; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=13973; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x03974; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3975; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, v0, v23976; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v43977; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3978; GFX12-FAKE16-NEXT:    v_min_num_f32_e32 v4, 4.0, v43979; GFX12-FAKE16-NEXT:    v_bfe_u32 v5, v4, 16, 13980; GFX12-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v43981; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v43982; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)3983; GFX12-FAKE16-NEXT:    v_add3_u32 v5, v5, v4, 0x7fff3984; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)3985; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc_lo3986; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3987; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, 16, v43988; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, v0, v43989; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)3990; GFX12-FAKE16-NEXT:    v_and_or_b32 v4, v2, v3, v43991; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x03992; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v1, v4, v23993; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x03994; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE3995; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v23996; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v2, v43997; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)3998; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s03999; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4000; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04001; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB16_14002; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end4003; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04004; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x04005; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]4006;4007; GFX942-LABEL: local_atomic_fmin_noret_bf16:4008; GFX942:       ; %bb.0:4009; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4010; GFX942-NEXT:    v_and_b32_e32 v1, -4, v04011; GFX942-NEXT:    ds_read_b32 v3, v14012; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 3, v04013; GFX942-NEXT:    s_mov_b32 s0, 0xffff4014; GFX942-NEXT:    v_and_b32_e32 v0, 24, v24015; GFX942-NEXT:    v_lshlrev_b32_e64 v2, v2, s04016; GFX942-NEXT:    v_not_b32_e32 v2, v24017; GFX942-NEXT:    s_mov_b64 s[0:1], 04018; GFX942-NEXT:    s_movk_i32 s2, 0x7fff4019; GFX942-NEXT:  .LBB16_1: ; %atomicrmw.start4020; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=14021; GFX942-NEXT:    s_waitcnt lgkmcnt(0)4022; GFX942-NEXT:    v_lshrrev_b32_sdwa v4, v0, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD4023; GFX942-NEXT:    s_nop 04024; GFX942-NEXT:    v_min_f32_e32 v4, 4.0, v44025; GFX942-NEXT:    v_bfe_u32 v5, v4, 16, 14026; GFX942-NEXT:    v_or_b32_e32 v6, 0x400000, v44027; GFX942-NEXT:    v_add3_u32 v5, v5, v4, s24028; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v4, v44029; GFX942-NEXT:    s_nop 14030; GFX942-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc4031; GFX942-NEXT:    v_lshlrev_b32_sdwa v4, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_14032; GFX942-NEXT:    v_and_or_b32 v4, v3, v2, v44033; GFX942-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v44034; GFX942-NEXT:    s_waitcnt lgkmcnt(0)4035; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v34036; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]4037; GFX942-NEXT:    v_mov_b32_e32 v3, v44038; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]4039; GFX942-NEXT:    s_cbranch_execnz .LBB16_14040; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end4041; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]4042; GFX942-NEXT:    s_setpc_b64 s[30:31]4043;4044; GFX11-TRUE16-LABEL: local_atomic_fmin_noret_bf16:4045; GFX11-TRUE16:       ; %bb.0:4046; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4047; GFX11-TRUE16-NEXT:    v_and_b32_e32 v1, -4, v04048; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v04049; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 04050; GFX11-TRUE16-NEXT:    ds_load_b32 v2, v14051; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff4052; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, 24, v04053; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)4054; GFX11-TRUE16-NEXT:    v_not_b32_e32 v3, v34055; GFX11-TRUE16-NEXT:    .p2align 64056; GFX11-TRUE16-NEXT:  .LBB16_1: ; %atomicrmw.start4057; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=14058; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)4059; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4060; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v4, v0, v24061; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v44062; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4063; GFX11-TRUE16-NEXT:    v_min_f32_e32 v4, 4.0, v44064; GFX11-TRUE16-NEXT:    v_bfe_u32 v5, v4, 16, 14065; GFX11-TRUE16-NEXT:    v_or_b32_e32 v6, 0x400000, v44066; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v44067; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)4068; GFX11-TRUE16-NEXT:    v_add3_u32 v5, v5, v4, 0x7fff4069; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc_lo4070; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 04071; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4072; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v4.h4073; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, v0, v54074; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4075; GFX11-TRUE16-NEXT:    v_and_or_b32 v4, v2, v3, v44076; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x04077; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v1, v4, v24078; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)4079; GFX11-TRUE16-NEXT:    buffer_gl0_inv4080; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v24081; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, v44082; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s04083; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4084; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04085; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB16_14086; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end4087; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04088; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]4089;4090; GFX11-FAKE16-LABEL: local_atomic_fmin_noret_bf16:4091; GFX11-FAKE16:       ; %bb.0:4092; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4093; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, -4, v04094; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 3, v04095; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 04096; GFX11-FAKE16-NEXT:    ds_load_b32 v2, v14097; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff4098; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, 24, v04099; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)4100; GFX11-FAKE16-NEXT:    v_not_b32_e32 v3, v34101; GFX11-FAKE16-NEXT:    .p2align 64102; GFX11-FAKE16-NEXT:  .LBB16_1: ; %atomicrmw.start4103; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=14104; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)4105; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4106; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, v0, v24107; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v44108; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4109; GFX11-FAKE16-NEXT:    v_min_f32_e32 v4, 4.0, v44110; GFX11-FAKE16-NEXT:    v_bfe_u32 v5, v4, 16, 14111; GFX11-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v44112; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v44113; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)4114; GFX11-FAKE16-NEXT:    v_add3_u32 v5, v5, v4, 0x7fff4115; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc_lo4116; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4117; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, 16, v44118; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, v0, v44119; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4120; GFX11-FAKE16-NEXT:    v_and_or_b32 v4, v2, v3, v44121; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x04122; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v1, v4, v24123; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)4124; GFX11-FAKE16-NEXT:    buffer_gl0_inv4125; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v24126; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v44127; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s04128; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4129; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04130; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB16_14131; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end4132; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04133; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]4134;4135; GFX10-LABEL: local_atomic_fmin_noret_bf16:4136; GFX10:       ; %bb.0:4137; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4138; GFX10-NEXT:    v_and_b32_e32 v1, -4, v04139; GFX10-NEXT:    v_lshlrev_b32_e32 v0, 3, v04140; GFX10-NEXT:    s_mov_b32 s4, 04141; GFX10-NEXT:    ds_read_b32 v2, v14142; GFX10-NEXT:    v_lshlrev_b32_e64 v3, v0, 0xffff4143; GFX10-NEXT:    v_and_b32_e32 v0, 24, v04144; GFX10-NEXT:    v_not_b32_e32 v3, v34145; GFX10-NEXT:  .LBB16_1: ; %atomicrmw.start4146; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=14147; GFX10-NEXT:    s_waitcnt lgkmcnt(0)4148; GFX10-NEXT:    v_lshrrev_b32_sdwa v4, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD4149; GFX10-NEXT:    v_min_f32_e32 v4, 4.0, v44150; GFX10-NEXT:    v_bfe_u32 v5, v4, 16, 14151; GFX10-NEXT:    v_or_b32_e32 v6, 0x400000, v44152; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v44153; GFX10-NEXT:    v_add3_u32 v5, v5, v4, 0x7fff4154; GFX10-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc_lo4155; GFX10-NEXT:    v_lshlrev_b32_sdwa v4, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_14156; GFX10-NEXT:    v_and_or_b32 v4, v2, v3, v44157; GFX10-NEXT:    s_waitcnt_vscnt null, 0x04158; GFX10-NEXT:    ds_cmpst_rtn_b32 v4, v1, v2, v44159; GFX10-NEXT:    s_waitcnt lgkmcnt(0)4160; GFX10-NEXT:    buffer_gl0_inv4161; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v24162; GFX10-NEXT:    v_mov_b32_e32 v2, v44163; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s44164; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s44165; GFX10-NEXT:    s_cbranch_execnz .LBB16_14166; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end4167; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s44168; GFX10-NEXT:    s_setpc_b64 s[30:31]4169;4170; GFX90A-LABEL: local_atomic_fmin_noret_bf16:4171; GFX90A:       ; %bb.0:4172; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4173; GFX90A-NEXT:    v_and_b32_e32 v1, -4, v04174; GFX90A-NEXT:    ds_read_b32 v3, v14175; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 3, v04176; GFX90A-NEXT:    s_mov_b32 s4, 0xffff4177; GFX90A-NEXT:    v_and_b32_e32 v0, 24, v24178; GFX90A-NEXT:    v_lshlrev_b32_e64 v2, v2, s44179; GFX90A-NEXT:    v_not_b32_e32 v2, v24180; GFX90A-NEXT:    s_mov_b64 s[4:5], 04181; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff4182; GFX90A-NEXT:  .LBB16_1: ; %atomicrmw.start4183; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=14184; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)4185; GFX90A-NEXT:    v_lshrrev_b32_sdwa v4, v0, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD4186; GFX90A-NEXT:    v_min_f32_e32 v4, 4.0, v44187; GFX90A-NEXT:    v_bfe_u32 v5, v4, 16, 14188; GFX90A-NEXT:    v_or_b32_e32 v6, 0x400000, v44189; GFX90A-NEXT:    v_add3_u32 v5, v5, v4, s64190; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v4, v44191; GFX90A-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc4192; GFX90A-NEXT:    v_lshlrev_b32_sdwa v4, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_14193; GFX90A-NEXT:    v_and_or_b32 v4, v3, v2, v44194; GFX90A-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v44195; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)4196; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v34197; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4198; GFX90A-NEXT:    v_mov_b32_e32 v3, v44199; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]4200; GFX90A-NEXT:    s_cbranch_execnz .LBB16_14201; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end4202; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]4203; GFX90A-NEXT:    s_setpc_b64 s[30:31]4204;4205; GFX908-LABEL: local_atomic_fmin_noret_bf16:4206; GFX908:       ; %bb.0:4207; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4208; GFX908-NEXT:    v_and_b32_e32 v1, -4, v04209; GFX908-NEXT:    ds_read_b32 v3, v14210; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 3, v04211; GFX908-NEXT:    s_mov_b32 s4, 0xffff4212; GFX908-NEXT:    v_and_b32_e32 v0, 24, v24213; GFX908-NEXT:    v_lshlrev_b32_e64 v2, v2, s44214; GFX908-NEXT:    v_not_b32_e32 v2, v24215; GFX908-NEXT:    s_mov_b64 s[4:5], 04216; GFX908-NEXT:    s_movk_i32 s6, 0x7fff4217; GFX908-NEXT:  .LBB16_1: ; %atomicrmw.start4218; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=14219; GFX908-NEXT:    s_waitcnt lgkmcnt(0)4220; GFX908-NEXT:    v_lshrrev_b32_sdwa v4, v0, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD4221; GFX908-NEXT:    v_min_f32_e32 v4, 4.0, v44222; GFX908-NEXT:    v_bfe_u32 v5, v4, 16, 14223; GFX908-NEXT:    v_or_b32_e32 v6, 0x400000, v44224; GFX908-NEXT:    v_add3_u32 v5, v5, v4, s64225; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v4, v44226; GFX908-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc4227; GFX908-NEXT:    v_lshlrev_b32_sdwa v4, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_14228; GFX908-NEXT:    v_and_or_b32 v4, v3, v2, v44229; GFX908-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v44230; GFX908-NEXT:    s_waitcnt lgkmcnt(0)4231; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v34232; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4233; GFX908-NEXT:    v_mov_b32_e32 v3, v44234; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]4235; GFX908-NEXT:    s_cbranch_execnz .LBB16_14236; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end4237; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]4238; GFX908-NEXT:    s_setpc_b64 s[30:31]4239;4240; GFX8-LABEL: local_atomic_fmin_noret_bf16:4241; GFX8:       ; %bb.0:4242; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4243; GFX8-NEXT:    v_and_b32_e32 v1, -4, v04244; GFX8-NEXT:    s_mov_b32 m0, -14245; GFX8-NEXT:    ds_read_b32 v3, v14246; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 3, v04247; GFX8-NEXT:    s_mov_b32 s4, 0xffff4248; GFX8-NEXT:    v_and_b32_e32 v0, 24, v24249; GFX8-NEXT:    v_lshlrev_b32_e64 v2, v2, s44250; GFX8-NEXT:    v_not_b32_e32 v2, v24251; GFX8-NEXT:    s_mov_b64 s[4:5], 04252; GFX8-NEXT:  .LBB16_1: ; %atomicrmw.start4253; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=14254; GFX8-NEXT:    s_waitcnt lgkmcnt(0)4255; GFX8-NEXT:    v_lshrrev_b32_sdwa v4, v0, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD4256; GFX8-NEXT:    v_min_f32_e32 v4, 4.0, v44257; GFX8-NEXT:    v_bfe_u32 v6, v4, 16, 14258; GFX8-NEXT:    v_add_u32_e32 v6, vcc, v6, v44259; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0x7fff, v64260; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v44261; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v4, v44262; GFX8-NEXT:    v_cndmask_b32_e32 v4, v6, v7, vcc4263; GFX8-NEXT:    v_and_b32_e32 v5, v3, v24264; GFX8-NEXT:    v_lshlrev_b32_sdwa v4, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_14265; GFX8-NEXT:    v_or_b32_e32 v4, v5, v44266; GFX8-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v44267; GFX8-NEXT:    s_waitcnt lgkmcnt(0)4268; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v34269; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4270; GFX8-NEXT:    v_mov_b32_e32 v3, v44271; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]4272; GFX8-NEXT:    s_cbranch_execnz .LBB16_14273; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end4274; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]4275; GFX8-NEXT:    s_setpc_b64 s[30:31]4276;4277; GFX7-LABEL: local_atomic_fmin_noret_bf16:4278; GFX7:       ; %bb.0:4279; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4280; GFX7-NEXT:    v_and_b32_e32 v1, -4, v04281; GFX7-NEXT:    s_mov_b32 m0, -14282; GFX7-NEXT:    ds_read_b32 v3, v14283; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 3, v04284; GFX7-NEXT:    v_and_b32_e32 v0, 24, v24285; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v24286; GFX7-NEXT:    v_not_b32_e32 v2, v24287; GFX7-NEXT:    s_mov_b64 s[4:5], 04288; GFX7-NEXT:  .LBB16_1: ; %atomicrmw.start4289; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=14290; GFX7-NEXT:    s_waitcnt lgkmcnt(0)4291; GFX7-NEXT:    v_lshrrev_b32_e32 v4, v0, v34292; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v44293; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v44294; GFX7-NEXT:    v_min_f32_e32 v4, 4.0, v44295; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v44296; GFX7-NEXT:    v_and_b32_e32 v5, v3, v24297; GFX7-NEXT:    v_lshlrev_b32_e32 v4, v0, v44298; GFX7-NEXT:    v_or_b32_e32 v4, v5, v44299; GFX7-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v44300; GFX7-NEXT:    s_waitcnt lgkmcnt(0)4301; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v34302; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4303; GFX7-NEXT:    v_mov_b32_e32 v3, v44304; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]4305; GFX7-NEXT:    s_cbranch_execnz .LBB16_14306; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end4307; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]4308; GFX7-NEXT:    s_setpc_b64 s[30:31]4309;4310; GFX6-LABEL: local_atomic_fmin_noret_bf16:4311; GFX6:       ; %bb.0:4312; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4313; GFX6-NEXT:    v_and_b32_e32 v1, -4, v04314; GFX6-NEXT:    s_mov_b32 m0, -14315; GFX6-NEXT:    ds_read_b32 v3, v14316; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 3, v04317; GFX6-NEXT:    v_and_b32_e32 v0, 24, v24318; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v24319; GFX6-NEXT:    v_not_b32_e32 v2, v24320; GFX6-NEXT:    s_mov_b64 s[4:5], 04321; GFX6-NEXT:  .LBB16_1: ; %atomicrmw.start4322; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=14323; GFX6-NEXT:    s_waitcnt lgkmcnt(0)4324; GFX6-NEXT:    v_lshrrev_b32_e32 v4, v0, v34325; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v44326; GFX6-NEXT:    v_mul_f32_e32 v4, 1.0, v44327; GFX6-NEXT:    v_min_f32_e32 v4, 4.0, v44328; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v44329; GFX6-NEXT:    v_and_b32_e32 v5, v3, v24330; GFX6-NEXT:    v_lshlrev_b32_e32 v4, v0, v44331; GFX6-NEXT:    v_or_b32_e32 v4, v5, v44332; GFX6-NEXT:    ds_cmpst_rtn_b32 v4, v1, v3, v44333; GFX6-NEXT:    s_waitcnt lgkmcnt(0)4334; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v34335; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4336; GFX6-NEXT:    v_mov_b32_e32 v3, v44337; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]4338; GFX6-NEXT:    s_cbranch_execnz .LBB16_14339; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end4340; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]4341; GFX6-NEXT:    s_setpc_b64 s[30:31]4342  %result = atomicrmw fmin ptr addrspace(3) %ptr, bfloat 4.0 seq_cst4343  ret void4344}4345 4346define void @local_atomic_fmin_noret_bf16__offset(ptr addrspace(3) %ptr) nounwind {4347; GFX12-TRUE16-LABEL: local_atomic_fmin_noret_bf16__offset:4348; GFX12-TRUE16:       ; %bb.0:4349; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x04350; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x04351; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x04352; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x04353; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x04354; GFX12-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v04355; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 04356; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)4357; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v14358; GFX12-TRUE16-NEXT:    v_and_b32_e32 v1, 3, v14359; GFX12-TRUE16-NEXT:    ds_load_b32 v3, v04360; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v14361; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff4362; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4363; GFX12-TRUE16-NEXT:    v_not_b32_e32 v2, v24364; GFX12-TRUE16-NEXT:  .LBB17_1: ; %atomicrmw.start4365; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=14366; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x04367; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v4, v1, v34368; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4369; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v44370; GFX12-TRUE16-NEXT:    v_min_num_f32_e32 v4, 4.0, v44371; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)4372; GFX12-TRUE16-NEXT:    v_bfe_u32 v5, v4, 16, 14373; GFX12-TRUE16-NEXT:    v_or_b32_e32 v6, 0x400000, v44374; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v44375; GFX12-TRUE16-NEXT:    v_add3_u32 v5, v5, v4, 0x7fff4376; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)4377; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)4378; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc_lo4379; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 04380; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v4.h4381; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4382; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, v1, v54383; GFX12-TRUE16-NEXT:    v_and_or_b32 v4, v3, v2, v44384; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x04385; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v34386; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x04387; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE4388; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v34389; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v44390; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4391; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s04392; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4393; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04394; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB17_14395; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end4396; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04397; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x04398; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]4399;4400; GFX12-FAKE16-LABEL: local_atomic_fmin_noret_bf16__offset:4401; GFX12-FAKE16:       ; %bb.0:4402; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x04403; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x04404; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x04405; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x04406; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x04407; GFX12-FAKE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v04408; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 04409; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)4410; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v14411; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, 3, v14412; GFX12-FAKE16-NEXT:    ds_load_b32 v3, v04413; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v14414; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff4415; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4416; GFX12-FAKE16-NEXT:    v_not_b32_e32 v2, v24417; GFX12-FAKE16-NEXT:  .LBB17_1: ; %atomicrmw.start4418; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=14419; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x04420; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, v1, v34421; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4422; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v44423; GFX12-FAKE16-NEXT:    v_min_num_f32_e32 v4, 4.0, v44424; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)4425; GFX12-FAKE16-NEXT:    v_bfe_u32 v5, v4, 16, 14426; GFX12-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v44427; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v44428; GFX12-FAKE16-NEXT:    v_add3_u32 v5, v5, v4, 0x7fff4429; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)4430; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4431; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc_lo4432; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, 16, v44433; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4434; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, v1, v44435; GFX12-FAKE16-NEXT:    v_and_or_b32 v4, v3, v2, v44436; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x04437; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v34438; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x04439; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE4440; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v34441; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v44442; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4443; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s04444; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4445; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04446; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB17_14447; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end4448; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04449; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x04450; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]4451;4452; GFX942-LABEL: local_atomic_fmin_noret_bf16__offset:4453; GFX942:       ; %bb.0:4454; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4455; GFX942-NEXT:    v_add_u32_e32 v1, 0xfffe, v04456; GFX942-NEXT:    v_and_b32_e32 v0, -4, v14457; GFX942-NEXT:    ds_read_b32 v3, v04458; GFX942-NEXT:    v_and_b32_e32 v1, 3, v14459; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 3, v14460; GFX942-NEXT:    s_mov_b32 s0, 0xffff4461; GFX942-NEXT:    v_lshlrev_b32_e64 v2, v1, s04462; GFX942-NEXT:    v_not_b32_e32 v2, v24463; GFX942-NEXT:    s_mov_b64 s[0:1], 04464; GFX942-NEXT:    s_movk_i32 s2, 0x7fff4465; GFX942-NEXT:  .LBB17_1: ; %atomicrmw.start4466; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=14467; GFX942-NEXT:    s_waitcnt lgkmcnt(0)4468; GFX942-NEXT:    v_lshrrev_b32_sdwa v4, v1, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD4469; GFX942-NEXT:    s_nop 04470; GFX942-NEXT:    v_min_f32_e32 v4, 4.0, v44471; GFX942-NEXT:    v_bfe_u32 v5, v4, 16, 14472; GFX942-NEXT:    v_or_b32_e32 v6, 0x400000, v44473; GFX942-NEXT:    v_add3_u32 v5, v5, v4, s24474; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v4, v44475; GFX942-NEXT:    s_nop 14476; GFX942-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc4477; GFX942-NEXT:    v_lshlrev_b32_sdwa v4, v1, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_14478; GFX942-NEXT:    v_and_or_b32 v4, v3, v2, v44479; GFX942-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v44480; GFX942-NEXT:    s_waitcnt lgkmcnt(0)4481; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v34482; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]4483; GFX942-NEXT:    v_mov_b32_e32 v3, v44484; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]4485; GFX942-NEXT:    s_cbranch_execnz .LBB17_14486; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end4487; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]4488; GFX942-NEXT:    s_setpc_b64 s[30:31]4489;4490; GFX11-TRUE16-LABEL: local_atomic_fmin_noret_bf16__offset:4491; GFX11-TRUE16:       ; %bb.0:4492; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4493; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v04494; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 04495; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)4496; GFX11-TRUE16-NEXT:    v_and_b32_e32 v0, -4, v14497; GFX11-TRUE16-NEXT:    v_and_b32_e32 v1, 3, v14498; GFX11-TRUE16-NEXT:    ds_load_b32 v3, v04499; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v14500; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff4501; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4502; GFX11-TRUE16-NEXT:    v_not_b32_e32 v2, v24503; GFX11-TRUE16-NEXT:    .p2align 64504; GFX11-TRUE16-NEXT:  .LBB17_1: ; %atomicrmw.start4505; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=14506; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)4507; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v4, v1, v34508; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4509; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v44510; GFX11-TRUE16-NEXT:    v_min_f32_e32 v4, 4.0, v44511; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)4512; GFX11-TRUE16-NEXT:    v_bfe_u32 v5, v4, 16, 14513; GFX11-TRUE16-NEXT:    v_or_b32_e32 v6, 0x400000, v44514; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v44515; GFX11-TRUE16-NEXT:    v_add3_u32 v5, v5, v4, 0x7fff4516; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)4517; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc_lo4518; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.h, 04519; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v4.h4520; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4521; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v4, v1, v54522; GFX11-TRUE16-NEXT:    v_and_or_b32 v4, v3, v2, v44523; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x04524; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v34525; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)4526; GFX11-TRUE16-NEXT:    buffer_gl0_inv4527; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v34528; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v44529; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s04530; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4531; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04532; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB17_14533; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end4534; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04535; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]4536;4537; GFX11-FAKE16-LABEL: local_atomic_fmin_noret_bf16__offset:4538; GFX11-FAKE16:       ; %bb.0:4539; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4540; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v04541; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 04542; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)4543; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, -4, v14544; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 3, v14545; GFX11-FAKE16-NEXT:    ds_load_b32 v3, v04546; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 3, v14547; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff4548; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4549; GFX11-FAKE16-NEXT:    v_not_b32_e32 v2, v24550; GFX11-FAKE16-NEXT:    .p2align 64551; GFX11-FAKE16-NEXT:  .LBB17_1: ; %atomicrmw.start4552; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=14553; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)4554; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, v1, v34555; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4556; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, 16, v44557; GFX11-FAKE16-NEXT:    v_min_f32_e32 v4, 4.0, v44558; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)4559; GFX11-FAKE16-NEXT:    v_bfe_u32 v5, v4, 16, 14560; GFX11-FAKE16-NEXT:    v_or_b32_e32 v6, 0x400000, v44561; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v44562; GFX11-FAKE16-NEXT:    v_add3_u32 v5, v5, v4, 0x7fff4563; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4564; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc_lo4565; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, 16, v44566; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4567; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v4, v1, v44568; GFX11-FAKE16-NEXT:    v_and_or_b32 v4, v3, v2, v44569; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x04570; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v34571; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)4572; GFX11-FAKE16-NEXT:    buffer_gl0_inv4573; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v34574; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v44575; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s04576; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4577; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04578; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB17_14579; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end4580; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04581; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]4582;4583; GFX10-LABEL: local_atomic_fmin_noret_bf16__offset:4584; GFX10:       ; %bb.0:4585; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4586; GFX10-NEXT:    v_add_nc_u32_e32 v1, 0xfffe, v04587; GFX10-NEXT:    s_mov_b32 s4, 04588; GFX10-NEXT:    v_and_b32_e32 v0, -4, v14589; GFX10-NEXT:    v_and_b32_e32 v1, 3, v14590; GFX10-NEXT:    ds_read_b32 v3, v04591; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 3, v14592; GFX10-NEXT:    v_lshlrev_b32_e64 v2, v1, 0xffff4593; GFX10-NEXT:    v_not_b32_e32 v2, v24594; GFX10-NEXT:  .LBB17_1: ; %atomicrmw.start4595; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=14596; GFX10-NEXT:    s_waitcnt lgkmcnt(0)4597; GFX10-NEXT:    v_lshrrev_b32_sdwa v4, v1, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD4598; GFX10-NEXT:    v_min_f32_e32 v4, 4.0, v44599; GFX10-NEXT:    v_bfe_u32 v5, v4, 16, 14600; GFX10-NEXT:    v_or_b32_e32 v6, 0x400000, v44601; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v44602; GFX10-NEXT:    v_add3_u32 v5, v5, v4, 0x7fff4603; GFX10-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc_lo4604; GFX10-NEXT:    v_lshlrev_b32_sdwa v4, v1, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_14605; GFX10-NEXT:    v_and_or_b32 v4, v3, v2, v44606; GFX10-NEXT:    s_waitcnt_vscnt null, 0x04607; GFX10-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v44608; GFX10-NEXT:    s_waitcnt lgkmcnt(0)4609; GFX10-NEXT:    buffer_gl0_inv4610; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v34611; GFX10-NEXT:    v_mov_b32_e32 v3, v44612; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s44613; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s44614; GFX10-NEXT:    s_cbranch_execnz .LBB17_14615; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end4616; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s44617; GFX10-NEXT:    s_setpc_b64 s[30:31]4618;4619; GFX90A-LABEL: local_atomic_fmin_noret_bf16__offset:4620; GFX90A:       ; %bb.0:4621; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4622; GFX90A-NEXT:    v_add_u32_e32 v1, 0xfffe, v04623; GFX90A-NEXT:    v_and_b32_e32 v0, -4, v14624; GFX90A-NEXT:    ds_read_b32 v3, v04625; GFX90A-NEXT:    v_and_b32_e32 v1, 3, v14626; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 3, v14627; GFX90A-NEXT:    s_mov_b32 s4, 0xffff4628; GFX90A-NEXT:    v_lshlrev_b32_e64 v2, v1, s44629; GFX90A-NEXT:    v_not_b32_e32 v2, v24630; GFX90A-NEXT:    s_mov_b64 s[4:5], 04631; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff4632; GFX90A-NEXT:  .LBB17_1: ; %atomicrmw.start4633; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=14634; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)4635; GFX90A-NEXT:    v_lshrrev_b32_sdwa v4, v1, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD4636; GFX90A-NEXT:    v_min_f32_e32 v4, 4.0, v44637; GFX90A-NEXT:    v_bfe_u32 v5, v4, 16, 14638; GFX90A-NEXT:    v_or_b32_e32 v6, 0x400000, v44639; GFX90A-NEXT:    v_add3_u32 v5, v5, v4, s64640; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v4, v44641; GFX90A-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc4642; GFX90A-NEXT:    v_lshlrev_b32_sdwa v4, v1, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_14643; GFX90A-NEXT:    v_and_or_b32 v4, v3, v2, v44644; GFX90A-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v44645; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)4646; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v34647; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4648; GFX90A-NEXT:    v_mov_b32_e32 v3, v44649; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]4650; GFX90A-NEXT:    s_cbranch_execnz .LBB17_14651; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end4652; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]4653; GFX90A-NEXT:    s_setpc_b64 s[30:31]4654;4655; GFX908-LABEL: local_atomic_fmin_noret_bf16__offset:4656; GFX908:       ; %bb.0:4657; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4658; GFX908-NEXT:    v_add_u32_e32 v1, 0xfffe, v04659; GFX908-NEXT:    v_and_b32_e32 v0, -4, v14660; GFX908-NEXT:    ds_read_b32 v3, v04661; GFX908-NEXT:    v_and_b32_e32 v1, 3, v14662; GFX908-NEXT:    v_lshlrev_b32_e32 v1, 3, v14663; GFX908-NEXT:    s_mov_b32 s4, 0xffff4664; GFX908-NEXT:    v_lshlrev_b32_e64 v2, v1, s44665; GFX908-NEXT:    v_not_b32_e32 v2, v24666; GFX908-NEXT:    s_mov_b64 s[4:5], 04667; GFX908-NEXT:    s_movk_i32 s6, 0x7fff4668; GFX908-NEXT:  .LBB17_1: ; %atomicrmw.start4669; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=14670; GFX908-NEXT:    s_waitcnt lgkmcnt(0)4671; GFX908-NEXT:    v_lshrrev_b32_sdwa v4, v1, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD4672; GFX908-NEXT:    v_min_f32_e32 v4, 4.0, v44673; GFX908-NEXT:    v_bfe_u32 v5, v4, 16, 14674; GFX908-NEXT:    v_or_b32_e32 v6, 0x400000, v44675; GFX908-NEXT:    v_add3_u32 v5, v5, v4, s64676; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v4, v44677; GFX908-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc4678; GFX908-NEXT:    v_lshlrev_b32_sdwa v4, v1, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_14679; GFX908-NEXT:    v_and_or_b32 v4, v3, v2, v44680; GFX908-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v44681; GFX908-NEXT:    s_waitcnt lgkmcnt(0)4682; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v34683; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4684; GFX908-NEXT:    v_mov_b32_e32 v3, v44685; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]4686; GFX908-NEXT:    s_cbranch_execnz .LBB17_14687; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end4688; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]4689; GFX908-NEXT:    s_setpc_b64 s[30:31]4690;4691; GFX8-LABEL: local_atomic_fmin_noret_bf16__offset:4692; GFX8:       ; %bb.0:4693; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4694; GFX8-NEXT:    v_add_u32_e32 v1, vcc, 0xfffe, v04695; GFX8-NEXT:    v_and_b32_e32 v0, -4, v14696; GFX8-NEXT:    s_mov_b32 m0, -14697; GFX8-NEXT:    ds_read_b32 v3, v04698; GFX8-NEXT:    v_and_b32_e32 v1, 3, v14699; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 3, v14700; GFX8-NEXT:    s_mov_b32 s4, 0xffff4701; GFX8-NEXT:    v_lshlrev_b32_e64 v2, v1, s44702; GFX8-NEXT:    v_not_b32_e32 v2, v24703; GFX8-NEXT:    s_mov_b64 s[4:5], 04704; GFX8-NEXT:  .LBB17_1: ; %atomicrmw.start4705; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=14706; GFX8-NEXT:    s_waitcnt lgkmcnt(0)4707; GFX8-NEXT:    v_lshrrev_b32_sdwa v4, v1, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD4708; GFX8-NEXT:    v_min_f32_e32 v4, 4.0, v44709; GFX8-NEXT:    v_bfe_u32 v6, v4, 16, 14710; GFX8-NEXT:    v_add_u32_e32 v6, vcc, v6, v44711; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0x7fff, v64712; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v44713; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v4, v44714; GFX8-NEXT:    v_cndmask_b32_e32 v4, v6, v7, vcc4715; GFX8-NEXT:    v_and_b32_e32 v5, v3, v24716; GFX8-NEXT:    v_lshlrev_b32_sdwa v4, v1, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_14717; GFX8-NEXT:    v_or_b32_e32 v4, v5, v44718; GFX8-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v44719; GFX8-NEXT:    s_waitcnt lgkmcnt(0)4720; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v34721; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4722; GFX8-NEXT:    v_mov_b32_e32 v3, v44723; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]4724; GFX8-NEXT:    s_cbranch_execnz .LBB17_14725; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end4726; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]4727; GFX8-NEXT:    s_setpc_b64 s[30:31]4728;4729; GFX7-LABEL: local_atomic_fmin_noret_bf16__offset:4730; GFX7:       ; %bb.0:4731; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4732; GFX7-NEXT:    v_add_i32_e32 v1, vcc, 0xfffe, v04733; GFX7-NEXT:    v_and_b32_e32 v0, -4, v14734; GFX7-NEXT:    s_mov_b32 m0, -14735; GFX7-NEXT:    ds_read_b32 v3, v04736; GFX7-NEXT:    v_and_b32_e32 v1, 3, v14737; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 3, v14738; GFX7-NEXT:    v_lshl_b32_e32 v2, 0xffff, v14739; GFX7-NEXT:    v_not_b32_e32 v2, v24740; GFX7-NEXT:    s_mov_b64 s[4:5], 04741; GFX7-NEXT:  .LBB17_1: ; %atomicrmw.start4742; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=14743; GFX7-NEXT:    s_waitcnt lgkmcnt(0)4744; GFX7-NEXT:    v_lshrrev_b32_e32 v4, v1, v34745; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v44746; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v44747; GFX7-NEXT:    v_min_f32_e32 v4, 4.0, v44748; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v44749; GFX7-NEXT:    v_and_b32_e32 v5, v3, v24750; GFX7-NEXT:    v_lshlrev_b32_e32 v4, v1, v44751; GFX7-NEXT:    v_or_b32_e32 v4, v5, v44752; GFX7-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v44753; GFX7-NEXT:    s_waitcnt lgkmcnt(0)4754; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v34755; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4756; GFX7-NEXT:    v_mov_b32_e32 v3, v44757; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]4758; GFX7-NEXT:    s_cbranch_execnz .LBB17_14759; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end4760; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]4761; GFX7-NEXT:    s_setpc_b64 s[30:31]4762;4763; GFX6-LABEL: local_atomic_fmin_noret_bf16__offset:4764; GFX6:       ; %bb.0:4765; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4766; GFX6-NEXT:    v_add_i32_e32 v1, vcc, 0xfffe, v04767; GFX6-NEXT:    v_and_b32_e32 v0, -4, v14768; GFX6-NEXT:    s_mov_b32 m0, -14769; GFX6-NEXT:    ds_read_b32 v3, v04770; GFX6-NEXT:    v_and_b32_e32 v1, 3, v14771; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 3, v14772; GFX6-NEXT:    v_lshl_b32_e32 v2, 0xffff, v14773; GFX6-NEXT:    v_not_b32_e32 v2, v24774; GFX6-NEXT:    s_mov_b64 s[4:5], 04775; GFX6-NEXT:  .LBB17_1: ; %atomicrmw.start4776; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=14777; GFX6-NEXT:    s_waitcnt lgkmcnt(0)4778; GFX6-NEXT:    v_lshrrev_b32_e32 v4, v1, v34779; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v44780; GFX6-NEXT:    v_mul_f32_e32 v4, 1.0, v44781; GFX6-NEXT:    v_min_f32_e32 v4, 4.0, v44782; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v44783; GFX6-NEXT:    v_and_b32_e32 v5, v3, v24784; GFX6-NEXT:    v_lshlrev_b32_e32 v4, v1, v44785; GFX6-NEXT:    v_or_b32_e32 v4, v5, v44786; GFX6-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v44787; GFX6-NEXT:    s_waitcnt lgkmcnt(0)4788; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v34789; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]4790; GFX6-NEXT:    v_mov_b32_e32 v3, v44791; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]4792; GFX6-NEXT:    s_cbranch_execnz .LBB17_14793; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end4794; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]4795; GFX6-NEXT:    s_setpc_b64 s[30:31]4796  %gep = getelementptr bfloat, ptr addrspace(3) %ptr, i32 327674797  %unused = atomicrmw fmin ptr addrspace(3) %gep, bfloat 4.0 seq_cst4798  ret void4799}4800 4801define bfloat @local_atomic_fmin_ret_bf16__offset__align4(ptr addrspace(3) %ptr) nounwind {4802; GFX12-TRUE16-LABEL: local_atomic_fmin_ret_bf16__offset__align4:4803; GFX12-TRUE16:       ; %bb.0:4804; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x04805; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x04806; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x04807; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x04808; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x04809; GFX12-TRUE16-NEXT:    ds_load_b32 v1, v0 offset:655344810; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 04811; GFX12-TRUE16-NEXT:  .LBB18_1: ; %atomicrmw.start4812; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=14813; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x04814; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v2, v14815; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4816; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v24817; GFX12-TRUE16-NEXT:    v_min_num_f32_e32 v1, 4.0, v14818; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)4819; GFX12-TRUE16-NEXT:    v_bfe_u32 v3, v1, 16, 14820; GFX12-TRUE16-NEXT:    v_or_b32_e32 v4, 0x400000, v14821; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v1, v14822; GFX12-TRUE16-NEXT:    v_add3_u32 v3, v3, v1, 0x7fff4823; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)4824; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)4825; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc_lo4826; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 04827; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v1.h4828; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4829; GFX12-TRUE16-NEXT:    v_and_or_b32 v1, 0xffff0000, v2, v34830; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x04831; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v2 offset:655344832; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x04833; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE4834; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v24835; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4836; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s04837; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4838; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04839; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB18_14840; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end4841; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04842; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v1.l4843; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x04844; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]4845;4846; GFX12-FAKE16-LABEL: local_atomic_fmin_ret_bf16__offset__align4:4847; GFX12-FAKE16:       ; %bb.0:4848; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x04849; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x04850; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x04851; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x04852; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x04853; GFX12-FAKE16-NEXT:    ds_load_b32 v1, v0 offset:655344854; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 04855; GFX12-FAKE16-NEXT:  .LBB18_1: ; %atomicrmw.start4856; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=14857; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x04858; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v2, v14859; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4860; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v24861; GFX12-FAKE16-NEXT:    v_min_num_f32_e32 v1, 4.0, v14862; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)4863; GFX12-FAKE16-NEXT:    v_bfe_u32 v3, v1, 16, 14864; GFX12-FAKE16-NEXT:    v_or_b32_e32 v4, 0x400000, v14865; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v1, v14866; GFX12-FAKE16-NEXT:    v_add3_u32 v3, v3, v1, 0x7fff4867; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)4868; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4869; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc_lo4870; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v14871; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4872; GFX12-FAKE16-NEXT:    v_and_or_b32 v1, 0xffff0000, v2, v14873; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x04874; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v2 offset:655344875; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x04876; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE4877; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v24878; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4879; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s04880; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)4881; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04882; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB18_14883; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end4884; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04885; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v14886; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x04887; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]4888;4889; GFX942-LABEL: local_atomic_fmin_ret_bf16__offset__align4:4890; GFX942:       ; %bb.0:4891; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4892; GFX942-NEXT:    ds_read_b32 v2, v0 offset:655344893; GFX942-NEXT:    s_mov_b64 s[0:1], 04894; GFX942-NEXT:    s_movk_i32 s2, 0x7fff4895; GFX942-NEXT:    s_mov_b32 s3, 0xffff00004896; GFX942-NEXT:  .LBB18_1: ; %atomicrmw.start4897; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=14898; GFX942-NEXT:    s_waitcnt lgkmcnt(0)4899; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 16, v24900; GFX942-NEXT:    v_min_f32_e32 v1, 4.0, v14901; GFX942-NEXT:    v_bfe_u32 v3, v1, 16, 14902; GFX942-NEXT:    v_or_b32_e32 v4, 0x400000, v14903; GFX942-NEXT:    v_add3_u32 v3, v3, v1, s24904; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v1, v14905; GFX942-NEXT:    s_nop 14906; GFX942-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc4907; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v14908; GFX942-NEXT:    v_and_or_b32 v1, v2, s3, v14909; GFX942-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655344910; GFX942-NEXT:    s_waitcnt lgkmcnt(0)4911; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v24912; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]4913; GFX942-NEXT:    v_mov_b32_e32 v2, v14914; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]4915; GFX942-NEXT:    s_cbranch_execnz .LBB18_14916; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end4917; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]4918; GFX942-NEXT:    v_mov_b32_e32 v0, v14919; GFX942-NEXT:    s_setpc_b64 s[30:31]4920;4921; GFX11-TRUE16-LABEL: local_atomic_fmin_ret_bf16__offset__align4:4922; GFX11-TRUE16:       ; %bb.0:4923; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4924; GFX11-TRUE16-NEXT:    ds_load_b32 v1, v0 offset:655344925; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 04926; GFX11-TRUE16-NEXT:    .p2align 64927; GFX11-TRUE16-NEXT:  .LBB18_1: ; %atomicrmw.start4928; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=14929; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)4930; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, v14931; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4932; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v24933; GFX11-TRUE16-NEXT:    v_min_f32_e32 v1, 4.0, v14934; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)4935; GFX11-TRUE16-NEXT:    v_bfe_u32 v3, v1, 16, 14936; GFX11-TRUE16-NEXT:    v_or_b32_e32 v4, 0x400000, v14937; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v1, v14938; GFX11-TRUE16-NEXT:    v_add3_u32 v3, v3, v1, 0x7fff4939; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)4940; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc_lo4941; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 04942; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v1.h4943; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4944; GFX11-TRUE16-NEXT:    v_and_or_b32 v1, 0xffff0000, v2, v34945; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x04946; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v2 offset:655344947; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)4948; GFX11-TRUE16-NEXT:    buffer_gl0_inv4949; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v24950; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s04951; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4952; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04953; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB18_14954; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end4955; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04956; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v1.l4957; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]4958;4959; GFX11-FAKE16-LABEL: local_atomic_fmin_ret_bf16__offset__align4:4960; GFX11-FAKE16:       ; %bb.0:4961; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4962; GFX11-FAKE16-NEXT:    ds_load_b32 v1, v0 offset:655344963; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 04964; GFX11-FAKE16-NEXT:    .p2align 64965; GFX11-FAKE16-NEXT:  .LBB18_1: ; %atomicrmw.start4966; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=14967; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)4968; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, v14969; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4970; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v24971; GFX11-FAKE16-NEXT:    v_min_f32_e32 v1, 4.0, v14972; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)4973; GFX11-FAKE16-NEXT:    v_bfe_u32 v3, v1, 16, 14974; GFX11-FAKE16-NEXT:    v_or_b32_e32 v4, 0x400000, v14975; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v1, v14976; GFX11-FAKE16-NEXT:    v_add3_u32 v3, v3, v1, 0x7fff4977; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4978; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc_lo4979; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v1, 16, v14980; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)4981; GFX11-FAKE16-NEXT:    v_and_or_b32 v1, 0xffff0000, v2, v14982; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x04983; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v1, v0, v1, v2 offset:655344984; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)4985; GFX11-FAKE16-NEXT:    buffer_gl0_inv4986; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v24987; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s04988; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4989; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s04990; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB18_14991; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end4992; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s04993; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v14994; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]4995;4996; GFX10-LABEL: local_atomic_fmin_ret_bf16__offset__align4:4997; GFX10:       ; %bb.0:4998; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4999; GFX10-NEXT:    ds_read_b32 v1, v0 offset:655345000; GFX10-NEXT:    s_mov_b32 s4, 05001; GFX10-NEXT:  .LBB18_1: ; %atomicrmw.start5002; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=15003; GFX10-NEXT:    s_waitcnt lgkmcnt(0)5004; GFX10-NEXT:    v_mov_b32_e32 v2, v15005; GFX10-NEXT:    v_lshlrev_b32_e32 v1, 16, v25006; GFX10-NEXT:    v_min_f32_e32 v1, 4.0, v15007; GFX10-NEXT:    v_bfe_u32 v3, v1, 16, 15008; GFX10-NEXT:    v_or_b32_e32 v4, 0x400000, v15009; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v1, v15010; GFX10-NEXT:    v_add3_u32 v3, v3, v1, 0x7fff5011; GFX10-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc_lo5012; GFX10-NEXT:    v_lshrrev_b32_e32 v1, 16, v15013; GFX10-NEXT:    v_and_or_b32 v1, 0xffff0000, v2, v15014; GFX10-NEXT:    s_waitcnt_vscnt null, 0x05015; GFX10-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655345016; GFX10-NEXT:    s_waitcnt lgkmcnt(0)5017; GFX10-NEXT:    buffer_gl0_inv5018; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v1, v25019; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s45020; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s45021; GFX10-NEXT:    s_cbranch_execnz .LBB18_15022; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end5023; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s45024; GFX10-NEXT:    v_mov_b32_e32 v0, v15025; GFX10-NEXT:    s_setpc_b64 s[30:31]5026;5027; GFX90A-LABEL: local_atomic_fmin_ret_bf16__offset__align4:5028; GFX90A:       ; %bb.0:5029; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5030; GFX90A-NEXT:    ds_read_b32 v2, v0 offset:655345031; GFX90A-NEXT:    s_mov_b64 s[4:5], 05032; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff5033; GFX90A-NEXT:    s_mov_b32 s7, 0xffff00005034; GFX90A-NEXT:  .LBB18_1: ; %atomicrmw.start5035; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=15036; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)5037; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 16, v25038; GFX90A-NEXT:    v_min_f32_e32 v1, 4.0, v15039; GFX90A-NEXT:    v_bfe_u32 v3, v1, 16, 15040; GFX90A-NEXT:    v_or_b32_e32 v4, 0x400000, v15041; GFX90A-NEXT:    v_add3_u32 v3, v3, v1, s65042; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v1, v15043; GFX90A-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc5044; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v15045; GFX90A-NEXT:    v_and_or_b32 v1, v2, s7, v15046; GFX90A-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655345047; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)5048; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v25049; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5050; GFX90A-NEXT:    v_mov_b32_e32 v2, v15051; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]5052; GFX90A-NEXT:    s_cbranch_execnz .LBB18_15053; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end5054; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]5055; GFX90A-NEXT:    v_mov_b32_e32 v0, v15056; GFX90A-NEXT:    s_setpc_b64 s[30:31]5057;5058; GFX908-LABEL: local_atomic_fmin_ret_bf16__offset__align4:5059; GFX908:       ; %bb.0:5060; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5061; GFX908-NEXT:    ds_read_b32 v1, v0 offset:655345062; GFX908-NEXT:    s_mov_b64 s[4:5], 05063; GFX908-NEXT:    s_movk_i32 s6, 0x7fff5064; GFX908-NEXT:    s_mov_b32 s7, 0xffff00005065; GFX908-NEXT:  .LBB18_1: ; %atomicrmw.start5066; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=15067; GFX908-NEXT:    s_waitcnt lgkmcnt(0)5068; GFX908-NEXT:    v_mov_b32_e32 v2, v15069; GFX908-NEXT:    v_lshlrev_b32_e32 v1, 16, v25070; GFX908-NEXT:    v_min_f32_e32 v1, 4.0, v15071; GFX908-NEXT:    v_bfe_u32 v3, v1, 16, 15072; GFX908-NEXT:    v_or_b32_e32 v4, 0x400000, v15073; GFX908-NEXT:    v_add3_u32 v3, v3, v1, s65074; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v1, v15075; GFX908-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc5076; GFX908-NEXT:    v_lshrrev_b32_e32 v1, 16, v15077; GFX908-NEXT:    v_and_or_b32 v1, v2, s7, v15078; GFX908-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655345079; GFX908-NEXT:    s_waitcnt lgkmcnt(0)5080; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v25081; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5082; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]5083; GFX908-NEXT:    s_cbranch_execnz .LBB18_15084; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end5085; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]5086; GFX908-NEXT:    v_mov_b32_e32 v0, v15087; GFX908-NEXT:    s_setpc_b64 s[30:31]5088;5089; GFX8-LABEL: local_atomic_fmin_ret_bf16__offset__align4:5090; GFX8:       ; %bb.0:5091; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5092; GFX8-NEXT:    s_mov_b32 m0, -15093; GFX8-NEXT:    ds_read_b32 v1, v0 offset:655345094; GFX8-NEXT:    s_mov_b64 s[4:5], 05095; GFX8-NEXT:  .LBB18_1: ; %atomicrmw.start5096; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=15097; GFX8-NEXT:    s_waitcnt lgkmcnt(0)5098; GFX8-NEXT:    v_mov_b32_e32 v2, v15099; GFX8-NEXT:    v_lshlrev_b32_e32 v1, 16, v25100; GFX8-NEXT:    v_min_f32_e32 v1, 4.0, v15101; GFX8-NEXT:    v_bfe_u32 v4, v1, 16, 15102; GFX8-NEXT:    v_add_u32_e32 v4, vcc, v4, v15103; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0x7fff, v45104; GFX8-NEXT:    v_or_b32_e32 v5, 0x400000, v15105; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v1, v15106; GFX8-NEXT:    v_and_b32_e32 v3, 0xffff0000, v25107; GFX8-NEXT:    v_cndmask_b32_e32 v1, v4, v5, vcc5108; GFX8-NEXT:    v_or_b32_sdwa v1, v3, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_15109; GFX8-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655345110; GFX8-NEXT:    s_waitcnt lgkmcnt(0)5111; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v25112; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5113; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]5114; GFX8-NEXT:    s_cbranch_execnz .LBB18_15115; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end5116; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]5117; GFX8-NEXT:    v_mov_b32_e32 v0, v15118; GFX8-NEXT:    s_setpc_b64 s[30:31]5119;5120; GFX7-LABEL: local_atomic_fmin_ret_bf16__offset__align4:5121; GFX7:       ; %bb.0:5122; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5123; GFX7-NEXT:    s_mov_b32 m0, -15124; GFX7-NEXT:    ds_read_b32 v1, v0 offset:655345125; GFX7-NEXT:    s_mov_b64 s[4:5], 05126; GFX7-NEXT:  .LBB18_1: ; %atomicrmw.start5127; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=15128; GFX7-NEXT:    s_waitcnt lgkmcnt(0)5129; GFX7-NEXT:    v_mov_b32_e32 v2, v15130; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v25131; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v15132; GFX7-NEXT:    v_min_f32_e32 v1, 4.0, v15133; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v25134; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v15135; GFX7-NEXT:    v_or_b32_e32 v1, v3, v15136; GFX7-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v1 offset:655345137; GFX7-NEXT:    s_waitcnt lgkmcnt(0)5138; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v25139; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5140; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]5141; GFX7-NEXT:    s_cbranch_execnz .LBB18_15142; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end5143; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]5144; GFX7-NEXT:    v_lshlrev_b32_e32 v0, 16, v15145; GFX7-NEXT:    s_setpc_b64 s[30:31]5146;5147; GFX6-LABEL: local_atomic_fmin_ret_bf16__offset__align4:5148; GFX6:       ; %bb.0:5149; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5150; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffe, v05151; GFX6-NEXT:    s_mov_b32 m0, -15152; GFX6-NEXT:    ds_read_b32 v1, v05153; GFX6-NEXT:    s_mov_b64 s[4:5], 05154; GFX6-NEXT:  .LBB18_1: ; %atomicrmw.start5155; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=15156; GFX6-NEXT:    s_waitcnt lgkmcnt(0)5157; GFX6-NEXT:    v_mov_b32_e32 v2, v15158; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 16, v25159; GFX6-NEXT:    v_mul_f32_e32 v1, 1.0, v15160; GFX6-NEXT:    v_min_f32_e32 v1, 4.0, v15161; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v25162; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v15163; GFX6-NEXT:    v_or_b32_e32 v1, v3, v15164; GFX6-NEXT:    ds_cmpst_rtn_b32 v1, v0, v2, v15165; GFX6-NEXT:    s_waitcnt lgkmcnt(0)5166; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v25167; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5168; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]5169; GFX6-NEXT:    s_cbranch_execnz .LBB18_15170; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end5171; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]5172; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v15173; GFX6-NEXT:    s_setpc_b64 s[30:31]5174  %gep = getelementptr bfloat, ptr addrspace(3) %ptr, i32 327675175  %result = atomicrmw fmin ptr addrspace(3) %gep, bfloat 4.0 seq_cst, align 45176  ret bfloat %result5177}5178 5179define void @local_atomic_fmin_noret_bf16__offset__align4(ptr addrspace(3) %ptr) nounwind {5180; GFX12-TRUE16-LABEL: local_atomic_fmin_noret_bf16__offset__align4:5181; GFX12-TRUE16:       ; %bb.0:5182; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x05183; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x05184; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x05185; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x05186; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x05187; GFX12-TRUE16-NEXT:    ds_load_b32 v1, v0 offset:655345188; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 05189; GFX12-TRUE16-NEXT:  .LBB19_1: ; %atomicrmw.start5190; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=15191; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x05192; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v15193; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5194; GFX12-TRUE16-NEXT:    v_min_num_f32_e32 v2, 4.0, v25195; GFX12-TRUE16-NEXT:    v_bfe_u32 v3, v2, 16, 15196; GFX12-TRUE16-NEXT:    v_or_b32_e32 v4, 0x400000, v25197; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v25198; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)5199; GFX12-TRUE16-NEXT:    v_add3_u32 v3, v3, v2, 0x7fff5200; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)5201; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc_lo5202; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 05203; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5204; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v2.h5205; GFX12-TRUE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v1, v35206; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x05207; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v1 offset:655345208; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x05209; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE5210; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v15211; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v1, v25212; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5213; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s05214; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5215; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05216; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB19_15217; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end5218; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05219; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x05220; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]5221;5222; GFX12-FAKE16-LABEL: local_atomic_fmin_noret_bf16__offset__align4:5223; GFX12-FAKE16:       ; %bb.0:5224; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x05225; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x05226; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x05227; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x05228; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x05229; GFX12-FAKE16-NEXT:    ds_load_b32 v1, v0 offset:655345230; GFX12-FAKE16-NEXT:    s_mov_b32 s0, 05231; GFX12-FAKE16-NEXT:  .LBB19_1: ; %atomicrmw.start5232; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=15233; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x05234; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v15235; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5236; GFX12-FAKE16-NEXT:    v_min_num_f32_e32 v2, 4.0, v25237; GFX12-FAKE16-NEXT:    v_bfe_u32 v3, v2, 16, 15238; GFX12-FAKE16-NEXT:    v_or_b32_e32 v4, 0x400000, v25239; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v25240; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)5241; GFX12-FAKE16-NEXT:    v_add3_u32 v3, v3, v2, 0x7fff5242; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)5243; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc_lo5244; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5245; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v25246; GFX12-FAKE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v1, v25247; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x05248; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v1 offset:655345249; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x05250; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE5251; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v15252; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v1, v25253; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5254; GFX12-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s05255; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)5256; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05257; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB19_15258; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end5259; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05260; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x05261; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]5262;5263; GFX942-LABEL: local_atomic_fmin_noret_bf16__offset__align4:5264; GFX942:       ; %bb.0:5265; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5266; GFX942-NEXT:    ds_read_b32 v1, v0 offset:655345267; GFX942-NEXT:    s_mov_b64 s[0:1], 05268; GFX942-NEXT:    s_movk_i32 s2, 0x7fff5269; GFX942-NEXT:    s_mov_b32 s3, 0xffff00005270; GFX942-NEXT:  .LBB19_1: ; %atomicrmw.start5271; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=15272; GFX942-NEXT:    s_waitcnt lgkmcnt(0)5273; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v15274; GFX942-NEXT:    v_min_f32_e32 v2, 4.0, v25275; GFX942-NEXT:    v_bfe_u32 v3, v2, 16, 15276; GFX942-NEXT:    v_or_b32_e32 v4, 0x400000, v25277; GFX942-NEXT:    v_add3_u32 v3, v3, v2, s25278; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v2, v25279; GFX942-NEXT:    s_nop 15280; GFX942-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc5281; GFX942-NEXT:    v_lshrrev_b32_e32 v2, 16, v25282; GFX942-NEXT:    v_and_or_b32 v2, v1, s3, v25283; GFX942-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655345284; GFX942-NEXT:    s_waitcnt lgkmcnt(0)5285; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v15286; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]5287; GFX942-NEXT:    v_mov_b32_e32 v1, v25288; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]5289; GFX942-NEXT:    s_cbranch_execnz .LBB19_15290; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end5291; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]5292; GFX942-NEXT:    s_setpc_b64 s[30:31]5293;5294; GFX11-TRUE16-LABEL: local_atomic_fmin_noret_bf16__offset__align4:5295; GFX11-TRUE16:       ; %bb.0:5296; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5297; GFX11-TRUE16-NEXT:    ds_load_b32 v1, v0 offset:655345298; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 05299; GFX11-TRUE16-NEXT:    .p2align 65300; GFX11-TRUE16-NEXT:  .LBB19_1: ; %atomicrmw.start5301; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=15302; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)5303; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v15304; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5305; GFX11-TRUE16-NEXT:    v_min_f32_e32 v2, 4.0, v25306; GFX11-TRUE16-NEXT:    v_bfe_u32 v3, v2, 16, 15307; GFX11-TRUE16-NEXT:    v_or_b32_e32 v4, 0x400000, v25308; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v25309; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)5310; GFX11-TRUE16-NEXT:    v_add3_u32 v3, v3, v2, 0x7fff5311; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc_lo5312; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.h, 05313; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5314; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v2.h5315; GFX11-TRUE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v1, v35316; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x05317; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v1 offset:655345318; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)5319; GFX11-TRUE16-NEXT:    buffer_gl0_inv5320; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v15321; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, v25322; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s05323; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5324; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05325; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB19_15326; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end5327; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05328; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]5329;5330; GFX11-FAKE16-LABEL: local_atomic_fmin_noret_bf16__offset__align4:5331; GFX11-FAKE16:       ; %bb.0:5332; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5333; GFX11-FAKE16-NEXT:    ds_load_b32 v1, v0 offset:655345334; GFX11-FAKE16-NEXT:    s_mov_b32 s0, 05335; GFX11-FAKE16-NEXT:    .p2align 65336; GFX11-FAKE16-NEXT:  .LBB19_1: ; %atomicrmw.start5337; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=15338; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)5339; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v15340; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5341; GFX11-FAKE16-NEXT:    v_min_f32_e32 v2, 4.0, v25342; GFX11-FAKE16-NEXT:    v_bfe_u32 v3, v2, 16, 15343; GFX11-FAKE16-NEXT:    v_or_b32_e32 v4, 0x400000, v25344; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v25345; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)5346; GFX11-FAKE16-NEXT:    v_add3_u32 v3, v3, v2, 0x7fff5347; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc_lo5348; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5349; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v25350; GFX11-FAKE16-NEXT:    v_and_or_b32 v2, 0xffff0000, v1, v25351; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x05352; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v1 offset:655345353; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)5354; GFX11-FAKE16-NEXT:    buffer_gl0_inv5355; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v15356; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, v25357; GFX11-FAKE16-NEXT:    s_or_b32 s0, vcc_lo, s05358; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5359; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05360; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB19_15361; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end5362; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s05363; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]5364;5365; GFX10-LABEL: local_atomic_fmin_noret_bf16__offset__align4:5366; GFX10:       ; %bb.0:5367; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5368; GFX10-NEXT:    ds_read_b32 v1, v0 offset:655345369; GFX10-NEXT:    s_mov_b32 s4, 05370; GFX10-NEXT:  .LBB19_1: ; %atomicrmw.start5371; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=15372; GFX10-NEXT:    s_waitcnt lgkmcnt(0)5373; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v15374; GFX10-NEXT:    v_min_f32_e32 v2, 4.0, v25375; GFX10-NEXT:    v_bfe_u32 v3, v2, 16, 15376; GFX10-NEXT:    v_or_b32_e32 v4, 0x400000, v25377; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v25378; GFX10-NEXT:    v_add3_u32 v3, v3, v2, 0x7fff5379; GFX10-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc_lo5380; GFX10-NEXT:    v_lshrrev_b32_e32 v2, 16, v25381; GFX10-NEXT:    v_and_or_b32 v2, 0xffff0000, v1, v25382; GFX10-NEXT:    s_waitcnt_vscnt null, 0x05383; GFX10-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655345384; GFX10-NEXT:    s_waitcnt lgkmcnt(0)5385; GFX10-NEXT:    buffer_gl0_inv5386; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v15387; GFX10-NEXT:    v_mov_b32_e32 v1, v25388; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s45389; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s45390; GFX10-NEXT:    s_cbranch_execnz .LBB19_15391; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end5392; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s45393; GFX10-NEXT:    s_setpc_b64 s[30:31]5394;5395; GFX90A-LABEL: local_atomic_fmin_noret_bf16__offset__align4:5396; GFX90A:       ; %bb.0:5397; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5398; GFX90A-NEXT:    ds_read_b32 v1, v0 offset:655345399; GFX90A-NEXT:    s_mov_b64 s[4:5], 05400; GFX90A-NEXT:    s_movk_i32 s6, 0x7fff5401; GFX90A-NEXT:    s_mov_b32 s7, 0xffff00005402; GFX90A-NEXT:  .LBB19_1: ; %atomicrmw.start5403; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=15404; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)5405; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v15406; GFX90A-NEXT:    v_min_f32_e32 v2, 4.0, v25407; GFX90A-NEXT:    v_bfe_u32 v3, v2, 16, 15408; GFX90A-NEXT:    v_or_b32_e32 v4, 0x400000, v25409; GFX90A-NEXT:    v_add3_u32 v3, v3, v2, s65410; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v2, v25411; GFX90A-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc5412; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, 16, v25413; GFX90A-NEXT:    v_and_or_b32 v2, v1, s7, v25414; GFX90A-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655345415; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)5416; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v15417; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5418; GFX90A-NEXT:    v_mov_b32_e32 v1, v25419; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]5420; GFX90A-NEXT:    s_cbranch_execnz .LBB19_15421; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end5422; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]5423; GFX90A-NEXT:    s_setpc_b64 s[30:31]5424;5425; GFX908-LABEL: local_atomic_fmin_noret_bf16__offset__align4:5426; GFX908:       ; %bb.0:5427; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5428; GFX908-NEXT:    ds_read_b32 v1, v0 offset:655345429; GFX908-NEXT:    s_mov_b64 s[4:5], 05430; GFX908-NEXT:    s_movk_i32 s6, 0x7fff5431; GFX908-NEXT:    s_mov_b32 s7, 0xffff00005432; GFX908-NEXT:  .LBB19_1: ; %atomicrmw.start5433; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=15434; GFX908-NEXT:    s_waitcnt lgkmcnt(0)5435; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v15436; GFX908-NEXT:    v_min_f32_e32 v2, 4.0, v25437; GFX908-NEXT:    v_bfe_u32 v3, v2, 16, 15438; GFX908-NEXT:    v_or_b32_e32 v4, 0x400000, v25439; GFX908-NEXT:    v_add3_u32 v3, v3, v2, s65440; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v2, v25441; GFX908-NEXT:    v_cndmask_b32_e32 v2, v3, v4, vcc5442; GFX908-NEXT:    v_lshrrev_b32_e32 v2, 16, v25443; GFX908-NEXT:    v_and_or_b32 v2, v1, s7, v25444; GFX908-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655345445; GFX908-NEXT:    s_waitcnt lgkmcnt(0)5446; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v15447; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5448; GFX908-NEXT:    v_mov_b32_e32 v1, v25449; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]5450; GFX908-NEXT:    s_cbranch_execnz .LBB19_15451; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end5452; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]5453; GFX908-NEXT:    s_setpc_b64 s[30:31]5454;5455; GFX8-LABEL: local_atomic_fmin_noret_bf16__offset__align4:5456; GFX8:       ; %bb.0:5457; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5458; GFX8-NEXT:    s_mov_b32 m0, -15459; GFX8-NEXT:    ds_read_b32 v1, v0 offset:655345460; GFX8-NEXT:    s_mov_b64 s[4:5], 05461; GFX8-NEXT:  .LBB19_1: ; %atomicrmw.start5462; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=15463; GFX8-NEXT:    s_waitcnt lgkmcnt(0)5464; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v15465; GFX8-NEXT:    v_min_f32_e32 v2, 4.0, v25466; GFX8-NEXT:    v_bfe_u32 v4, v2, 16, 15467; GFX8-NEXT:    v_add_u32_e32 v4, vcc, v4, v25468; GFX8-NEXT:    v_add_u32_e32 v4, vcc, 0x7fff, v45469; GFX8-NEXT:    v_or_b32_e32 v5, 0x400000, v25470; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v2, v25471; GFX8-NEXT:    v_and_b32_e32 v3, 0xffff0000, v15472; GFX8-NEXT:    v_cndmask_b32_e32 v2, v4, v5, vcc5473; GFX8-NEXT:    v_or_b32_sdwa v2, v3, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_15474; GFX8-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655345475; GFX8-NEXT:    s_waitcnt lgkmcnt(0)5476; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v15477; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5478; GFX8-NEXT:    v_mov_b32_e32 v1, v25479; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]5480; GFX8-NEXT:    s_cbranch_execnz .LBB19_15481; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end5482; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]5483; GFX8-NEXT:    s_setpc_b64 s[30:31]5484;5485; GFX7-LABEL: local_atomic_fmin_noret_bf16__offset__align4:5486; GFX7:       ; %bb.0:5487; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5488; GFX7-NEXT:    s_mov_b32 m0, -15489; GFX7-NEXT:    ds_read_b32 v1, v0 offset:655345490; GFX7-NEXT:    s_mov_b64 s[4:5], 05491; GFX7-NEXT:  .LBB19_1: ; %atomicrmw.start5492; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=15493; GFX7-NEXT:    s_waitcnt lgkmcnt(0)5494; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v15495; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v25496; GFX7-NEXT:    v_min_f32_e32 v2, 4.0, v25497; GFX7-NEXT:    v_and_b32_e32 v3, 0xffff0000, v15498; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v25499; GFX7-NEXT:    v_or_b32_e32 v2, v3, v25500; GFX7-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v2 offset:655345501; GFX7-NEXT:    s_waitcnt lgkmcnt(0)5502; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v15503; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5504; GFX7-NEXT:    v_mov_b32_e32 v1, v25505; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]5506; GFX7-NEXT:    s_cbranch_execnz .LBB19_15507; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end5508; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]5509; GFX7-NEXT:    s_setpc_b64 s[30:31]5510;5511; GFX6-LABEL: local_atomic_fmin_noret_bf16__offset__align4:5512; GFX6:       ; %bb.0:5513; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5514; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffe, v05515; GFX6-NEXT:    s_mov_b32 m0, -15516; GFX6-NEXT:    ds_read_b32 v1, v05517; GFX6-NEXT:    s_mov_b64 s[4:5], 05518; GFX6-NEXT:  .LBB19_1: ; %atomicrmw.start5519; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=15520; GFX6-NEXT:    s_waitcnt lgkmcnt(0)5521; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v15522; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v25523; GFX6-NEXT:    v_min_f32_e32 v2, 4.0, v25524; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v15525; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v25526; GFX6-NEXT:    v_or_b32_e32 v2, v3, v25527; GFX6-NEXT:    ds_cmpst_rtn_b32 v2, v0, v1, v25528; GFX6-NEXT:    s_waitcnt lgkmcnt(0)5529; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v15530; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5531; GFX6-NEXT:    v_mov_b32_e32 v1, v25532; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]5533; GFX6-NEXT:    s_cbranch_execnz .LBB19_15534; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end5535; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]5536; GFX6-NEXT:    s_setpc_b64 s[30:31]5537  %gep = getelementptr bfloat, ptr addrspace(3) %ptr, i32 327675538  %unused = atomicrmw fmin ptr addrspace(3) %gep, bfloat 4.0 seq_cst, align 45539  ret void5540}5541 5542; --------------------------------------------------------------------5543; <2 x half>5544; --------------------------------------------------------------------5545 5546define <2 x half> @local_atomic_fmin_ret_v2f16(ptr addrspace(3) %ptr, <2 x half> %val) {5547; GFX12-LABEL: local_atomic_fmin_ret_v2f16:5548; GFX12:       ; %bb.0:5549; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x05550; GFX12-NEXT:    s_wait_expcnt 0x05551; GFX12-NEXT:    s_wait_samplecnt 0x05552; GFX12-NEXT:    s_wait_bvhcnt 0x05553; GFX12-NEXT:    s_wait_kmcnt 0x05554; GFX12-NEXT:    ds_load_b32 v2, v05555; GFX12-NEXT:    v_pk_max_num_f16 v1, v1, v15556; GFX12-NEXT:    s_mov_b32 s0, 05557; GFX12-NEXT:  .LBB20_1: ; %atomicrmw.start5558; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=15559; GFX12-NEXT:    s_wait_dscnt 0x05560; GFX12-NEXT:    v_mov_b32_e32 v3, v25561; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5562; GFX12-NEXT:    v_pk_max_num_f16 v2, v3, v35563; GFX12-NEXT:    v_pk_min_num_f16 v2, v2, v15564; GFX12-NEXT:    s_wait_storecnt 0x05565; GFX12-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v35566; GFX12-NEXT:    s_wait_dscnt 0x05567; GFX12-NEXT:    global_inv scope:SCOPE_SE5568; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v35569; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)5570; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s05571; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)5572; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05573; GFX12-NEXT:    s_cbranch_execnz .LBB20_15574; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end5575; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s05576; GFX12-NEXT:    v_mov_b32_e32 v0, v25577; GFX12-NEXT:    s_wait_loadcnt 0x05578; GFX12-NEXT:    s_setpc_b64 s[30:31]5579;5580; GFX942-LABEL: local_atomic_fmin_ret_v2f16:5581; GFX942:       ; %bb.0:5582; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5583; GFX942-NEXT:    ds_read_b32 v3, v05584; GFX942-NEXT:    s_mov_b64 s[0:1], 05585; GFX942-NEXT:    v_pk_max_f16 v2, v1, v15586; GFX942-NEXT:  .LBB20_1: ; %atomicrmw.start5587; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=15588; GFX942-NEXT:    s_waitcnt lgkmcnt(0)5589; GFX942-NEXT:    v_pk_max_f16 v1, v3, v35590; GFX942-NEXT:    s_nop 05591; GFX942-NEXT:    v_pk_min_f16 v1, v1, v25592; GFX942-NEXT:    ds_cmpst_rtn_b32 v1, v0, v3, v15593; GFX942-NEXT:    s_waitcnt lgkmcnt(0)5594; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v35595; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]5596; GFX942-NEXT:    v_mov_b32_e32 v3, v15597; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]5598; GFX942-NEXT:    s_cbranch_execnz .LBB20_15599; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end5600; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]5601; GFX942-NEXT:    v_mov_b32_e32 v0, v15602; GFX942-NEXT:    s_setpc_b64 s[30:31]5603;5604; GFX11-LABEL: local_atomic_fmin_ret_v2f16:5605; GFX11:       ; %bb.0:5606; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5607; GFX11-NEXT:    ds_load_b32 v2, v05608; GFX11-NEXT:    v_pk_max_f16 v1, v1, v15609; GFX11-NEXT:    s_mov_b32 s0, 05610; GFX11-NEXT:  .LBB20_1: ; %atomicrmw.start5611; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=15612; GFX11-NEXT:    s_waitcnt lgkmcnt(0)5613; GFX11-NEXT:    v_mov_b32_e32 v3, v25614; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5615; GFX11-NEXT:    v_pk_max_f16 v2, v3, v35616; GFX11-NEXT:    v_pk_min_f16 v2, v2, v15617; GFX11-NEXT:    s_waitcnt_vscnt null, 0x05618; GFX11-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v35619; GFX11-NEXT:    s_waitcnt lgkmcnt(0)5620; GFX11-NEXT:    buffer_gl0_inv5621; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v35622; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s05623; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5624; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05625; GFX11-NEXT:    s_cbranch_execnz .LBB20_15626; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end5627; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s05628; GFX11-NEXT:    v_mov_b32_e32 v0, v25629; GFX11-NEXT:    s_setpc_b64 s[30:31]5630;5631; GFX10-LABEL: local_atomic_fmin_ret_v2f16:5632; GFX10:       ; %bb.0:5633; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5634; GFX10-NEXT:    ds_read_b32 v2, v05635; GFX10-NEXT:    v_pk_max_f16 v1, v1, v15636; GFX10-NEXT:    s_mov_b32 s4, 05637; GFX10-NEXT:  .LBB20_1: ; %atomicrmw.start5638; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=15639; GFX10-NEXT:    s_waitcnt lgkmcnt(0)5640; GFX10-NEXT:    v_mov_b32_e32 v3, v25641; GFX10-NEXT:    v_pk_max_f16 v2, v3, v35642; GFX10-NEXT:    v_pk_min_f16 v2, v2, v15643; GFX10-NEXT:    s_waitcnt_vscnt null, 0x05644; GFX10-NEXT:    ds_cmpst_rtn_b32 v2, v0, v3, v25645; GFX10-NEXT:    s_waitcnt lgkmcnt(0)5646; GFX10-NEXT:    buffer_gl0_inv5647; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v35648; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s45649; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s45650; GFX10-NEXT:    s_cbranch_execnz .LBB20_15651; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end5652; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s45653; GFX10-NEXT:    v_mov_b32_e32 v0, v25654; GFX10-NEXT:    s_setpc_b64 s[30:31]5655;5656; GFX90A-LABEL: local_atomic_fmin_ret_v2f16:5657; GFX90A:       ; %bb.0:5658; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5659; GFX90A-NEXT:    ds_read_b32 v3, v05660; GFX90A-NEXT:    s_mov_b64 s[4:5], 05661; GFX90A-NEXT:    v_pk_max_f16 v2, v1, v15662; GFX90A-NEXT:  .LBB20_1: ; %atomicrmw.start5663; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=15664; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)5665; GFX90A-NEXT:    v_pk_max_f16 v1, v3, v35666; GFX90A-NEXT:    v_pk_min_f16 v1, v1, v25667; GFX90A-NEXT:    ds_cmpst_rtn_b32 v1, v0, v3, v15668; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)5669; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v35670; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5671; GFX90A-NEXT:    v_mov_b32_e32 v3, v15672; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]5673; GFX90A-NEXT:    s_cbranch_execnz .LBB20_15674; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end5675; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]5676; GFX90A-NEXT:    v_mov_b32_e32 v0, v15677; GFX90A-NEXT:    s_setpc_b64 s[30:31]5678;5679; GFX908-LABEL: local_atomic_fmin_ret_v2f16:5680; GFX908:       ; %bb.0:5681; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5682; GFX908-NEXT:    ds_read_b32 v2, v05683; GFX908-NEXT:    s_mov_b64 s[4:5], 05684; GFX908-NEXT:    v_pk_max_f16 v1, v1, v15685; GFX908-NEXT:  .LBB20_1: ; %atomicrmw.start5686; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=15687; GFX908-NEXT:    s_waitcnt lgkmcnt(0)5688; GFX908-NEXT:    v_mov_b32_e32 v3, v25689; GFX908-NEXT:    v_pk_max_f16 v2, v3, v35690; GFX908-NEXT:    v_pk_min_f16 v2, v2, v15691; GFX908-NEXT:    ds_cmpst_rtn_b32 v2, v0, v3, v25692; GFX908-NEXT:    s_waitcnt lgkmcnt(0)5693; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v35694; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5695; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]5696; GFX908-NEXT:    s_cbranch_execnz .LBB20_15697; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end5698; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]5699; GFX908-NEXT:    v_mov_b32_e32 v0, v25700; GFX908-NEXT:    s_setpc_b64 s[30:31]5701;5702; GFX8-LABEL: local_atomic_fmin_ret_v2f16:5703; GFX8:       ; %bb.0:5704; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5705; GFX8-NEXT:    s_mov_b32 m0, -15706; GFX8-NEXT:    ds_read_b32 v2, v05707; GFX8-NEXT:    s_mov_b64 s[4:5], 05708; GFX8-NEXT:    v_max_f16_sdwa v3, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_15709; GFX8-NEXT:    v_max_f16_e32 v1, v1, v15710; GFX8-NEXT:  .LBB20_1: ; %atomicrmw.start5711; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=15712; GFX8-NEXT:    s_waitcnt lgkmcnt(0)5713; GFX8-NEXT:    v_mov_b32_e32 v4, v25714; GFX8-NEXT:    v_max_f16_sdwa v2, v4, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_15715; GFX8-NEXT:    v_max_f16_e32 v5, v4, v45716; GFX8-NEXT:    v_min_f16_sdwa v2, v2, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD5717; GFX8-NEXT:    v_min_f16_e32 v5, v5, v15718; GFX8-NEXT:    v_or_b32_e32 v2, v5, v25719; GFX8-NEXT:    ds_cmpst_rtn_b32 v2, v0, v4, v25720; GFX8-NEXT:    s_waitcnt lgkmcnt(0)5721; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v45722; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5723; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]5724; GFX8-NEXT:    s_cbranch_execnz .LBB20_15725; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end5726; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]5727; GFX8-NEXT:    v_mov_b32_e32 v0, v25728; GFX8-NEXT:    s_setpc_b64 s[30:31]5729;5730; GFX7-LABEL: local_atomic_fmin_ret_v2f16:5731; GFX7:       ; %bb.0:5732; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5733; GFX7-NEXT:    s_mov_b32 m0, -15734; GFX7-NEXT:    ds_read_b32 v3, v05735; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v25736; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v15737; GFX7-NEXT:    s_mov_b64 s[4:5], 05738; GFX7-NEXT:    s_waitcnt lgkmcnt(0)5739; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v35740; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v25741; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v35742; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v45743; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v55744; GFX7-NEXT:  .LBB20_1: ; %atomicrmw.start5745; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=15746; GFX7-NEXT:    v_cvt_f16_f32_e32 v1, v15747; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v25748; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v15749; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v25750; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v15751; GFX7-NEXT:    v_or_b32_e32 v7, v2, v15752; GFX7-NEXT:    v_min_f32_e32 v5, v5, v35753; GFX7-NEXT:    v_min_f32_e32 v6, v6, v45754; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v55755; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v65756; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v55757; GFX7-NEXT:    v_or_b32_e32 v1, v6, v15758; GFX7-NEXT:    ds_cmpst_rtn_b32 v5, v0, v7, v15759; GFX7-NEXT:    s_waitcnt lgkmcnt(0)5760; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v55761; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v55762; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v15763; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v75764; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5765; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]5766; GFX7-NEXT:    s_cbranch_execnz .LBB20_15767; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end5768; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]5769; GFX7-NEXT:    v_mov_b32_e32 v0, v25770; GFX7-NEXT:    s_setpc_b64 s[30:31]5771;5772; GFX6-LABEL: local_atomic_fmin_ret_v2f16:5773; GFX6:       ; %bb.0:5774; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5775; GFX6-NEXT:    s_mov_b32 m0, -15776; GFX6-NEXT:    ds_read_b32 v3, v05777; GFX6-NEXT:    v_cvt_f16_f32_e32 v4, v25778; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v15779; GFX6-NEXT:    s_mov_b64 s[4:5], 05780; GFX6-NEXT:    s_waitcnt lgkmcnt(0)5781; GFX6-NEXT:    v_lshrrev_b32_e32 v2, 16, v35782; GFX6-NEXT:    v_cvt_f32_f16_e32 v1, v25783; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v35784; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v45785; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v55786; GFX6-NEXT:  .LBB20_1: ; %atomicrmw.start5787; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=15788; GFX6-NEXT:    v_cvt_f16_f32_e32 v1, v15789; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v25790; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v15791; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v25792; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 16, v15793; GFX6-NEXT:    v_or_b32_e32 v7, v2, v15794; GFX6-NEXT:    v_min_f32_e32 v5, v5, v35795; GFX6-NEXT:    v_min_f32_e32 v6, v6, v45796; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v55797; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v65798; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 16, v55799; GFX6-NEXT:    v_or_b32_e32 v1, v6, v15800; GFX6-NEXT:    ds_cmpst_rtn_b32 v5, v0, v7, v15801; GFX6-NEXT:    s_waitcnt lgkmcnt(0)5802; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v55803; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v55804; GFX6-NEXT:    v_cvt_f32_f16_e32 v1, v15805; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v75806; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5807; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]5808; GFX6-NEXT:    s_cbranch_execnz .LBB20_15809; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end5810; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]5811; GFX6-NEXT:    v_mov_b32_e32 v0, v25812; GFX6-NEXT:    s_setpc_b64 s[30:31]5813  %gep = getelementptr <2 x half>, ptr addrspace(3) %ptr, i32 163835814  %result = atomicrmw fmin ptr addrspace(3) %ptr, <2 x half> %val seq_cst5815  ret <2 x half> %result5816}5817 5818define <2 x half> @local_atomic_fmin_ret_v2f16__offset(ptr addrspace(3) %ptr, <2 x half> %val) {5819; GFX12-LABEL: local_atomic_fmin_ret_v2f16__offset:5820; GFX12:       ; %bb.0:5821; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x05822; GFX12-NEXT:    s_wait_expcnt 0x05823; GFX12-NEXT:    s_wait_samplecnt 0x05824; GFX12-NEXT:    s_wait_bvhcnt 0x05825; GFX12-NEXT:    s_wait_kmcnt 0x05826; GFX12-NEXT:    ds_load_b32 v2, v0 offset:655325827; GFX12-NEXT:    v_pk_max_num_f16 v1, v1, v15828; GFX12-NEXT:    s_mov_b32 s0, 05829; GFX12-NEXT:  .LBB21_1: ; %atomicrmw.start5830; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=15831; GFX12-NEXT:    s_wait_dscnt 0x05832; GFX12-NEXT:    v_mov_b32_e32 v3, v25833; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5834; GFX12-NEXT:    v_pk_max_num_f16 v2, v3, v35835; GFX12-NEXT:    v_pk_min_num_f16 v2, v2, v15836; GFX12-NEXT:    s_wait_storecnt 0x05837; GFX12-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v3 offset:655325838; GFX12-NEXT:    s_wait_dscnt 0x05839; GFX12-NEXT:    global_inv scope:SCOPE_SE5840; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v35841; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)5842; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s05843; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)5844; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05845; GFX12-NEXT:    s_cbranch_execnz .LBB21_15846; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end5847; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s05848; GFX12-NEXT:    v_mov_b32_e32 v0, v25849; GFX12-NEXT:    s_wait_loadcnt 0x05850; GFX12-NEXT:    s_setpc_b64 s[30:31]5851;5852; GFX942-LABEL: local_atomic_fmin_ret_v2f16__offset:5853; GFX942:       ; %bb.0:5854; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5855; GFX942-NEXT:    ds_read_b32 v3, v0 offset:655325856; GFX942-NEXT:    s_mov_b64 s[0:1], 05857; GFX942-NEXT:    v_pk_max_f16 v2, v1, v15858; GFX942-NEXT:  .LBB21_1: ; %atomicrmw.start5859; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=15860; GFX942-NEXT:    s_waitcnt lgkmcnt(0)5861; GFX942-NEXT:    v_pk_max_f16 v1, v3, v35862; GFX942-NEXT:    s_nop 05863; GFX942-NEXT:    v_pk_min_f16 v1, v1, v25864; GFX942-NEXT:    ds_cmpst_rtn_b32 v1, v0, v3, v1 offset:655325865; GFX942-NEXT:    s_waitcnt lgkmcnt(0)5866; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v35867; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]5868; GFX942-NEXT:    v_mov_b32_e32 v3, v15869; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]5870; GFX942-NEXT:    s_cbranch_execnz .LBB21_15871; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end5872; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]5873; GFX942-NEXT:    v_mov_b32_e32 v0, v15874; GFX942-NEXT:    s_setpc_b64 s[30:31]5875;5876; GFX11-LABEL: local_atomic_fmin_ret_v2f16__offset:5877; GFX11:       ; %bb.0:5878; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5879; GFX11-NEXT:    ds_load_b32 v2, v0 offset:655325880; GFX11-NEXT:    v_pk_max_f16 v1, v1, v15881; GFX11-NEXT:    s_mov_b32 s0, 05882; GFX11-NEXT:  .LBB21_1: ; %atomicrmw.start5883; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=15884; GFX11-NEXT:    s_waitcnt lgkmcnt(0)5885; GFX11-NEXT:    v_mov_b32_e32 v3, v25886; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5887; GFX11-NEXT:    v_pk_max_f16 v2, v3, v35888; GFX11-NEXT:    v_pk_min_f16 v2, v2, v15889; GFX11-NEXT:    s_waitcnt_vscnt null, 0x05890; GFX11-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v3 offset:655325891; GFX11-NEXT:    s_waitcnt lgkmcnt(0)5892; GFX11-NEXT:    buffer_gl0_inv5893; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v35894; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s05895; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5896; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s05897; GFX11-NEXT:    s_cbranch_execnz .LBB21_15898; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end5899; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s05900; GFX11-NEXT:    v_mov_b32_e32 v0, v25901; GFX11-NEXT:    s_setpc_b64 s[30:31]5902;5903; GFX10-LABEL: local_atomic_fmin_ret_v2f16__offset:5904; GFX10:       ; %bb.0:5905; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5906; GFX10-NEXT:    ds_read_b32 v2, v0 offset:655325907; GFX10-NEXT:    v_pk_max_f16 v1, v1, v15908; GFX10-NEXT:    s_mov_b32 s4, 05909; GFX10-NEXT:  .LBB21_1: ; %atomicrmw.start5910; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=15911; GFX10-NEXT:    s_waitcnt lgkmcnt(0)5912; GFX10-NEXT:    v_mov_b32_e32 v3, v25913; GFX10-NEXT:    v_pk_max_f16 v2, v3, v35914; GFX10-NEXT:    v_pk_min_f16 v2, v2, v15915; GFX10-NEXT:    s_waitcnt_vscnt null, 0x05916; GFX10-NEXT:    ds_cmpst_rtn_b32 v2, v0, v3, v2 offset:655325917; GFX10-NEXT:    s_waitcnt lgkmcnt(0)5918; GFX10-NEXT:    buffer_gl0_inv5919; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v35920; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s45921; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s45922; GFX10-NEXT:    s_cbranch_execnz .LBB21_15923; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end5924; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s45925; GFX10-NEXT:    v_mov_b32_e32 v0, v25926; GFX10-NEXT:    s_setpc_b64 s[30:31]5927;5928; GFX90A-LABEL: local_atomic_fmin_ret_v2f16__offset:5929; GFX90A:       ; %bb.0:5930; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5931; GFX90A-NEXT:    ds_read_b32 v3, v0 offset:655325932; GFX90A-NEXT:    s_mov_b64 s[4:5], 05933; GFX90A-NEXT:    v_pk_max_f16 v2, v1, v15934; GFX90A-NEXT:  .LBB21_1: ; %atomicrmw.start5935; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=15936; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)5937; GFX90A-NEXT:    v_pk_max_f16 v1, v3, v35938; GFX90A-NEXT:    v_pk_min_f16 v1, v1, v25939; GFX90A-NEXT:    ds_cmpst_rtn_b32 v1, v0, v3, v1 offset:655325940; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)5941; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v35942; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5943; GFX90A-NEXT:    v_mov_b32_e32 v3, v15944; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]5945; GFX90A-NEXT:    s_cbranch_execnz .LBB21_15946; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end5947; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]5948; GFX90A-NEXT:    v_mov_b32_e32 v0, v15949; GFX90A-NEXT:    s_setpc_b64 s[30:31]5950;5951; GFX908-LABEL: local_atomic_fmin_ret_v2f16__offset:5952; GFX908:       ; %bb.0:5953; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5954; GFX908-NEXT:    ds_read_b32 v2, v0 offset:655325955; GFX908-NEXT:    s_mov_b64 s[4:5], 05956; GFX908-NEXT:    v_pk_max_f16 v1, v1, v15957; GFX908-NEXT:  .LBB21_1: ; %atomicrmw.start5958; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=15959; GFX908-NEXT:    s_waitcnt lgkmcnt(0)5960; GFX908-NEXT:    v_mov_b32_e32 v3, v25961; GFX908-NEXT:    v_pk_max_f16 v2, v3, v35962; GFX908-NEXT:    v_pk_min_f16 v2, v2, v15963; GFX908-NEXT:    ds_cmpst_rtn_b32 v2, v0, v3, v2 offset:655325964; GFX908-NEXT:    s_waitcnt lgkmcnt(0)5965; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v35966; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5967; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]5968; GFX908-NEXT:    s_cbranch_execnz .LBB21_15969; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end5970; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]5971; GFX908-NEXT:    v_mov_b32_e32 v0, v25972; GFX908-NEXT:    s_setpc_b64 s[30:31]5973;5974; GFX8-LABEL: local_atomic_fmin_ret_v2f16__offset:5975; GFX8:       ; %bb.0:5976; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5977; GFX8-NEXT:    s_mov_b32 m0, -15978; GFX8-NEXT:    ds_read_b32 v2, v0 offset:655325979; GFX8-NEXT:    s_mov_b64 s[4:5], 05980; GFX8-NEXT:    v_max_f16_sdwa v3, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_15981; GFX8-NEXT:    v_max_f16_e32 v1, v1, v15982; GFX8-NEXT:  .LBB21_1: ; %atomicrmw.start5983; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=15984; GFX8-NEXT:    s_waitcnt lgkmcnt(0)5985; GFX8-NEXT:    v_mov_b32_e32 v4, v25986; GFX8-NEXT:    v_max_f16_sdwa v2, v4, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_15987; GFX8-NEXT:    v_max_f16_e32 v5, v4, v45988; GFX8-NEXT:    v_min_f16_sdwa v2, v2, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD5989; GFX8-NEXT:    v_min_f16_e32 v5, v5, v15990; GFX8-NEXT:    v_or_b32_e32 v2, v5, v25991; GFX8-NEXT:    ds_cmpst_rtn_b32 v2, v0, v4, v2 offset:655325992; GFX8-NEXT:    s_waitcnt lgkmcnt(0)5993; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v45994; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]5995; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]5996; GFX8-NEXT:    s_cbranch_execnz .LBB21_15997; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end5998; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]5999; GFX8-NEXT:    v_mov_b32_e32 v0, v26000; GFX8-NEXT:    s_setpc_b64 s[30:31]6001;6002; GFX7-LABEL: local_atomic_fmin_ret_v2f16__offset:6003; GFX7:       ; %bb.0:6004; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6005; GFX7-NEXT:    s_mov_b32 m0, -16006; GFX7-NEXT:    ds_read_b32 v3, v0 offset:655326007; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v26008; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v16009; GFX7-NEXT:    s_mov_b64 s[4:5], 06010; GFX7-NEXT:    s_waitcnt lgkmcnt(0)6011; GFX7-NEXT:    v_lshrrev_b32_e32 v2, 16, v36012; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v26013; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v36014; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v46015; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v56016; GFX7-NEXT:  .LBB21_1: ; %atomicrmw.start6017; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=16018; GFX7-NEXT:    v_cvt_f16_f32_e32 v1, v16019; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v26020; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v16021; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v26022; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v16023; GFX7-NEXT:    v_or_b32_e32 v7, v2, v16024; GFX7-NEXT:    v_min_f32_e32 v5, v5, v36025; GFX7-NEXT:    v_min_f32_e32 v6, v6, v46026; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v56027; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v66028; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v56029; GFX7-NEXT:    v_or_b32_e32 v1, v6, v16030; GFX7-NEXT:    ds_cmpst_rtn_b32 v5, v0, v7, v1 offset:655326031; GFX7-NEXT:    s_waitcnt lgkmcnt(0)6032; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v56033; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v56034; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v16035; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v76036; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6037; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]6038; GFX7-NEXT:    s_cbranch_execnz .LBB21_16039; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end6040; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]6041; GFX7-NEXT:    v_mov_b32_e32 v0, v26042; GFX7-NEXT:    s_setpc_b64 s[30:31]6043;6044; GFX6-LABEL: local_atomic_fmin_ret_v2f16__offset:6045; GFX6:       ; %bb.0:6046; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6047; GFX6-NEXT:    v_add_i32_e32 v3, vcc, 0xfffc, v06048; GFX6-NEXT:    s_mov_b32 m0, -16049; GFX6-NEXT:    ds_read_b32 v4, v36050; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v26051; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v16052; GFX6-NEXT:    s_mov_b64 s[4:5], 06053; GFX6-NEXT:    s_waitcnt lgkmcnt(0)6054; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v46055; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v46056; GFX6-NEXT:    v_cvt_f32_f16_e32 v1, v16057; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v26058; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v56059; GFX6-NEXT:  .LBB21_1: ; %atomicrmw.start6060; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=16061; GFX6-NEXT:    v_cvt_f16_f32_e32 v1, v16062; GFX6-NEXT:    v_cvt_f16_f32_e32 v0, v06063; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v16064; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v06065; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 16, v16066; GFX6-NEXT:    v_or_b32_e32 v7, v0, v16067; GFX6-NEXT:    v_min_f32_e32 v5, v5, v26068; GFX6-NEXT:    v_min_f32_e32 v6, v6, v46069; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v56070; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v66071; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v56072; GFX6-NEXT:    v_or_b32_e32 v0, v6, v06073; GFX6-NEXT:    ds_cmpst_rtn_b32 v5, v3, v7, v06074; GFX6-NEXT:    s_waitcnt lgkmcnt(0)6075; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v56076; GFX6-NEXT:    v_cvt_f32_f16_e32 v0, v56077; GFX6-NEXT:    v_cvt_f32_f16_e32 v1, v16078; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v76079; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6080; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]6081; GFX6-NEXT:    s_cbranch_execnz .LBB21_16082; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end6083; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]6084; GFX6-NEXT:    s_setpc_b64 s[30:31]6085  %gep = getelementptr <2 x half>, ptr addrspace(3) %ptr, i32 163836086  %result = atomicrmw fmin ptr addrspace(3) %gep, <2 x half> %val seq_cst6087  ret <2 x half> %result6088}6089 6090define void @local_atomic_fmin_noret_v2f16(ptr addrspace(3) %ptr, <2 x half> %val) {6091; GFX12-LABEL: local_atomic_fmin_noret_v2f16:6092; GFX12:       ; %bb.0:6093; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x06094; GFX12-NEXT:    s_wait_expcnt 0x06095; GFX12-NEXT:    s_wait_samplecnt 0x06096; GFX12-NEXT:    s_wait_bvhcnt 0x06097; GFX12-NEXT:    s_wait_kmcnt 0x06098; GFX12-NEXT:    ds_load_b32 v2, v06099; GFX12-NEXT:    v_pk_max_num_f16 v1, v1, v16100; GFX12-NEXT:    s_mov_b32 s0, 06101; GFX12-NEXT:  .LBB22_1: ; %atomicrmw.start6102; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=16103; GFX12-NEXT:    s_wait_dscnt 0x06104; GFX12-NEXT:    v_pk_max_num_f16 v3, v2, v26105; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)6106; GFX12-NEXT:    v_pk_min_num_f16 v3, v3, v16107; GFX12-NEXT:    s_wait_storecnt 0x06108; GFX12-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v26109; GFX12-NEXT:    s_wait_dscnt 0x06110; GFX12-NEXT:    global_inv scope:SCOPE_SE6111; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v26112; GFX12-NEXT:    v_mov_b32_e32 v2, v36113; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)6114; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s06115; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)6116; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06117; GFX12-NEXT:    s_cbranch_execnz .LBB22_16118; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end6119; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s06120; GFX12-NEXT:    s_wait_loadcnt 0x06121; GFX12-NEXT:    s_setpc_b64 s[30:31]6122;6123; GFX942-LABEL: local_atomic_fmin_noret_v2f16:6124; GFX942:       ; %bb.0:6125; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6126; GFX942-NEXT:    ds_read_b32 v2, v06127; GFX942-NEXT:    s_mov_b64 s[0:1], 06128; GFX942-NEXT:    v_pk_max_f16 v1, v1, v16129; GFX942-NEXT:  .LBB22_1: ; %atomicrmw.start6130; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=16131; GFX942-NEXT:    s_waitcnt lgkmcnt(0)6132; GFX942-NEXT:    v_pk_max_f16 v3, v2, v26133; GFX942-NEXT:    s_nop 06134; GFX942-NEXT:    v_pk_min_f16 v3, v3, v16135; GFX942-NEXT:    ds_cmpst_rtn_b32 v3, v0, v2, v36136; GFX942-NEXT:    s_waitcnt lgkmcnt(0)6137; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v26138; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]6139; GFX942-NEXT:    v_mov_b32_e32 v2, v36140; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]6141; GFX942-NEXT:    s_cbranch_execnz .LBB22_16142; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end6143; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]6144; GFX942-NEXT:    s_setpc_b64 s[30:31]6145;6146; GFX11-LABEL: local_atomic_fmin_noret_v2f16:6147; GFX11:       ; %bb.0:6148; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6149; GFX11-NEXT:    ds_load_b32 v2, v06150; GFX11-NEXT:    v_pk_max_f16 v1, v1, v16151; GFX11-NEXT:    s_mov_b32 s0, 06152; GFX11-NEXT:  .LBB22_1: ; %atomicrmw.start6153; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=16154; GFX11-NEXT:    s_waitcnt lgkmcnt(0)6155; GFX11-NEXT:    v_pk_max_f16 v3, v2, v26156; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)6157; GFX11-NEXT:    v_pk_min_f16 v3, v3, v16158; GFX11-NEXT:    s_waitcnt_vscnt null, 0x06159; GFX11-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v26160; GFX11-NEXT:    s_waitcnt lgkmcnt(0)6161; GFX11-NEXT:    buffer_gl0_inv6162; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v26163; GFX11-NEXT:    v_mov_b32_e32 v2, v36164; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s06165; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6166; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06167; GFX11-NEXT:    s_cbranch_execnz .LBB22_16168; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end6169; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s06170; GFX11-NEXT:    s_setpc_b64 s[30:31]6171;6172; GFX10-LABEL: local_atomic_fmin_noret_v2f16:6173; GFX10:       ; %bb.0:6174; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6175; GFX10-NEXT:    ds_read_b32 v2, v06176; GFX10-NEXT:    v_pk_max_f16 v1, v1, v16177; GFX10-NEXT:    s_mov_b32 s4, 06178; GFX10-NEXT:  .LBB22_1: ; %atomicrmw.start6179; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=16180; GFX10-NEXT:    s_waitcnt lgkmcnt(0)6181; GFX10-NEXT:    v_pk_max_f16 v3, v2, v26182; GFX10-NEXT:    v_pk_min_f16 v3, v3, v16183; GFX10-NEXT:    s_waitcnt_vscnt null, 0x06184; GFX10-NEXT:    ds_cmpst_rtn_b32 v3, v0, v2, v36185; GFX10-NEXT:    s_waitcnt lgkmcnt(0)6186; GFX10-NEXT:    buffer_gl0_inv6187; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v26188; GFX10-NEXT:    v_mov_b32_e32 v2, v36189; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s46190; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s46191; GFX10-NEXT:    s_cbranch_execnz .LBB22_16192; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end6193; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s46194; GFX10-NEXT:    s_setpc_b64 s[30:31]6195;6196; GFX90A-LABEL: local_atomic_fmin_noret_v2f16:6197; GFX90A:       ; %bb.0:6198; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6199; GFX90A-NEXT:    ds_read_b32 v2, v06200; GFX90A-NEXT:    s_mov_b64 s[4:5], 06201; GFX90A-NEXT:    v_pk_max_f16 v1, v1, v16202; GFX90A-NEXT:  .LBB22_1: ; %atomicrmw.start6203; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=16204; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)6205; GFX90A-NEXT:    v_pk_max_f16 v3, v2, v26206; GFX90A-NEXT:    v_pk_min_f16 v3, v3, v16207; GFX90A-NEXT:    ds_cmpst_rtn_b32 v3, v0, v2, v36208; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)6209; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v26210; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6211; GFX90A-NEXT:    v_mov_b32_e32 v2, v36212; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]6213; GFX90A-NEXT:    s_cbranch_execnz .LBB22_16214; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end6215; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]6216; GFX90A-NEXT:    s_setpc_b64 s[30:31]6217;6218; GFX908-LABEL: local_atomic_fmin_noret_v2f16:6219; GFX908:       ; %bb.0:6220; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6221; GFX908-NEXT:    ds_read_b32 v2, v06222; GFX908-NEXT:    s_mov_b64 s[4:5], 06223; GFX908-NEXT:    v_pk_max_f16 v1, v1, v16224; GFX908-NEXT:  .LBB22_1: ; %atomicrmw.start6225; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=16226; GFX908-NEXT:    s_waitcnt lgkmcnt(0)6227; GFX908-NEXT:    v_pk_max_f16 v3, v2, v26228; GFX908-NEXT:    v_pk_min_f16 v3, v3, v16229; GFX908-NEXT:    ds_cmpst_rtn_b32 v3, v0, v2, v36230; GFX908-NEXT:    s_waitcnt lgkmcnt(0)6231; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v26232; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6233; GFX908-NEXT:    v_mov_b32_e32 v2, v36234; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]6235; GFX908-NEXT:    s_cbranch_execnz .LBB22_16236; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end6237; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]6238; GFX908-NEXT:    s_setpc_b64 s[30:31]6239;6240; GFX8-LABEL: local_atomic_fmin_noret_v2f16:6241; GFX8:       ; %bb.0:6242; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6243; GFX8-NEXT:    s_mov_b32 m0, -16244; GFX8-NEXT:    ds_read_b32 v3, v06245; GFX8-NEXT:    s_mov_b64 s[4:5], 06246; GFX8-NEXT:    v_max_f16_sdwa v2, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_16247; GFX8-NEXT:    v_max_f16_e32 v1, v1, v16248; GFX8-NEXT:  .LBB22_1: ; %atomicrmw.start6249; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=16250; GFX8-NEXT:    s_waitcnt lgkmcnt(0)6251; GFX8-NEXT:    v_max_f16_sdwa v4, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_16252; GFX8-NEXT:    v_max_f16_e32 v5, v3, v36253; GFX8-NEXT:    v_min_f16_sdwa v4, v4, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD6254; GFX8-NEXT:    v_min_f16_e32 v5, v5, v16255; GFX8-NEXT:    v_or_b32_e32 v4, v5, v46256; GFX8-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v46257; GFX8-NEXT:    s_waitcnt lgkmcnt(0)6258; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v36259; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6260; GFX8-NEXT:    v_mov_b32_e32 v3, v46261; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]6262; GFX8-NEXT:    s_cbranch_execnz .LBB22_16263; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end6264; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]6265; GFX8-NEXT:    s_setpc_b64 s[30:31]6266;6267; GFX7-LABEL: local_atomic_fmin_noret_v2f16:6268; GFX7:       ; %bb.0:6269; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6270; GFX7-NEXT:    s_mov_b32 m0, -16271; GFX7-NEXT:    ds_read_b32 v3, v06272; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v26273; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v16274; GFX7-NEXT:    s_mov_b64 s[4:5], 06275; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v26276; GFX7-NEXT:    s_waitcnt lgkmcnt(0)6277; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v36278; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v46279; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v36280; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v56281; GFX7-NEXT:  .LBB22_1: ; %atomicrmw.start6282; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=16283; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v46284; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v36285; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v46286; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v36287; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v46288; GFX7-NEXT:    v_or_b32_e32 v7, v3, v46289; GFX7-NEXT:    v_min_f32_e32 v5, v5, v16290; GFX7-NEXT:    v_min_f32_e32 v6, v6, v26291; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v56292; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v66293; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v56294; GFX7-NEXT:    v_or_b32_e32 v3, v6, v36295; GFX7-NEXT:    ds_cmpst_rtn_b32 v5, v0, v7, v36296; GFX7-NEXT:    s_waitcnt lgkmcnt(0)6297; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v56298; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v56299; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v46300; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v76301; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6302; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]6303; GFX7-NEXT:    s_cbranch_execnz .LBB22_16304; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end6305; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]6306; GFX7-NEXT:    s_setpc_b64 s[30:31]6307;6308; GFX6-LABEL: local_atomic_fmin_noret_v2f16:6309; GFX6:       ; %bb.0:6310; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6311; GFX6-NEXT:    s_mov_b32 m0, -16312; GFX6-NEXT:    ds_read_b32 v3, v06313; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v26314; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v16315; GFX6-NEXT:    s_mov_b64 s[4:5], 06316; GFX6-NEXT:    v_cvt_f32_f16_e32 v1, v26317; GFX6-NEXT:    s_waitcnt lgkmcnt(0)6318; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v36319; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v46320; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v36321; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v56322; GFX6-NEXT:  .LBB22_1: ; %atomicrmw.start6323; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=16324; GFX6-NEXT:    v_cvt_f16_f32_e32 v4, v46325; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v36326; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v46327; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v36328; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v46329; GFX6-NEXT:    v_or_b32_e32 v7, v3, v46330; GFX6-NEXT:    v_min_f32_e32 v5, v5, v16331; GFX6-NEXT:    v_min_f32_e32 v6, v6, v26332; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v56333; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v66334; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v56335; GFX6-NEXT:    v_or_b32_e32 v3, v6, v36336; GFX6-NEXT:    ds_cmpst_rtn_b32 v5, v0, v7, v36337; GFX6-NEXT:    s_waitcnt lgkmcnt(0)6338; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v56339; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v56340; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v46341; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v76342; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6343; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]6344; GFX6-NEXT:    s_cbranch_execnz .LBB22_16345; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end6346; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]6347; GFX6-NEXT:    s_setpc_b64 s[30:31]6348  %result = atomicrmw fmin ptr addrspace(3) %ptr, <2 x half> %val seq_cst6349  ret void6350}6351 6352define void @local_atomic_fmin_noret_v2f16__offset(ptr addrspace(3) %ptr, <2 x half> %val) {6353; GFX12-LABEL: local_atomic_fmin_noret_v2f16__offset:6354; GFX12:       ; %bb.0:6355; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x06356; GFX12-NEXT:    s_wait_expcnt 0x06357; GFX12-NEXT:    s_wait_samplecnt 0x06358; GFX12-NEXT:    s_wait_bvhcnt 0x06359; GFX12-NEXT:    s_wait_kmcnt 0x06360; GFX12-NEXT:    ds_load_b32 v2, v0 offset:655326361; GFX12-NEXT:    v_pk_max_num_f16 v1, v1, v16362; GFX12-NEXT:    s_mov_b32 s0, 06363; GFX12-NEXT:  .LBB23_1: ; %atomicrmw.start6364; GFX12-NEXT:    ; =>This Inner Loop Header: Depth=16365; GFX12-NEXT:    s_wait_dscnt 0x06366; GFX12-NEXT:    v_pk_max_num_f16 v3, v2, v26367; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)6368; GFX12-NEXT:    v_pk_min_num_f16 v3, v3, v16369; GFX12-NEXT:    s_wait_storecnt 0x06370; GFX12-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v2 offset:655326371; GFX12-NEXT:    s_wait_dscnt 0x06372; GFX12-NEXT:    global_inv scope:SCOPE_SE6373; GFX12-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v26374; GFX12-NEXT:    v_mov_b32_e32 v2, v36375; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)6376; GFX12-NEXT:    s_or_b32 s0, vcc_lo, s06377; GFX12-NEXT:    s_wait_alu depctr_sa_sdst(0)6378; GFX12-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06379; GFX12-NEXT:    s_cbranch_execnz .LBB23_16380; GFX12-NEXT:  ; %bb.2: ; %atomicrmw.end6381; GFX12-NEXT:    s_or_b32 exec_lo, exec_lo, s06382; GFX12-NEXT:    s_wait_loadcnt 0x06383; GFX12-NEXT:    s_setpc_b64 s[30:31]6384;6385; GFX942-LABEL: local_atomic_fmin_noret_v2f16__offset:6386; GFX942:       ; %bb.0:6387; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6388; GFX942-NEXT:    ds_read_b32 v2, v0 offset:655326389; GFX942-NEXT:    s_mov_b64 s[0:1], 06390; GFX942-NEXT:    v_pk_max_f16 v1, v1, v16391; GFX942-NEXT:  .LBB23_1: ; %atomicrmw.start6392; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=16393; GFX942-NEXT:    s_waitcnt lgkmcnt(0)6394; GFX942-NEXT:    v_pk_max_f16 v3, v2, v26395; GFX942-NEXT:    s_nop 06396; GFX942-NEXT:    v_pk_min_f16 v3, v3, v16397; GFX942-NEXT:    ds_cmpst_rtn_b32 v3, v0, v2, v3 offset:655326398; GFX942-NEXT:    s_waitcnt lgkmcnt(0)6399; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v26400; GFX942-NEXT:    s_or_b64 s[0:1], vcc, s[0:1]6401; GFX942-NEXT:    v_mov_b32_e32 v2, v36402; GFX942-NEXT:    s_andn2_b64 exec, exec, s[0:1]6403; GFX942-NEXT:    s_cbranch_execnz .LBB23_16404; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end6405; GFX942-NEXT:    s_or_b64 exec, exec, s[0:1]6406; GFX942-NEXT:    s_setpc_b64 s[30:31]6407;6408; GFX11-LABEL: local_atomic_fmin_noret_v2f16__offset:6409; GFX11:       ; %bb.0:6410; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6411; GFX11-NEXT:    ds_load_b32 v2, v0 offset:655326412; GFX11-NEXT:    v_pk_max_f16 v1, v1, v16413; GFX11-NEXT:    s_mov_b32 s0, 06414; GFX11-NEXT:  .LBB23_1: ; %atomicrmw.start6415; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=16416; GFX11-NEXT:    s_waitcnt lgkmcnt(0)6417; GFX11-NEXT:    v_pk_max_f16 v3, v2, v26418; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)6419; GFX11-NEXT:    v_pk_min_f16 v3, v3, v16420; GFX11-NEXT:    s_waitcnt_vscnt null, 0x06421; GFX11-NEXT:    ds_cmpstore_rtn_b32 v3, v0, v3, v2 offset:655326422; GFX11-NEXT:    s_waitcnt lgkmcnt(0)6423; GFX11-NEXT:    buffer_gl0_inv6424; GFX11-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v26425; GFX11-NEXT:    v_mov_b32_e32 v2, v36426; GFX11-NEXT:    s_or_b32 s0, vcc_lo, s06427; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6428; GFX11-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06429; GFX11-NEXT:    s_cbranch_execnz .LBB23_16430; GFX11-NEXT:  ; %bb.2: ; %atomicrmw.end6431; GFX11-NEXT:    s_or_b32 exec_lo, exec_lo, s06432; GFX11-NEXT:    s_setpc_b64 s[30:31]6433;6434; GFX10-LABEL: local_atomic_fmin_noret_v2f16__offset:6435; GFX10:       ; %bb.0:6436; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6437; GFX10-NEXT:    ds_read_b32 v2, v0 offset:655326438; GFX10-NEXT:    v_pk_max_f16 v1, v1, v16439; GFX10-NEXT:    s_mov_b32 s4, 06440; GFX10-NEXT:  .LBB23_1: ; %atomicrmw.start6441; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=16442; GFX10-NEXT:    s_waitcnt lgkmcnt(0)6443; GFX10-NEXT:    v_pk_max_f16 v3, v2, v26444; GFX10-NEXT:    v_pk_min_f16 v3, v3, v16445; GFX10-NEXT:    s_waitcnt_vscnt null, 0x06446; GFX10-NEXT:    ds_cmpst_rtn_b32 v3, v0, v2, v3 offset:655326447; GFX10-NEXT:    s_waitcnt lgkmcnt(0)6448; GFX10-NEXT:    buffer_gl0_inv6449; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v3, v26450; GFX10-NEXT:    v_mov_b32_e32 v2, v36451; GFX10-NEXT:    s_or_b32 s4, vcc_lo, s46452; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s46453; GFX10-NEXT:    s_cbranch_execnz .LBB23_16454; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end6455; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s46456; GFX10-NEXT:    s_setpc_b64 s[30:31]6457;6458; GFX90A-LABEL: local_atomic_fmin_noret_v2f16__offset:6459; GFX90A:       ; %bb.0:6460; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6461; GFX90A-NEXT:    ds_read_b32 v2, v0 offset:655326462; GFX90A-NEXT:    s_mov_b64 s[4:5], 06463; GFX90A-NEXT:    v_pk_max_f16 v1, v1, v16464; GFX90A-NEXT:  .LBB23_1: ; %atomicrmw.start6465; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=16466; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)6467; GFX90A-NEXT:    v_pk_max_f16 v3, v2, v26468; GFX90A-NEXT:    v_pk_min_f16 v3, v3, v16469; GFX90A-NEXT:    ds_cmpst_rtn_b32 v3, v0, v2, v3 offset:655326470; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)6471; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v26472; GFX90A-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6473; GFX90A-NEXT:    v_mov_b32_e32 v2, v36474; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[4:5]6475; GFX90A-NEXT:    s_cbranch_execnz .LBB23_16476; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end6477; GFX90A-NEXT:    s_or_b64 exec, exec, s[4:5]6478; GFX90A-NEXT:    s_setpc_b64 s[30:31]6479;6480; GFX908-LABEL: local_atomic_fmin_noret_v2f16__offset:6481; GFX908:       ; %bb.0:6482; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6483; GFX908-NEXT:    ds_read_b32 v2, v0 offset:655326484; GFX908-NEXT:    s_mov_b64 s[4:5], 06485; GFX908-NEXT:    v_pk_max_f16 v1, v1, v16486; GFX908-NEXT:  .LBB23_1: ; %atomicrmw.start6487; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=16488; GFX908-NEXT:    s_waitcnt lgkmcnt(0)6489; GFX908-NEXT:    v_pk_max_f16 v3, v2, v26490; GFX908-NEXT:    v_pk_min_f16 v3, v3, v16491; GFX908-NEXT:    ds_cmpst_rtn_b32 v3, v0, v2, v3 offset:655326492; GFX908-NEXT:    s_waitcnt lgkmcnt(0)6493; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v26494; GFX908-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6495; GFX908-NEXT:    v_mov_b32_e32 v2, v36496; GFX908-NEXT:    s_andn2_b64 exec, exec, s[4:5]6497; GFX908-NEXT:    s_cbranch_execnz .LBB23_16498; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end6499; GFX908-NEXT:    s_or_b64 exec, exec, s[4:5]6500; GFX908-NEXT:    s_setpc_b64 s[30:31]6501;6502; GFX8-LABEL: local_atomic_fmin_noret_v2f16__offset:6503; GFX8:       ; %bb.0:6504; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6505; GFX8-NEXT:    s_mov_b32 m0, -16506; GFX8-NEXT:    ds_read_b32 v3, v0 offset:655326507; GFX8-NEXT:    s_mov_b64 s[4:5], 06508; GFX8-NEXT:    v_max_f16_sdwa v2, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_16509; GFX8-NEXT:    v_max_f16_e32 v1, v1, v16510; GFX8-NEXT:  .LBB23_1: ; %atomicrmw.start6511; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=16512; GFX8-NEXT:    s_waitcnt lgkmcnt(0)6513; GFX8-NEXT:    v_max_f16_sdwa v4, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_16514; GFX8-NEXT:    v_max_f16_e32 v5, v3, v36515; GFX8-NEXT:    v_min_f16_sdwa v4, v4, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD6516; GFX8-NEXT:    v_min_f16_e32 v5, v5, v16517; GFX8-NEXT:    v_or_b32_e32 v4, v5, v46518; GFX8-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v4 offset:655326519; GFX8-NEXT:    s_waitcnt lgkmcnt(0)6520; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v36521; GFX8-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6522; GFX8-NEXT:    v_mov_b32_e32 v3, v46523; GFX8-NEXT:    s_andn2_b64 exec, exec, s[4:5]6524; GFX8-NEXT:    s_cbranch_execnz .LBB23_16525; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end6526; GFX8-NEXT:    s_or_b64 exec, exec, s[4:5]6527; GFX8-NEXT:    s_setpc_b64 s[30:31]6528;6529; GFX7-LABEL: local_atomic_fmin_noret_v2f16__offset:6530; GFX7:       ; %bb.0:6531; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6532; GFX7-NEXT:    s_mov_b32 m0, -16533; GFX7-NEXT:    ds_read_b32 v3, v0 offset:655326534; GFX7-NEXT:    v_cvt_f16_f32_e32 v2, v26535; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v16536; GFX7-NEXT:    s_mov_b64 s[4:5], 06537; GFX7-NEXT:    v_cvt_f32_f16_e32 v1, v26538; GFX7-NEXT:    s_waitcnt lgkmcnt(0)6539; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v36540; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v46541; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v36542; GFX7-NEXT:    v_cvt_f32_f16_e32 v2, v56543; GFX7-NEXT:  .LBB23_1: ; %atomicrmw.start6544; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=16545; GFX7-NEXT:    v_cvt_f16_f32_e32 v4, v46546; GFX7-NEXT:    v_cvt_f16_f32_e32 v3, v36547; GFX7-NEXT:    v_cvt_f32_f16_e32 v5, v46548; GFX7-NEXT:    v_cvt_f32_f16_e32 v6, v36549; GFX7-NEXT:    v_lshlrev_b32_e32 v4, 16, v46550; GFX7-NEXT:    v_or_b32_e32 v7, v3, v46551; GFX7-NEXT:    v_min_f32_e32 v5, v5, v16552; GFX7-NEXT:    v_min_f32_e32 v6, v6, v26553; GFX7-NEXT:    v_cvt_f16_f32_e32 v5, v56554; GFX7-NEXT:    v_cvt_f16_f32_e32 v6, v66555; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v56556; GFX7-NEXT:    v_or_b32_e32 v3, v6, v36557; GFX7-NEXT:    ds_cmpst_rtn_b32 v5, v0, v7, v3 offset:655326558; GFX7-NEXT:    s_waitcnt lgkmcnt(0)6559; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v56560; GFX7-NEXT:    v_cvt_f32_f16_e32 v3, v56561; GFX7-NEXT:    v_cvt_f32_f16_e32 v4, v46562; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v76563; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6564; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]6565; GFX7-NEXT:    s_cbranch_execnz .LBB23_16566; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end6567; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]6568; GFX7-NEXT:    s_setpc_b64 s[30:31]6569;6570; GFX6-LABEL: local_atomic_fmin_noret_v2f16__offset:6571; GFX6:       ; %bb.0:6572; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6573; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffc, v06574; GFX6-NEXT:    s_mov_b32 m0, -16575; GFX6-NEXT:    ds_read_b32 v4, v06576; GFX6-NEXT:    v_cvt_f16_f32_e32 v2, v26577; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v16578; GFX6-NEXT:    s_mov_b64 s[4:5], 06579; GFX6-NEXT:    s_waitcnt lgkmcnt(0)6580; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v46581; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v46582; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v16583; GFX6-NEXT:    v_cvt_f32_f16_e32 v1, v26584; GFX6-NEXT:    v_cvt_f32_f16_e32 v2, v56585; GFX6-NEXT:  .LBB23_1: ; %atomicrmw.start6586; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=16587; GFX6-NEXT:    v_cvt_f16_f32_e32 v4, v46588; GFX6-NEXT:    v_cvt_f16_f32_e32 v3, v36589; GFX6-NEXT:    v_cvt_f32_f16_e32 v5, v46590; GFX6-NEXT:    v_cvt_f32_f16_e32 v6, v36591; GFX6-NEXT:    v_lshlrev_b32_e32 v4, 16, v46592; GFX6-NEXT:    v_or_b32_e32 v7, v3, v46593; GFX6-NEXT:    v_min_f32_e32 v5, v5, v16594; GFX6-NEXT:    v_min_f32_e32 v6, v6, v26595; GFX6-NEXT:    v_cvt_f16_f32_e32 v5, v56596; GFX6-NEXT:    v_cvt_f16_f32_e32 v6, v66597; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v56598; GFX6-NEXT:    v_or_b32_e32 v3, v6, v36599; GFX6-NEXT:    ds_cmpst_rtn_b32 v5, v0, v7, v36600; GFX6-NEXT:    s_waitcnt lgkmcnt(0)6601; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v56602; GFX6-NEXT:    v_cvt_f32_f16_e32 v3, v56603; GFX6-NEXT:    v_cvt_f32_f16_e32 v4, v46604; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v76605; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]6606; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]6607; GFX6-NEXT:    s_cbranch_execnz .LBB23_16608; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end6609; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]6610; GFX6-NEXT:    s_setpc_b64 s[30:31]6611  %gep = getelementptr <2 x half>, ptr addrspace(3) %ptr, i32 163836612  %result = atomicrmw fmin ptr addrspace(3) %gep, <2 x half> %val seq_cst6613  ret void6614}6615 6616; --------------------------------------------------------------------6617; <2 x bfloat>6618; --------------------------------------------------------------------6619 6620define <2 x bfloat> @local_atomic_fmin_ret_v2bf16(ptr addrspace(3) %ptr, <2 x bfloat> %val) {6621; GFX12-TRUE16-LABEL: local_atomic_fmin_ret_v2bf16:6622; GFX12-TRUE16:       ; %bb.0:6623; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x06624; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x06625; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x06626; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x06627; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x06628; GFX12-TRUE16-NEXT:    ds_load_b32 v2, v06629; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 0xffff0000, v16630; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v16631; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 06632; GFX12-TRUE16-NEXT:  .LBB24_1: ; %atomicrmw.start6633; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16634; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x06635; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v26636; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6637; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v46638; GFX12-TRUE16-NEXT:    v_min_num_f32_e32 v5, v5, v36639; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6640; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v5, 16, 16641; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v56642; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff6643; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v46644; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6645; GFX12-TRUE16-NEXT:    v_min_num_f32_e32 v2, v2, v16646; GFX12-TRUE16-NEXT:    v_bfe_u32 v6, v2, 16, 16647; GFX12-TRUE16-NEXT:    v_or_b32_e32 v8, 0x400000, v26648; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v26649; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)6650; GFX12-TRUE16-NEXT:    v_add3_u32 v6, v6, v2, 0x7fff6651; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)6652; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v6, v8, vcc_lo6653; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v56654; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)6655; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo6656; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)6657; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v2.h6658; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x06659; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v5, v46660; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x06661; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE6662; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v46663; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6664; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06665; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6666; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06667; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB24_16668; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6669; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06670; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v26671; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x06672; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]6673;6674; GFX12-FAKE16-LABEL: local_atomic_fmin_ret_v2bf16:6675; GFX12-FAKE16:       ; %bb.0:6676; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x06677; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x06678; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x06679; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x06680; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x06681; GFX12-FAKE16-NEXT:    ds_load_b32 v2, v06682; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v16683; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff0000, v16684; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 06685; GFX12-FAKE16-NEXT:  .LBB24_1: ; %atomicrmw.start6686; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16687; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x06688; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v26689; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6690; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v46691; GFX12-FAKE16-NEXT:    v_min_num_f32_e32 v5, v5, v16692; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)6693; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 16694; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v56695; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v56696; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff6697; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)6698; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6699; GFX12-FAKE16-NEXT:    v_dual_cndmask_b32 v5, v7, v9 :: v_dual_lshlrev_b32 v2, 16, v46700; GFX12-FAKE16-NEXT:    v_min_num_f32_e32 v2, v2, v36701; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)6702; GFX12-FAKE16-NEXT:    v_bfe_u32 v6, v2, 16, 16703; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v26704; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v26705; GFX12-FAKE16-NEXT:    v_add3_u32 v6, v6, v2, 0x7fff6706; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)6707; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6708; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v6, v8, s06709; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v5, v2, 0x70603026710; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x06711; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v46712; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x06713; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE6714; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v46715; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6716; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s16717; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6718; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s16719; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB24_16720; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6721; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s16722; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v26723; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x06724; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]6725;6726; GFX942-LABEL: local_atomic_fmin_ret_v2bf16:6727; GFX942:       ; %bb.0:6728; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6729; GFX942-NEXT:    ds_read_b32 v4, v06730; GFX942-NEXT:    s_mov_b64 s[2:3], 06731; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v16732; GFX942-NEXT:    s_movk_i32 s4, 0x7fff6733; GFX942-NEXT:    v_and_b32_e32 v3, 0xffff0000, v16734; GFX942-NEXT:    s_mov_b32 s5, 0x70603026735; GFX942-NEXT:  .LBB24_1: ; %atomicrmw.start6736; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=16737; GFX942-NEXT:    s_waitcnt lgkmcnt(0)6738; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 16, v46739; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v46740; GFX942-NEXT:    v_min_f32_e32 v1, v1, v26741; GFX942-NEXT:    v_min_f32_e32 v5, v5, v36742; GFX942-NEXT:    v_bfe_u32 v6, v1, 16, 16743; GFX942-NEXT:    v_bfe_u32 v8, v5, 16, 16744; GFX942-NEXT:    v_or_b32_e32 v7, 0x400000, v16745; GFX942-NEXT:    v_or_b32_e32 v9, 0x400000, v56746; GFX942-NEXT:    v_add3_u32 v6, v6, v1, s46747; GFX942-NEXT:    v_add3_u32 v8, v8, v5, s46748; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v5, v56749; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v1, v16750; GFX942-NEXT:    s_nop 06751; GFX942-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc6752; GFX942-NEXT:    v_cndmask_b32_e64 v1, v6, v7, s[0:1]6753; GFX942-NEXT:    v_perm_b32 v1, v5, v1, s56754; GFX942-NEXT:    ds_cmpst_rtn_b32 v1, v0, v4, v16755; GFX942-NEXT:    s_waitcnt lgkmcnt(0)6756; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v46757; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]6758; GFX942-NEXT:    v_mov_b32_e32 v4, v16759; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]6760; GFX942-NEXT:    s_cbranch_execnz .LBB24_16761; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end6762; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]6763; GFX942-NEXT:    v_mov_b32_e32 v0, v16764; GFX942-NEXT:    s_setpc_b64 s[30:31]6765;6766; GFX11-TRUE16-LABEL: local_atomic_fmin_ret_v2bf16:6767; GFX11-TRUE16:       ; %bb.0:6768; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6769; GFX11-TRUE16-NEXT:    ds_load_b32 v2, v06770; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 0xffff0000, v16771; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v16772; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 06773; GFX11-TRUE16-NEXT:    .p2align 66774; GFX11-TRUE16-NEXT:  .LBB24_1: ; %atomicrmw.start6775; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16776; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)6777; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v26778; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6779; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v46780; GFX11-TRUE16-NEXT:    v_min_f32_e32 v5, v5, v36781; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6782; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v5, 16, 16783; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v56784; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff6785; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v46786; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6787; GFX11-TRUE16-NEXT:    v_min_f32_e32 v2, v2, v16788; GFX11-TRUE16-NEXT:    v_bfe_u32 v6, v2, 16, 16789; GFX11-TRUE16-NEXT:    v_or_b32_e32 v8, 0x400000, v26790; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v26791; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)6792; GFX11-TRUE16-NEXT:    v_add3_u32 v6, v6, v2, 0x7fff6793; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v6, v8, vcc_lo6794; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v56795; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo6796; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)6797; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v2.h6798; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x06799; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v5, v46800; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)6801; GFX11-TRUE16-NEXT:    buffer_gl0_inv6802; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v46803; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s06804; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6805; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s06806; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB24_16807; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end6808; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s06809; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, v26810; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]6811;6812; GFX11-FAKE16-LABEL: local_atomic_fmin_ret_v2bf16:6813; GFX11-FAKE16:       ; %bb.0:6814; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6815; GFX11-FAKE16-NEXT:    ds_load_b32 v2, v06816; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v16817; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff0000, v16818; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 06819; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x16820; GFX11-FAKE16-NEXT:    .p2align 66821; GFX11-FAKE16-NEXT:  .LBB24_1: ; %atomicrmw.start6822; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16823; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)6824; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v26825; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6826; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v46827; GFX11-FAKE16-NEXT:    v_min_f32_e32 v5, v5, v16828; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)6829; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 16830; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v56831; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v56832; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff6833; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6834; GFX11-FAKE16-NEXT:    v_dual_cndmask_b32 v5, v7, v9 :: v_dual_lshlrev_b32 v2, 16, v46835; GFX11-FAKE16-NEXT:    v_min_f32_e32 v2, v2, v36836; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)6837; GFX11-FAKE16-NEXT:    v_bfe_u32 v6, v2, 16, 16838; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v26839; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v26840; GFX11-FAKE16-NEXT:    v_add3_u32 v6, v6, v2, 0x7fff6841; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6842; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v6, v8, s06843; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v5, v2, 0x70603026844; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x06845; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v46846; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)6847; GFX11-FAKE16-NEXT:    buffer_gl0_inv6848; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v46849; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s16850; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6851; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s16852; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB24_16853; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end6854; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x26855; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s16856; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v26857; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]6858;6859; GFX10-LABEL: local_atomic_fmin_ret_v2bf16:6860; GFX10:       ; %bb.0:6861; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6862; GFX10-NEXT:    ds_read_b32 v2, v06863; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 16, v16864; GFX10-NEXT:    v_and_b32_e32 v1, 0xffff0000, v16865; GFX10-NEXT:    s_mov_b32 s5, 06866; GFX10-NEXT:  .LBB24_1: ; %atomicrmw.start6867; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=16868; GFX10-NEXT:    s_waitcnt lgkmcnt(0)6869; GFX10-NEXT:    v_mov_b32_e32 v4, v26870; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v46871; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v46872; GFX10-NEXT:    v_min_f32_e32 v2, v2, v36873; GFX10-NEXT:    v_min_f32_e32 v5, v5, v16874; GFX10-NEXT:    v_bfe_u32 v6, v2, 16, 16875; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 16876; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v26877; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v56878; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v56879; GFX10-NEXT:    v_add3_u32 v6, v6, v2, 0x7fff6880; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff6881; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v2, v26882; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo6883; GFX10-NEXT:    v_cndmask_b32_e64 v2, v6, v8, s46884; GFX10-NEXT:    v_perm_b32 v2, v5, v2, 0x70603026885; GFX10-NEXT:    s_waitcnt_vscnt null, 0x06886; GFX10-NEXT:    ds_cmpst_rtn_b32 v2, v0, v4, v26887; GFX10-NEXT:    s_waitcnt lgkmcnt(0)6888; GFX10-NEXT:    buffer_gl0_inv6889; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v46890; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s56891; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s56892; GFX10-NEXT:    s_cbranch_execnz .LBB24_16893; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end6894; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s56895; GFX10-NEXT:    v_mov_b32_e32 v0, v26896; GFX10-NEXT:    s_setpc_b64 s[30:31]6897;6898; GFX90A-LABEL: local_atomic_fmin_ret_v2bf16:6899; GFX90A:       ; %bb.0:6900; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6901; GFX90A-NEXT:    ds_read_b32 v4, v06902; GFX90A-NEXT:    s_mov_b64 s[6:7], 06903; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v16904; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff6905; GFX90A-NEXT:    v_and_b32_e32 v3, 0xffff0000, v16906; GFX90A-NEXT:    s_mov_b32 s9, 0x70603026907; GFX90A-NEXT:  .LBB24_1: ; %atomicrmw.start6908; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=16909; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)6910; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 16, v46911; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v46912; GFX90A-NEXT:    v_min_f32_e32 v1, v1, v26913; GFX90A-NEXT:    v_min_f32_e32 v5, v5, v36914; GFX90A-NEXT:    v_bfe_u32 v6, v1, 16, 16915; GFX90A-NEXT:    v_bfe_u32 v8, v5, 16, 16916; GFX90A-NEXT:    v_or_b32_e32 v7, 0x400000, v16917; GFX90A-NEXT:    v_or_b32_e32 v9, 0x400000, v56918; GFX90A-NEXT:    v_add3_u32 v6, v6, v1, s86919; GFX90A-NEXT:    v_add3_u32 v8, v8, v5, s86920; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v5, v56921; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v1, v16922; GFX90A-NEXT:    v_cndmask_b32_e64 v1, v6, v7, s[4:5]6923; GFX90A-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc6924; GFX90A-NEXT:    v_perm_b32 v1, v5, v1, s96925; GFX90A-NEXT:    ds_cmpst_rtn_b32 v1, v0, v4, v16926; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)6927; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v46928; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]6929; GFX90A-NEXT:    v_mov_b32_e32 v4, v16930; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]6931; GFX90A-NEXT:    s_cbranch_execnz .LBB24_16932; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end6933; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]6934; GFX90A-NEXT:    v_mov_b32_e32 v0, v16935; GFX90A-NEXT:    s_setpc_b64 s[30:31]6936;6937; GFX908-LABEL: local_atomic_fmin_ret_v2bf16:6938; GFX908:       ; %bb.0:6939; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6940; GFX908-NEXT:    ds_read_b32 v2, v06941; GFX908-NEXT:    s_mov_b64 s[6:7], 06942; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v16943; GFX908-NEXT:    s_movk_i32 s8, 0x7fff6944; GFX908-NEXT:    v_and_b32_e32 v1, 0xffff0000, v16945; GFX908-NEXT:    s_mov_b32 s9, 0x70603026946; GFX908-NEXT:  .LBB24_1: ; %atomicrmw.start6947; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=16948; GFX908-NEXT:    s_waitcnt lgkmcnt(0)6949; GFX908-NEXT:    v_mov_b32_e32 v4, v26950; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v46951; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v46952; GFX908-NEXT:    v_min_f32_e32 v2, v2, v36953; GFX908-NEXT:    v_min_f32_e32 v5, v5, v16954; GFX908-NEXT:    v_bfe_u32 v6, v2, 16, 16955; GFX908-NEXT:    v_bfe_u32 v8, v5, 16, 16956; GFX908-NEXT:    v_or_b32_e32 v7, 0x400000, v26957; GFX908-NEXT:    v_or_b32_e32 v9, 0x400000, v56958; GFX908-NEXT:    v_add3_u32 v6, v6, v2, s86959; GFX908-NEXT:    v_add3_u32 v8, v8, v5, s86960; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v56961; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v26962; GFX908-NEXT:    v_cndmask_b32_e64 v2, v6, v7, s[4:5]6963; GFX908-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc6964; GFX908-NEXT:    v_perm_b32 v2, v5, v2, s96965; GFX908-NEXT:    ds_cmpst_rtn_b32 v2, v0, v4, v26966; GFX908-NEXT:    s_waitcnt lgkmcnt(0)6967; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v46968; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]6969; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]6970; GFX908-NEXT:    s_cbranch_execnz .LBB24_16971; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end6972; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]6973; GFX908-NEXT:    v_mov_b32_e32 v0, v26974; GFX908-NEXT:    s_setpc_b64 s[30:31]6975;6976; GFX8-LABEL: local_atomic_fmin_ret_v2bf16:6977; GFX8:       ; %bb.0:6978; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6979; GFX8-NEXT:    s_mov_b32 m0, -16980; GFX8-NEXT:    ds_read_b32 v2, v06981; GFX8-NEXT:    s_mov_b64 s[6:7], 06982; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 16, v16983; GFX8-NEXT:    v_and_b32_e32 v1, 0xffff0000, v16984; GFX8-NEXT:  .LBB24_1: ; %atomicrmw.start6985; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=16986; GFX8-NEXT:    s_waitcnt lgkmcnt(0)6987; GFX8-NEXT:    v_mov_b32_e32 v4, v26988; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v46989; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v46990; GFX8-NEXT:    v_min_f32_e32 v2, v2, v36991; GFX8-NEXT:    v_min_f32_e32 v5, v5, v16992; GFX8-NEXT:    v_bfe_u32 v6, v2, 16, 16993; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 16994; GFX8-NEXT:    v_add_u32_e32 v6, vcc, v6, v26995; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v56996; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0x7fff, v66997; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v86998; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v56999; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v57000; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v27001; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v27002; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc7003; GFX8-NEXT:    v_cndmask_b32_e64 v2, v6, v7, s[4:5]7004; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v57005; GFX8-NEXT:    v_alignbit_b32 v2, v5, v2, 167006; GFX8-NEXT:    ds_cmpst_rtn_b32 v2, v0, v4, v27007; GFX8-NEXT:    s_waitcnt lgkmcnt(0)7008; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v47009; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]7010; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]7011; GFX8-NEXT:    s_cbranch_execnz .LBB24_17012; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end7013; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]7014; GFX8-NEXT:    v_mov_b32_e32 v0, v27015; GFX8-NEXT:    s_setpc_b64 s[30:31]7016;7017; GFX7-LABEL: local_atomic_fmin_ret_v2bf16:7018; GFX7:       ; %bb.0:7019; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7020; GFX7-NEXT:    s_mov_b32 m0, -17021; GFX7-NEXT:    ds_read_b32 v3, v07022; GFX7-NEXT:    v_mov_b32_e32 v4, v17023; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v27024; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v47025; GFX7-NEXT:    s_mov_b64 s[4:5], 07026; GFX7-NEXT:    s_waitcnt lgkmcnt(0)7027; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v37028; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v37029; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v27030; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v47031; GFX7-NEXT:  .LBB24_1: ; %atomicrmw.start7032; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=17033; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v17034; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v37035; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v17036; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v37037; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v17038; GFX7-NEXT:    v_min_f32_e32 v5, v5, v27039; GFX7-NEXT:    v_min_f32_e32 v6, v6, v47040; GFX7-NEXT:    v_alignbit_b32 v1, v1, v3, 167041; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v57042; GFX7-NEXT:    v_alignbit_b32 v3, v3, v6, 167043; GFX7-NEXT:    ds_cmpst_rtn_b32 v3, v0, v1, v37044; GFX7-NEXT:    s_waitcnt lgkmcnt(0)7045; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v17046; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v37047; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7048; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v37049; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]7050; GFX7-NEXT:    s_cbranch_execnz .LBB24_17051; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end7052; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]7053; GFX7-NEXT:    v_mov_b32_e32 v0, v37054; GFX7-NEXT:    s_setpc_b64 s[30:31]7055;7056; GFX6-LABEL: local_atomic_fmin_ret_v2bf16:7057; GFX6:       ; %bb.0:7058; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7059; GFX6-NEXT:    s_mov_b32 m0, -17060; GFX6-NEXT:    ds_read_b32 v3, v07061; GFX6-NEXT:    v_mov_b32_e32 v4, v17062; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v27063; GFX6-NEXT:    v_mul_f32_e32 v4, 1.0, v47064; GFX6-NEXT:    s_mov_b64 s[4:5], 07065; GFX6-NEXT:    s_waitcnt lgkmcnt(0)7066; GFX6-NEXT:    v_and_b32_e32 v1, 0xffff0000, v37067; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v37068; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v27069; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v47070; GFX6-NEXT:  .LBB24_1: ; %atomicrmw.start7071; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=17072; GFX6-NEXT:    v_mul_f32_e32 v1, 1.0, v17073; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v37074; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v17075; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v37076; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v17077; GFX6-NEXT:    v_min_f32_e32 v5, v5, v27078; GFX6-NEXT:    v_min_f32_e32 v6, v6, v47079; GFX6-NEXT:    v_alignbit_b32 v1, v1, v3, 167080; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v57081; GFX6-NEXT:    v_alignbit_b32 v3, v3, v6, 167082; GFX6-NEXT:    ds_cmpst_rtn_b32 v3, v0, v1, v37083; GFX6-NEXT:    s_waitcnt lgkmcnt(0)7084; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v17085; GFX6-NEXT:    v_and_b32_e32 v1, 0xffff0000, v37086; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7087; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v37088; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]7089; GFX6-NEXT:    s_cbranch_execnz .LBB24_17090; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end7091; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]7092; GFX6-NEXT:    v_mov_b32_e32 v0, v37093; GFX6-NEXT:    s_setpc_b64 s[30:31]7094  %result = atomicrmw fmin ptr addrspace(3) %ptr, <2 x bfloat> %val seq_cst7095  ret <2 x bfloat> %result7096}7097 7098define <2 x bfloat> @local_atomic_fmin_ret_v2bf16__offset(ptr addrspace(3) %ptr, <2 x bfloat> %val) {7099; GFX12-TRUE16-LABEL: local_atomic_fmin_ret_v2bf16__offset:7100; GFX12-TRUE16:       ; %bb.0:7101; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x07102; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x07103; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x07104; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x07105; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x07106; GFX12-TRUE16-NEXT:    ds_load_b32 v2, v0 offset:655327107; GFX12-TRUE16-NEXT:    v_and_b32_e32 v3, 0xffff0000, v17108; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v17109; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 07110; GFX12-TRUE16-NEXT:  .LBB25_1: ; %atomicrmw.start7111; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17112; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x07113; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v4, v27114; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7115; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47116; GFX12-TRUE16-NEXT:    v_min_num_f32_e32 v5, v5, v37117; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)7118; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v5, 16, 17119; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v57120; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff7121; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v47122; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7123; GFX12-TRUE16-NEXT:    v_min_num_f32_e32 v2, v2, v17124; GFX12-TRUE16-NEXT:    v_bfe_u32 v6, v2, 16, 17125; GFX12-TRUE16-NEXT:    v_or_b32_e32 v8, 0x400000, v27126; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v27127; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)7128; GFX12-TRUE16-NEXT:    v_add3_u32 v6, v6, v2, 0x7fff7129; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)7130; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v6, v8, vcc_lo7131; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v57132; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)7133; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo7134; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)7135; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v2.h7136; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x07137; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v5, v4 offset:655327138; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x07139; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE7140; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v47141; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7142; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07143; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7144; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07145; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB25_17146; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7147; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07148; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v0, v27149; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07150; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]7151;7152; GFX12-FAKE16-LABEL: local_atomic_fmin_ret_v2bf16__offset:7153; GFX12-FAKE16:       ; %bb.0:7154; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07155; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x07156; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x07157; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x07158; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x07159; GFX12-FAKE16-NEXT:    ds_load_b32 v2, v0 offset:655327160; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v17161; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff0000, v17162; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 07163; GFX12-FAKE16-NEXT:  .LBB25_1: ; %atomicrmw.start7164; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17165; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x07166; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v4, v27167; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7168; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47169; GFX12-FAKE16-NEXT:    v_min_num_f32_e32 v5, v5, v17170; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)7171; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 17172; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v57173; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v57174; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff7175; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)7176; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7177; GFX12-FAKE16-NEXT:    v_dual_cndmask_b32 v5, v7, v9 :: v_dual_lshlrev_b32 v2, 16, v47178; GFX12-FAKE16-NEXT:    v_min_num_f32_e32 v2, v2, v37179; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)7180; GFX12-FAKE16-NEXT:    v_bfe_u32 v6, v2, 16, 17181; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v27182; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v27183; GFX12-FAKE16-NEXT:    v_add3_u32 v6, v6, v2, 0x7fff7184; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)7185; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7186; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v6, v8, s07187; GFX12-FAKE16-NEXT:    v_perm_b32 v2, v5, v2, 0x70603027188; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x07189; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v4 offset:655327190; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x07191; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE7192; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v47193; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7194; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s17195; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7196; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s17197; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB25_17198; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7199; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s17200; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v0, v27201; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07202; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]7203;7204; GFX942-LABEL: local_atomic_fmin_ret_v2bf16__offset:7205; GFX942:       ; %bb.0:7206; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7207; GFX942-NEXT:    ds_read_b32 v4, v0 offset:655327208; GFX942-NEXT:    s_mov_b64 s[2:3], 07209; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v17210; GFX942-NEXT:    s_movk_i32 s4, 0x7fff7211; GFX942-NEXT:    v_and_b32_e32 v3, 0xffff0000, v17212; GFX942-NEXT:    s_mov_b32 s5, 0x70603027213; GFX942-NEXT:  .LBB25_1: ; %atomicrmw.start7214; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=17215; GFX942-NEXT:    s_waitcnt lgkmcnt(0)7216; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 16, v47217; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47218; GFX942-NEXT:    v_min_f32_e32 v1, v1, v27219; GFX942-NEXT:    v_min_f32_e32 v5, v5, v37220; GFX942-NEXT:    v_bfe_u32 v6, v1, 16, 17221; GFX942-NEXT:    v_bfe_u32 v8, v5, 16, 17222; GFX942-NEXT:    v_or_b32_e32 v7, 0x400000, v17223; GFX942-NEXT:    v_or_b32_e32 v9, 0x400000, v57224; GFX942-NEXT:    v_add3_u32 v6, v6, v1, s47225; GFX942-NEXT:    v_add3_u32 v8, v8, v5, s47226; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v5, v57227; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v1, v17228; GFX942-NEXT:    s_nop 07229; GFX942-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc7230; GFX942-NEXT:    v_cndmask_b32_e64 v1, v6, v7, s[0:1]7231; GFX942-NEXT:    v_perm_b32 v1, v5, v1, s57232; GFX942-NEXT:    ds_cmpst_rtn_b32 v1, v0, v4, v1 offset:655327233; GFX942-NEXT:    s_waitcnt lgkmcnt(0)7234; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v47235; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]7236; GFX942-NEXT:    v_mov_b32_e32 v4, v17237; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]7238; GFX942-NEXT:    s_cbranch_execnz .LBB25_17239; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end7240; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]7241; GFX942-NEXT:    v_mov_b32_e32 v0, v17242; GFX942-NEXT:    s_setpc_b64 s[30:31]7243;7244; GFX11-TRUE16-LABEL: local_atomic_fmin_ret_v2bf16__offset:7245; GFX11-TRUE16:       ; %bb.0:7246; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7247; GFX11-TRUE16-NEXT:    ds_load_b32 v2, v0 offset:655327248; GFX11-TRUE16-NEXT:    v_and_b32_e32 v3, 0xffff0000, v17249; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v17250; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 07251; GFX11-TRUE16-NEXT:    .p2align 67252; GFX11-TRUE16-NEXT:  .LBB25_1: ; %atomicrmw.start7253; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17254; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)7255; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v27256; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7257; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47258; GFX11-TRUE16-NEXT:    v_min_f32_e32 v5, v5, v37259; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)7260; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v5, 16, 17261; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v57262; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff7263; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v47264; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7265; GFX11-TRUE16-NEXT:    v_min_f32_e32 v2, v2, v17266; GFX11-TRUE16-NEXT:    v_bfe_u32 v6, v2, 16, 17267; GFX11-TRUE16-NEXT:    v_or_b32_e32 v8, 0x400000, v27268; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v2, v27269; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)7270; GFX11-TRUE16-NEXT:    v_add3_u32 v6, v6, v2, 0x7fff7271; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v6, v8, vcc_lo7272; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v57273; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo7274; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)7275; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v2.h7276; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x07277; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v5, v4 offset:655327278; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)7279; GFX11-TRUE16-NEXT:    buffer_gl0_inv7280; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v47281; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07282; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7283; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07284; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB25_17285; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7286; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07287; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, v27288; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]7289;7290; GFX11-FAKE16-LABEL: local_atomic_fmin_ret_v2bf16__offset:7291; GFX11-FAKE16:       ; %bb.0:7292; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7293; GFX11-FAKE16-NEXT:    ds_load_b32 v2, v0 offset:655327294; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v3, 16, v17295; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff0000, v17296; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 07297; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x17298; GFX11-FAKE16-NEXT:    .p2align 67299; GFX11-FAKE16-NEXT:  .LBB25_1: ; %atomicrmw.start7300; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17301; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)7302; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v27303; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7304; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47305; GFX11-FAKE16-NEXT:    v_min_f32_e32 v5, v5, v17306; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)7307; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 17308; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v57309; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v57310; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff7311; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7312; GFX11-FAKE16-NEXT:    v_dual_cndmask_b32 v5, v7, v9 :: v_dual_lshlrev_b32 v2, 16, v47313; GFX11-FAKE16-NEXT:    v_min_f32_e32 v2, v2, v37314; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_3)7315; GFX11-FAKE16-NEXT:    v_bfe_u32 v6, v2, 16, 17316; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v27317; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v2, v27318; GFX11-FAKE16-NEXT:    v_add3_u32 v6, v6, v2, 0x7fff7319; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7320; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v2, v6, v8, s07321; GFX11-FAKE16-NEXT:    v_perm_b32 v2, v5, v2, 0x70603027322; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x07323; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v2, v0, v2, v4 offset:655327324; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)7325; GFX11-FAKE16-NEXT:    buffer_gl0_inv7326; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v47327; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s17328; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7329; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s17330; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB25_17331; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7332; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x27333; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s17334; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, v27335; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]7336;7337; GFX10-LABEL: local_atomic_fmin_ret_v2bf16__offset:7338; GFX10:       ; %bb.0:7339; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7340; GFX10-NEXT:    ds_read_b32 v2, v0 offset:655327341; GFX10-NEXT:    v_lshlrev_b32_e32 v3, 16, v17342; GFX10-NEXT:    v_and_b32_e32 v1, 0xffff0000, v17343; GFX10-NEXT:    s_mov_b32 s5, 07344; GFX10-NEXT:  .LBB25_1: ; %atomicrmw.start7345; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=17346; GFX10-NEXT:    s_waitcnt lgkmcnt(0)7347; GFX10-NEXT:    v_mov_b32_e32 v4, v27348; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v47349; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47350; GFX10-NEXT:    v_min_f32_e32 v2, v2, v37351; GFX10-NEXT:    v_min_f32_e32 v5, v5, v17352; GFX10-NEXT:    v_bfe_u32 v6, v2, 16, 17353; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 17354; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v27355; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v57356; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v57357; GFX10-NEXT:    v_add3_u32 v6, v6, v2, 0x7fff7358; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff7359; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v2, v27360; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo7361; GFX10-NEXT:    v_cndmask_b32_e64 v2, v6, v8, s47362; GFX10-NEXT:    v_perm_b32 v2, v5, v2, 0x70603027363; GFX10-NEXT:    s_waitcnt_vscnt null, 0x07364; GFX10-NEXT:    ds_cmpst_rtn_b32 v2, v0, v4, v2 offset:655327365; GFX10-NEXT:    s_waitcnt lgkmcnt(0)7366; GFX10-NEXT:    buffer_gl0_inv7367; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v2, v47368; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s57369; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s57370; GFX10-NEXT:    s_cbranch_execnz .LBB25_17371; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end7372; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s57373; GFX10-NEXT:    v_mov_b32_e32 v0, v27374; GFX10-NEXT:    s_setpc_b64 s[30:31]7375;7376; GFX90A-LABEL: local_atomic_fmin_ret_v2bf16__offset:7377; GFX90A:       ; %bb.0:7378; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7379; GFX90A-NEXT:    ds_read_b32 v4, v0 offset:655327380; GFX90A-NEXT:    s_mov_b64 s[6:7], 07381; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v17382; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff7383; GFX90A-NEXT:    v_and_b32_e32 v3, 0xffff0000, v17384; GFX90A-NEXT:    s_mov_b32 s9, 0x70603027385; GFX90A-NEXT:  .LBB25_1: ; %atomicrmw.start7386; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=17387; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)7388; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 16, v47389; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47390; GFX90A-NEXT:    v_min_f32_e32 v1, v1, v27391; GFX90A-NEXT:    v_min_f32_e32 v5, v5, v37392; GFX90A-NEXT:    v_bfe_u32 v6, v1, 16, 17393; GFX90A-NEXT:    v_bfe_u32 v8, v5, 16, 17394; GFX90A-NEXT:    v_or_b32_e32 v7, 0x400000, v17395; GFX90A-NEXT:    v_or_b32_e32 v9, 0x400000, v57396; GFX90A-NEXT:    v_add3_u32 v6, v6, v1, s87397; GFX90A-NEXT:    v_add3_u32 v8, v8, v5, s87398; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v5, v57399; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v1, v17400; GFX90A-NEXT:    v_cndmask_b32_e64 v1, v6, v7, s[4:5]7401; GFX90A-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc7402; GFX90A-NEXT:    v_perm_b32 v1, v5, v1, s97403; GFX90A-NEXT:    ds_cmpst_rtn_b32 v1, v0, v4, v1 offset:655327404; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)7405; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v47406; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]7407; GFX90A-NEXT:    v_mov_b32_e32 v4, v17408; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]7409; GFX90A-NEXT:    s_cbranch_execnz .LBB25_17410; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end7411; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]7412; GFX90A-NEXT:    v_mov_b32_e32 v0, v17413; GFX90A-NEXT:    s_setpc_b64 s[30:31]7414;7415; GFX908-LABEL: local_atomic_fmin_ret_v2bf16__offset:7416; GFX908:       ; %bb.0:7417; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7418; GFX908-NEXT:    ds_read_b32 v2, v0 offset:655327419; GFX908-NEXT:    s_mov_b64 s[6:7], 07420; GFX908-NEXT:    v_lshlrev_b32_e32 v3, 16, v17421; GFX908-NEXT:    s_movk_i32 s8, 0x7fff7422; GFX908-NEXT:    v_and_b32_e32 v1, 0xffff0000, v17423; GFX908-NEXT:    s_mov_b32 s9, 0x70603027424; GFX908-NEXT:  .LBB25_1: ; %atomicrmw.start7425; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=17426; GFX908-NEXT:    s_waitcnt lgkmcnt(0)7427; GFX908-NEXT:    v_mov_b32_e32 v4, v27428; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v47429; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47430; GFX908-NEXT:    v_min_f32_e32 v2, v2, v37431; GFX908-NEXT:    v_min_f32_e32 v5, v5, v17432; GFX908-NEXT:    v_bfe_u32 v6, v2, 16, 17433; GFX908-NEXT:    v_bfe_u32 v8, v5, 16, 17434; GFX908-NEXT:    v_or_b32_e32 v7, 0x400000, v27435; GFX908-NEXT:    v_or_b32_e32 v9, 0x400000, v57436; GFX908-NEXT:    v_add3_u32 v6, v6, v2, s87437; GFX908-NEXT:    v_add3_u32 v8, v8, v5, s87438; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v57439; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v27440; GFX908-NEXT:    v_cndmask_b32_e64 v2, v6, v7, s[4:5]7441; GFX908-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc7442; GFX908-NEXT:    v_perm_b32 v2, v5, v2, s97443; GFX908-NEXT:    ds_cmpst_rtn_b32 v2, v0, v4, v2 offset:655327444; GFX908-NEXT:    s_waitcnt lgkmcnt(0)7445; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v47446; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]7447; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]7448; GFX908-NEXT:    s_cbranch_execnz .LBB25_17449; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end7450; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]7451; GFX908-NEXT:    v_mov_b32_e32 v0, v27452; GFX908-NEXT:    s_setpc_b64 s[30:31]7453;7454; GFX8-LABEL: local_atomic_fmin_ret_v2bf16__offset:7455; GFX8:       ; %bb.0:7456; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7457; GFX8-NEXT:    s_mov_b32 m0, -17458; GFX8-NEXT:    ds_read_b32 v2, v0 offset:655327459; GFX8-NEXT:    s_mov_b64 s[6:7], 07460; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 16, v17461; GFX8-NEXT:    v_and_b32_e32 v1, 0xffff0000, v17462; GFX8-NEXT:  .LBB25_1: ; %atomicrmw.start7463; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=17464; GFX8-NEXT:    s_waitcnt lgkmcnt(0)7465; GFX8-NEXT:    v_mov_b32_e32 v4, v27466; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v47467; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47468; GFX8-NEXT:    v_min_f32_e32 v2, v2, v37469; GFX8-NEXT:    v_min_f32_e32 v5, v5, v17470; GFX8-NEXT:    v_bfe_u32 v6, v2, 16, 17471; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 17472; GFX8-NEXT:    v_add_u32_e32 v6, vcc, v6, v27473; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v57474; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0x7fff, v67475; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v87476; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v57477; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v57478; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v27479; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v2, v27480; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc7481; GFX8-NEXT:    v_cndmask_b32_e64 v2, v6, v7, s[4:5]7482; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v57483; GFX8-NEXT:    v_alignbit_b32 v2, v5, v2, 167484; GFX8-NEXT:    ds_cmpst_rtn_b32 v2, v0, v4, v2 offset:655327485; GFX8-NEXT:    s_waitcnt lgkmcnt(0)7486; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v47487; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]7488; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]7489; GFX8-NEXT:    s_cbranch_execnz .LBB25_17490; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end7491; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]7492; GFX8-NEXT:    v_mov_b32_e32 v0, v27493; GFX8-NEXT:    s_setpc_b64 s[30:31]7494;7495; GFX7-LABEL: local_atomic_fmin_ret_v2bf16__offset:7496; GFX7:       ; %bb.0:7497; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7498; GFX7-NEXT:    s_mov_b32 m0, -17499; GFX7-NEXT:    ds_read_b32 v3, v0 offset:655327500; GFX7-NEXT:    v_mov_b32_e32 v4, v17501; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v27502; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v47503; GFX7-NEXT:    s_mov_b64 s[4:5], 07504; GFX7-NEXT:    s_waitcnt lgkmcnt(0)7505; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v37506; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v37507; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v27508; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v47509; GFX7-NEXT:  .LBB25_1: ; %atomicrmw.start7510; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=17511; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v17512; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v37513; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v17514; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v37515; GFX7-NEXT:    v_lshrrev_b32_e32 v1, 16, v17516; GFX7-NEXT:    v_min_f32_e32 v5, v5, v27517; GFX7-NEXT:    v_min_f32_e32 v6, v6, v47518; GFX7-NEXT:    v_alignbit_b32 v1, v1, v3, 167519; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v57520; GFX7-NEXT:    v_alignbit_b32 v3, v3, v6, 167521; GFX7-NEXT:    ds_cmpst_rtn_b32 v3, v0, v1, v3 offset:655327522; GFX7-NEXT:    s_waitcnt lgkmcnt(0)7523; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v17524; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v37525; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7526; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v37527; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]7528; GFX7-NEXT:    s_cbranch_execnz .LBB25_17529; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end7530; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]7531; GFX7-NEXT:    v_mov_b32_e32 v0, v37532; GFX7-NEXT:    s_setpc_b64 s[30:31]7533;7534; GFX6-LABEL: local_atomic_fmin_ret_v2bf16__offset:7535; GFX6:       ; %bb.0:7536; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7537; GFX6-NEXT:    v_add_i32_e32 v4, vcc, 0xfffc, v07538; GFX6-NEXT:    s_mov_b32 m0, -17539; GFX6-NEXT:    ds_read_b32 v0, v47540; GFX6-NEXT:    v_mov_b32_e32 v3, v17541; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v27542; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v37543; GFX6-NEXT:    s_mov_b64 s[4:5], 07544; GFX6-NEXT:    s_waitcnt lgkmcnt(0)7545; GFX6-NEXT:    v_and_b32_e32 v1, 0xffff0000, v07546; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v07547; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v27548; GFX6-NEXT:    v_and_b32_e32 v3, 0xffff0000, v37549; GFX6-NEXT:  .LBB25_1: ; %atomicrmw.start7550; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=17551; GFX6-NEXT:    v_mul_f32_e32 v1, 1.0, v17552; GFX6-NEXT:    v_mul_f32_e32 v0, 1.0, v07553; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v17554; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v07555; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v17556; GFX6-NEXT:    v_min_f32_e32 v5, v5, v27557; GFX6-NEXT:    v_min_f32_e32 v6, v6, v37558; GFX6-NEXT:    v_alignbit_b32 v0, v1, v0, 167559; GFX6-NEXT:    v_lshrrev_b32_e32 v1, 16, v57560; GFX6-NEXT:    v_alignbit_b32 v1, v1, v6, 167561; GFX6-NEXT:    ds_cmpst_rtn_b32 v5, v4, v0, v17562; GFX6-NEXT:    s_waitcnt lgkmcnt(0)7563; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v07564; GFX6-NEXT:    v_and_b32_e32 v1, 0xffff0000, v57565; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7566; GFX6-NEXT:    v_lshlrev_b32_e32 v0, 16, v57567; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]7568; GFX6-NEXT:    s_cbranch_execnz .LBB25_17569; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end7570; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]7571; GFX6-NEXT:    s_setpc_b64 s[30:31]7572  %gep = getelementptr <2 x bfloat>, ptr addrspace(3) %ptr, i32 163837573  %result = atomicrmw fmin ptr addrspace(3) %gep, <2 x bfloat> %val seq_cst7574  ret <2 x bfloat> %result7575}7576 7577define void @local_atomic_fmin_noret_v2bf16(ptr addrspace(3) %ptr, <2 x bfloat> %val) {7578; GFX12-TRUE16-LABEL: local_atomic_fmin_noret_v2bf16:7579; GFX12-TRUE16:       ; %bb.0:7580; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x07581; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x07582; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x07583; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x07584; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x07585; GFX12-TRUE16-NEXT:    ds_load_b32 v3, v07586; GFX12-TRUE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v17587; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v17588; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 07589; GFX12-TRUE16-NEXT:  .LBB26_1: ; %atomicrmw.start7590; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17591; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x07592; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v37593; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7594; GFX12-TRUE16-NEXT:    v_dual_min_num_f32 v5, v5, v2 :: v_dual_lshlrev_b32 v4, 16, v37595; GFX12-TRUE16-NEXT:    v_min_num_f32_e32 v4, v4, v17596; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7597; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v5, 16, 17598; GFX12-TRUE16-NEXT:    v_bfe_u32 v6, v4, 16, 17599; GFX12-TRUE16-NEXT:    v_or_b32_e32 v8, 0x400000, v47600; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v47601; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v57602; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff7603; GFX12-TRUE16-NEXT:    v_add3_u32 v6, v6, v4, 0x7fff7604; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)7605; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_3)7606; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v6, v8, vcc_lo7607; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v57608; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)7609; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo7610; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v4.h7611; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x07612; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v5, v37613; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x07614; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE7615; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v37616; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v47617; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7618; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07619; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7620; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07621; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB26_17622; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7623; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07624; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x07625; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]7626;7627; GFX12-FAKE16-LABEL: local_atomic_fmin_noret_v2bf16:7628; GFX12-FAKE16:       ; %bb.0:7629; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x07630; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x07631; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x07632; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x07633; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x07634; GFX12-FAKE16-NEXT:    ds_load_b32 v3, v07635; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v17636; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff0000, v17637; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 07638; GFX12-FAKE16-NEXT:  .LBB26_1: ; %atomicrmw.start7639; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17640; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x07641; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v37642; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7643; GFX12-FAKE16-NEXT:    v_dual_min_num_f32 v5, v5, v1 :: v_dual_lshlrev_b32 v4, 16, v37644; GFX12-FAKE16-NEXT:    v_min_num_f32_e32 v4, v4, v27645; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7646; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 17647; GFX12-FAKE16-NEXT:    v_bfe_u32 v6, v4, 16, 17648; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v47649; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v57650; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v57651; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff7652; GFX12-FAKE16-NEXT:    v_add3_u32 v6, v6, v4, 0x7fff7653; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v4, v47654; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)7655; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)7656; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo7657; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)7658; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v4, v6, v8, s07659; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7660; GFX12-FAKE16-NEXT:    v_perm_b32 v4, v5, v4, 0x70603027661; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x07662; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v37663; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x07664; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE7665; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v37666; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v47667; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7668; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s17669; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7670; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s17671; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB26_17672; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7673; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s17674; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x07675; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]7676;7677; GFX942-LABEL: local_atomic_fmin_noret_v2bf16:7678; GFX942:       ; %bb.0:7679; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7680; GFX942-NEXT:    ds_read_b32 v3, v07681; GFX942-NEXT:    s_mov_b64 s[2:3], 07682; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v17683; GFX942-NEXT:    s_movk_i32 s4, 0x7fff7684; GFX942-NEXT:    v_and_b32_e32 v1, 0xffff0000, v17685; GFX942-NEXT:    s_mov_b32 s5, 0x70603027686; GFX942-NEXT:  .LBB26_1: ; %atomicrmw.start7687; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=17688; GFX942-NEXT:    s_waitcnt lgkmcnt(0)7689; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v37690; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v37691; GFX942-NEXT:    v_min_f32_e32 v4, v4, v27692; GFX942-NEXT:    v_min_f32_e32 v5, v5, v17693; GFX942-NEXT:    v_bfe_u32 v6, v4, 16, 17694; GFX942-NEXT:    v_bfe_u32 v8, v5, 16, 17695; GFX942-NEXT:    v_or_b32_e32 v7, 0x400000, v47696; GFX942-NEXT:    v_or_b32_e32 v9, 0x400000, v57697; GFX942-NEXT:    v_add3_u32 v6, v6, v4, s47698; GFX942-NEXT:    v_add3_u32 v8, v8, v5, s47699; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v5, v57700; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v4, v47701; GFX942-NEXT:    s_nop 07702; GFX942-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc7703; GFX942-NEXT:    v_cndmask_b32_e64 v4, v6, v7, s[0:1]7704; GFX942-NEXT:    v_perm_b32 v4, v5, v4, s57705; GFX942-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v47706; GFX942-NEXT:    s_waitcnt lgkmcnt(0)7707; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v37708; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]7709; GFX942-NEXT:    v_mov_b32_e32 v3, v47710; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]7711; GFX942-NEXT:    s_cbranch_execnz .LBB26_17712; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end7713; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]7714; GFX942-NEXT:    s_setpc_b64 s[30:31]7715;7716; GFX11-TRUE16-LABEL: local_atomic_fmin_noret_v2bf16:7717; GFX11-TRUE16:       ; %bb.0:7718; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7719; GFX11-TRUE16-NEXT:    ds_load_b32 v3, v07720; GFX11-TRUE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v17721; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v17722; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 07723; GFX11-TRUE16-NEXT:    .p2align 67724; GFX11-TRUE16-NEXT:  .LBB26_1: ; %atomicrmw.start7725; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=17726; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)7727; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v37728; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7729; GFX11-TRUE16-NEXT:    v_dual_min_f32 v5, v5, v2 :: v_dual_lshlrev_b32 v4, 16, v37730; GFX11-TRUE16-NEXT:    v_min_f32_e32 v4, v4, v17731; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7732; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v5, 16, 17733; GFX11-TRUE16-NEXT:    v_bfe_u32 v6, v4, 16, 17734; GFX11-TRUE16-NEXT:    v_or_b32_e32 v8, 0x400000, v47735; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v47736; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v57737; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff7738; GFX11-TRUE16-NEXT:    v_add3_u32 v6, v6, v4, 0x7fff7739; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_4)7740; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v6, v8, vcc_lo7741; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v57742; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo7743; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)7744; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v4.h7745; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x07746; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v5, v37747; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)7748; GFX11-TRUE16-NEXT:    buffer_gl0_inv7749; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v37750; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v47751; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s07752; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7753; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s07754; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB26_17755; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end7756; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s07757; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]7758;7759; GFX11-FAKE16-LABEL: local_atomic_fmin_noret_v2bf16:7760; GFX11-FAKE16:       ; %bb.0:7761; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7762; GFX11-FAKE16-NEXT:    ds_load_b32 v3, v07763; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v17764; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff0000, v17765; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 07766; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x17767; GFX11-FAKE16-NEXT:    .p2align 67768; GFX11-FAKE16-NEXT:  .LBB26_1: ; %atomicrmw.start7769; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17770; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)7771; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v37772; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7773; GFX11-FAKE16-NEXT:    v_dual_min_f32 v5, v5, v1 :: v_dual_lshlrev_b32 v4, 16, v37774; GFX11-FAKE16-NEXT:    v_min_f32_e32 v4, v4, v27775; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7776; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 17777; GFX11-FAKE16-NEXT:    v_bfe_u32 v6, v4, 16, 17778; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v47779; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v57780; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v57781; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff7782; GFX11-FAKE16-NEXT:    v_add3_u32 v6, v6, v4, 0x7fff7783; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v4, v47784; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)7785; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo7786; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v4, v6, v8, s07787; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7788; GFX11-FAKE16-NEXT:    v_perm_b32 v4, v5, v4, 0x70603027789; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x07790; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v37791; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)7792; GFX11-FAKE16-NEXT:    buffer_gl0_inv7793; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v37794; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v47795; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s17796; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7797; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s17798; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB26_17799; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end7800; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x27801; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s17802; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]7803;7804; GFX10-LABEL: local_atomic_fmin_noret_v2bf16:7805; GFX10:       ; %bb.0:7806; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7807; GFX10-NEXT:    ds_read_b32 v3, v07808; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v17809; GFX10-NEXT:    v_and_b32_e32 v1, 0xffff0000, v17810; GFX10-NEXT:    s_mov_b32 s5, 07811; GFX10-NEXT:  .LBB26_1: ; %atomicrmw.start7812; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=17813; GFX10-NEXT:    s_waitcnt lgkmcnt(0)7814; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v37815; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v37816; GFX10-NEXT:    v_min_f32_e32 v4, v4, v27817; GFX10-NEXT:    v_min_f32_e32 v5, v5, v17818; GFX10-NEXT:    v_bfe_u32 v6, v4, 16, 17819; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 17820; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v47821; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v57822; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v57823; GFX10-NEXT:    v_add3_u32 v6, v6, v4, 0x7fff7824; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff7825; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v4, v47826; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo7827; GFX10-NEXT:    v_cndmask_b32_e64 v4, v6, v8, s47828; GFX10-NEXT:    v_perm_b32 v4, v5, v4, 0x70603027829; GFX10-NEXT:    s_waitcnt_vscnt null, 0x07830; GFX10-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v47831; GFX10-NEXT:    s_waitcnt lgkmcnt(0)7832; GFX10-NEXT:    buffer_gl0_inv7833; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v37834; GFX10-NEXT:    v_mov_b32_e32 v3, v47835; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s57836; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s57837; GFX10-NEXT:    s_cbranch_execnz .LBB26_17838; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end7839; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s57840; GFX10-NEXT:    s_setpc_b64 s[30:31]7841;7842; GFX90A-LABEL: local_atomic_fmin_noret_v2bf16:7843; GFX90A:       ; %bb.0:7844; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7845; GFX90A-NEXT:    ds_read_b32 v3, v07846; GFX90A-NEXT:    s_mov_b64 s[6:7], 07847; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v17848; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff7849; GFX90A-NEXT:    v_and_b32_e32 v1, 0xffff0000, v17850; GFX90A-NEXT:    s_mov_b32 s9, 0x70603027851; GFX90A-NEXT:  .LBB26_1: ; %atomicrmw.start7852; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=17853; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)7854; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v37855; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v37856; GFX90A-NEXT:    v_min_f32_e32 v4, v4, v27857; GFX90A-NEXT:    v_min_f32_e32 v5, v5, v17858; GFX90A-NEXT:    v_bfe_u32 v6, v4, 16, 17859; GFX90A-NEXT:    v_bfe_u32 v8, v5, 16, 17860; GFX90A-NEXT:    v_or_b32_e32 v7, 0x400000, v47861; GFX90A-NEXT:    v_or_b32_e32 v9, 0x400000, v57862; GFX90A-NEXT:    v_add3_u32 v6, v6, v4, s87863; GFX90A-NEXT:    v_add3_u32 v8, v8, v5, s87864; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v5, v57865; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v4, v47866; GFX90A-NEXT:    v_cndmask_b32_e64 v4, v6, v7, s[4:5]7867; GFX90A-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc7868; GFX90A-NEXT:    v_perm_b32 v4, v5, v4, s97869; GFX90A-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v47870; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)7871; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v37872; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]7873; GFX90A-NEXT:    v_mov_b32_e32 v3, v47874; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]7875; GFX90A-NEXT:    s_cbranch_execnz .LBB26_17876; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end7877; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]7878; GFX90A-NEXT:    s_setpc_b64 s[30:31]7879;7880; GFX908-LABEL: local_atomic_fmin_noret_v2bf16:7881; GFX908:       ; %bb.0:7882; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7883; GFX908-NEXT:    ds_read_b32 v3, v07884; GFX908-NEXT:    s_mov_b64 s[6:7], 07885; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v17886; GFX908-NEXT:    s_movk_i32 s8, 0x7fff7887; GFX908-NEXT:    v_and_b32_e32 v1, 0xffff0000, v17888; GFX908-NEXT:    s_mov_b32 s9, 0x70603027889; GFX908-NEXT:  .LBB26_1: ; %atomicrmw.start7890; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=17891; GFX908-NEXT:    s_waitcnt lgkmcnt(0)7892; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v37893; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v37894; GFX908-NEXT:    v_min_f32_e32 v4, v4, v27895; GFX908-NEXT:    v_min_f32_e32 v5, v5, v17896; GFX908-NEXT:    v_bfe_u32 v6, v4, 16, 17897; GFX908-NEXT:    v_bfe_u32 v8, v5, 16, 17898; GFX908-NEXT:    v_or_b32_e32 v7, 0x400000, v47899; GFX908-NEXT:    v_or_b32_e32 v9, 0x400000, v57900; GFX908-NEXT:    v_add3_u32 v6, v6, v4, s87901; GFX908-NEXT:    v_add3_u32 v8, v8, v5, s87902; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v57903; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v4, v47904; GFX908-NEXT:    v_cndmask_b32_e64 v4, v6, v7, s[4:5]7905; GFX908-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc7906; GFX908-NEXT:    v_perm_b32 v4, v5, v4, s97907; GFX908-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v47908; GFX908-NEXT:    s_waitcnt lgkmcnt(0)7909; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v37910; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]7911; GFX908-NEXT:    v_mov_b32_e32 v3, v47912; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]7913; GFX908-NEXT:    s_cbranch_execnz .LBB26_17914; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end7915; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]7916; GFX908-NEXT:    s_setpc_b64 s[30:31]7917;7918; GFX8-LABEL: local_atomic_fmin_noret_v2bf16:7919; GFX8:       ; %bb.0:7920; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7921; GFX8-NEXT:    s_mov_b32 m0, -17922; GFX8-NEXT:    ds_read_b32 v3, v07923; GFX8-NEXT:    s_mov_b64 s[6:7], 07924; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v17925; GFX8-NEXT:    v_and_b32_e32 v1, 0xffff0000, v17926; GFX8-NEXT:  .LBB26_1: ; %atomicrmw.start7927; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=17928; GFX8-NEXT:    s_waitcnt lgkmcnt(0)7929; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v37930; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v37931; GFX8-NEXT:    v_min_f32_e32 v4, v4, v27932; GFX8-NEXT:    v_min_f32_e32 v5, v5, v17933; GFX8-NEXT:    v_bfe_u32 v6, v4, 16, 17934; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 17935; GFX8-NEXT:    v_add_u32_e32 v6, vcc, v6, v47936; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v57937; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0x7fff, v67938; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v87939; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v57940; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v57941; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v47942; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v4, v47943; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc7944; GFX8-NEXT:    v_cndmask_b32_e64 v4, v6, v7, s[4:5]7945; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v57946; GFX8-NEXT:    v_alignbit_b32 v4, v5, v4, 167947; GFX8-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v47948; GFX8-NEXT:    s_waitcnt lgkmcnt(0)7949; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v37950; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]7951; GFX8-NEXT:    v_mov_b32_e32 v3, v47952; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]7953; GFX8-NEXT:    s_cbranch_execnz .LBB26_17954; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end7955; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]7956; GFX8-NEXT:    s_setpc_b64 s[30:31]7957;7958; GFX7-LABEL: local_atomic_fmin_noret_v2bf16:7959; GFX7:       ; %bb.0:7960; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7961; GFX7-NEXT:    s_mov_b32 m0, -17962; GFX7-NEXT:    ds_read_b32 v3, v07963; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v27964; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v17965; GFX7-NEXT:    s_mov_b64 s[4:5], 07966; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v27967; GFX7-NEXT:    s_waitcnt lgkmcnt(0)7968; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v37969; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v37970; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v17971; GFX7-NEXT:  .LBB26_1: ; %atomicrmw.start7972; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=17973; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v47974; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v37975; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v47976; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v37977; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v47978; GFX7-NEXT:    v_min_f32_e32 v5, v5, v27979; GFX7-NEXT:    v_min_f32_e32 v6, v6, v17980; GFX7-NEXT:    v_alignbit_b32 v3, v4, v3, 167981; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v57982; GFX7-NEXT:    v_alignbit_b32 v4, v4, v6, 167983; GFX7-NEXT:    ds_cmpst_rtn_b32 v5, v0, v3, v47984; GFX7-NEXT:    s_waitcnt lgkmcnt(0)7985; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v37986; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v57987; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]7988; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v57989; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]7990; GFX7-NEXT:    s_cbranch_execnz .LBB26_17991; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end7992; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]7993; GFX7-NEXT:    s_setpc_b64 s[30:31]7994;7995; GFX6-LABEL: local_atomic_fmin_noret_v2bf16:7996; GFX6:       ; %bb.0:7997; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7998; GFX6-NEXT:    s_mov_b32 m0, -17999; GFX6-NEXT:    ds_read_b32 v3, v08000; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v28001; GFX6-NEXT:    v_mul_f32_e32 v1, 1.0, v18002; GFX6-NEXT:    s_mov_b64 s[4:5], 08003; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v28004; GFX6-NEXT:    s_waitcnt lgkmcnt(0)8005; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v38006; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v38007; GFX6-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18008; GFX6-NEXT:  .LBB26_1: ; %atomicrmw.start8009; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=18010; GFX6-NEXT:    v_mul_f32_e32 v4, 1.0, v48011; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v38012; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v48013; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v38014; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v48015; GFX6-NEXT:    v_min_f32_e32 v5, v5, v28016; GFX6-NEXT:    v_min_f32_e32 v6, v6, v18017; GFX6-NEXT:    v_alignbit_b32 v3, v4, v3, 168018; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v58019; GFX6-NEXT:    v_alignbit_b32 v4, v4, v6, 168020; GFX6-NEXT:    ds_cmpst_rtn_b32 v5, v0, v3, v48021; GFX6-NEXT:    s_waitcnt lgkmcnt(0)8022; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v38023; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v58024; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8025; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v58026; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]8027; GFX6-NEXT:    s_cbranch_execnz .LBB26_18028; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end8029; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]8030; GFX6-NEXT:    s_setpc_b64 s[30:31]8031  %result = atomicrmw fmin ptr addrspace(3) %ptr, <2 x bfloat> %val seq_cst8032  ret void8033}8034 8035define void @local_atomic_fmin_noret_v2bf16__ofset(ptr addrspace(3) %ptr, <2 x bfloat> %val) {8036; GFX12-TRUE16-LABEL: local_atomic_fmin_noret_v2bf16__ofset:8037; GFX12-TRUE16:       ; %bb.0:8038; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x08039; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x08040; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x08041; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x08042; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x08043; GFX12-TRUE16-NEXT:    ds_load_b32 v3, v0 offset:655328044; GFX12-TRUE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v18045; GFX12-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v18046; GFX12-TRUE16-NEXT:    s_mov_b32 s0, 08047; GFX12-TRUE16-NEXT:  .LBB27_1: ; %atomicrmw.start8048; GFX12-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18049; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x08050; GFX12-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38051; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8052; GFX12-TRUE16-NEXT:    v_dual_min_num_f32 v5, v5, v2 :: v_dual_lshlrev_b32 v4, 16, v38053; GFX12-TRUE16-NEXT:    v_min_num_f32_e32 v4, v4, v18054; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8055; GFX12-TRUE16-NEXT:    v_bfe_u32 v7, v5, 16, 18056; GFX12-TRUE16-NEXT:    v_bfe_u32 v6, v4, 16, 18057; GFX12-TRUE16-NEXT:    v_or_b32_e32 v8, 0x400000, v48058; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v48059; GFX12-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v58060; GFX12-TRUE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff8061; GFX12-TRUE16-NEXT:    v_add3_u32 v6, v6, v4, 0x7fff8062; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)8063; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_3)8064; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v6, v8, vcc_lo8065; GFX12-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v58066; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)8067; GFX12-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo8068; GFX12-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v4.h8069; GFX12-TRUE16-NEXT:    s_wait_storecnt 0x08070; GFX12-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v5, v3 offset:655328071; GFX12-TRUE16-NEXT:    s_wait_dscnt 0x08072; GFX12-TRUE16-NEXT:    global_inv scope:SCOPE_SE8073; GFX12-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v38074; GFX12-TRUE16-NEXT:    v_mov_b32_e32 v3, v48075; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8076; GFX12-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08077; GFX12-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8078; GFX12-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08079; GFX12-TRUE16-NEXT:    s_cbranch_execnz .LBB27_18080; GFX12-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8081; GFX12-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08082; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x08083; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31]8084;8085; GFX12-FAKE16-LABEL: local_atomic_fmin_noret_v2bf16__ofset:8086; GFX12-FAKE16:       ; %bb.0:8087; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x08088; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x08089; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x08090; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x08091; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x08092; GFX12-FAKE16-NEXT:    ds_load_b32 v3, v0 offset:655328093; GFX12-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v18094; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18095; GFX12-FAKE16-NEXT:    s_mov_b32 s1, 08096; GFX12-FAKE16-NEXT:  .LBB27_1: ; %atomicrmw.start8097; GFX12-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18098; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x08099; GFX12-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38100; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8101; GFX12-FAKE16-NEXT:    v_dual_min_num_f32 v5, v5, v1 :: v_dual_lshlrev_b32 v4, 16, v38102; GFX12-FAKE16-NEXT:    v_min_num_f32_e32 v4, v4, v28103; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8104; GFX12-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 18105; GFX12-FAKE16-NEXT:    v_bfe_u32 v6, v4, 16, 18106; GFX12-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v48107; GFX12-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v58108; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v58109; GFX12-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff8110; GFX12-FAKE16-NEXT:    v_add3_u32 v6, v6, v4, 0x7fff8111; GFX12-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v4, v48112; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)8113; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)8114; GFX12-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo8115; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_sdst(0)8116; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v4, v6, v8, s08117; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8118; GFX12-FAKE16-NEXT:    v_perm_b32 v4, v5, v4, 0x70603028119; GFX12-FAKE16-NEXT:    s_wait_storecnt 0x08120; GFX12-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v3 offset:655328121; GFX12-FAKE16-NEXT:    s_wait_dscnt 0x08122; GFX12-FAKE16-NEXT:    global_inv scope:SCOPE_SE8123; GFX12-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v38124; GFX12-FAKE16-NEXT:    v_mov_b32_e32 v3, v48125; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8126; GFX12-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s18127; GFX12-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)8128; GFX12-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s18129; GFX12-FAKE16-NEXT:    s_cbranch_execnz .LBB27_18130; GFX12-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8131; GFX12-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s18132; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x08133; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31]8134;8135; GFX942-LABEL: local_atomic_fmin_noret_v2bf16__ofset:8136; GFX942:       ; %bb.0:8137; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8138; GFX942-NEXT:    ds_read_b32 v3, v0 offset:655328139; GFX942-NEXT:    s_mov_b64 s[2:3], 08140; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v18141; GFX942-NEXT:    s_movk_i32 s4, 0x7fff8142; GFX942-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18143; GFX942-NEXT:    s_mov_b32 s5, 0x70603028144; GFX942-NEXT:  .LBB27_1: ; %atomicrmw.start8145; GFX942-NEXT:    ; =>This Inner Loop Header: Depth=18146; GFX942-NEXT:    s_waitcnt lgkmcnt(0)8147; GFX942-NEXT:    v_lshlrev_b32_e32 v4, 16, v38148; GFX942-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38149; GFX942-NEXT:    v_min_f32_e32 v4, v4, v28150; GFX942-NEXT:    v_min_f32_e32 v5, v5, v18151; GFX942-NEXT:    v_bfe_u32 v6, v4, 16, 18152; GFX942-NEXT:    v_bfe_u32 v8, v5, 16, 18153; GFX942-NEXT:    v_or_b32_e32 v7, 0x400000, v48154; GFX942-NEXT:    v_or_b32_e32 v9, 0x400000, v58155; GFX942-NEXT:    v_add3_u32 v6, v6, v4, s48156; GFX942-NEXT:    v_add3_u32 v8, v8, v5, s48157; GFX942-NEXT:    v_cmp_u_f32_e32 vcc, v5, v58158; GFX942-NEXT:    v_cmp_u_f32_e64 s[0:1], v4, v48159; GFX942-NEXT:    s_nop 08160; GFX942-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc8161; GFX942-NEXT:    v_cndmask_b32_e64 v4, v6, v7, s[0:1]8162; GFX942-NEXT:    v_perm_b32 v4, v5, v4, s58163; GFX942-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v4 offset:655328164; GFX942-NEXT:    s_waitcnt lgkmcnt(0)8165; GFX942-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v38166; GFX942-NEXT:    s_or_b64 s[2:3], vcc, s[2:3]8167; GFX942-NEXT:    v_mov_b32_e32 v3, v48168; GFX942-NEXT:    s_andn2_b64 exec, exec, s[2:3]8169; GFX942-NEXT:    s_cbranch_execnz .LBB27_18170; GFX942-NEXT:  ; %bb.2: ; %atomicrmw.end8171; GFX942-NEXT:    s_or_b64 exec, exec, s[2:3]8172; GFX942-NEXT:    s_setpc_b64 s[30:31]8173;8174; GFX11-TRUE16-LABEL: local_atomic_fmin_noret_v2bf16__ofset:8175; GFX11-TRUE16:       ; %bb.0:8176; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8177; GFX11-TRUE16-NEXT:    ds_load_b32 v3, v0 offset:655328178; GFX11-TRUE16-NEXT:    v_and_b32_e32 v2, 0xffff0000, v18179; GFX11-TRUE16-NEXT:    v_lshlrev_b32_e32 v1, 16, v18180; GFX11-TRUE16-NEXT:    s_mov_b32 s0, 08181; GFX11-TRUE16-NEXT:    .p2align 68182; GFX11-TRUE16-NEXT:  .LBB27_1: ; %atomicrmw.start8183; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=18184; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)8185; GFX11-TRUE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38186; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8187; GFX11-TRUE16-NEXT:    v_dual_min_f32 v5, v5, v2 :: v_dual_lshlrev_b32 v4, 16, v38188; GFX11-TRUE16-NEXT:    v_min_f32_e32 v4, v4, v18189; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8190; GFX11-TRUE16-NEXT:    v_bfe_u32 v7, v5, 16, 18191; GFX11-TRUE16-NEXT:    v_bfe_u32 v6, v4, 16, 18192; GFX11-TRUE16-NEXT:    v_or_b32_e32 v8, 0x400000, v48193; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v4, v48194; GFX11-TRUE16-NEXT:    v_or_b32_e32 v9, 0x400000, v58195; GFX11-TRUE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff8196; GFX11-TRUE16-NEXT:    v_add3_u32 v6, v6, v4, 0x7fff8197; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_4)8198; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v6, v8, vcc_lo8199; GFX11-TRUE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v58200; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo8201; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)8202; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v4.h8203; GFX11-TRUE16-NEXT:    s_waitcnt_vscnt null, 0x08204; GFX11-TRUE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v5, v3 offset:655328205; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)8206; GFX11-TRUE16-NEXT:    buffer_gl0_inv8207; GFX11-TRUE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v38208; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v3, v48209; GFX11-TRUE16-NEXT:    s_or_b32 s0, vcc_lo, s08210; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8211; GFX11-TRUE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s08212; GFX11-TRUE16-NEXT:    s_cbranch_execnz .LBB27_18213; GFX11-TRUE16-NEXT:  ; %bb.2: ; %atomicrmw.end8214; GFX11-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s08215; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]8216;8217; GFX11-FAKE16-LABEL: local_atomic_fmin_noret_v2bf16__ofset:8218; GFX11-FAKE16:       ; %bb.0:8219; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8220; GFX11-FAKE16-NEXT:    ds_load_b32 v3, v0 offset:655328221; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v2, 16, v18222; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18223; GFX11-FAKE16-NEXT:    s_mov_b32 s1, 08224; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x18225; GFX11-FAKE16-NEXT:    .p2align 68226; GFX11-FAKE16-NEXT:  .LBB27_1: ; %atomicrmw.start8227; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=18228; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)8229; GFX11-FAKE16-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38230; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8231; GFX11-FAKE16-NEXT:    v_dual_min_f32 v5, v5, v1 :: v_dual_lshlrev_b32 v4, 16, v38232; GFX11-FAKE16-NEXT:    v_min_f32_e32 v4, v4, v28233; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8234; GFX11-FAKE16-NEXT:    v_bfe_u32 v7, v5, 16, 18235; GFX11-FAKE16-NEXT:    v_bfe_u32 v6, v4, 16, 18236; GFX11-FAKE16-NEXT:    v_or_b32_e32 v8, 0x400000, v48237; GFX11-FAKE16-NEXT:    v_or_b32_e32 v9, 0x400000, v58238; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v58239; GFX11-FAKE16-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff8240; GFX11-FAKE16-NEXT:    v_add3_u32 v6, v6, v4, 0x7fff8241; GFX11-FAKE16-NEXT:    v_cmp_u_f32_e64 s0, v4, v48242; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)8243; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo8244; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v4, v6, v8, s08245; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8246; GFX11-FAKE16-NEXT:    v_perm_b32 v4, v5, v4, 0x70603028247; GFX11-FAKE16-NEXT:    s_waitcnt_vscnt null, 0x08248; GFX11-FAKE16-NEXT:    ds_cmpstore_rtn_b32 v4, v0, v4, v3 offset:655328249; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)8250; GFX11-FAKE16-NEXT:    buffer_gl0_inv8251; GFX11-FAKE16-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v38252; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v3, v48253; GFX11-FAKE16-NEXT:    s_or_b32 s1, vcc_lo, s18254; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)8255; GFX11-FAKE16-NEXT:    s_and_not1_b32 exec_lo, exec_lo, s18256; GFX11-FAKE16-NEXT:    s_cbranch_execnz .LBB27_18257; GFX11-FAKE16-NEXT:  ; %bb.2: ; %atomicrmw.end8258; GFX11-FAKE16-NEXT:    s_set_inst_prefetch_distance 0x28259; GFX11-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s18260; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]8261;8262; GFX10-LABEL: local_atomic_fmin_noret_v2bf16__ofset:8263; GFX10:       ; %bb.0:8264; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8265; GFX10-NEXT:    ds_read_b32 v3, v0 offset:655328266; GFX10-NEXT:    v_lshlrev_b32_e32 v2, 16, v18267; GFX10-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18268; GFX10-NEXT:    s_mov_b32 s5, 08269; GFX10-NEXT:  .LBB27_1: ; %atomicrmw.start8270; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=18271; GFX10-NEXT:    s_waitcnt lgkmcnt(0)8272; GFX10-NEXT:    v_lshlrev_b32_e32 v4, 16, v38273; GFX10-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38274; GFX10-NEXT:    v_min_f32_e32 v4, v4, v28275; GFX10-NEXT:    v_min_f32_e32 v5, v5, v18276; GFX10-NEXT:    v_bfe_u32 v6, v4, 16, 18277; GFX10-NEXT:    v_bfe_u32 v7, v5, 16, 18278; GFX10-NEXT:    v_or_b32_e32 v8, 0x400000, v48279; GFX10-NEXT:    v_or_b32_e32 v9, 0x400000, v58280; GFX10-NEXT:    v_cmp_u_f32_e32 vcc_lo, v5, v58281; GFX10-NEXT:    v_add3_u32 v6, v6, v4, 0x7fff8282; GFX10-NEXT:    v_add3_u32 v7, v7, v5, 0x7fff8283; GFX10-NEXT:    v_cmp_u_f32_e64 s4, v4, v48284; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v9, vcc_lo8285; GFX10-NEXT:    v_cndmask_b32_e64 v4, v6, v8, s48286; GFX10-NEXT:    v_perm_b32 v4, v5, v4, 0x70603028287; GFX10-NEXT:    s_waitcnt_vscnt null, 0x08288; GFX10-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v4 offset:655328289; GFX10-NEXT:    s_waitcnt lgkmcnt(0)8290; GFX10-NEXT:    buffer_gl0_inv8291; GFX10-NEXT:    v_cmp_eq_u32_e32 vcc_lo, v4, v38292; GFX10-NEXT:    v_mov_b32_e32 v3, v48293; GFX10-NEXT:    s_or_b32 s5, vcc_lo, s58294; GFX10-NEXT:    s_andn2_b32 exec_lo, exec_lo, s58295; GFX10-NEXT:    s_cbranch_execnz .LBB27_18296; GFX10-NEXT:  ; %bb.2: ; %atomicrmw.end8297; GFX10-NEXT:    s_or_b32 exec_lo, exec_lo, s58298; GFX10-NEXT:    s_setpc_b64 s[30:31]8299;8300; GFX90A-LABEL: local_atomic_fmin_noret_v2bf16__ofset:8301; GFX90A:       ; %bb.0:8302; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8303; GFX90A-NEXT:    ds_read_b32 v3, v0 offset:655328304; GFX90A-NEXT:    s_mov_b64 s[6:7], 08305; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v18306; GFX90A-NEXT:    s_movk_i32 s8, 0x7fff8307; GFX90A-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18308; GFX90A-NEXT:    s_mov_b32 s9, 0x70603028309; GFX90A-NEXT:  .LBB27_1: ; %atomicrmw.start8310; GFX90A-NEXT:    ; =>This Inner Loop Header: Depth=18311; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)8312; GFX90A-NEXT:    v_lshlrev_b32_e32 v4, 16, v38313; GFX90A-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38314; GFX90A-NEXT:    v_min_f32_e32 v4, v4, v28315; GFX90A-NEXT:    v_min_f32_e32 v5, v5, v18316; GFX90A-NEXT:    v_bfe_u32 v6, v4, 16, 18317; GFX90A-NEXT:    v_bfe_u32 v8, v5, 16, 18318; GFX90A-NEXT:    v_or_b32_e32 v7, 0x400000, v48319; GFX90A-NEXT:    v_or_b32_e32 v9, 0x400000, v58320; GFX90A-NEXT:    v_add3_u32 v6, v6, v4, s88321; GFX90A-NEXT:    v_add3_u32 v8, v8, v5, s88322; GFX90A-NEXT:    v_cmp_u_f32_e32 vcc, v5, v58323; GFX90A-NEXT:    v_cmp_u_f32_e64 s[4:5], v4, v48324; GFX90A-NEXT:    v_cndmask_b32_e64 v4, v6, v7, s[4:5]8325; GFX90A-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc8326; GFX90A-NEXT:    v_perm_b32 v4, v5, v4, s98327; GFX90A-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v4 offset:655328328; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)8329; GFX90A-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v38330; GFX90A-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]8331; GFX90A-NEXT:    v_mov_b32_e32 v3, v48332; GFX90A-NEXT:    s_andn2_b64 exec, exec, s[6:7]8333; GFX90A-NEXT:    s_cbranch_execnz .LBB27_18334; GFX90A-NEXT:  ; %bb.2: ; %atomicrmw.end8335; GFX90A-NEXT:    s_or_b64 exec, exec, s[6:7]8336; GFX90A-NEXT:    s_setpc_b64 s[30:31]8337;8338; GFX908-LABEL: local_atomic_fmin_noret_v2bf16__ofset:8339; GFX908:       ; %bb.0:8340; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8341; GFX908-NEXT:    ds_read_b32 v3, v0 offset:655328342; GFX908-NEXT:    s_mov_b64 s[6:7], 08343; GFX908-NEXT:    v_lshlrev_b32_e32 v2, 16, v18344; GFX908-NEXT:    s_movk_i32 s8, 0x7fff8345; GFX908-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18346; GFX908-NEXT:    s_mov_b32 s9, 0x70603028347; GFX908-NEXT:  .LBB27_1: ; %atomicrmw.start8348; GFX908-NEXT:    ; =>This Inner Loop Header: Depth=18349; GFX908-NEXT:    s_waitcnt lgkmcnt(0)8350; GFX908-NEXT:    v_lshlrev_b32_e32 v4, 16, v38351; GFX908-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38352; GFX908-NEXT:    v_min_f32_e32 v4, v4, v28353; GFX908-NEXT:    v_min_f32_e32 v5, v5, v18354; GFX908-NEXT:    v_bfe_u32 v6, v4, 16, 18355; GFX908-NEXT:    v_bfe_u32 v8, v5, 16, 18356; GFX908-NEXT:    v_or_b32_e32 v7, 0x400000, v48357; GFX908-NEXT:    v_or_b32_e32 v9, 0x400000, v58358; GFX908-NEXT:    v_add3_u32 v6, v6, v4, s88359; GFX908-NEXT:    v_add3_u32 v8, v8, v5, s88360; GFX908-NEXT:    v_cmp_u_f32_e32 vcc, v5, v58361; GFX908-NEXT:    v_cmp_u_f32_e64 s[4:5], v4, v48362; GFX908-NEXT:    v_cndmask_b32_e64 v4, v6, v7, s[4:5]8363; GFX908-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc8364; GFX908-NEXT:    v_perm_b32 v4, v5, v4, s98365; GFX908-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v4 offset:655328366; GFX908-NEXT:    s_waitcnt lgkmcnt(0)8367; GFX908-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v38368; GFX908-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]8369; GFX908-NEXT:    v_mov_b32_e32 v3, v48370; GFX908-NEXT:    s_andn2_b64 exec, exec, s[6:7]8371; GFX908-NEXT:    s_cbranch_execnz .LBB27_18372; GFX908-NEXT:  ; %bb.2: ; %atomicrmw.end8373; GFX908-NEXT:    s_or_b64 exec, exec, s[6:7]8374; GFX908-NEXT:    s_setpc_b64 s[30:31]8375;8376; GFX8-LABEL: local_atomic_fmin_noret_v2bf16__ofset:8377; GFX8:       ; %bb.0:8378; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8379; GFX8-NEXT:    s_mov_b32 m0, -18380; GFX8-NEXT:    ds_read_b32 v3, v0 offset:655328381; GFX8-NEXT:    s_mov_b64 s[6:7], 08382; GFX8-NEXT:    v_lshlrev_b32_e32 v2, 16, v18383; GFX8-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18384; GFX8-NEXT:  .LBB27_1: ; %atomicrmw.start8385; GFX8-NEXT:    ; =>This Inner Loop Header: Depth=18386; GFX8-NEXT:    s_waitcnt lgkmcnt(0)8387; GFX8-NEXT:    v_lshlrev_b32_e32 v4, 16, v38388; GFX8-NEXT:    v_and_b32_e32 v5, 0xffff0000, v38389; GFX8-NEXT:    v_min_f32_e32 v4, v4, v28390; GFX8-NEXT:    v_min_f32_e32 v5, v5, v18391; GFX8-NEXT:    v_bfe_u32 v6, v4, 16, 18392; GFX8-NEXT:    v_bfe_u32 v8, v5, 16, 18393; GFX8-NEXT:    v_add_u32_e32 v6, vcc, v6, v48394; GFX8-NEXT:    v_add_u32_e32 v8, vcc, v8, v58395; GFX8-NEXT:    v_add_u32_e32 v6, vcc, 0x7fff, v68396; GFX8-NEXT:    v_add_u32_e32 v8, vcc, 0x7fff, v88397; GFX8-NEXT:    v_or_b32_e32 v9, 0x400000, v58398; GFX8-NEXT:    v_cmp_u_f32_e32 vcc, v5, v58399; GFX8-NEXT:    v_or_b32_e32 v7, 0x400000, v48400; GFX8-NEXT:    v_cmp_u_f32_e64 s[4:5], v4, v48401; GFX8-NEXT:    v_cndmask_b32_e32 v5, v8, v9, vcc8402; GFX8-NEXT:    v_cndmask_b32_e64 v4, v6, v7, s[4:5]8403; GFX8-NEXT:    v_lshrrev_b32_e32 v5, 16, v58404; GFX8-NEXT:    v_alignbit_b32 v4, v5, v4, 168405; GFX8-NEXT:    ds_cmpst_rtn_b32 v4, v0, v3, v4 offset:655328406; GFX8-NEXT:    s_waitcnt lgkmcnt(0)8407; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v38408; GFX8-NEXT:    s_or_b64 s[6:7], vcc, s[6:7]8409; GFX8-NEXT:    v_mov_b32_e32 v3, v48410; GFX8-NEXT:    s_andn2_b64 exec, exec, s[6:7]8411; GFX8-NEXT:    s_cbranch_execnz .LBB27_18412; GFX8-NEXT:  ; %bb.2: ; %atomicrmw.end8413; GFX8-NEXT:    s_or_b64 exec, exec, s[6:7]8414; GFX8-NEXT:    s_setpc_b64 s[30:31]8415;8416; GFX7-LABEL: local_atomic_fmin_noret_v2bf16__ofset:8417; GFX7:       ; %bb.0:8418; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8419; GFX7-NEXT:    s_mov_b32 m0, -18420; GFX7-NEXT:    ds_read_b32 v3, v0 offset:655328421; GFX7-NEXT:    v_mul_f32_e32 v2, 1.0, v28422; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v18423; GFX7-NEXT:    s_mov_b64 s[4:5], 08424; GFX7-NEXT:    v_and_b32_e32 v2, 0xffff0000, v28425; GFX7-NEXT:    s_waitcnt lgkmcnt(0)8426; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v38427; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v38428; GFX7-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18429; GFX7-NEXT:  .LBB27_1: ; %atomicrmw.start8430; GFX7-NEXT:    ; =>This Inner Loop Header: Depth=18431; GFX7-NEXT:    v_mul_f32_e32 v4, 1.0, v48432; GFX7-NEXT:    v_mul_f32_e32 v3, 1.0, v38433; GFX7-NEXT:    v_and_b32_e32 v5, 0xffff0000, v48434; GFX7-NEXT:    v_and_b32_e32 v6, 0xffff0000, v38435; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v48436; GFX7-NEXT:    v_min_f32_e32 v5, v5, v28437; GFX7-NEXT:    v_min_f32_e32 v6, v6, v18438; GFX7-NEXT:    v_alignbit_b32 v3, v4, v3, 168439; GFX7-NEXT:    v_lshrrev_b32_e32 v4, 16, v58440; GFX7-NEXT:    v_alignbit_b32 v4, v4, v6, 168441; GFX7-NEXT:    ds_cmpst_rtn_b32 v5, v0, v3, v4 offset:655328442; GFX7-NEXT:    s_waitcnt lgkmcnt(0)8443; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v38444; GFX7-NEXT:    v_and_b32_e32 v4, 0xffff0000, v58445; GFX7-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8446; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v58447; GFX7-NEXT:    s_andn2_b64 exec, exec, s[4:5]8448; GFX7-NEXT:    s_cbranch_execnz .LBB27_18449; GFX7-NEXT:  ; %bb.2: ; %atomicrmw.end8450; GFX7-NEXT:    s_or_b64 exec, exec, s[4:5]8451; GFX7-NEXT:    s_setpc_b64 s[30:31]8452;8453; GFX6-LABEL: local_atomic_fmin_noret_v2bf16__ofset:8454; GFX6:       ; %bb.0:8455; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8456; GFX6-NEXT:    v_add_i32_e32 v0, vcc, 0xfffc, v08457; GFX6-NEXT:    s_mov_b32 m0, -18458; GFX6-NEXT:    ds_read_b32 v3, v08459; GFX6-NEXT:    v_mul_f32_e32 v2, 1.0, v28460; GFX6-NEXT:    v_mul_f32_e32 v1, 1.0, v18461; GFX6-NEXT:    s_mov_b64 s[4:5], 08462; GFX6-NEXT:    v_and_b32_e32 v2, 0xffff0000, v28463; GFX6-NEXT:    s_waitcnt lgkmcnt(0)8464; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v38465; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v38466; GFX6-NEXT:    v_and_b32_e32 v1, 0xffff0000, v18467; GFX6-NEXT:  .LBB27_1: ; %atomicrmw.start8468; GFX6-NEXT:    ; =>This Inner Loop Header: Depth=18469; GFX6-NEXT:    v_mul_f32_e32 v4, 1.0, v48470; GFX6-NEXT:    v_mul_f32_e32 v3, 1.0, v38471; GFX6-NEXT:    v_and_b32_e32 v5, 0xffff0000, v48472; GFX6-NEXT:    v_and_b32_e32 v6, 0xffff0000, v38473; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v48474; GFX6-NEXT:    v_min_f32_e32 v5, v5, v28475; GFX6-NEXT:    v_min_f32_e32 v6, v6, v18476; GFX6-NEXT:    v_alignbit_b32 v3, v4, v3, 168477; GFX6-NEXT:    v_lshrrev_b32_e32 v4, 16, v58478; GFX6-NEXT:    v_alignbit_b32 v4, v4, v6, 168479; GFX6-NEXT:    ds_cmpst_rtn_b32 v5, v0, v3, v48480; GFX6-NEXT:    s_waitcnt lgkmcnt(0)8481; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v38482; GFX6-NEXT:    v_and_b32_e32 v4, 0xffff0000, v58483; GFX6-NEXT:    s_or_b64 s[4:5], vcc, s[4:5]8484; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v58485; GFX6-NEXT:    s_andn2_b64 exec, exec, s[4:5]8486; GFX6-NEXT:    s_cbranch_execnz .LBB27_18487; GFX6-NEXT:  ; %bb.2: ; %atomicrmw.end8488; GFX6-NEXT:    s_or_b64 exec, exec, s[4:5]8489; GFX6-NEXT:    s_setpc_b64 s[30:31]8490  %gep = getelementptr <2 x bfloat>, ptr addrspace(3) %ptr, i32 163838491  %result = atomicrmw fmin ptr addrspace(3) %gep, <2 x bfloat> %val seq_cst8492  ret void8493}8494 8495; --------------------------------------------------------------------8496; misc8497; --------------------------------------------------------------------8498 8499define float @local_atomic_fmin_ret_f32__amdgpu_ignore_denormal_mode(ptr addrspace(3) %ptr) {8500; GFX12-LABEL: local_atomic_fmin_ret_f32__amdgpu_ignore_denormal_mode:8501; GFX12:       ; %bb.0:8502; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x08503; GFX12-NEXT:    s_wait_expcnt 0x08504; GFX12-NEXT:    s_wait_samplecnt 0x08505; GFX12-NEXT:    s_wait_bvhcnt 0x08506; GFX12-NEXT:    s_wait_kmcnt 0x08507; GFX12-NEXT:    v_mov_b32_e32 v1, 4.08508; GFX12-NEXT:    s_wait_storecnt 0x08509; GFX12-NEXT:    ds_min_num_rtn_f32 v0, v0, v18510; GFX12-NEXT:    s_wait_dscnt 0x08511; GFX12-NEXT:    global_inv scope:SCOPE_SE8512; GFX12-NEXT:    s_wait_loadcnt 0x08513; GFX12-NEXT:    s_setpc_b64 s[30:31]8514;8515; GFX942-LABEL: local_atomic_fmin_ret_f32__amdgpu_ignore_denormal_mode:8516; GFX942:       ; %bb.0:8517; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8518; GFX942-NEXT:    v_mov_b32_e32 v1, 4.08519; GFX942-NEXT:    ds_min_rtn_f32 v0, v0, v18520; GFX942-NEXT:    s_waitcnt lgkmcnt(0)8521; GFX942-NEXT:    s_setpc_b64 s[30:31]8522;8523; GFX11-LABEL: local_atomic_fmin_ret_f32__amdgpu_ignore_denormal_mode:8524; GFX11:       ; %bb.0:8525; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8526; GFX11-NEXT:    v_mov_b32_e32 v1, 4.08527; GFX11-NEXT:    s_waitcnt_vscnt null, 0x08528; GFX11-NEXT:    ds_min_rtn_f32 v0, v0, v18529; GFX11-NEXT:    s_waitcnt lgkmcnt(0)8530; GFX11-NEXT:    buffer_gl0_inv8531; GFX11-NEXT:    s_setpc_b64 s[30:31]8532;8533; GFX10-LABEL: local_atomic_fmin_ret_f32__amdgpu_ignore_denormal_mode:8534; GFX10:       ; %bb.0:8535; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8536; GFX10-NEXT:    v_mov_b32_e32 v1, 4.08537; GFX10-NEXT:    s_waitcnt_vscnt null, 0x08538; GFX10-NEXT:    ds_min_rtn_f32 v0, v0, v18539; GFX10-NEXT:    s_waitcnt lgkmcnt(0)8540; GFX10-NEXT:    buffer_gl0_inv8541; GFX10-NEXT:    s_setpc_b64 s[30:31]8542;8543; GFX90A-LABEL: local_atomic_fmin_ret_f32__amdgpu_ignore_denormal_mode:8544; GFX90A:       ; %bb.0:8545; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8546; GFX90A-NEXT:    v_mov_b32_e32 v1, 4.08547; GFX90A-NEXT:    ds_min_rtn_f32 v0, v0, v18548; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)8549; GFX90A-NEXT:    s_setpc_b64 s[30:31]8550;8551; GFX908-LABEL: local_atomic_fmin_ret_f32__amdgpu_ignore_denormal_mode:8552; GFX908:       ; %bb.0:8553; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8554; GFX908-NEXT:    v_mov_b32_e32 v1, 4.08555; GFX908-NEXT:    ds_min_rtn_f32 v0, v0, v18556; GFX908-NEXT:    s_waitcnt lgkmcnt(0)8557; GFX908-NEXT:    s_setpc_b64 s[30:31]8558;8559; GFX8-LABEL: local_atomic_fmin_ret_f32__amdgpu_ignore_denormal_mode:8560; GFX8:       ; %bb.0:8561; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8562; GFX8-NEXT:    v_mov_b32_e32 v1, 4.08563; GFX8-NEXT:    s_mov_b32 m0, -18564; GFX8-NEXT:    ds_min_rtn_f32 v0, v0, v18565; GFX8-NEXT:    s_waitcnt lgkmcnt(0)8566; GFX8-NEXT:    s_setpc_b64 s[30:31]8567;8568; GFX7-LABEL: local_atomic_fmin_ret_f32__amdgpu_ignore_denormal_mode:8569; GFX7:       ; %bb.0:8570; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8571; GFX7-NEXT:    v_mov_b32_e32 v1, 4.08572; GFX7-NEXT:    s_mov_b32 m0, -18573; GFX7-NEXT:    ds_min_rtn_f32 v0, v0, v18574; GFX7-NEXT:    s_waitcnt lgkmcnt(0)8575; GFX7-NEXT:    s_setpc_b64 s[30:31]8576;8577; GFX6-LABEL: local_atomic_fmin_ret_f32__amdgpu_ignore_denormal_mode:8578; GFX6:       ; %bb.0:8579; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8580; GFX6-NEXT:    v_mov_b32_e32 v1, 4.08581; GFX6-NEXT:    s_mov_b32 m0, -18582; GFX6-NEXT:    ds_min_rtn_f32 v0, v0, v18583; GFX6-NEXT:    s_waitcnt lgkmcnt(0)8584; GFX6-NEXT:    s_setpc_b64 s[30:31]8585  %result = atomicrmw fmin ptr addrspace(3) %ptr, float 4.0 seq_cst, !amdgpu.ignore.denormal.mode !08586  ret float %result8587}8588 8589define void @local_atomic_fmin_noret_f32__amdgpu_ignore_denormal_mode(ptr addrspace(3) %ptr) {8590; GFX12-LABEL: local_atomic_fmin_noret_f32__amdgpu_ignore_denormal_mode:8591; GFX12:       ; %bb.0:8592; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x08593; GFX12-NEXT:    s_wait_expcnt 0x08594; GFX12-NEXT:    s_wait_samplecnt 0x08595; GFX12-NEXT:    s_wait_bvhcnt 0x08596; GFX12-NEXT:    s_wait_kmcnt 0x08597; GFX12-NEXT:    v_mov_b32_e32 v1, 4.08598; GFX12-NEXT:    s_wait_storecnt 0x08599; GFX12-NEXT:    ds_min_num_f32 v0, v18600; GFX12-NEXT:    s_wait_dscnt 0x08601; GFX12-NEXT:    global_inv scope:SCOPE_SE8602; GFX12-NEXT:    s_wait_loadcnt 0x08603; GFX12-NEXT:    s_setpc_b64 s[30:31]8604;8605; GFX942-LABEL: local_atomic_fmin_noret_f32__amdgpu_ignore_denormal_mode:8606; GFX942:       ; %bb.0:8607; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8608; GFX942-NEXT:    v_mov_b32_e32 v1, 4.08609; GFX942-NEXT:    ds_min_f32 v0, v18610; GFX942-NEXT:    s_waitcnt lgkmcnt(0)8611; GFX942-NEXT:    s_setpc_b64 s[30:31]8612;8613; GFX11-LABEL: local_atomic_fmin_noret_f32__amdgpu_ignore_denormal_mode:8614; GFX11:       ; %bb.0:8615; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8616; GFX11-NEXT:    v_mov_b32_e32 v1, 4.08617; GFX11-NEXT:    s_waitcnt_vscnt null, 0x08618; GFX11-NEXT:    ds_min_f32 v0, v18619; GFX11-NEXT:    s_waitcnt lgkmcnt(0)8620; GFX11-NEXT:    buffer_gl0_inv8621; GFX11-NEXT:    s_setpc_b64 s[30:31]8622;8623; GFX10-LABEL: local_atomic_fmin_noret_f32__amdgpu_ignore_denormal_mode:8624; GFX10:       ; %bb.0:8625; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8626; GFX10-NEXT:    v_mov_b32_e32 v1, 4.08627; GFX10-NEXT:    s_waitcnt_vscnt null, 0x08628; GFX10-NEXT:    ds_min_f32 v0, v18629; GFX10-NEXT:    s_waitcnt lgkmcnt(0)8630; GFX10-NEXT:    buffer_gl0_inv8631; GFX10-NEXT:    s_setpc_b64 s[30:31]8632;8633; GFX90A-LABEL: local_atomic_fmin_noret_f32__amdgpu_ignore_denormal_mode:8634; GFX90A:       ; %bb.0:8635; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8636; GFX90A-NEXT:    v_mov_b32_e32 v1, 4.08637; GFX90A-NEXT:    ds_min_f32 v0, v18638; GFX90A-NEXT:    s_waitcnt lgkmcnt(0)8639; GFX90A-NEXT:    s_setpc_b64 s[30:31]8640;8641; GFX908-LABEL: local_atomic_fmin_noret_f32__amdgpu_ignore_denormal_mode:8642; GFX908:       ; %bb.0:8643; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8644; GFX908-NEXT:    v_mov_b32_e32 v1, 4.08645; GFX908-NEXT:    ds_min_f32 v0, v18646; GFX908-NEXT:    s_waitcnt lgkmcnt(0)8647; GFX908-NEXT:    s_setpc_b64 s[30:31]8648;8649; GFX8-LABEL: local_atomic_fmin_noret_f32__amdgpu_ignore_denormal_mode:8650; GFX8:       ; %bb.0:8651; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8652; GFX8-NEXT:    v_mov_b32_e32 v1, 4.08653; GFX8-NEXT:    s_mov_b32 m0, -18654; GFX8-NEXT:    ds_min_f32 v0, v18655; GFX8-NEXT:    s_waitcnt lgkmcnt(0)8656; GFX8-NEXT:    s_setpc_b64 s[30:31]8657;8658; GFX7-LABEL: local_atomic_fmin_noret_f32__amdgpu_ignore_denormal_mode:8659; GFX7:       ; %bb.0:8660; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8661; GFX7-NEXT:    v_mov_b32_e32 v1, 4.08662; GFX7-NEXT:    s_mov_b32 m0, -18663; GFX7-NEXT:    ds_min_f32 v0, v18664; GFX7-NEXT:    s_waitcnt lgkmcnt(0)8665; GFX7-NEXT:    s_setpc_b64 s[30:31]8666;8667; GFX6-LABEL: local_atomic_fmin_noret_f32__amdgpu_ignore_denormal_mode:8668; GFX6:       ; %bb.0:8669; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8670; GFX6-NEXT:    v_mov_b32_e32 v1, 4.08671; GFX6-NEXT:    s_mov_b32 m0, -18672; GFX6-NEXT:    ds_min_f32 v0, v18673; GFX6-NEXT:    s_waitcnt lgkmcnt(0)8674; GFX6-NEXT:    s_setpc_b64 s[30:31]8675  %result = atomicrmw fmin ptr addrspace(3) %ptr, float 4.0 seq_cst, !amdgpu.ignore.denormal.mode !08676  ret void8677}8678 8679!0 = !{}8680