brintos

brintos / llvm-project-archived public Read only

0
0
Text · 110.2 KiB · 55b8e85 Raw
2451 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 32; RUN: llc -mtriple=amdgcn -mcpu=tonga -global-isel=0 < %s | FileCheck  -check-prefixes=GFX8DAGISEL %s3; RUN: llc -mtriple=amdgcn -mcpu=tonga -global-isel=1 < %s | FileCheck  -check-prefixes=GFX8GISEL %s4; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -global-isel=0 < %s | FileCheck  -check-prefixes=GFX9DAGISEL %s5; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -global-isel=1 < %s | FileCheck  -check-prefixes=GFX9GISEL %s6; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -global-isel=0 -mattr=+wavefrontsize64 < %s | FileCheck -check-prefixes=GFX10DAGISEL,GFX1064DAGISEL %s7; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -global-isel=1 -mattr=+wavefrontsize64 < %s | FileCheck -check-prefixes=GFX10GISEL,GFX1064GISEL %s8; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -global-isel=0 < %s | FileCheck -check-prefixes=GFX10DAGISEL,GFX1032DAGISEL %s9; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -global-isel=1 < %s | FileCheck -check-prefixes=GFX10GISEL,GFX1032GISEL %s10; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -global-isel=0 -mattr=+wavefrontsize64 < %s | FileCheck -check-prefixes=GFX11DAGISEL,GFX1164DAGISEL %s11; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -global-isel=1 -mattr=+wavefrontsize64 < %s | FileCheck -check-prefixes=GFX11GISEL,GFX1164GISEL %s12; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -global-isel=0 < %s | FileCheck -check-prefixes=GFX11DAGISEL,GFX1132DAGISEL %s13; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -global-isel=1 < %s | FileCheck -check-prefixes=GFX11GISEL,GFX1132GISEL %s14 15define amdgpu_kernel void @uniform_value(ptr addrspace(1) %out, i32 %in) {16; GFX8DAGISEL-LABEL: uniform_value:17; GFX8DAGISEL:       ; %bb.0: ; %entry18; GFX8DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2419; GFX8DAGISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c20; GFX8DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)21; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v0, s022; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v1, s123; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v2, s224; GFX8DAGISEL-NEXT:    flat_store_dword v[0:1], v225; GFX8DAGISEL-NEXT:    s_endpgm26;27; GFX8GISEL-LABEL: uniform_value:28; GFX8GISEL:       ; %bb.0: ; %entry29; GFX8GISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c30; GFX8GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2431; GFX8GISEL-NEXT:    s_waitcnt lgkmcnt(0)32; GFX8GISEL-NEXT:    v_mov_b32_e32 v2, s233; GFX8GISEL-NEXT:    v_mov_b32_e32 v0, s034; GFX8GISEL-NEXT:    v_mov_b32_e32 v1, s135; GFX8GISEL-NEXT:    flat_store_dword v[0:1], v236; GFX8GISEL-NEXT:    s_endpgm37;38; GFX9DAGISEL-LABEL: uniform_value:39; GFX9DAGISEL:       ; %bb.0: ; %entry40; GFX9DAGISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c41; GFX9DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2442; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v0, 043; GFX9DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)44; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v1, s245; GFX9DAGISEL-NEXT:    global_store_dword v0, v1, s[0:1]46; GFX9DAGISEL-NEXT:    s_endpgm47;48; GFX9GISEL-LABEL: uniform_value:49; GFX9GISEL:       ; %bb.0: ; %entry50; GFX9GISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c51; GFX9GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2452; GFX9GISEL-NEXT:    v_mov_b32_e32 v1, 053; GFX9GISEL-NEXT:    s_waitcnt lgkmcnt(0)54; GFX9GISEL-NEXT:    v_mov_b32_e32 v0, s255; GFX9GISEL-NEXT:    global_store_dword v1, v0, s[0:1]56; GFX9GISEL-NEXT:    s_endpgm57;58; GFX10DAGISEL-LABEL: uniform_value:59; GFX10DAGISEL:       ; %bb.0: ; %entry60; GFX10DAGISEL-NEXT:    s_clause 0x161; GFX10DAGISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c62; GFX10DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2463; GFX10DAGISEL-NEXT:    v_mov_b32_e32 v0, 064; GFX10DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)65; GFX10DAGISEL-NEXT:    v_mov_b32_e32 v1, s266; GFX10DAGISEL-NEXT:    global_store_dword v0, v1, s[0:1]67; GFX10DAGISEL-NEXT:    s_endpgm68;69; GFX10GISEL-LABEL: uniform_value:70; GFX10GISEL:       ; %bb.0: ; %entry71; GFX10GISEL-NEXT:    s_clause 0x172; GFX10GISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c73; GFX10GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2474; GFX10GISEL-NEXT:    v_mov_b32_e32 v1, 075; GFX10GISEL-NEXT:    s_waitcnt lgkmcnt(0)76; GFX10GISEL-NEXT:    v_mov_b32_e32 v0, s277; GFX10GISEL-NEXT:    global_store_dword v1, v0, s[0:1]78; GFX10GISEL-NEXT:    s_endpgm79;80; GFX1164DAGISEL-LABEL: uniform_value:81; GFX1164DAGISEL:       ; %bb.0: ; %entry82; GFX1164DAGISEL-NEXT:    s_clause 0x183; GFX1164DAGISEL-NEXT:    s_load_b32 s2, s[4:5], 0x2c84; GFX1164DAGISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x2485; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v0, 086; GFX1164DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)87; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v1, s288; GFX1164DAGISEL-NEXT:    global_store_b32 v0, v1, s[0:1]89; GFX1164DAGISEL-NEXT:    s_endpgm90;91; GFX1164GISEL-LABEL: uniform_value:92; GFX1164GISEL:       ; %bb.0: ; %entry93; GFX1164GISEL-NEXT:    s_clause 0x194; GFX1164GISEL-NEXT:    s_load_b32 s2, s[4:5], 0x2c95; GFX1164GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x2496; GFX1164GISEL-NEXT:    v_mov_b32_e32 v1, 097; GFX1164GISEL-NEXT:    s_waitcnt lgkmcnt(0)98; GFX1164GISEL-NEXT:    v_mov_b32_e32 v0, s299; GFX1164GISEL-NEXT:    global_store_b32 v1, v0, s[0:1]100; GFX1164GISEL-NEXT:    s_endpgm101;102; GFX1132DAGISEL-LABEL: uniform_value:103; GFX1132DAGISEL:       ; %bb.0: ; %entry104; GFX1132DAGISEL-NEXT:    s_clause 0x1105; GFX1132DAGISEL-NEXT:    s_load_b32 s2, s[4:5], 0x2c106; GFX1132DAGISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24107; GFX1132DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)108; GFX1132DAGISEL-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2109; GFX1132DAGISEL-NEXT:    global_store_b32 v0, v1, s[0:1]110; GFX1132DAGISEL-NEXT:    s_endpgm111;112; GFX1132GISEL-LABEL: uniform_value:113; GFX1132GISEL:       ; %bb.0: ; %entry114; GFX1132GISEL-NEXT:    s_clause 0x1115; GFX1132GISEL-NEXT:    s_load_b32 s2, s[4:5], 0x2c116; GFX1132GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24117; GFX1132GISEL-NEXT:    s_waitcnt lgkmcnt(0)118; GFX1132GISEL-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v0, s2119; GFX1132GISEL-NEXT:    global_store_b32 v1, v0, s[0:1]120; GFX1132GISEL-NEXT:    s_endpgm121entry:122  %result = call i32 @llvm.amdgcn.wave.reduce.max.i32(i32 %in, i32 1)123  store i32 %result, ptr addrspace(1) %out124  ret void125}126 127define amdgpu_kernel void @divergent_value(ptr addrspace(1) %out) {128; GFX8DAGISEL-LABEL: divergent_value:129; GFX8DAGISEL:       ; %bb.0: ; %entry130; GFX8DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24131; GFX8DAGISEL-NEXT:    s_mov_b64 s[2:3], exec132; GFX8DAGISEL-NEXT:    s_brev_b32 s4, 1133; GFX8DAGISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1134; GFX8DAGISEL-NEXT:    s_ff1_i32_b64 s5, s[2:3]135; GFX8DAGISEL-NEXT:    v_readlane_b32 s6, v0, s5136; GFX8DAGISEL-NEXT:    s_bitset0_b64 s[2:3], s5137; GFX8DAGISEL-NEXT:    s_max_i32 s4, s4, s6138; GFX8DAGISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0139; GFX8DAGISEL-NEXT:    s_cbranch_scc1 .LBB1_1140; GFX8DAGISEL-NEXT:  ; %bb.2:141; GFX8DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)142; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v0, s0143; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v1, s1144; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v2, s4145; GFX8DAGISEL-NEXT:    flat_store_dword v[0:1], v2146; GFX8DAGISEL-NEXT:    s_endpgm147;148; GFX8GISEL-LABEL: divergent_value:149; GFX8GISEL:       ; %bb.0: ; %entry150; GFX8GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24151; GFX8GISEL-NEXT:    s_mov_b64 s[2:3], exec152; GFX8GISEL-NEXT:    s_brev_b32 s4, 1153; GFX8GISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1154; GFX8GISEL-NEXT:    s_ff1_i32_b64 s5, s[2:3]155; GFX8GISEL-NEXT:    v_readlane_b32 s6, v0, s5156; GFX8GISEL-NEXT:    s_bitset0_b64 s[2:3], s5157; GFX8GISEL-NEXT:    s_max_i32 s4, s4, s6158; GFX8GISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0159; GFX8GISEL-NEXT:    s_cbranch_scc1 .LBB1_1160; GFX8GISEL-NEXT:  ; %bb.2:161; GFX8GISEL-NEXT:    s_waitcnt lgkmcnt(0)162; GFX8GISEL-NEXT:    v_mov_b32_e32 v0, s0163; GFX8GISEL-NEXT:    v_mov_b32_e32 v2, s4164; GFX8GISEL-NEXT:    v_mov_b32_e32 v1, s1165; GFX8GISEL-NEXT:    flat_store_dword v[0:1], v2166; GFX8GISEL-NEXT:    s_endpgm167;168; GFX9DAGISEL-LABEL: divergent_value:169; GFX9DAGISEL:       ; %bb.0: ; %entry170; GFX9DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24171; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v1, 0172; GFX9DAGISEL-NEXT:    s_mov_b64 s[2:3], exec173; GFX9DAGISEL-NEXT:    s_brev_b32 s4, 1174; GFX9DAGISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1175; GFX9DAGISEL-NEXT:    s_ff1_i32_b64 s5, s[2:3]176; GFX9DAGISEL-NEXT:    v_readlane_b32 s6, v0, s5177; GFX9DAGISEL-NEXT:    s_bitset0_b64 s[2:3], s5178; GFX9DAGISEL-NEXT:    s_max_i32 s4, s4, s6179; GFX9DAGISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0180; GFX9DAGISEL-NEXT:    s_cbranch_scc1 .LBB1_1181; GFX9DAGISEL-NEXT:  ; %bb.2:182; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v0, s4183; GFX9DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)184; GFX9DAGISEL-NEXT:    global_store_dword v1, v0, s[0:1]185; GFX9DAGISEL-NEXT:    s_endpgm186;187; GFX9GISEL-LABEL: divergent_value:188; GFX9GISEL:       ; %bb.0: ; %entry189; GFX9GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24190; GFX9GISEL-NEXT:    s_mov_b64 s[2:3], exec191; GFX9GISEL-NEXT:    s_brev_b32 s4, 1192; GFX9GISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1193; GFX9GISEL-NEXT:    s_ff1_i32_b64 s5, s[2:3]194; GFX9GISEL-NEXT:    v_readlane_b32 s6, v0, s5195; GFX9GISEL-NEXT:    s_bitset0_b64 s[2:3], s5196; GFX9GISEL-NEXT:    s_max_i32 s4, s4, s6197; GFX9GISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0198; GFX9GISEL-NEXT:    s_cbranch_scc1 .LBB1_1199; GFX9GISEL-NEXT:  ; %bb.2:200; GFX9GISEL-NEXT:    v_mov_b32_e32 v0, s4201; GFX9GISEL-NEXT:    v_mov_b32_e32 v1, 0202; GFX9GISEL-NEXT:    s_waitcnt lgkmcnt(0)203; GFX9GISEL-NEXT:    global_store_dword v1, v0, s[0:1]204; GFX9GISEL-NEXT:    s_endpgm205;206; GFX1064DAGISEL-LABEL: divergent_value:207; GFX1064DAGISEL:       ; %bb.0: ; %entry208; GFX1064DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24209; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v1, 0210; GFX1064DAGISEL-NEXT:    s_mov_b64 s[2:3], exec211; GFX1064DAGISEL-NEXT:    s_brev_b32 s4, 1212; GFX1064DAGISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1213; GFX1064DAGISEL-NEXT:    s_ff1_i32_b64 s5, s[2:3]214; GFX1064DAGISEL-NEXT:    v_readlane_b32 s6, v0, s5215; GFX1064DAGISEL-NEXT:    s_bitset0_b64 s[2:3], s5216; GFX1064DAGISEL-NEXT:    s_max_i32 s4, s4, s6217; GFX1064DAGISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0218; GFX1064DAGISEL-NEXT:    s_cbranch_scc1 .LBB1_1219; GFX1064DAGISEL-NEXT:  ; %bb.2:220; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v0, s4221; GFX1064DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)222; GFX1064DAGISEL-NEXT:    global_store_dword v1, v0, s[0:1]223; GFX1064DAGISEL-NEXT:    s_endpgm224;225; GFX1064GISEL-LABEL: divergent_value:226; GFX1064GISEL:       ; %bb.0: ; %entry227; GFX1064GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24228; GFX1064GISEL-NEXT:    s_mov_b64 s[2:3], exec229; GFX1064GISEL-NEXT:    s_brev_b32 s4, 1230; GFX1064GISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1231; GFX1064GISEL-NEXT:    s_ff1_i32_b64 s5, s[2:3]232; GFX1064GISEL-NEXT:    v_readlane_b32 s6, v0, s5233; GFX1064GISEL-NEXT:    s_bitset0_b64 s[2:3], s5234; GFX1064GISEL-NEXT:    s_max_i32 s4, s4, s6235; GFX1064GISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0236; GFX1064GISEL-NEXT:    s_cbranch_scc1 .LBB1_1237; GFX1064GISEL-NEXT:  ; %bb.2:238; GFX1064GISEL-NEXT:    v_mov_b32_e32 v0, s4239; GFX1064GISEL-NEXT:    v_mov_b32_e32 v1, 0240; GFX1064GISEL-NEXT:    s_waitcnt lgkmcnt(0)241; GFX1064GISEL-NEXT:    global_store_dword v1, v0, s[0:1]242; GFX1064GISEL-NEXT:    s_endpgm243;244; GFX1032DAGISEL-LABEL: divergent_value:245; GFX1032DAGISEL:       ; %bb.0: ; %entry246; GFX1032DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24247; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v1, 0248; GFX1032DAGISEL-NEXT:    s_mov_b32 s3, exec_lo249; GFX1032DAGISEL-NEXT:    s_brev_b32 s2, 1250; GFX1032DAGISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1251; GFX1032DAGISEL-NEXT:    s_ff1_i32_b32 s4, s3252; GFX1032DAGISEL-NEXT:    v_readlane_b32 s5, v0, s4253; GFX1032DAGISEL-NEXT:    s_bitset0_b32 s3, s4254; GFX1032DAGISEL-NEXT:    s_max_i32 s2, s2, s5255; GFX1032DAGISEL-NEXT:    s_cmp_lg_u32 s3, 0256; GFX1032DAGISEL-NEXT:    s_cbranch_scc1 .LBB1_1257; GFX1032DAGISEL-NEXT:  ; %bb.2:258; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v0, s2259; GFX1032DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)260; GFX1032DAGISEL-NEXT:    global_store_dword v1, v0, s[0:1]261; GFX1032DAGISEL-NEXT:    s_endpgm262;263; GFX1032GISEL-LABEL: divergent_value:264; GFX1032GISEL:       ; %bb.0: ; %entry265; GFX1032GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24266; GFX1032GISEL-NEXT:    s_mov_b32 s3, exec_lo267; GFX1032GISEL-NEXT:    s_brev_b32 s2, 1268; GFX1032GISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1269; GFX1032GISEL-NEXT:    s_ff1_i32_b32 s4, s3270; GFX1032GISEL-NEXT:    v_readlane_b32 s5, v0, s4271; GFX1032GISEL-NEXT:    s_bitset0_b32 s3, s4272; GFX1032GISEL-NEXT:    s_max_i32 s2, s2, s5273; GFX1032GISEL-NEXT:    s_cmp_lg_u32 s3, 0274; GFX1032GISEL-NEXT:    s_cbranch_scc1 .LBB1_1275; GFX1032GISEL-NEXT:  ; %bb.2:276; GFX1032GISEL-NEXT:    v_mov_b32_e32 v0, s2277; GFX1032GISEL-NEXT:    v_mov_b32_e32 v1, 0278; GFX1032GISEL-NEXT:    s_waitcnt lgkmcnt(0)279; GFX1032GISEL-NEXT:    global_store_dword v1, v0, s[0:1]280; GFX1032GISEL-NEXT:    s_endpgm281;282; GFX1164DAGISEL-LABEL: divergent_value:283; GFX1164DAGISEL:       ; %bb.0: ; %entry284; GFX1164DAGISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24285; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v1, 0286; GFX1164DAGISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v0287; GFX1164DAGISEL-NEXT:    s_mov_b64 s[2:3], exec288; GFX1164DAGISEL-NEXT:    s_brev_b32 s4, 1289; GFX1164DAGISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1290; GFX1164DAGISEL-NEXT:    s_ctz_i32_b64 s5, s[2:3]291; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)292; GFX1164DAGISEL-NEXT:    v_readlane_b32 s6, v0, s5293; GFX1164DAGISEL-NEXT:    s_bitset0_b64 s[2:3], s5294; GFX1164DAGISEL-NEXT:    s_max_i32 s4, s4, s6295; GFX1164DAGISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0296; GFX1164DAGISEL-NEXT:    s_cbranch_scc1 .LBB1_1297; GFX1164DAGISEL-NEXT:  ; %bb.2:298; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v0, s4299; GFX1164DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)300; GFX1164DAGISEL-NEXT:    global_store_b32 v1, v0, s[0:1]301; GFX1164DAGISEL-NEXT:    s_endpgm302;303; GFX1164GISEL-LABEL: divergent_value:304; GFX1164GISEL:       ; %bb.0: ; %entry305; GFX1164GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24306; GFX1164GISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v0307; GFX1164GISEL-NEXT:    s_mov_b64 s[2:3], exec308; GFX1164GISEL-NEXT:    s_brev_b32 s4, 1309; GFX1164GISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1310; GFX1164GISEL-NEXT:    s_ctz_i32_b64 s5, s[2:3]311; GFX1164GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)312; GFX1164GISEL-NEXT:    v_readlane_b32 s6, v0, s5313; GFX1164GISEL-NEXT:    s_bitset0_b64 s[2:3], s5314; GFX1164GISEL-NEXT:    s_max_i32 s4, s4, s6315; GFX1164GISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0316; GFX1164GISEL-NEXT:    s_cbranch_scc1 .LBB1_1317; GFX1164GISEL-NEXT:  ; %bb.2:318; GFX1164GISEL-NEXT:    v_mov_b32_e32 v0, s4319; GFX1164GISEL-NEXT:    v_mov_b32_e32 v1, 0320; GFX1164GISEL-NEXT:    s_waitcnt lgkmcnt(0)321; GFX1164GISEL-NEXT:    global_store_b32 v1, v0, s[0:1]322; GFX1164GISEL-NEXT:    s_endpgm323;324; GFX1132DAGISEL-LABEL: divergent_value:325; GFX1132DAGISEL:       ; %bb.0: ; %entry326; GFX1132DAGISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24327; GFX1132DAGISEL-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_and_b32 v0, 0x3ff, v0328; GFX1132DAGISEL-NEXT:    s_mov_b32 s3, exec_lo329; GFX1132DAGISEL-NEXT:    s_brev_b32 s2, 1330; GFX1132DAGISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1331; GFX1132DAGISEL-NEXT:    s_ctz_i32_b32 s4, s3332; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)333; GFX1132DAGISEL-NEXT:    v_readlane_b32 s5, v0, s4334; GFX1132DAGISEL-NEXT:    s_bitset0_b32 s3, s4335; GFX1132DAGISEL-NEXT:    s_max_i32 s2, s2, s5336; GFX1132DAGISEL-NEXT:    s_cmp_lg_u32 s3, 0337; GFX1132DAGISEL-NEXT:    s_cbranch_scc1 .LBB1_1338; GFX1132DAGISEL-NEXT:  ; %bb.2:339; GFX1132DAGISEL-NEXT:    v_mov_b32_e32 v0, s2340; GFX1132DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)341; GFX1132DAGISEL-NEXT:    global_store_b32 v1, v0, s[0:1]342; GFX1132DAGISEL-NEXT:    s_endpgm343;344; GFX1132GISEL-LABEL: divergent_value:345; GFX1132GISEL:       ; %bb.0: ; %entry346; GFX1132GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24347; GFX1132GISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v0348; GFX1132GISEL-NEXT:    s_mov_b32 s3, exec_lo349; GFX1132GISEL-NEXT:    s_brev_b32 s2, 1350; GFX1132GISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1351; GFX1132GISEL-NEXT:    s_ctz_i32_b32 s4, s3352; GFX1132GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)353; GFX1132GISEL-NEXT:    v_readlane_b32 s5, v0, s4354; GFX1132GISEL-NEXT:    s_bitset0_b32 s3, s4355; GFX1132GISEL-NEXT:    s_max_i32 s2, s2, s5356; GFX1132GISEL-NEXT:    s_cmp_lg_u32 s3, 0357; GFX1132GISEL-NEXT:    s_cbranch_scc1 .LBB1_1358; GFX1132GISEL-NEXT:  ; %bb.2:359; GFX1132GISEL-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, 0360; GFX1132GISEL-NEXT:    s_waitcnt lgkmcnt(0)361; GFX1132GISEL-NEXT:    global_store_b32 v1, v0, s[0:1]362; GFX1132GISEL-NEXT:    s_endpgm363entry:364  %id.x = call i32 @llvm.amdgcn.workitem.id.x()365  %result = call i32 @llvm.amdgcn.wave.reduce.max.i32(i32 %id.x, i32 1)366  store i32 %result, ptr addrspace(1) %out367  ret void368}369 370define amdgpu_kernel void @divergent_cfg(ptr addrspace(1) %out, i32 %in) {371; GFX8DAGISEL-LABEL: divergent_cfg:372; GFX8DAGISEL:       ; %bb.0: ; %entry373; GFX8DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc, 15, v0374; GFX8DAGISEL-NEXT:    ; implicit-def: $sgpr2375; GFX8DAGISEL-NEXT:    s_and_saveexec_b64 s[0:1], vcc376; GFX8DAGISEL-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]377; GFX8DAGISEL-NEXT:  ; %bb.1: ; %else378; GFX8DAGISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c379; GFX8DAGISEL-NEXT:    ; implicit-def: $vgpr0380; GFX8DAGISEL-NEXT:  ; %bb.2: ; %Flow381; GFX8DAGISEL-NEXT:    s_or_saveexec_b64 s[0:1], s[0:1]382; GFX8DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)383; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v1, s2384; GFX8DAGISEL-NEXT:    s_xor_b64 exec, exec, s[0:1]385; GFX8DAGISEL-NEXT:    s_cbranch_execz .LBB2_6386; GFX8DAGISEL-NEXT:  ; %bb.3: ; %if387; GFX8DAGISEL-NEXT:    s_mov_b64 s[2:3], exec388; GFX8DAGISEL-NEXT:    s_brev_b32 s6, 1389; GFX8DAGISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1390; GFX8DAGISEL-NEXT:    s_ff1_i32_b64 s7, s[2:3]391; GFX8DAGISEL-NEXT:    v_readlane_b32 s8, v0, s7392; GFX8DAGISEL-NEXT:    s_bitset0_b64 s[2:3], s7393; GFX8DAGISEL-NEXT:    s_max_i32 s6, s6, s8394; GFX8DAGISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0395; GFX8DAGISEL-NEXT:    s_cbranch_scc1 .LBB2_4396; GFX8DAGISEL-NEXT:  ; %bb.5:397; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v1, s6398; GFX8DAGISEL-NEXT:  .LBB2_6: ; %endif399; GFX8DAGISEL-NEXT:    s_or_b64 exec, exec, s[0:1]400; GFX8DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24401; GFX8DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)402; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v3, s1403; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v2, s0404; GFX8DAGISEL-NEXT:    flat_store_dword v[2:3], v1405; GFX8DAGISEL-NEXT:    s_endpgm406;407; GFX8GISEL-LABEL: divergent_cfg:408; GFX8GISEL:       ; %bb.0: ; %entry409; GFX8GISEL-NEXT:    v_cmp_le_u32_e32 vcc, 16, v0410; GFX8GISEL-NEXT:    ; implicit-def: $sgpr6411; GFX8GISEL-NEXT:    s_and_saveexec_b64 s[0:1], vcc412; GFX8GISEL-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]413; GFX8GISEL-NEXT:    s_cbranch_execz .LBB2_2414; GFX8GISEL-NEXT:  ; %bb.1: ; %else415; GFX8GISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c416; GFX8GISEL-NEXT:    ; implicit-def: $vgpr0417; GFX8GISEL-NEXT:    s_waitcnt lgkmcnt(0)418; GFX8GISEL-NEXT:    s_mov_b32 s6, s2419; GFX8GISEL-NEXT:  .LBB2_2: ; %Flow420; GFX8GISEL-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]421; GFX8GISEL-NEXT:    s_cbranch_execz .LBB2_5422; GFX8GISEL-NEXT:  ; %bb.3: ; %if423; GFX8GISEL-NEXT:    s_mov_b64 s[2:3], exec424; GFX8GISEL-NEXT:    s_brev_b32 s6, 1425; GFX8GISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1426; GFX8GISEL-NEXT:    s_ff1_i32_b64 s7, s[2:3]427; GFX8GISEL-NEXT:    v_readlane_b32 s8, v0, s7428; GFX8GISEL-NEXT:    s_bitset0_b64 s[2:3], s7429; GFX8GISEL-NEXT:    s_max_i32 s6, s6, s8430; GFX8GISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0431; GFX8GISEL-NEXT:    s_cbranch_scc1 .LBB2_4432; GFX8GISEL-NEXT:  .LBB2_5: ; %endif433; GFX8GISEL-NEXT:    s_or_b64 exec, exec, s[0:1]434; GFX8GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24435; GFX8GISEL-NEXT:    v_mov_b32_e32 v2, s6436; GFX8GISEL-NEXT:    s_waitcnt lgkmcnt(0)437; GFX8GISEL-NEXT:    v_mov_b32_e32 v0, s0438; GFX8GISEL-NEXT:    v_mov_b32_e32 v1, s1439; GFX8GISEL-NEXT:    flat_store_dword v[0:1], v2440; GFX8GISEL-NEXT:    s_endpgm441;442; GFX9DAGISEL-LABEL: divergent_cfg:443; GFX9DAGISEL:       ; %bb.0: ; %entry444; GFX9DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc, 15, v0445; GFX9DAGISEL-NEXT:    ; implicit-def: $sgpr2446; GFX9DAGISEL-NEXT:    s_and_saveexec_b64 s[0:1], vcc447; GFX9DAGISEL-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]448; GFX9DAGISEL-NEXT:  ; %bb.1: ; %else449; GFX9DAGISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c450; GFX9DAGISEL-NEXT:    ; implicit-def: $vgpr0451; GFX9DAGISEL-NEXT:  ; %bb.2: ; %Flow452; GFX9DAGISEL-NEXT:    s_or_saveexec_b64 s[0:1], s[0:1]453; GFX9DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)454; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v1, s2455; GFX9DAGISEL-NEXT:    s_xor_b64 exec, exec, s[0:1]456; GFX9DAGISEL-NEXT:    s_cbranch_execz .LBB2_6457; GFX9DAGISEL-NEXT:  ; %bb.3: ; %if458; GFX9DAGISEL-NEXT:    s_mov_b64 s[2:3], exec459; GFX9DAGISEL-NEXT:    s_brev_b32 s6, 1460; GFX9DAGISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1461; GFX9DAGISEL-NEXT:    s_ff1_i32_b64 s7, s[2:3]462; GFX9DAGISEL-NEXT:    v_readlane_b32 s8, v0, s7463; GFX9DAGISEL-NEXT:    s_bitset0_b64 s[2:3], s7464; GFX9DAGISEL-NEXT:    s_max_i32 s6, s6, s8465; GFX9DAGISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0466; GFX9DAGISEL-NEXT:    s_cbranch_scc1 .LBB2_4467; GFX9DAGISEL-NEXT:  ; %bb.5:468; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v1, s6469; GFX9DAGISEL-NEXT:  .LBB2_6: ; %endif470; GFX9DAGISEL-NEXT:    s_or_b64 exec, exec, s[0:1]471; GFX9DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24472; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v0, 0473; GFX9DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)474; GFX9DAGISEL-NEXT:    global_store_dword v0, v1, s[0:1]475; GFX9DAGISEL-NEXT:    s_endpgm476;477; GFX9GISEL-LABEL: divergent_cfg:478; GFX9GISEL:       ; %bb.0: ; %entry479; GFX9GISEL-NEXT:    v_cmp_le_u32_e32 vcc, 16, v0480; GFX9GISEL-NEXT:    ; implicit-def: $sgpr6481; GFX9GISEL-NEXT:    s_and_saveexec_b64 s[0:1], vcc482; GFX9GISEL-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]483; GFX9GISEL-NEXT:    s_cbranch_execz .LBB2_2484; GFX9GISEL-NEXT:  ; %bb.1: ; %else485; GFX9GISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c486; GFX9GISEL-NEXT:    ; implicit-def: $vgpr0487; GFX9GISEL-NEXT:    s_waitcnt lgkmcnt(0)488; GFX9GISEL-NEXT:    s_mov_b32 s6, s2489; GFX9GISEL-NEXT:  .LBB2_2: ; %Flow490; GFX9GISEL-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]491; GFX9GISEL-NEXT:    s_cbranch_execz .LBB2_5492; GFX9GISEL-NEXT:  ; %bb.3: ; %if493; GFX9GISEL-NEXT:    s_mov_b64 s[2:3], exec494; GFX9GISEL-NEXT:    s_brev_b32 s6, 1495; GFX9GISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1496; GFX9GISEL-NEXT:    s_ff1_i32_b64 s7, s[2:3]497; GFX9GISEL-NEXT:    v_readlane_b32 s8, v0, s7498; GFX9GISEL-NEXT:    s_bitset0_b64 s[2:3], s7499; GFX9GISEL-NEXT:    s_max_i32 s6, s6, s8500; GFX9GISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0501; GFX9GISEL-NEXT:    s_cbranch_scc1 .LBB2_4502; GFX9GISEL-NEXT:  .LBB2_5: ; %endif503; GFX9GISEL-NEXT:    s_or_b64 exec, exec, s[0:1]504; GFX9GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24505; GFX9GISEL-NEXT:    v_mov_b32_e32 v0, s6506; GFX9GISEL-NEXT:    v_mov_b32_e32 v1, 0507; GFX9GISEL-NEXT:    s_waitcnt lgkmcnt(0)508; GFX9GISEL-NEXT:    global_store_dword v1, v0, s[0:1]509; GFX9GISEL-NEXT:    s_endpgm510;511; GFX1064DAGISEL-LABEL: divergent_cfg:512; GFX1064DAGISEL:       ; %bb.0: ; %entry513; GFX1064DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc, 15, v0514; GFX1064DAGISEL-NEXT:    ; implicit-def: $sgpr2515; GFX1064DAGISEL-NEXT:    s_and_saveexec_b64 s[0:1], vcc516; GFX1064DAGISEL-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]517; GFX1064DAGISEL-NEXT:  ; %bb.1: ; %else518; GFX1064DAGISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c519; GFX1064DAGISEL-NEXT:    ; implicit-def: $vgpr0520; GFX1064DAGISEL-NEXT:  ; %bb.2: ; %Flow521; GFX1064DAGISEL-NEXT:    s_or_saveexec_b64 s[0:1], s[0:1]522; GFX1064DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)523; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v1, s2524; GFX1064DAGISEL-NEXT:    s_xor_b64 exec, exec, s[0:1]525; GFX1064DAGISEL-NEXT:    s_cbranch_execz .LBB2_6526; GFX1064DAGISEL-NEXT:  ; %bb.3: ; %if527; GFX1064DAGISEL-NEXT:    s_mov_b64 s[2:3], exec528; GFX1064DAGISEL-NEXT:    s_brev_b32 s6, 1529; GFX1064DAGISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1530; GFX1064DAGISEL-NEXT:    s_ff1_i32_b64 s7, s[2:3]531; GFX1064DAGISEL-NEXT:    v_readlane_b32 s8, v0, s7532; GFX1064DAGISEL-NEXT:    s_bitset0_b64 s[2:3], s7533; GFX1064DAGISEL-NEXT:    s_max_i32 s6, s6, s8534; GFX1064DAGISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0535; GFX1064DAGISEL-NEXT:    s_cbranch_scc1 .LBB2_4536; GFX1064DAGISEL-NEXT:  ; %bb.5:537; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v1, s6538; GFX1064DAGISEL-NEXT:  .LBB2_6: ; %endif539; GFX1064DAGISEL-NEXT:    s_or_b64 exec, exec, s[0:1]540; GFX1064DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24541; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v0, 0542; GFX1064DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)543; GFX1064DAGISEL-NEXT:    global_store_dword v0, v1, s[0:1]544; GFX1064DAGISEL-NEXT:    s_endpgm545;546; GFX1064GISEL-LABEL: divergent_cfg:547; GFX1064GISEL:       ; %bb.0: ; %entry548; GFX1064GISEL-NEXT:    v_cmp_le_u32_e32 vcc, 16, v0549; GFX1064GISEL-NEXT:    ; implicit-def: $sgpr6550; GFX1064GISEL-NEXT:    s_and_saveexec_b64 s[0:1], vcc551; GFX1064GISEL-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]552; GFX1064GISEL-NEXT:    s_cbranch_execz .LBB2_2553; GFX1064GISEL-NEXT:  ; %bb.1: ; %else554; GFX1064GISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c555; GFX1064GISEL-NEXT:    ; implicit-def: $vgpr0556; GFX1064GISEL-NEXT:    s_waitcnt lgkmcnt(0)557; GFX1064GISEL-NEXT:    s_mov_b32 s6, s2558; GFX1064GISEL-NEXT:  .LBB2_2: ; %Flow559; GFX1064GISEL-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]560; GFX1064GISEL-NEXT:    s_cbranch_execz .LBB2_5561; GFX1064GISEL-NEXT:  ; %bb.3: ; %if562; GFX1064GISEL-NEXT:    s_mov_b64 s[2:3], exec563; GFX1064GISEL-NEXT:    s_brev_b32 s6, 1564; GFX1064GISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1565; GFX1064GISEL-NEXT:    s_ff1_i32_b64 s7, s[2:3]566; GFX1064GISEL-NEXT:    v_readlane_b32 s8, v0, s7567; GFX1064GISEL-NEXT:    s_bitset0_b64 s[2:3], s7568; GFX1064GISEL-NEXT:    s_max_i32 s6, s6, s8569; GFX1064GISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0570; GFX1064GISEL-NEXT:    s_cbranch_scc1 .LBB2_4571; GFX1064GISEL-NEXT:  .LBB2_5: ; %endif572; GFX1064GISEL-NEXT:    s_or_b64 exec, exec, s[0:1]573; GFX1064GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24574; GFX1064GISEL-NEXT:    v_mov_b32_e32 v0, s6575; GFX1064GISEL-NEXT:    v_mov_b32_e32 v1, 0576; GFX1064GISEL-NEXT:    s_waitcnt lgkmcnt(0)577; GFX1064GISEL-NEXT:    global_store_dword v1, v0, s[0:1]578; GFX1064GISEL-NEXT:    s_endpgm579;580; GFX1032DAGISEL-LABEL: divergent_cfg:581; GFX1032DAGISEL:       ; %bb.0: ; %entry582; GFX1032DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc_lo, 15, v0583; GFX1032DAGISEL-NEXT:    ; implicit-def: $sgpr1584; GFX1032DAGISEL-NEXT:    s_and_saveexec_b32 s0, vcc_lo585; GFX1032DAGISEL-NEXT:    s_xor_b32 s0, exec_lo, s0586; GFX1032DAGISEL-NEXT:  ; %bb.1: ; %else587; GFX1032DAGISEL-NEXT:    s_load_dword s1, s[4:5], 0x2c588; GFX1032DAGISEL-NEXT:    ; implicit-def: $vgpr0589; GFX1032DAGISEL-NEXT:  ; %bb.2: ; %Flow590; GFX1032DAGISEL-NEXT:    s_or_saveexec_b32 s0, s0591; GFX1032DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)592; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v1, s1593; GFX1032DAGISEL-NEXT:    s_xor_b32 exec_lo, exec_lo, s0594; GFX1032DAGISEL-NEXT:    s_cbranch_execz .LBB2_6595; GFX1032DAGISEL-NEXT:  ; %bb.3: ; %if596; GFX1032DAGISEL-NEXT:    s_mov_b32 s2, exec_lo597; GFX1032DAGISEL-NEXT:    s_brev_b32 s1, 1598; GFX1032DAGISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1599; GFX1032DAGISEL-NEXT:    s_ff1_i32_b32 s3, s2600; GFX1032DAGISEL-NEXT:    v_readlane_b32 s6, v0, s3601; GFX1032DAGISEL-NEXT:    s_bitset0_b32 s2, s3602; GFX1032DAGISEL-NEXT:    s_max_i32 s1, s1, s6603; GFX1032DAGISEL-NEXT:    s_cmp_lg_u32 s2, 0604; GFX1032DAGISEL-NEXT:    s_cbranch_scc1 .LBB2_4605; GFX1032DAGISEL-NEXT:  ; %bb.5:606; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v1, s1607; GFX1032DAGISEL-NEXT:  .LBB2_6: ; %endif608; GFX1032DAGISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s0609; GFX1032DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24610; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v0, 0611; GFX1032DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)612; GFX1032DAGISEL-NEXT:    global_store_dword v0, v1, s[0:1]613; GFX1032DAGISEL-NEXT:    s_endpgm614;615; GFX1032GISEL-LABEL: divergent_cfg:616; GFX1032GISEL:       ; %bb.0: ; %entry617; GFX1032GISEL-NEXT:    v_cmp_le_u32_e32 vcc_lo, 16, v0618; GFX1032GISEL-NEXT:    ; implicit-def: $sgpr0619; GFX1032GISEL-NEXT:    s_and_saveexec_b32 s1, vcc_lo620; GFX1032GISEL-NEXT:    s_xor_b32 s1, exec_lo, s1621; GFX1032GISEL-NEXT:    s_cbranch_execz .LBB2_2622; GFX1032GISEL-NEXT:  ; %bb.1: ; %else623; GFX1032GISEL-NEXT:    s_load_dword s0, s[4:5], 0x2c624; GFX1032GISEL-NEXT:    ; implicit-def: $vgpr0625; GFX1032GISEL-NEXT:    s_waitcnt lgkmcnt(0)626; GFX1032GISEL-NEXT:    s_mov_b32 s0, s0627; GFX1032GISEL-NEXT:  .LBB2_2: ; %Flow628; GFX1032GISEL-NEXT:    s_andn2_saveexec_b32 s1, s1629; GFX1032GISEL-NEXT:    s_cbranch_execz .LBB2_5630; GFX1032GISEL-NEXT:  ; %bb.3: ; %if631; GFX1032GISEL-NEXT:    s_mov_b32 s2, exec_lo632; GFX1032GISEL-NEXT:    s_brev_b32 s0, 1633; GFX1032GISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1634; GFX1032GISEL-NEXT:    s_ff1_i32_b32 s3, s2635; GFX1032GISEL-NEXT:    v_readlane_b32 s6, v0, s3636; GFX1032GISEL-NEXT:    s_bitset0_b32 s2, s3637; GFX1032GISEL-NEXT:    s_max_i32 s0, s0, s6638; GFX1032GISEL-NEXT:    s_cmp_lg_u32 s2, 0639; GFX1032GISEL-NEXT:    s_cbranch_scc1 .LBB2_4640; GFX1032GISEL-NEXT:  .LBB2_5: ; %endif641; GFX1032GISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s1642; GFX1032GISEL-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x24643; GFX1032GISEL-NEXT:    v_mov_b32_e32 v0, s0644; GFX1032GISEL-NEXT:    v_mov_b32_e32 v1, 0645; GFX1032GISEL-NEXT:    s_waitcnt lgkmcnt(0)646; GFX1032GISEL-NEXT:    global_store_dword v1, v0, s[2:3]647; GFX1032GISEL-NEXT:    s_endpgm648;649; GFX1164DAGISEL-LABEL: divergent_cfg:650; GFX1164DAGISEL:       ; %bb.0: ; %entry651; GFX1164DAGISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v0652; GFX1164DAGISEL-NEXT:    s_mov_b64 s[0:1], exec653; GFX1164DAGISEL-NEXT:    ; implicit-def: $sgpr2654; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)655; GFX1164DAGISEL-NEXT:    v_cmpx_lt_u32_e32 15, v0656; GFX1164DAGISEL-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]657; GFX1164DAGISEL-NEXT:  ; %bb.1: ; %else658; GFX1164DAGISEL-NEXT:    s_load_b32 s2, s[4:5], 0x2c659; GFX1164DAGISEL-NEXT:    ; implicit-def: $vgpr0660; GFX1164DAGISEL-NEXT:  ; %bb.2: ; %Flow661; GFX1164DAGISEL-NEXT:    s_or_saveexec_b64 s[0:1], s[0:1]662; GFX1164DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)663; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v1, s2664; GFX1164DAGISEL-NEXT:    s_xor_b64 exec, exec, s[0:1]665; GFX1164DAGISEL-NEXT:    s_cbranch_execz .LBB2_6666; GFX1164DAGISEL-NEXT:  ; %bb.3: ; %if667; GFX1164DAGISEL-NEXT:    s_mov_b64 s[2:3], exec668; GFX1164DAGISEL-NEXT:    s_brev_b32 s6, 1669; GFX1164DAGISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1670; GFX1164DAGISEL-NEXT:    s_ctz_i32_b64 s7, s[2:3]671; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)672; GFX1164DAGISEL-NEXT:    v_readlane_b32 s8, v0, s7673; GFX1164DAGISEL-NEXT:    s_bitset0_b64 s[2:3], s7674; GFX1164DAGISEL-NEXT:    s_max_i32 s6, s6, s8675; GFX1164DAGISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0676; GFX1164DAGISEL-NEXT:    s_cbranch_scc1 .LBB2_4677; GFX1164DAGISEL-NEXT:  ; %bb.5:678; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v1, s6679; GFX1164DAGISEL-NEXT:  .LBB2_6: ; %endif680; GFX1164DAGISEL-NEXT:    s_or_b64 exec, exec, s[0:1]681; GFX1164DAGISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24682; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v0, 0683; GFX1164DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)684; GFX1164DAGISEL-NEXT:    global_store_b32 v0, v1, s[0:1]685; GFX1164DAGISEL-NEXT:    s_endpgm686;687; GFX1164GISEL-LABEL: divergent_cfg:688; GFX1164GISEL:       ; %bb.0: ; %entry689; GFX1164GISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v0690; GFX1164GISEL-NEXT:    s_mov_b64 s[0:1], exec691; GFX1164GISEL-NEXT:    ; implicit-def: $sgpr6692; GFX1164GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)693; GFX1164GISEL-NEXT:    v_cmpx_le_u32_e32 16, v0694; GFX1164GISEL-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]695; GFX1164GISEL-NEXT:    s_cbranch_execz .LBB2_2696; GFX1164GISEL-NEXT:  ; %bb.1: ; %else697; GFX1164GISEL-NEXT:    s_load_b32 s2, s[4:5], 0x2c698; GFX1164GISEL-NEXT:    ; implicit-def: $vgpr0699; GFX1164GISEL-NEXT:    s_waitcnt lgkmcnt(0)700; GFX1164GISEL-NEXT:    s_mov_b32 s6, s2701; GFX1164GISEL-NEXT:  .LBB2_2: ; %Flow702; GFX1164GISEL-NEXT:    s_and_not1_saveexec_b64 s[0:1], s[0:1]703; GFX1164GISEL-NEXT:    s_cbranch_execz .LBB2_5704; GFX1164GISEL-NEXT:  ; %bb.3: ; %if705; GFX1164GISEL-NEXT:    s_mov_b64 s[2:3], exec706; GFX1164GISEL-NEXT:    s_brev_b32 s6, 1707; GFX1164GISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1708; GFX1164GISEL-NEXT:    s_ctz_i32_b64 s7, s[2:3]709; GFX1164GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)710; GFX1164GISEL-NEXT:    v_readlane_b32 s8, v0, s7711; GFX1164GISEL-NEXT:    s_bitset0_b64 s[2:3], s7712; GFX1164GISEL-NEXT:    s_max_i32 s6, s6, s8713; GFX1164GISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0714; GFX1164GISEL-NEXT:    s_cbranch_scc1 .LBB2_4715; GFX1164GISEL-NEXT:  .LBB2_5: ; %endif716; GFX1164GISEL-NEXT:    s_or_b64 exec, exec, s[0:1]717; GFX1164GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24718; GFX1164GISEL-NEXT:    v_mov_b32_e32 v0, s6719; GFX1164GISEL-NEXT:    v_mov_b32_e32 v1, 0720; GFX1164GISEL-NEXT:    s_waitcnt lgkmcnt(0)721; GFX1164GISEL-NEXT:    global_store_b32 v1, v0, s[0:1]722; GFX1164GISEL-NEXT:    s_endpgm723;724; GFX1132DAGISEL-LABEL: divergent_cfg:725; GFX1132DAGISEL:       ; %bb.0: ; %entry726; GFX1132DAGISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v0727; GFX1132DAGISEL-NEXT:    s_mov_b32 s0, exec_lo728; GFX1132DAGISEL-NEXT:    ; implicit-def: $sgpr1729; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)730; GFX1132DAGISEL-NEXT:    v_cmpx_lt_u32_e32 15, v0731; GFX1132DAGISEL-NEXT:    s_xor_b32 s0, exec_lo, s0732; GFX1132DAGISEL-NEXT:  ; %bb.1: ; %else733; GFX1132DAGISEL-NEXT:    s_load_b32 s1, s[4:5], 0x2c734; GFX1132DAGISEL-NEXT:    ; implicit-def: $vgpr0735; GFX1132DAGISEL-NEXT:  ; %bb.2: ; %Flow736; GFX1132DAGISEL-NEXT:    s_or_saveexec_b32 s0, s0737; GFX1132DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)738; GFX1132DAGISEL-NEXT:    v_mov_b32_e32 v1, s1739; GFX1132DAGISEL-NEXT:    s_xor_b32 exec_lo, exec_lo, s0740; GFX1132DAGISEL-NEXT:    s_cbranch_execz .LBB2_6741; GFX1132DAGISEL-NEXT:  ; %bb.3: ; %if742; GFX1132DAGISEL-NEXT:    s_mov_b32 s2, exec_lo743; GFX1132DAGISEL-NEXT:    s_brev_b32 s1, 1744; GFX1132DAGISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1745; GFX1132DAGISEL-NEXT:    s_ctz_i32_b32 s3, s2746; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)747; GFX1132DAGISEL-NEXT:    v_readlane_b32 s6, v0, s3748; GFX1132DAGISEL-NEXT:    s_bitset0_b32 s2, s3749; GFX1132DAGISEL-NEXT:    s_max_i32 s1, s1, s6750; GFX1132DAGISEL-NEXT:    s_cmp_lg_u32 s2, 0751; GFX1132DAGISEL-NEXT:    s_cbranch_scc1 .LBB2_4752; GFX1132DAGISEL-NEXT:  ; %bb.5:753; GFX1132DAGISEL-NEXT:    v_mov_b32_e32 v1, s1754; GFX1132DAGISEL-NEXT:  .LBB2_6: ; %endif755; GFX1132DAGISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s0756; GFX1132DAGISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24757; GFX1132DAGISEL-NEXT:    v_mov_b32_e32 v0, 0758; GFX1132DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)759; GFX1132DAGISEL-NEXT:    global_store_b32 v0, v1, s[0:1]760; GFX1132DAGISEL-NEXT:    s_endpgm761;762; GFX1132GISEL-LABEL: divergent_cfg:763; GFX1132GISEL:       ; %bb.0: ; %entry764; GFX1132GISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v0765; GFX1132GISEL-NEXT:    s_mov_b32 s1, exec_lo766; GFX1132GISEL-NEXT:    ; implicit-def: $sgpr0767; GFX1132GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)768; GFX1132GISEL-NEXT:    v_cmpx_le_u32_e32 16, v0769; GFX1132GISEL-NEXT:    s_xor_b32 s1, exec_lo, s1770; GFX1132GISEL-NEXT:    s_cbranch_execz .LBB2_2771; GFX1132GISEL-NEXT:  ; %bb.1: ; %else772; GFX1132GISEL-NEXT:    s_load_b32 s0, s[4:5], 0x2c773; GFX1132GISEL-NEXT:    ; implicit-def: $vgpr0774; GFX1132GISEL-NEXT:    s_waitcnt lgkmcnt(0)775; GFX1132GISEL-NEXT:    s_mov_b32 s0, s0776; GFX1132GISEL-NEXT:  .LBB2_2: ; %Flow777; GFX1132GISEL-NEXT:    s_and_not1_saveexec_b32 s1, s1778; GFX1132GISEL-NEXT:    s_cbranch_execz .LBB2_5779; GFX1132GISEL-NEXT:  ; %bb.3: ; %if780; GFX1132GISEL-NEXT:    s_mov_b32 s2, exec_lo781; GFX1132GISEL-NEXT:    s_brev_b32 s0, 1782; GFX1132GISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1783; GFX1132GISEL-NEXT:    s_ctz_i32_b32 s3, s2784; GFX1132GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)785; GFX1132GISEL-NEXT:    v_readlane_b32 s6, v0, s3786; GFX1132GISEL-NEXT:    s_bitset0_b32 s2, s3787; GFX1132GISEL-NEXT:    s_max_i32 s0, s0, s6788; GFX1132GISEL-NEXT:    s_cmp_lg_u32 s2, 0789; GFX1132GISEL-NEXT:    s_cbranch_scc1 .LBB2_4790; GFX1132GISEL-NEXT:  .LBB2_5: ; %endif791; GFX1132GISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s1792; GFX1132GISEL-NEXT:    s_load_b64 s[2:3], s[4:5], 0x24793; GFX1132GISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, 0794; GFX1132GISEL-NEXT:    s_waitcnt lgkmcnt(0)795; GFX1132GISEL-NEXT:    global_store_b32 v1, v0, s[2:3]796; GFX1132GISEL-NEXT:    s_endpgm797entry:798  %tid = call i32 @llvm.amdgcn.workitem.id.x()799  %d_cmp = icmp ult i32 %tid, 16800  br i1 %d_cmp, label %if, label %else801 802if:803  %reducedValTid = call i32 @llvm.amdgcn.wave.reduce.max.i32(i32 %tid, i32 1)804  br label %endif805 806else:807  %reducedValIn = call i32 @llvm.amdgcn.wave.reduce.max.i32(i32 %in, i32 1)808  br label %endif809 810endif:811  %combine = phi i32 [%reducedValTid, %if], [%reducedValIn, %else]812  store i32 %combine, ptr addrspace(1) %out813  ret void814}815 816define amdgpu_kernel void @uniform_value_i64(ptr addrspace(1) %out, i64 %in) {817; GFX8DAGISEL-LABEL: uniform_value_i64:818; GFX8DAGISEL:       ; %bb.0: ; %entry819; GFX8DAGISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24820; GFX8DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)821; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v2, s2822; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v0, s0823; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v1, s1824; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v3, s3825; GFX8DAGISEL-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]826; GFX8DAGISEL-NEXT:    s_endpgm827;828; GFX8GISEL-LABEL: uniform_value_i64:829; GFX8GISEL:       ; %bb.0: ; %entry830; GFX8GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24831; GFX8GISEL-NEXT:    s_waitcnt lgkmcnt(0)832; GFX8GISEL-NEXT:    v_mov_b32_e32 v0, s2833; GFX8GISEL-NEXT:    v_mov_b32_e32 v3, s1834; GFX8GISEL-NEXT:    v_mov_b32_e32 v1, s3835; GFX8GISEL-NEXT:    v_mov_b32_e32 v2, s0836; GFX8GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]837; GFX8GISEL-NEXT:    s_endpgm838;839; GFX9DAGISEL-LABEL: uniform_value_i64:840; GFX9DAGISEL:       ; %bb.0: ; %entry841; GFX9DAGISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24842; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v2, 0843; GFX9DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)844; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v0, s2845; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v1, s3846; GFX9DAGISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]847; GFX9DAGISEL-NEXT:    s_endpgm848;849; GFX9GISEL-LABEL: uniform_value_i64:850; GFX9GISEL:       ; %bb.0: ; %entry851; GFX9GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24852; GFX9GISEL-NEXT:    v_mov_b32_e32 v2, 0853; GFX9GISEL-NEXT:    s_waitcnt lgkmcnt(0)854; GFX9GISEL-NEXT:    v_mov_b32_e32 v0, s2855; GFX9GISEL-NEXT:    v_mov_b32_e32 v1, s3856; GFX9GISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]857; GFX9GISEL-NEXT:    s_endpgm858;859; GFX10DAGISEL-LABEL: uniform_value_i64:860; GFX10DAGISEL:       ; %bb.0: ; %entry861; GFX10DAGISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24862; GFX10DAGISEL-NEXT:    v_mov_b32_e32 v2, 0863; GFX10DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)864; GFX10DAGISEL-NEXT:    v_mov_b32_e32 v0, s2865; GFX10DAGISEL-NEXT:    v_mov_b32_e32 v1, s3866; GFX10DAGISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]867; GFX10DAGISEL-NEXT:    s_endpgm868;869; GFX10GISEL-LABEL: uniform_value_i64:870; GFX10GISEL:       ; %bb.0: ; %entry871; GFX10GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24872; GFX10GISEL-NEXT:    v_mov_b32_e32 v2, 0873; GFX10GISEL-NEXT:    s_waitcnt lgkmcnt(0)874; GFX10GISEL-NEXT:    v_mov_b32_e32 v0, s2875; GFX10GISEL-NEXT:    v_mov_b32_e32 v1, s3876; GFX10GISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]877; GFX10GISEL-NEXT:    s_endpgm878;879; GFX1164DAGISEL-LABEL: uniform_value_i64:880; GFX1164DAGISEL:       ; %bb.0: ; %entry881; GFX1164DAGISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24882; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v2, 0883; GFX1164DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)884; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v0, s2885; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v1, s3886; GFX1164DAGISEL-NEXT:    global_store_b64 v2, v[0:1], s[0:1]887; GFX1164DAGISEL-NEXT:    s_endpgm888;889; GFX1164GISEL-LABEL: uniform_value_i64:890; GFX1164GISEL:       ; %bb.0: ; %entry891; GFX1164GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24892; GFX1164GISEL-NEXT:    v_mov_b32_e32 v2, 0893; GFX1164GISEL-NEXT:    s_waitcnt lgkmcnt(0)894; GFX1164GISEL-NEXT:    v_mov_b32_e32 v0, s2895; GFX1164GISEL-NEXT:    v_mov_b32_e32 v1, s3896; GFX1164GISEL-NEXT:    global_store_b64 v2, v[0:1], s[0:1]897; GFX1164GISEL-NEXT:    s_endpgm898;899; GFX1132DAGISEL-LABEL: uniform_value_i64:900; GFX1132DAGISEL:       ; %bb.0: ; %entry901; GFX1132DAGISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24902; GFX1132DAGISEL-NEXT:    v_mov_b32_e32 v2, 0903; GFX1132DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)904; GFX1132DAGISEL-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3905; GFX1132DAGISEL-NEXT:    global_store_b64 v2, v[0:1], s[0:1]906; GFX1132DAGISEL-NEXT:    s_endpgm907;908; GFX1132GISEL-LABEL: uniform_value_i64:909; GFX1132GISEL:       ; %bb.0: ; %entry910; GFX1132GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24911; GFX1132GISEL-NEXT:    v_mov_b32_e32 v2, 0912; GFX1132GISEL-NEXT:    s_waitcnt lgkmcnt(0)913; GFX1132GISEL-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3914; GFX1132GISEL-NEXT:    global_store_b64 v2, v[0:1], s[0:1]915; GFX1132GISEL-NEXT:    s_endpgm916entry:917  %result = call i64 @llvm.amdgcn.wave.reduce.max.i64(i64 %in, i32 1)918  store i64 %result, ptr addrspace(1) %out919  ret void920}921 922define void @divergent_value_i64(ptr addrspace(1) %out, i64 %id.x) {923; GFX8DAGISEL-LABEL: divergent_value_i64:924; GFX8DAGISEL:       ; %bb.0: ; %entry925; GFX8DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)926; GFX8DAGISEL-NEXT:    s_mov_b32 s4, 0927; GFX8DAGISEL-NEXT:    s_brev_b32 s5, 1928; GFX8DAGISEL-NEXT:    s_mov_b64 s[6:7], exec929; GFX8DAGISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=1930; GFX8DAGISEL-NEXT:    s_ff1_i32_b64 s12, s[6:7]931; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v4, s4932; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v5, s5933; GFX8DAGISEL-NEXT:    v_readlane_b32 s8, v2, s12934; GFX8DAGISEL-NEXT:    v_readlane_b32 s9, v3, s12935; GFX8DAGISEL-NEXT:    v_cmp_gt_i64_e32 vcc, s[8:9], v[4:5]936; GFX8DAGISEL-NEXT:    s_and_b64 s[10:11], vcc, s[6:7]937; GFX8DAGISEL-NEXT:    s_bitset0_b64 s[6:7], s12938; GFX8DAGISEL-NEXT:    s_cselect_b64 s[4:5], s[8:9], s[4:5]939; GFX8DAGISEL-NEXT:    s_cmp_lg_u64 s[6:7], 0940; GFX8DAGISEL-NEXT:    s_cbranch_scc1 .LBB4_1941; GFX8DAGISEL-NEXT:  ; %bb.2:942; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v2, s4943; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v3, s5944; GFX8DAGISEL-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]945; GFX8DAGISEL-NEXT:    s_waitcnt vmcnt(0)946; GFX8DAGISEL-NEXT:    s_setpc_b64 s[30:31]947;948; GFX8GISEL-LABEL: divergent_value_i64:949; GFX8GISEL:       ; %bb.0: ; %entry950; GFX8GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)951; GFX8GISEL-NEXT:    s_mov_b32 s4, 0952; GFX8GISEL-NEXT:    s_brev_b32 s5, 1953; GFX8GISEL-NEXT:    s_mov_b64 s[6:7], exec954; GFX8GISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=1955; GFX8GISEL-NEXT:    s_ff1_i32_b64 s12, s[6:7]956; GFX8GISEL-NEXT:    v_mov_b32_e32 v4, s4957; GFX8GISEL-NEXT:    v_mov_b32_e32 v5, s5958; GFX8GISEL-NEXT:    v_readlane_b32 s8, v2, s12959; GFX8GISEL-NEXT:    v_readlane_b32 s9, v3, s12960; GFX8GISEL-NEXT:    v_cmp_gt_i64_e32 vcc, s[8:9], v[4:5]961; GFX8GISEL-NEXT:    s_and_b64 s[10:11], vcc, s[6:7]962; GFX8GISEL-NEXT:    s_bitset0_b64 s[6:7], s12963; GFX8GISEL-NEXT:    s_cselect_b64 s[4:5], s[8:9], s[4:5]964; GFX8GISEL-NEXT:    s_cmp_lg_u64 s[6:7], 0965; GFX8GISEL-NEXT:    s_cbranch_scc1 .LBB4_1966; GFX8GISEL-NEXT:  ; %bb.2:967; GFX8GISEL-NEXT:    v_mov_b32_e32 v2, s4968; GFX8GISEL-NEXT:    v_mov_b32_e32 v3, s5969; GFX8GISEL-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]970; GFX8GISEL-NEXT:    s_waitcnt vmcnt(0)971; GFX8GISEL-NEXT:    s_setpc_b64 s[30:31]972;973; GFX9DAGISEL-LABEL: divergent_value_i64:974; GFX9DAGISEL:       ; %bb.0: ; %entry975; GFX9DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)976; GFX9DAGISEL-NEXT:    s_mov_b32 s4, 0977; GFX9DAGISEL-NEXT:    s_brev_b32 s5, 1978; GFX9DAGISEL-NEXT:    s_mov_b64 s[6:7], exec979; GFX9DAGISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=1980; GFX9DAGISEL-NEXT:    s_ff1_i32_b64 s12, s[6:7]981; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v4, s4982; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v5, s5983; GFX9DAGISEL-NEXT:    v_readlane_b32 s8, v2, s12984; GFX9DAGISEL-NEXT:    v_readlane_b32 s9, v3, s12985; GFX9DAGISEL-NEXT:    v_cmp_gt_i64_e32 vcc, s[8:9], v[4:5]986; GFX9DAGISEL-NEXT:    s_and_b64 s[10:11], vcc, s[6:7]987; GFX9DAGISEL-NEXT:    s_bitset0_b64 s[6:7], s12988; GFX9DAGISEL-NEXT:    s_cselect_b64 s[4:5], s[8:9], s[4:5]989; GFX9DAGISEL-NEXT:    s_cmp_lg_u64 s[6:7], 0990; GFX9DAGISEL-NEXT:    s_cbranch_scc1 .LBB4_1991; GFX9DAGISEL-NEXT:  ; %bb.2:992; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v2, s4993; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v3, s5994; GFX9DAGISEL-NEXT:    global_store_dwordx2 v[0:1], v[2:3], off995; GFX9DAGISEL-NEXT:    s_waitcnt vmcnt(0)996; GFX9DAGISEL-NEXT:    s_setpc_b64 s[30:31]997;998; GFX9GISEL-LABEL: divergent_value_i64:999; GFX9GISEL:       ; %bb.0: ; %entry1000; GFX9GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1001; GFX9GISEL-NEXT:    s_mov_b32 s4, 01002; GFX9GISEL-NEXT:    s_brev_b32 s5, 11003; GFX9GISEL-NEXT:    s_mov_b64 s[6:7], exec1004; GFX9GISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=11005; GFX9GISEL-NEXT:    s_ff1_i32_b64 s12, s[6:7]1006; GFX9GISEL-NEXT:    v_mov_b32_e32 v4, s41007; GFX9GISEL-NEXT:    v_mov_b32_e32 v5, s51008; GFX9GISEL-NEXT:    v_readlane_b32 s8, v2, s121009; GFX9GISEL-NEXT:    v_readlane_b32 s9, v3, s121010; GFX9GISEL-NEXT:    v_cmp_gt_i64_e32 vcc, s[8:9], v[4:5]1011; GFX9GISEL-NEXT:    s_and_b64 s[10:11], vcc, s[6:7]1012; GFX9GISEL-NEXT:    s_bitset0_b64 s[6:7], s121013; GFX9GISEL-NEXT:    s_cselect_b64 s[4:5], s[8:9], s[4:5]1014; GFX9GISEL-NEXT:    s_cmp_lg_u64 s[6:7], 01015; GFX9GISEL-NEXT:    s_cbranch_scc1 .LBB4_11016; GFX9GISEL-NEXT:  ; %bb.2:1017; GFX9GISEL-NEXT:    v_mov_b32_e32 v2, s41018; GFX9GISEL-NEXT:    v_mov_b32_e32 v3, s51019; GFX9GISEL-NEXT:    global_store_dwordx2 v[0:1], v[2:3], off1020; GFX9GISEL-NEXT:    s_waitcnt vmcnt(0)1021; GFX9GISEL-NEXT:    s_setpc_b64 s[30:31]1022;1023; GFX1064DAGISEL-LABEL: divergent_value_i64:1024; GFX1064DAGISEL:       ; %bb.0: ; %entry1025; GFX1064DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1026; GFX1064DAGISEL-NEXT:    s_mov_b32 s4, 01027; GFX1064DAGISEL-NEXT:    s_brev_b32 s5, 11028; GFX1064DAGISEL-NEXT:    s_mov_b64 s[6:7], exec1029; GFX1064DAGISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=11030; GFX1064DAGISEL-NEXT:    s_ff1_i32_b64 s12, s[6:7]1031; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v4, s41032; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v5, s51033; GFX1064DAGISEL-NEXT:    v_readlane_b32 s8, v2, s121034; GFX1064DAGISEL-NEXT:    v_readlane_b32 s9, v3, s121035; GFX1064DAGISEL-NEXT:    v_cmp_gt_i64_e32 vcc, s[8:9], v[4:5]1036; GFX1064DAGISEL-NEXT:    s_and_b64 s[10:11], vcc, s[6:7]1037; GFX1064DAGISEL-NEXT:    s_bitset0_b64 s[6:7], s121038; GFX1064DAGISEL-NEXT:    s_cselect_b64 s[4:5], s[8:9], s[4:5]1039; GFX1064DAGISEL-NEXT:    s_cmp_lg_u64 s[6:7], 01040; GFX1064DAGISEL-NEXT:    s_cbranch_scc1 .LBB4_11041; GFX1064DAGISEL-NEXT:  ; %bb.2:1042; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v2, s41043; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v3, s51044; GFX1064DAGISEL-NEXT:    global_store_dwordx2 v[0:1], v[2:3], off1045; GFX1064DAGISEL-NEXT:    s_setpc_b64 s[30:31]1046;1047; GFX1064GISEL-LABEL: divergent_value_i64:1048; GFX1064GISEL:       ; %bb.0: ; %entry1049; GFX1064GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1050; GFX1064GISEL-NEXT:    s_mov_b32 s4, 01051; GFX1064GISEL-NEXT:    s_brev_b32 s5, 11052; GFX1064GISEL-NEXT:    s_mov_b64 s[6:7], exec1053; GFX1064GISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=11054; GFX1064GISEL-NEXT:    s_ff1_i32_b64 s12, s[6:7]1055; GFX1064GISEL-NEXT:    v_mov_b32_e32 v4, s41056; GFX1064GISEL-NEXT:    v_mov_b32_e32 v5, s51057; GFX1064GISEL-NEXT:    v_readlane_b32 s8, v2, s121058; GFX1064GISEL-NEXT:    v_readlane_b32 s9, v3, s121059; GFX1064GISEL-NEXT:    v_cmp_gt_i64_e32 vcc, s[8:9], v[4:5]1060; GFX1064GISEL-NEXT:    s_and_b64 s[10:11], vcc, s[6:7]1061; GFX1064GISEL-NEXT:    s_bitset0_b64 s[6:7], s121062; GFX1064GISEL-NEXT:    s_cselect_b64 s[4:5], s[8:9], s[4:5]1063; GFX1064GISEL-NEXT:    s_cmp_lg_u64 s[6:7], 01064; GFX1064GISEL-NEXT:    s_cbranch_scc1 .LBB4_11065; GFX1064GISEL-NEXT:  ; %bb.2:1066; GFX1064GISEL-NEXT:    v_mov_b32_e32 v2, s41067; GFX1064GISEL-NEXT:    v_mov_b32_e32 v3, s51068; GFX1064GISEL-NEXT:    global_store_dwordx2 v[0:1], v[2:3], off1069; GFX1064GISEL-NEXT:    s_setpc_b64 s[30:31]1070;1071; GFX1032DAGISEL-LABEL: divergent_value_i64:1072; GFX1032DAGISEL:       ; %bb.0: ; %entry1073; GFX1032DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1074; GFX1032DAGISEL-NEXT:    s_mov_b32 s4, 01075; GFX1032DAGISEL-NEXT:    s_brev_b32 s5, 11076; GFX1032DAGISEL-NEXT:    s_mov_b32 s6, exec_lo1077; GFX1032DAGISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=11078; GFX1032DAGISEL-NEXT:    s_ff1_i32_b32 s7, s61079; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v4, s41080; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v5, s51081; GFX1032DAGISEL-NEXT:    v_readlane_b32 s8, v2, s71082; GFX1032DAGISEL-NEXT:    v_readlane_b32 s9, v3, s71083; GFX1032DAGISEL-NEXT:    v_cmp_gt_i64_e32 vcc_lo, s[8:9], v[4:5]1084; GFX1032DAGISEL-NEXT:    s_and_b32 s10, vcc_lo, s61085; GFX1032DAGISEL-NEXT:    s_bitset0_b32 s6, s71086; GFX1032DAGISEL-NEXT:    s_cselect_b64 s[4:5], s[8:9], s[4:5]1087; GFX1032DAGISEL-NEXT:    s_cmp_lg_u32 s6, 01088; GFX1032DAGISEL-NEXT:    s_cbranch_scc1 .LBB4_11089; GFX1032DAGISEL-NEXT:  ; %bb.2:1090; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v2, s41091; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v3, s51092; GFX1032DAGISEL-NEXT:    global_store_dwordx2 v[0:1], v[2:3], off1093; GFX1032DAGISEL-NEXT:    s_setpc_b64 s[30:31]1094;1095; GFX1032GISEL-LABEL: divergent_value_i64:1096; GFX1032GISEL:       ; %bb.0: ; %entry1097; GFX1032GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1098; GFX1032GISEL-NEXT:    s_mov_b32 s4, 01099; GFX1032GISEL-NEXT:    s_brev_b32 s5, 11100; GFX1032GISEL-NEXT:    s_mov_b32 s6, exec_lo1101; GFX1032GISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=11102; GFX1032GISEL-NEXT:    s_ff1_i32_b32 s7, s61103; GFX1032GISEL-NEXT:    v_mov_b32_e32 v4, s41104; GFX1032GISEL-NEXT:    v_mov_b32_e32 v5, s51105; GFX1032GISEL-NEXT:    v_readlane_b32 s8, v2, s71106; GFX1032GISEL-NEXT:    v_readlane_b32 s9, v3, s71107; GFX1032GISEL-NEXT:    v_cmp_gt_i64_e32 vcc_lo, s[8:9], v[4:5]1108; GFX1032GISEL-NEXT:    s_and_b32 s10, vcc_lo, s61109; GFX1032GISEL-NEXT:    s_bitset0_b32 s6, s71110; GFX1032GISEL-NEXT:    s_cselect_b64 s[4:5], s[8:9], s[4:5]1111; GFX1032GISEL-NEXT:    s_cmp_lg_u32 s6, 01112; GFX1032GISEL-NEXT:    s_cbranch_scc1 .LBB4_11113; GFX1032GISEL-NEXT:  ; %bb.2:1114; GFX1032GISEL-NEXT:    v_mov_b32_e32 v2, s41115; GFX1032GISEL-NEXT:    v_mov_b32_e32 v3, s51116; GFX1032GISEL-NEXT:    global_store_dwordx2 v[0:1], v[2:3], off1117; GFX1032GISEL-NEXT:    s_setpc_b64 s[30:31]1118;1119; GFX1164DAGISEL-LABEL: divergent_value_i64:1120; GFX1164DAGISEL:       ; %bb.0: ; %entry1121; GFX1164DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1122; GFX1164DAGISEL-NEXT:    s_mov_b32 s0, 01123; GFX1164DAGISEL-NEXT:    s_brev_b32 s1, 11124; GFX1164DAGISEL-NEXT:    s_mov_b64 s[2:3], exec1125; GFX1164DAGISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=11126; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(VALU_DEP_1)1127; GFX1164DAGISEL-NEXT:    s_ctz_i32_b64 s8, s[2:3]1128; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v4, s01129; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v5, s11130; GFX1164DAGISEL-NEXT:    v_readlane_b32 s4, v2, s81131; GFX1164DAGISEL-NEXT:    v_readlane_b32 s5, v3, s81132; GFX1164DAGISEL-NEXT:    v_cmp_gt_i64_e32 vcc, s[4:5], v[4:5]1133; GFX1164DAGISEL-NEXT:    s_and_b64 s[6:7], vcc, s[2:3]1134; GFX1164DAGISEL-NEXT:    s_bitset0_b64 s[2:3], s81135; GFX1164DAGISEL-NEXT:    s_cselect_b64 s[0:1], s[4:5], s[0:1]1136; GFX1164DAGISEL-NEXT:    s_cmp_lg_u64 s[2:3], 01137; GFX1164DAGISEL-NEXT:    s_cbranch_scc1 .LBB4_11138; GFX1164DAGISEL-NEXT:  ; %bb.2:1139; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v3, s11140; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v2, s01141; GFX1164DAGISEL-NEXT:    global_store_b64 v[0:1], v[2:3], off1142; GFX1164DAGISEL-NEXT:    s_setpc_b64 s[30:31]1143;1144; GFX1164GISEL-LABEL: divergent_value_i64:1145; GFX1164GISEL:       ; %bb.0: ; %entry1146; GFX1164GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1147; GFX1164GISEL-NEXT:    s_mov_b32 s0, 01148; GFX1164GISEL-NEXT:    s_brev_b32 s1, 11149; GFX1164GISEL-NEXT:    s_mov_b64 s[2:3], exec1150; GFX1164GISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=11151; GFX1164GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(VALU_DEP_1)1152; GFX1164GISEL-NEXT:    s_ctz_i32_b64 s8, s[2:3]1153; GFX1164GISEL-NEXT:    v_mov_b32_e32 v4, s01154; GFX1164GISEL-NEXT:    v_mov_b32_e32 v5, s11155; GFX1164GISEL-NEXT:    v_readlane_b32 s4, v2, s81156; GFX1164GISEL-NEXT:    v_readlane_b32 s5, v3, s81157; GFX1164GISEL-NEXT:    v_cmp_gt_i64_e32 vcc, s[4:5], v[4:5]1158; GFX1164GISEL-NEXT:    s_and_b64 s[6:7], vcc, s[2:3]1159; GFX1164GISEL-NEXT:    s_bitset0_b64 s[2:3], s81160; GFX1164GISEL-NEXT:    s_cselect_b64 s[0:1], s[4:5], s[0:1]1161; GFX1164GISEL-NEXT:    s_cmp_lg_u64 s[2:3], 01162; GFX1164GISEL-NEXT:    s_cbranch_scc1 .LBB4_11163; GFX1164GISEL-NEXT:  ; %bb.2:1164; GFX1164GISEL-NEXT:    v_mov_b32_e32 v3, s11165; GFX1164GISEL-NEXT:    v_mov_b32_e32 v2, s01166; GFX1164GISEL-NEXT:    global_store_b64 v[0:1], v[2:3], off1167; GFX1164GISEL-NEXT:    s_setpc_b64 s[30:31]1168;1169; GFX1132DAGISEL-LABEL: divergent_value_i64:1170; GFX1132DAGISEL:       ; %bb.0: ; %entry1171; GFX1132DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1172; GFX1132DAGISEL-NEXT:    s_mov_b32 s0, 01173; GFX1132DAGISEL-NEXT:    s_brev_b32 s1, 11174; GFX1132DAGISEL-NEXT:    s_mov_b32 s2, exec_lo1175; GFX1132DAGISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=11176; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)1177; GFX1132DAGISEL-NEXT:    s_ctz_i32_b32 s3, s21178; GFX1132DAGISEL-NEXT:    v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v5, s11179; GFX1132DAGISEL-NEXT:    v_readlane_b32 s4, v2, s31180; GFX1132DAGISEL-NEXT:    v_readlane_b32 s5, v3, s31181; GFX1132DAGISEL-NEXT:    v_cmp_gt_i64_e32 vcc_lo, s[4:5], v[4:5]1182; GFX1132DAGISEL-NEXT:    s_and_b32 s6, vcc_lo, s21183; GFX1132DAGISEL-NEXT:    s_bitset0_b32 s2, s31184; GFX1132DAGISEL-NEXT:    s_cselect_b64 s[0:1], s[4:5], s[0:1]1185; GFX1132DAGISEL-NEXT:    s_cmp_lg_u32 s2, 01186; GFX1132DAGISEL-NEXT:    s_cbranch_scc1 .LBB4_11187; GFX1132DAGISEL-NEXT:  ; %bb.2:1188; GFX1132DAGISEL-NEXT:    v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s01189; GFX1132DAGISEL-NEXT:    global_store_b64 v[0:1], v[2:3], off1190; GFX1132DAGISEL-NEXT:    s_setpc_b64 s[30:31]1191;1192; GFX1132GISEL-LABEL: divergent_value_i64:1193; GFX1132GISEL:       ; %bb.0: ; %entry1194; GFX1132GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1195; GFX1132GISEL-NEXT:    s_mov_b32 s0, 01196; GFX1132GISEL-NEXT:    s_brev_b32 s1, 11197; GFX1132GISEL-NEXT:    s_mov_b32 s2, exec_lo1198; GFX1132GISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=11199; GFX1132GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_1)1200; GFX1132GISEL-NEXT:    s_ctz_i32_b32 s3, s21201; GFX1132GISEL-NEXT:    v_dual_mov_b32 v4, s0 :: v_dual_mov_b32 v5, s11202; GFX1132GISEL-NEXT:    v_readlane_b32 s4, v2, s31203; GFX1132GISEL-NEXT:    v_readlane_b32 s5, v3, s31204; GFX1132GISEL-NEXT:    v_cmp_gt_i64_e32 vcc_lo, s[4:5], v[4:5]1205; GFX1132GISEL-NEXT:    s_and_b32 s6, vcc_lo, s21206; GFX1132GISEL-NEXT:    s_bitset0_b32 s2, s31207; GFX1132GISEL-NEXT:    s_cselect_b64 s[0:1], s[4:5], s[0:1]1208; GFX1132GISEL-NEXT:    s_cmp_lg_u32 s2, 01209; GFX1132GISEL-NEXT:    s_cbranch_scc1 .LBB4_11210; GFX1132GISEL-NEXT:  ; %bb.2:1211; GFX1132GISEL-NEXT:    v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s01212; GFX1132GISEL-NEXT:    global_store_b64 v[0:1], v[2:3], off1213; GFX1132GISEL-NEXT:    s_setpc_b64 s[30:31]1214entry:1215  %result = call i64 @llvm.amdgcn.wave.reduce.max.i64(i64 %id.x, i32 1)1216  store i64 %result, ptr addrspace(1) %out1217  ret void1218}1219 1220define amdgpu_kernel void @divergent_cfg_i64(ptr addrspace(1) %out, i64 %in, i64 %in2) {1221; GFX8DAGISEL-LABEL: divergent_cfg_i64:1222; GFX8DAGISEL:       ; %bb.0: ; %entry1223; GFX8DAGISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241224; GFX8DAGISEL-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x341225; GFX8DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc, 15, v01226; GFX8DAGISEL-NEXT:    s_and_saveexec_b64 s[6:7], vcc1227; GFX8DAGISEL-NEXT:    s_xor_b64 s[6:7], exec, s[6:7]1228; GFX8DAGISEL-NEXT:    s_or_saveexec_b64 s[6:7], s[6:7]1229; GFX8DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1230; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v0, s21231; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v1, s31232; GFX8DAGISEL-NEXT:    s_xor_b64 exec, exec, s[6:7]1233; GFX8DAGISEL-NEXT:  ; %bb.1: ; %if1234; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v0, s41235; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v1, s51236; GFX8DAGISEL-NEXT:  ; %bb.2: ; %endif1237; GFX8DAGISEL-NEXT:    s_or_b64 exec, exec, s[6:7]1238; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v2, s01239; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v3, s11240; GFX8DAGISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1241; GFX8DAGISEL-NEXT:    s_endpgm1242;1243; GFX8GISEL-LABEL: divergent_cfg_i64:1244; GFX8GISEL:       ; %bb.0: ; %entry1245; GFX8GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241246; GFX8GISEL-NEXT:    v_cmp_le_u32_e32 vcc, 16, v01247; GFX8GISEL-NEXT:    ; implicit-def: $sgpr6_sgpr71248; GFX8GISEL-NEXT:    s_and_saveexec_b64 s[8:9], vcc1249; GFX8GISEL-NEXT:    s_xor_b64 s[8:9], exec, s[8:9]1250; GFX8GISEL-NEXT:    s_cbranch_execz .LBB5_21251; GFX8GISEL-NEXT:  ; %bb.1: ; %else1252; GFX8GISEL-NEXT:    s_waitcnt lgkmcnt(0)1253; GFX8GISEL-NEXT:    s_mov_b64 s[6:7], s[2:3]1254; GFX8GISEL-NEXT:  .LBB5_2: ; %Flow1255; GFX8GISEL-NEXT:    s_waitcnt lgkmcnt(0)1256; GFX8GISEL-NEXT:    s_andn2_saveexec_b64 s[2:3], s[8:9]1257; GFX8GISEL-NEXT:    s_cbranch_execz .LBB5_41258; GFX8GISEL-NEXT:  ; %bb.3: ; %if1259; GFX8GISEL-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x341260; GFX8GISEL-NEXT:    s_waitcnt lgkmcnt(0)1261; GFX8GISEL-NEXT:    s_mov_b64 s[6:7], s[4:5]1262; GFX8GISEL-NEXT:  .LBB5_4: ; %endif1263; GFX8GISEL-NEXT:    s_or_b64 exec, exec, s[2:3]1264; GFX8GISEL-NEXT:    v_mov_b32_e32 v0, s61265; GFX8GISEL-NEXT:    v_mov_b32_e32 v3, s11266; GFX8GISEL-NEXT:    v_mov_b32_e32 v1, s71267; GFX8GISEL-NEXT:    v_mov_b32_e32 v2, s01268; GFX8GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1269; GFX8GISEL-NEXT:    s_endpgm1270;1271; GFX9DAGISEL-LABEL: divergent_cfg_i64:1272; GFX9DAGISEL:       ; %bb.0: ; %entry1273; GFX9DAGISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241274; GFX9DAGISEL-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x341275; GFX9DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc, 15, v01276; GFX9DAGISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc1277; GFX9DAGISEL-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]1278; GFX9DAGISEL-NEXT:    s_or_saveexec_b64 s[4:5], s[4:5]1279; GFX9DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1280; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v0, s21281; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v1, s31282; GFX9DAGISEL-NEXT:    s_xor_b64 exec, exec, s[4:5]1283; GFX9DAGISEL-NEXT:  ; %bb.1: ; %if1284; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v0, s61285; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v1, s71286; GFX9DAGISEL-NEXT:  ; %bb.2: ; %endif1287; GFX9DAGISEL-NEXT:    s_or_b64 exec, exec, s[4:5]1288; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v2, 01289; GFX9DAGISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1290; GFX9DAGISEL-NEXT:    s_endpgm1291;1292; GFX9GISEL-LABEL: divergent_cfg_i64:1293; GFX9GISEL:       ; %bb.0: ; %entry1294; GFX9GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241295; GFX9GISEL-NEXT:    v_cmp_le_u32_e32 vcc, 16, v01296; GFX9GISEL-NEXT:    ; implicit-def: $sgpr6_sgpr71297; GFX9GISEL-NEXT:    s_and_saveexec_b64 s[8:9], vcc1298; GFX9GISEL-NEXT:    s_xor_b64 s[8:9], exec, s[8:9]1299; GFX9GISEL-NEXT:    s_cbranch_execz .LBB5_21300; GFX9GISEL-NEXT:  ; %bb.1: ; %else1301; GFX9GISEL-NEXT:    s_waitcnt lgkmcnt(0)1302; GFX9GISEL-NEXT:    s_mov_b64 s[6:7], s[2:3]1303; GFX9GISEL-NEXT:  .LBB5_2: ; %Flow1304; GFX9GISEL-NEXT:    s_waitcnt lgkmcnt(0)1305; GFX9GISEL-NEXT:    s_andn2_saveexec_b64 s[2:3], s[8:9]1306; GFX9GISEL-NEXT:    s_cbranch_execz .LBB5_41307; GFX9GISEL-NEXT:  ; %bb.3: ; %if1308; GFX9GISEL-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x341309; GFX9GISEL-NEXT:    s_waitcnt lgkmcnt(0)1310; GFX9GISEL-NEXT:    s_mov_b64 s[6:7], s[6:7]1311; GFX9GISEL-NEXT:  .LBB5_4: ; %endif1312; GFX9GISEL-NEXT:    s_or_b64 exec, exec, s[2:3]1313; GFX9GISEL-NEXT:    v_mov_b32_e32 v0, s61314; GFX9GISEL-NEXT:    v_mov_b32_e32 v1, s71315; GFX9GISEL-NEXT:    v_mov_b32_e32 v2, 01316; GFX9GISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1317; GFX9GISEL-NEXT:    s_endpgm1318;1319; GFX1064DAGISEL-LABEL: divergent_cfg_i64:1320; GFX1064DAGISEL:       ; %bb.0: ; %entry1321; GFX1064DAGISEL-NEXT:    s_clause 0x11322; GFX1064DAGISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241323; GFX1064DAGISEL-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x341324; GFX1064DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc, 15, v01325; GFX1064DAGISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc1326; GFX1064DAGISEL-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]1327; GFX1064DAGISEL-NEXT:    s_or_saveexec_b64 s[4:5], s[4:5]1328; GFX1064DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1329; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v0, s21330; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v1, s31331; GFX1064DAGISEL-NEXT:    s_xor_b64 exec, exec, s[4:5]1332; GFX1064DAGISEL-NEXT:  ; %bb.1: ; %if1333; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v0, s61334; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v1, s71335; GFX1064DAGISEL-NEXT:  ; %bb.2: ; %endif1336; GFX1064DAGISEL-NEXT:    s_or_b64 exec, exec, s[4:5]1337; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v2, 01338; GFX1064DAGISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1339; GFX1064DAGISEL-NEXT:    s_endpgm1340;1341; GFX1064GISEL-LABEL: divergent_cfg_i64:1342; GFX1064GISEL:       ; %bb.0: ; %entry1343; GFX1064GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241344; GFX1064GISEL-NEXT:    v_cmp_le_u32_e32 vcc, 16, v01345; GFX1064GISEL-NEXT:    ; implicit-def: $sgpr6_sgpr71346; GFX1064GISEL-NEXT:    s_and_saveexec_b64 s[8:9], vcc1347; GFX1064GISEL-NEXT:    s_xor_b64 s[8:9], exec, s[8:9]1348; GFX1064GISEL-NEXT:    s_cbranch_execz .LBB5_21349; GFX1064GISEL-NEXT:  ; %bb.1: ; %else1350; GFX1064GISEL-NEXT:    s_waitcnt lgkmcnt(0)1351; GFX1064GISEL-NEXT:    s_mov_b64 s[6:7], s[2:3]1352; GFX1064GISEL-NEXT:  .LBB5_2: ; %Flow1353; GFX1064GISEL-NEXT:    s_waitcnt lgkmcnt(0)1354; GFX1064GISEL-NEXT:    s_andn2_saveexec_b64 s[2:3], s[8:9]1355; GFX1064GISEL-NEXT:    s_cbranch_execz .LBB5_41356; GFX1064GISEL-NEXT:  ; %bb.3: ; %if1357; GFX1064GISEL-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x341358; GFX1064GISEL-NEXT:    s_waitcnt lgkmcnt(0)1359; GFX1064GISEL-NEXT:    s_mov_b64 s[6:7], s[6:7]1360; GFX1064GISEL-NEXT:  .LBB5_4: ; %endif1361; GFX1064GISEL-NEXT:    s_or_b64 exec, exec, s[2:3]1362; GFX1064GISEL-NEXT:    v_mov_b32_e32 v0, s61363; GFX1064GISEL-NEXT:    v_mov_b32_e32 v1, s71364; GFX1064GISEL-NEXT:    v_mov_b32_e32 v2, 01365; GFX1064GISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1366; GFX1064GISEL-NEXT:    s_endpgm1367;1368; GFX1032DAGISEL-LABEL: divergent_cfg_i64:1369; GFX1032DAGISEL:       ; %bb.0: ; %entry1370; GFX1032DAGISEL-NEXT:    s_clause 0x11371; GFX1032DAGISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241372; GFX1032DAGISEL-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x341373; GFX1032DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc_lo, 15, v01374; GFX1032DAGISEL-NEXT:    s_and_saveexec_b32 s4, vcc_lo1375; GFX1032DAGISEL-NEXT:    s_xor_b32 s4, exec_lo, s41376; GFX1032DAGISEL-NEXT:    s_or_saveexec_b32 s4, s41377; GFX1032DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1378; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v0, s21379; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v1, s31380; GFX1032DAGISEL-NEXT:    s_xor_b32 exec_lo, exec_lo, s41381; GFX1032DAGISEL-NEXT:  ; %bb.1: ; %if1382; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v0, s61383; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v1, s71384; GFX1032DAGISEL-NEXT:  ; %bb.2: ; %endif1385; GFX1032DAGISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s41386; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v2, 01387; GFX1032DAGISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1388; GFX1032DAGISEL-NEXT:    s_endpgm1389;1390; GFX1032GISEL-LABEL: divergent_cfg_i64:1391; GFX1032GISEL:       ; %bb.0: ; %entry1392; GFX1032GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241393; GFX1032GISEL-NEXT:    v_cmp_le_u32_e32 vcc_lo, 16, v01394; GFX1032GISEL-NEXT:    ; implicit-def: $sgpr6_sgpr71395; GFX1032GISEL-NEXT:    s_and_saveexec_b32 s8, vcc_lo1396; GFX1032GISEL-NEXT:    s_xor_b32 s8, exec_lo, s81397; GFX1032GISEL-NEXT:    s_cbranch_execz .LBB5_21398; GFX1032GISEL-NEXT:  ; %bb.1: ; %else1399; GFX1032GISEL-NEXT:    s_waitcnt lgkmcnt(0)1400; GFX1032GISEL-NEXT:    s_mov_b64 s[6:7], s[2:3]1401; GFX1032GISEL-NEXT:  .LBB5_2: ; %Flow1402; GFX1032GISEL-NEXT:    s_waitcnt lgkmcnt(0)1403; GFX1032GISEL-NEXT:    s_andn2_saveexec_b32 s2, s81404; GFX1032GISEL-NEXT:    s_cbranch_execz .LBB5_41405; GFX1032GISEL-NEXT:  ; %bb.3: ; %if1406; GFX1032GISEL-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x341407; GFX1032GISEL-NEXT:    s_waitcnt lgkmcnt(0)1408; GFX1032GISEL-NEXT:    s_mov_b64 s[6:7], s[6:7]1409; GFX1032GISEL-NEXT:  .LBB5_4: ; %endif1410; GFX1032GISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s21411; GFX1032GISEL-NEXT:    v_mov_b32_e32 v0, s61412; GFX1032GISEL-NEXT:    v_mov_b32_e32 v1, s71413; GFX1032GISEL-NEXT:    v_mov_b32_e32 v2, 01414; GFX1032GISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1415; GFX1032GISEL-NEXT:    s_endpgm1416;1417; GFX1164DAGISEL-LABEL: divergent_cfg_i64:1418; GFX1164DAGISEL:       ; %bb.0: ; %entry1419; GFX1164DAGISEL-NEXT:    s_clause 0x11420; GFX1164DAGISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241421; GFX1164DAGISEL-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341422; GFX1164DAGISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v01423; GFX1164DAGISEL-NEXT:    s_mov_b64 s[6:7], exec1424; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)1425; GFX1164DAGISEL-NEXT:    v_cmpx_lt_u32_e32 15, v01426; GFX1164DAGISEL-NEXT:    s_xor_b64 s[6:7], exec, s[6:7]1427; GFX1164DAGISEL-NEXT:    s_or_saveexec_b64 s[6:7], s[6:7]1428; GFX1164DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1429; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v0, s21430; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v1, s31431; GFX1164DAGISEL-NEXT:    s_xor_b64 exec, exec, s[6:7]1432; GFX1164DAGISEL-NEXT:  ; %bb.1: ; %if1433; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v0, s41434; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v1, s51435; GFX1164DAGISEL-NEXT:  ; %bb.2: ; %endif1436; GFX1164DAGISEL-NEXT:    s_or_b64 exec, exec, s[6:7]1437; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v2, 01438; GFX1164DAGISEL-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1439; GFX1164DAGISEL-NEXT:    s_endpgm1440;1441; GFX1164GISEL-LABEL: divergent_cfg_i64:1442; GFX1164GISEL:       ; %bb.0: ; %entry1443; GFX1164GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241444; GFX1164GISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v01445; GFX1164GISEL-NEXT:    s_mov_b64 s[8:9], exec1446; GFX1164GISEL-NEXT:    ; implicit-def: $sgpr6_sgpr71447; GFX1164GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1448; GFX1164GISEL-NEXT:    v_cmpx_le_u32_e32 16, v01449; GFX1164GISEL-NEXT:    s_xor_b64 s[8:9], exec, s[8:9]1450; GFX1164GISEL-NEXT:    s_cbranch_execz .LBB5_21451; GFX1164GISEL-NEXT:  ; %bb.1: ; %else1452; GFX1164GISEL-NEXT:    s_waitcnt lgkmcnt(0)1453; GFX1164GISEL-NEXT:    s_mov_b64 s[6:7], s[2:3]1454; GFX1164GISEL-NEXT:  .LBB5_2: ; %Flow1455; GFX1164GISEL-NEXT:    s_waitcnt lgkmcnt(0)1456; GFX1164GISEL-NEXT:    s_and_not1_saveexec_b64 s[2:3], s[8:9]1457; GFX1164GISEL-NEXT:    s_cbranch_execz .LBB5_41458; GFX1164GISEL-NEXT:  ; %bb.3: ; %if1459; GFX1164GISEL-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341460; GFX1164GISEL-NEXT:    s_waitcnt lgkmcnt(0)1461; GFX1164GISEL-NEXT:    s_mov_b64 s[6:7], s[4:5]1462; GFX1164GISEL-NEXT:  .LBB5_4: ; %endif1463; GFX1164GISEL-NEXT:    s_or_b64 exec, exec, s[2:3]1464; GFX1164GISEL-NEXT:    v_mov_b32_e32 v0, s61465; GFX1164GISEL-NEXT:    v_mov_b32_e32 v1, s71466; GFX1164GISEL-NEXT:    v_mov_b32_e32 v2, 01467; GFX1164GISEL-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1468; GFX1164GISEL-NEXT:    s_endpgm1469;1470; GFX1132DAGISEL-LABEL: divergent_cfg_i64:1471; GFX1132DAGISEL:       ; %bb.0: ; %entry1472; GFX1132DAGISEL-NEXT:    s_clause 0x11473; GFX1132DAGISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241474; GFX1132DAGISEL-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341475; GFX1132DAGISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v01476; GFX1132DAGISEL-NEXT:    s_mov_b32 s6, exec_lo1477; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)1478; GFX1132DAGISEL-NEXT:    v_cmpx_lt_u32_e32 15, v01479; GFX1132DAGISEL-NEXT:    s_xor_b32 s6, exec_lo, s61480; GFX1132DAGISEL-NEXT:    s_or_saveexec_b32 s6, s61481; GFX1132DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1482; GFX1132DAGISEL-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s31483; GFX1132DAGISEL-NEXT:    s_xor_b32 exec_lo, exec_lo, s61484; GFX1132DAGISEL-NEXT:  ; %bb.1: ; %if1485; GFX1132DAGISEL-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v1, s51486; GFX1132DAGISEL-NEXT:  ; %bb.2: ; %endif1487; GFX1132DAGISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s61488; GFX1132DAGISEL-NEXT:    v_mov_b32_e32 v2, 01489; GFX1132DAGISEL-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1490; GFX1132DAGISEL-NEXT:    s_endpgm1491;1492; GFX1132GISEL-LABEL: divergent_cfg_i64:1493; GFX1132GISEL:       ; %bb.0: ; %entry1494; GFX1132GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241495; GFX1132GISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v01496; GFX1132GISEL-NEXT:    s_mov_b32 s8, exec_lo1497; GFX1132GISEL-NEXT:    ; implicit-def: $sgpr6_sgpr71498; GFX1132GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1499; GFX1132GISEL-NEXT:    v_cmpx_le_u32_e32 16, v01500; GFX1132GISEL-NEXT:    s_xor_b32 s8, exec_lo, s81501; GFX1132GISEL-NEXT:    s_cbranch_execz .LBB5_21502; GFX1132GISEL-NEXT:  ; %bb.1: ; %else1503; GFX1132GISEL-NEXT:    s_waitcnt lgkmcnt(0)1504; GFX1132GISEL-NEXT:    s_mov_b64 s[6:7], s[2:3]1505; GFX1132GISEL-NEXT:  .LBB5_2: ; %Flow1506; GFX1132GISEL-NEXT:    s_waitcnt lgkmcnt(0)1507; GFX1132GISEL-NEXT:    s_and_not1_saveexec_b32 s2, s81508; GFX1132GISEL-NEXT:    s_cbranch_execz .LBB5_41509; GFX1132GISEL-NEXT:  ; %bb.3: ; %if1510; GFX1132GISEL-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341511; GFX1132GISEL-NEXT:    s_waitcnt lgkmcnt(0)1512; GFX1132GISEL-NEXT:    s_mov_b64 s[6:7], s[4:5]1513; GFX1132GISEL-NEXT:  .LBB5_4: ; %endif1514; GFX1132GISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s21515; GFX1132GISEL-NEXT:    v_dual_mov_b32 v0, s6 :: v_dual_mov_b32 v1, s71516; GFX1132GISEL-NEXT:    v_mov_b32_e32 v2, 01517; GFX1132GISEL-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1518; GFX1132GISEL-NEXT:    s_endpgm1519entry:1520  %tid = call i32 @llvm.amdgcn.workitem.id.x()1521  %d_cmp = icmp ult i32 %tid, 161522  br i1 %d_cmp, label %if, label %else1523 1524if:1525  %reducedValTid = call i64 @llvm.amdgcn.wave.reduce.max.i64(i64 %in2, i32 1)1526  br label %endif1527 1528else:1529  %reducedValIn = call i64 @llvm.amdgcn.wave.reduce.max.i64(i64 %in, i32 1)1530  br label %endif1531 1532endif:1533  %combine = phi i64 [%reducedValTid, %if], [%reducedValIn, %else]1534  store i64 %combine, ptr addrspace(1) %out1535  ret void1536}1537 1538define amdgpu_kernel void @uniform_value_float(ptr addrspace(1) %out, float %in) {1539; GFX8DAGISEL-LABEL: uniform_value_float:1540; GFX8DAGISEL:       ; %bb.0: ; %entry1541; GFX8DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241542; GFX8DAGISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c1543; GFX8DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1544; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v0, s01545; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v1, s11546; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v2, s21547; GFX8DAGISEL-NEXT:    flat_store_dword v[0:1], v21548; GFX8DAGISEL-NEXT:    s_endpgm1549;1550; GFX8GISEL-LABEL: uniform_value_float:1551; GFX8GISEL:       ; %bb.0: ; %entry1552; GFX8GISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c1553; GFX8GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241554; GFX8GISEL-NEXT:    s_waitcnt lgkmcnt(0)1555; GFX8GISEL-NEXT:    v_mov_b32_e32 v2, s21556; GFX8GISEL-NEXT:    v_mov_b32_e32 v0, s01557; GFX8GISEL-NEXT:    v_mov_b32_e32 v1, s11558; GFX8GISEL-NEXT:    flat_store_dword v[0:1], v21559; GFX8GISEL-NEXT:    s_endpgm1560;1561; GFX9DAGISEL-LABEL: uniform_value_float:1562; GFX9DAGISEL:       ; %bb.0: ; %entry1563; GFX9DAGISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c1564; GFX9DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241565; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v0, 01566; GFX9DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1567; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v1, s21568; GFX9DAGISEL-NEXT:    global_store_dword v0, v1, s[0:1]1569; GFX9DAGISEL-NEXT:    s_endpgm1570;1571; GFX9GISEL-LABEL: uniform_value_float:1572; GFX9GISEL:       ; %bb.0: ; %entry1573; GFX9GISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c1574; GFX9GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241575; GFX9GISEL-NEXT:    v_mov_b32_e32 v1, 01576; GFX9GISEL-NEXT:    s_waitcnt lgkmcnt(0)1577; GFX9GISEL-NEXT:    v_mov_b32_e32 v0, s21578; GFX9GISEL-NEXT:    global_store_dword v1, v0, s[0:1]1579; GFX9GISEL-NEXT:    s_endpgm1580;1581; GFX10DAGISEL-LABEL: uniform_value_float:1582; GFX10DAGISEL:       ; %bb.0: ; %entry1583; GFX10DAGISEL-NEXT:    s_clause 0x11584; GFX10DAGISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c1585; GFX10DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241586; GFX10DAGISEL-NEXT:    v_mov_b32_e32 v0, 01587; GFX10DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1588; GFX10DAGISEL-NEXT:    v_mov_b32_e32 v1, s21589; GFX10DAGISEL-NEXT:    global_store_dword v0, v1, s[0:1]1590; GFX10DAGISEL-NEXT:    s_endpgm1591;1592; GFX10GISEL-LABEL: uniform_value_float:1593; GFX10GISEL:       ; %bb.0: ; %entry1594; GFX10GISEL-NEXT:    s_clause 0x11595; GFX10GISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c1596; GFX10GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241597; GFX10GISEL-NEXT:    v_mov_b32_e32 v1, 01598; GFX10GISEL-NEXT:    s_waitcnt lgkmcnt(0)1599; GFX10GISEL-NEXT:    v_mov_b32_e32 v0, s21600; GFX10GISEL-NEXT:    global_store_dword v1, v0, s[0:1]1601; GFX10GISEL-NEXT:    s_endpgm1602;1603; GFX1164DAGISEL-LABEL: uniform_value_float:1604; GFX1164DAGISEL:       ; %bb.0: ; %entry1605; GFX1164DAGISEL-NEXT:    s_clause 0x11606; GFX1164DAGISEL-NEXT:    s_load_b32 s2, s[4:5], 0x2c1607; GFX1164DAGISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241608; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v0, 01609; GFX1164DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1610; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v1, s21611; GFX1164DAGISEL-NEXT:    global_store_b32 v0, v1, s[0:1]1612; GFX1164DAGISEL-NEXT:    s_endpgm1613;1614; GFX1164GISEL-LABEL: uniform_value_float:1615; GFX1164GISEL:       ; %bb.0: ; %entry1616; GFX1164GISEL-NEXT:    s_clause 0x11617; GFX1164GISEL-NEXT:    s_load_b32 s2, s[4:5], 0x2c1618; GFX1164GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241619; GFX1164GISEL-NEXT:    v_mov_b32_e32 v1, 01620; GFX1164GISEL-NEXT:    s_waitcnt lgkmcnt(0)1621; GFX1164GISEL-NEXT:    v_mov_b32_e32 v0, s21622; GFX1164GISEL-NEXT:    global_store_b32 v1, v0, s[0:1]1623; GFX1164GISEL-NEXT:    s_endpgm1624;1625; GFX1132DAGISEL-LABEL: uniform_value_float:1626; GFX1132DAGISEL:       ; %bb.0: ; %entry1627; GFX1132DAGISEL-NEXT:    s_clause 0x11628; GFX1132DAGISEL-NEXT:    s_load_b32 s2, s[4:5], 0x2c1629; GFX1132DAGISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241630; GFX1132DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1631; GFX1132DAGISEL-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21632; GFX1132DAGISEL-NEXT:    global_store_b32 v0, v1, s[0:1]1633; GFX1132DAGISEL-NEXT:    s_endpgm1634;1635; GFX1132GISEL-LABEL: uniform_value_float:1636; GFX1132GISEL:       ; %bb.0: ; %entry1637; GFX1132GISEL-NEXT:    s_clause 0x11638; GFX1132GISEL-NEXT:    s_load_b32 s2, s[4:5], 0x2c1639; GFX1132GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241640; GFX1132GISEL-NEXT:    s_waitcnt lgkmcnt(0)1641; GFX1132GISEL-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v0, s21642; GFX1132GISEL-NEXT:    global_store_b32 v1, v0, s[0:1]1643; GFX1132GISEL-NEXT:    s_endpgm1644entry:1645  %result = call float @llvm.amdgcn.wave.reduce.fmax(float %in, i32 1)1646  store float %result, ptr addrspace(1) %out1647  ret void1648}1649 1650define void @divergent_value_float(ptr addrspace(1) %out, float %in) {1651; GFX8DAGISEL-LABEL: divergent_value_float:1652; GFX8DAGISEL:       ; %bb.0: ; %entry1653; GFX8DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1654; GFX8DAGISEL-NEXT:    s_mov_b64 s[4:5], exec1655; GFX8DAGISEL-NEXT:    s_mov_b32 s6, 0x7fc000001656; GFX8DAGISEL-NEXT:  .LBB7_1: ; =>This Inner Loop Header: Depth=11657; GFX8DAGISEL-NEXT:    s_ff1_i32_b64 s7, s[4:5]1658; GFX8DAGISEL-NEXT:    v_readlane_b32 s8, v2, s71659; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v3, s81660; GFX8DAGISEL-NEXT:    s_bitset0_b64 s[4:5], s71661; GFX8DAGISEL-NEXT:    v_max_f32_e32 v3, s6, v31662; GFX8DAGISEL-NEXT:    s_cmp_lg_u64 s[4:5], 01663; GFX8DAGISEL-NEXT:    v_readfirstlane_b32 s6, v31664; GFX8DAGISEL-NEXT:    s_cbranch_scc1 .LBB7_11665; GFX8DAGISEL-NEXT:  ; %bb.2:1666; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v2, s61667; GFX8DAGISEL-NEXT:    flat_store_dword v[0:1], v21668; GFX8DAGISEL-NEXT:    s_waitcnt vmcnt(0)1669; GFX8DAGISEL-NEXT:    s_setpc_b64 s[30:31]1670;1671; GFX8GISEL-LABEL: divergent_value_float:1672; GFX8GISEL:       ; %bb.0: ; %entry1673; GFX8GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1674; GFX8GISEL-NEXT:    s_mov_b64 s[4:5], exec1675; GFX8GISEL-NEXT:    s_mov_b32 s6, 0x7fc000001676; GFX8GISEL-NEXT:  .LBB7_1: ; =>This Inner Loop Header: Depth=11677; GFX8GISEL-NEXT:    s_ff1_i32_b64 s7, s[4:5]1678; GFX8GISEL-NEXT:    v_readlane_b32 s8, v2, s71679; GFX8GISEL-NEXT:    v_mov_b32_e32 v3, s81680; GFX8GISEL-NEXT:    s_bitset0_b64 s[4:5], s71681; GFX8GISEL-NEXT:    v_max_f32_e32 v3, s6, v31682; GFX8GISEL-NEXT:    s_cmp_lg_u64 s[4:5], 01683; GFX8GISEL-NEXT:    v_readfirstlane_b32 s6, v31684; GFX8GISEL-NEXT:    s_cbranch_scc1 .LBB7_11685; GFX8GISEL-NEXT:  ; %bb.2:1686; GFX8GISEL-NEXT:    v_mov_b32_e32 v2, s61687; GFX8GISEL-NEXT:    flat_store_dword v[0:1], v21688; GFX8GISEL-NEXT:    s_waitcnt vmcnt(0)1689; GFX8GISEL-NEXT:    s_setpc_b64 s[30:31]1690;1691; GFX9DAGISEL-LABEL: divergent_value_float:1692; GFX9DAGISEL:       ; %bb.0: ; %entry1693; GFX9DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1694; GFX9DAGISEL-NEXT:    s_mov_b64 s[4:5], exec1695; GFX9DAGISEL-NEXT:    s_mov_b32 s6, 0x7fc000001696; GFX9DAGISEL-NEXT:  .LBB7_1: ; =>This Inner Loop Header: Depth=11697; GFX9DAGISEL-NEXT:    s_ff1_i32_b64 s7, s[4:5]1698; GFX9DAGISEL-NEXT:    v_readlane_b32 s8, v2, s71699; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v3, s81700; GFX9DAGISEL-NEXT:    s_bitset0_b64 s[4:5], s71701; GFX9DAGISEL-NEXT:    v_max_f32_e32 v3, s6, v31702; GFX9DAGISEL-NEXT:    s_cmp_lg_u64 s[4:5], 01703; GFX9DAGISEL-NEXT:    v_readfirstlane_b32 s6, v31704; GFX9DAGISEL-NEXT:    s_cbranch_scc1 .LBB7_11705; GFX9DAGISEL-NEXT:  ; %bb.2:1706; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v2, s61707; GFX9DAGISEL-NEXT:    global_store_dword v[0:1], v2, off1708; GFX9DAGISEL-NEXT:    s_waitcnt vmcnt(0)1709; GFX9DAGISEL-NEXT:    s_setpc_b64 s[30:31]1710;1711; GFX9GISEL-LABEL: divergent_value_float:1712; GFX9GISEL:       ; %bb.0: ; %entry1713; GFX9GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1714; GFX9GISEL-NEXT:    s_mov_b64 s[4:5], exec1715; GFX9GISEL-NEXT:    s_mov_b32 s6, 0x7fc000001716; GFX9GISEL-NEXT:  .LBB7_1: ; =>This Inner Loop Header: Depth=11717; GFX9GISEL-NEXT:    s_ff1_i32_b64 s7, s[4:5]1718; GFX9GISEL-NEXT:    v_readlane_b32 s8, v2, s71719; GFX9GISEL-NEXT:    v_mov_b32_e32 v3, s81720; GFX9GISEL-NEXT:    s_bitset0_b64 s[4:5], s71721; GFX9GISEL-NEXT:    v_max_f32_e32 v3, s6, v31722; GFX9GISEL-NEXT:    s_cmp_lg_u64 s[4:5], 01723; GFX9GISEL-NEXT:    v_readfirstlane_b32 s6, v31724; GFX9GISEL-NEXT:    s_cbranch_scc1 .LBB7_11725; GFX9GISEL-NEXT:  ; %bb.2:1726; GFX9GISEL-NEXT:    v_mov_b32_e32 v2, s61727; GFX9GISEL-NEXT:    global_store_dword v[0:1], v2, off1728; GFX9GISEL-NEXT:    s_waitcnt vmcnt(0)1729; GFX9GISEL-NEXT:    s_setpc_b64 s[30:31]1730;1731; GFX1064DAGISEL-LABEL: divergent_value_float:1732; GFX1064DAGISEL:       ; %bb.0: ; %entry1733; GFX1064DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1734; GFX1064DAGISEL-NEXT:    s_mov_b64 s[4:5], exec1735; GFX1064DAGISEL-NEXT:    s_mov_b32 s6, 0x7fc000001736; GFX1064DAGISEL-NEXT:  .LBB7_1: ; =>This Inner Loop Header: Depth=11737; GFX1064DAGISEL-NEXT:    s_ff1_i32_b64 s7, s[4:5]1738; GFX1064DAGISEL-NEXT:    v_readlane_b32 s8, v2, s71739; GFX1064DAGISEL-NEXT:    s_bitset0_b64 s[4:5], s71740; GFX1064DAGISEL-NEXT:    s_cmp_lg_u64 s[4:5], 01741; GFX1064DAGISEL-NEXT:    v_max_f32_e64 v3, s6, s81742; GFX1064DAGISEL-NEXT:    v_readfirstlane_b32 s6, v31743; GFX1064DAGISEL-NEXT:    s_cbranch_scc1 .LBB7_11744; GFX1064DAGISEL-NEXT:  ; %bb.2:1745; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v2, s61746; GFX1064DAGISEL-NEXT:    global_store_dword v[0:1], v2, off1747; GFX1064DAGISEL-NEXT:    s_setpc_b64 s[30:31]1748;1749; GFX1064GISEL-LABEL: divergent_value_float:1750; GFX1064GISEL:       ; %bb.0: ; %entry1751; GFX1064GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1752; GFX1064GISEL-NEXT:    s_mov_b64 s[4:5], exec1753; GFX1064GISEL-NEXT:    s_mov_b32 s6, 0x7fc000001754; GFX1064GISEL-NEXT:  .LBB7_1: ; =>This Inner Loop Header: Depth=11755; GFX1064GISEL-NEXT:    s_ff1_i32_b64 s7, s[4:5]1756; GFX1064GISEL-NEXT:    v_readlane_b32 s8, v2, s71757; GFX1064GISEL-NEXT:    s_bitset0_b64 s[4:5], s71758; GFX1064GISEL-NEXT:    s_cmp_lg_u64 s[4:5], 01759; GFX1064GISEL-NEXT:    v_max_f32_e64 v3, s6, s81760; GFX1064GISEL-NEXT:    v_readfirstlane_b32 s6, v31761; GFX1064GISEL-NEXT:    s_cbranch_scc1 .LBB7_11762; GFX1064GISEL-NEXT:  ; %bb.2:1763; GFX1064GISEL-NEXT:    v_mov_b32_e32 v2, s61764; GFX1064GISEL-NEXT:    global_store_dword v[0:1], v2, off1765; GFX1064GISEL-NEXT:    s_setpc_b64 s[30:31]1766;1767; GFX1032DAGISEL-LABEL: divergent_value_float:1768; GFX1032DAGISEL:       ; %bb.0: ; %entry1769; GFX1032DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1770; GFX1032DAGISEL-NEXT:    s_mov_b32 s4, exec_lo1771; GFX1032DAGISEL-NEXT:    s_mov_b32 s5, 0x7fc000001772; GFX1032DAGISEL-NEXT:  .LBB7_1: ; =>This Inner Loop Header: Depth=11773; GFX1032DAGISEL-NEXT:    s_ff1_i32_b32 s6, s41774; GFX1032DAGISEL-NEXT:    v_readlane_b32 s7, v2, s61775; GFX1032DAGISEL-NEXT:    s_bitset0_b32 s4, s61776; GFX1032DAGISEL-NEXT:    s_cmp_lg_u32 s4, 01777; GFX1032DAGISEL-NEXT:    v_max_f32_e64 v3, s5, s71778; GFX1032DAGISEL-NEXT:    v_readfirstlane_b32 s5, v31779; GFX1032DAGISEL-NEXT:    s_cbranch_scc1 .LBB7_11780; GFX1032DAGISEL-NEXT:  ; %bb.2:1781; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v2, s51782; GFX1032DAGISEL-NEXT:    global_store_dword v[0:1], v2, off1783; GFX1032DAGISEL-NEXT:    s_setpc_b64 s[30:31]1784;1785; GFX1032GISEL-LABEL: divergent_value_float:1786; GFX1032GISEL:       ; %bb.0: ; %entry1787; GFX1032GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1788; GFX1032GISEL-NEXT:    s_mov_b32 s4, exec_lo1789; GFX1032GISEL-NEXT:    s_mov_b32 s5, 0x7fc000001790; GFX1032GISEL-NEXT:  .LBB7_1: ; =>This Inner Loop Header: Depth=11791; GFX1032GISEL-NEXT:    s_ff1_i32_b32 s6, s41792; GFX1032GISEL-NEXT:    v_readlane_b32 s7, v2, s61793; GFX1032GISEL-NEXT:    s_bitset0_b32 s4, s61794; GFX1032GISEL-NEXT:    s_cmp_lg_u32 s4, 01795; GFX1032GISEL-NEXT:    v_max_f32_e64 v3, s5, s71796; GFX1032GISEL-NEXT:    v_readfirstlane_b32 s5, v31797; GFX1032GISEL-NEXT:    s_cbranch_scc1 .LBB7_11798; GFX1032GISEL-NEXT:  ; %bb.2:1799; GFX1032GISEL-NEXT:    v_mov_b32_e32 v2, s51800; GFX1032GISEL-NEXT:    global_store_dword v[0:1], v2, off1801; GFX1032GISEL-NEXT:    s_setpc_b64 s[30:31]1802;1803; GFX1164DAGISEL-LABEL: divergent_value_float:1804; GFX1164DAGISEL:       ; %bb.0: ; %entry1805; GFX1164DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1806; GFX1164DAGISEL-NEXT:    s_mov_b64 s[0:1], exec1807; GFX1164DAGISEL-NEXT:    s_mov_b32 s2, 0x7fc000001808; GFX1164DAGISEL-NEXT:  .LBB7_1: ; =>This Inner Loop Header: Depth=11809; GFX1164DAGISEL-NEXT:    s_ctz_i32_b64 s3, s[0:1]1810; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)1811; GFX1164DAGISEL-NEXT:    v_readlane_b32 s4, v2, s31812; GFX1164DAGISEL-NEXT:    s_bitset0_b64 s[0:1], s31813; GFX1164DAGISEL-NEXT:    s_cmp_lg_u64 s[0:1], 01814; GFX1164DAGISEL-NEXT:    v_max_f32_e64 v3, s2, s41815; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1816; GFX1164DAGISEL-NEXT:    v_readfirstlane_b32 s2, v31817; GFX1164DAGISEL-NEXT:    s_cbranch_scc1 .LBB7_11818; GFX1164DAGISEL-NEXT:  ; %bb.2:1819; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v2, s21820; GFX1164DAGISEL-NEXT:    global_store_b32 v[0:1], v2, off1821; GFX1164DAGISEL-NEXT:    s_setpc_b64 s[30:31]1822;1823; GFX1164GISEL-LABEL: divergent_value_float:1824; GFX1164GISEL:       ; %bb.0: ; %entry1825; GFX1164GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1826; GFX1164GISEL-NEXT:    s_mov_b64 s[0:1], exec1827; GFX1164GISEL-NEXT:    s_mov_b32 s2, 0x7fc000001828; GFX1164GISEL-NEXT:  .LBB7_1: ; =>This Inner Loop Header: Depth=11829; GFX1164GISEL-NEXT:    s_ctz_i32_b64 s3, s[0:1]1830; GFX1164GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)1831; GFX1164GISEL-NEXT:    v_readlane_b32 s4, v2, s31832; GFX1164GISEL-NEXT:    s_bitset0_b64 s[0:1], s31833; GFX1164GISEL-NEXT:    s_cmp_lg_u64 s[0:1], 01834; GFX1164GISEL-NEXT:    v_max_f32_e64 v3, s2, s41835; GFX1164GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1836; GFX1164GISEL-NEXT:    v_readfirstlane_b32 s2, v31837; GFX1164GISEL-NEXT:    s_cbranch_scc1 .LBB7_11838; GFX1164GISEL-NEXT:  ; %bb.2:1839; GFX1164GISEL-NEXT:    v_mov_b32_e32 v2, s21840; GFX1164GISEL-NEXT:    global_store_b32 v[0:1], v2, off1841; GFX1164GISEL-NEXT:    s_setpc_b64 s[30:31]1842;1843; GFX1132DAGISEL-LABEL: divergent_value_float:1844; GFX1132DAGISEL:       ; %bb.0: ; %entry1845; GFX1132DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1846; GFX1132DAGISEL-NEXT:    s_mov_b32 s0, exec_lo1847; GFX1132DAGISEL-NEXT:    s_mov_b32 s1, 0x7fc000001848; GFX1132DAGISEL-NEXT:  .LBB7_1: ; =>This Inner Loop Header: Depth=11849; GFX1132DAGISEL-NEXT:    s_ctz_i32_b32 s2, s01850; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)1851; GFX1132DAGISEL-NEXT:    v_readlane_b32 s3, v2, s21852; GFX1132DAGISEL-NEXT:    s_bitset0_b32 s0, s21853; GFX1132DAGISEL-NEXT:    s_cmp_lg_u32 s0, 01854; GFX1132DAGISEL-NEXT:    v_max_f32_e64 v3, s1, s31855; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1856; GFX1132DAGISEL-NEXT:    v_readfirstlane_b32 s1, v31857; GFX1132DAGISEL-NEXT:    s_cbranch_scc1 .LBB7_11858; GFX1132DAGISEL-NEXT:  ; %bb.2:1859; GFX1132DAGISEL-NEXT:    v_mov_b32_e32 v2, s11860; GFX1132DAGISEL-NEXT:    global_store_b32 v[0:1], v2, off1861; GFX1132DAGISEL-NEXT:    s_setpc_b64 s[30:31]1862;1863; GFX1132GISEL-LABEL: divergent_value_float:1864; GFX1132GISEL:       ; %bb.0: ; %entry1865; GFX1132GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1866; GFX1132GISEL-NEXT:    s_mov_b32 s0, exec_lo1867; GFX1132GISEL-NEXT:    s_mov_b32 s1, 0x7fc000001868; GFX1132GISEL-NEXT:  .LBB7_1: ; =>This Inner Loop Header: Depth=11869; GFX1132GISEL-NEXT:    s_ctz_i32_b32 s2, s01870; GFX1132GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)1871; GFX1132GISEL-NEXT:    v_readlane_b32 s3, v2, s21872; GFX1132GISEL-NEXT:    s_bitset0_b32 s0, s21873; GFX1132GISEL-NEXT:    s_cmp_lg_u32 s0, 01874; GFX1132GISEL-NEXT:    v_max_f32_e64 v3, s1, s31875; GFX1132GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1876; GFX1132GISEL-NEXT:    v_readfirstlane_b32 s1, v31877; GFX1132GISEL-NEXT:    s_cbranch_scc1 .LBB7_11878; GFX1132GISEL-NEXT:  ; %bb.2:1879; GFX1132GISEL-NEXT:    v_mov_b32_e32 v2, s11880; GFX1132GISEL-NEXT:    global_store_b32 v[0:1], v2, off1881; GFX1132GISEL-NEXT:    s_setpc_b64 s[30:31]1882entry:1883  %result = call float @llvm.amdgcn.wave.reduce.fmax(float %in, i32 1)1884  store float %result, ptr addrspace(1) %out1885  ret void1886}1887 1888define void @divergent_cfg_float(ptr addrspace(1) %out, float %in, float %in2) {1889; GFX8DAGISEL-LABEL: divergent_cfg_float:1890; GFX8DAGISEL:       ; %bb.0: ; %entry1891; GFX8DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1892; GFX8DAGISEL-NEXT:    v_and_b32_e32 v4, 0x3ff, v311893; GFX8DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc, 15, v41894; GFX8DAGISEL-NEXT:    ; implicit-def: $vgpr41895; GFX8DAGISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc1896; GFX8DAGISEL-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]1897; GFX8DAGISEL-NEXT:    s_cbranch_execz .LBB8_41898; GFX8DAGISEL-NEXT:  ; %bb.1: ; %else1899; GFX8DAGISEL-NEXT:    s_mov_b64 s[6:7], exec1900; GFX8DAGISEL-NEXT:    s_mov_b32 s8, 0x7fc000001901; GFX8DAGISEL-NEXT:  .LBB8_2: ; =>This Inner Loop Header: Depth=11902; GFX8DAGISEL-NEXT:    s_ff1_i32_b64 s9, s[6:7]1903; GFX8DAGISEL-NEXT:    v_readlane_b32 s10, v2, s91904; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v3, s101905; GFX8DAGISEL-NEXT:    s_bitset0_b64 s[6:7], s91906; GFX8DAGISEL-NEXT:    v_max_f32_e32 v3, s8, v31907; GFX8DAGISEL-NEXT:    s_cmp_lg_u64 s[6:7], 01908; GFX8DAGISEL-NEXT:    v_readfirstlane_b32 s8, v31909; GFX8DAGISEL-NEXT:    s_cbranch_scc1 .LBB8_21910; GFX8DAGISEL-NEXT:  ; %bb.3:1911; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v4, s81912; GFX8DAGISEL-NEXT:    ; implicit-def: $vgpr31913; GFX8DAGISEL-NEXT:  .LBB8_4: ; %Flow1914; GFX8DAGISEL-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]1915; GFX8DAGISEL-NEXT:    s_cbranch_execz .LBB8_81916; GFX8DAGISEL-NEXT:  ; %bb.5: ; %if1917; GFX8DAGISEL-NEXT:    s_mov_b64 s[6:7], exec1918; GFX8DAGISEL-NEXT:    s_mov_b32 s8, 0x7fc000001919; GFX8DAGISEL-NEXT:  .LBB8_6: ; =>This Inner Loop Header: Depth=11920; GFX8DAGISEL-NEXT:    s_ff1_i32_b64 s9, s[6:7]1921; GFX8DAGISEL-NEXT:    v_readlane_b32 s10, v3, s91922; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v2, s101923; GFX8DAGISEL-NEXT:    s_bitset0_b64 s[6:7], s91924; GFX8DAGISEL-NEXT:    v_max_f32_e32 v2, s8, v21925; GFX8DAGISEL-NEXT:    s_cmp_lg_u64 s[6:7], 01926; GFX8DAGISEL-NEXT:    v_readfirstlane_b32 s8, v21927; GFX8DAGISEL-NEXT:    s_cbranch_scc1 .LBB8_61928; GFX8DAGISEL-NEXT:  ; %bb.7:1929; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v4, s81930; GFX8DAGISEL-NEXT:  .LBB8_8: ; %endif1931; GFX8DAGISEL-NEXT:    s_or_b64 exec, exec, s[4:5]1932; GFX8DAGISEL-NEXT:    flat_store_dword v[0:1], v41933; GFX8DAGISEL-NEXT:    s_waitcnt vmcnt(0)1934; GFX8DAGISEL-NEXT:    s_setpc_b64 s[30:31]1935;1936; GFX8GISEL-LABEL: divergent_cfg_float:1937; GFX8GISEL:       ; %bb.0: ; %entry1938; GFX8GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1939; GFX8GISEL-NEXT:    v_and_b32_e32 v4, 0x3ff, v311940; GFX8GISEL-NEXT:    v_cmp_le_u32_e32 vcc, 16, v41941; GFX8GISEL-NEXT:    ; implicit-def: $sgpr81942; GFX8GISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc1943; GFX8GISEL-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]1944; GFX8GISEL-NEXT:    s_cbranch_execz .LBB8_31945; GFX8GISEL-NEXT:  ; %bb.1: ; %else1946; GFX8GISEL-NEXT:    s_mov_b64 s[6:7], exec1947; GFX8GISEL-NEXT:    s_mov_b32 s8, 0x7fc000001948; GFX8GISEL-NEXT:    ; implicit-def: $vgpr31949; GFX8GISEL-NEXT:  .LBB8_2: ; =>This Inner Loop Header: Depth=11950; GFX8GISEL-NEXT:    s_ff1_i32_b64 s9, s[6:7]1951; GFX8GISEL-NEXT:    v_readlane_b32 s10, v2, s91952; GFX8GISEL-NEXT:    v_mov_b32_e32 v4, s101953; GFX8GISEL-NEXT:    s_bitset0_b64 s[6:7], s91954; GFX8GISEL-NEXT:    v_max_f32_e32 v4, s8, v41955; GFX8GISEL-NEXT:    s_cmp_lg_u64 s[6:7], 01956; GFX8GISEL-NEXT:    v_readfirstlane_b32 s8, v41957; GFX8GISEL-NEXT:    s_cbranch_scc1 .LBB8_21958; GFX8GISEL-NEXT:  .LBB8_3: ; %Flow1959; GFX8GISEL-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]1960; GFX8GISEL-NEXT:    s_cbranch_execz .LBB8_61961; GFX8GISEL-NEXT:  ; %bb.4: ; %if1962; GFX8GISEL-NEXT:    s_mov_b64 s[6:7], exec1963; GFX8GISEL-NEXT:    s_mov_b32 s8, 0x7fc000001964; GFX8GISEL-NEXT:  .LBB8_5: ; =>This Inner Loop Header: Depth=11965; GFX8GISEL-NEXT:    s_ff1_i32_b64 s9, s[6:7]1966; GFX8GISEL-NEXT:    v_readlane_b32 s10, v3, s91967; GFX8GISEL-NEXT:    v_mov_b32_e32 v2, s101968; GFX8GISEL-NEXT:    s_bitset0_b64 s[6:7], s91969; GFX8GISEL-NEXT:    v_max_f32_e32 v2, s8, v21970; GFX8GISEL-NEXT:    s_cmp_lg_u64 s[6:7], 01971; GFX8GISEL-NEXT:    v_readfirstlane_b32 s8, v21972; GFX8GISEL-NEXT:    s_cbranch_scc1 .LBB8_51973; GFX8GISEL-NEXT:  .LBB8_6: ; %endif1974; GFX8GISEL-NEXT:    s_or_b64 exec, exec, s[4:5]1975; GFX8GISEL-NEXT:    v_mov_b32_e32 v2, s81976; GFX8GISEL-NEXT:    flat_store_dword v[0:1], v21977; GFX8GISEL-NEXT:    s_waitcnt vmcnt(0)1978; GFX8GISEL-NEXT:    s_setpc_b64 s[30:31]1979;1980; GFX9DAGISEL-LABEL: divergent_cfg_float:1981; GFX9DAGISEL:       ; %bb.0: ; %entry1982; GFX9DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1983; GFX9DAGISEL-NEXT:    v_and_b32_e32 v4, 0x3ff, v311984; GFX9DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc, 15, v41985; GFX9DAGISEL-NEXT:    ; implicit-def: $vgpr41986; GFX9DAGISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc1987; GFX9DAGISEL-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]1988; GFX9DAGISEL-NEXT:    s_cbranch_execz .LBB8_41989; GFX9DAGISEL-NEXT:  ; %bb.1: ; %else1990; GFX9DAGISEL-NEXT:    s_mov_b64 s[6:7], exec1991; GFX9DAGISEL-NEXT:    s_mov_b32 s8, 0x7fc000001992; GFX9DAGISEL-NEXT:  .LBB8_2: ; =>This Inner Loop Header: Depth=11993; GFX9DAGISEL-NEXT:    s_ff1_i32_b64 s9, s[6:7]1994; GFX9DAGISEL-NEXT:    v_readlane_b32 s10, v2, s91995; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v3, s101996; GFX9DAGISEL-NEXT:    s_bitset0_b64 s[6:7], s91997; GFX9DAGISEL-NEXT:    v_max_f32_e32 v3, s8, v31998; GFX9DAGISEL-NEXT:    s_cmp_lg_u64 s[6:7], 01999; GFX9DAGISEL-NEXT:    v_readfirstlane_b32 s8, v32000; GFX9DAGISEL-NEXT:    s_cbranch_scc1 .LBB8_22001; GFX9DAGISEL-NEXT:  ; %bb.3:2002; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v4, s82003; GFX9DAGISEL-NEXT:    ; implicit-def: $vgpr32004; GFX9DAGISEL-NEXT:  .LBB8_4: ; %Flow2005; GFX9DAGISEL-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]2006; GFX9DAGISEL-NEXT:    s_cbranch_execz .LBB8_82007; GFX9DAGISEL-NEXT:  ; %bb.5: ; %if2008; GFX9DAGISEL-NEXT:    s_mov_b64 s[6:7], exec2009; GFX9DAGISEL-NEXT:    s_mov_b32 s8, 0x7fc000002010; GFX9DAGISEL-NEXT:  .LBB8_6: ; =>This Inner Loop Header: Depth=12011; GFX9DAGISEL-NEXT:    s_ff1_i32_b64 s9, s[6:7]2012; GFX9DAGISEL-NEXT:    v_readlane_b32 s10, v3, s92013; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v2, s102014; GFX9DAGISEL-NEXT:    s_bitset0_b64 s[6:7], s92015; GFX9DAGISEL-NEXT:    v_max_f32_e32 v2, s8, v22016; GFX9DAGISEL-NEXT:    s_cmp_lg_u64 s[6:7], 02017; GFX9DAGISEL-NEXT:    v_readfirstlane_b32 s8, v22018; GFX9DAGISEL-NEXT:    s_cbranch_scc1 .LBB8_62019; GFX9DAGISEL-NEXT:  ; %bb.7:2020; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v4, s82021; GFX9DAGISEL-NEXT:  .LBB8_8: ; %endif2022; GFX9DAGISEL-NEXT:    s_or_b64 exec, exec, s[4:5]2023; GFX9DAGISEL-NEXT:    global_store_dword v[0:1], v4, off2024; GFX9DAGISEL-NEXT:    s_waitcnt vmcnt(0)2025; GFX9DAGISEL-NEXT:    s_setpc_b64 s[30:31]2026;2027; GFX9GISEL-LABEL: divergent_cfg_float:2028; GFX9GISEL:       ; %bb.0: ; %entry2029; GFX9GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2030; GFX9GISEL-NEXT:    v_and_b32_e32 v4, 0x3ff, v312031; GFX9GISEL-NEXT:    v_cmp_le_u32_e32 vcc, 16, v42032; GFX9GISEL-NEXT:    ; implicit-def: $sgpr82033; GFX9GISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc2034; GFX9GISEL-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]2035; GFX9GISEL-NEXT:    s_cbranch_execz .LBB8_32036; GFX9GISEL-NEXT:  ; %bb.1: ; %else2037; GFX9GISEL-NEXT:    s_mov_b64 s[6:7], exec2038; GFX9GISEL-NEXT:    s_mov_b32 s8, 0x7fc000002039; GFX9GISEL-NEXT:    ; implicit-def: $vgpr32040; GFX9GISEL-NEXT:  .LBB8_2: ; =>This Inner Loop Header: Depth=12041; GFX9GISEL-NEXT:    s_ff1_i32_b64 s9, s[6:7]2042; GFX9GISEL-NEXT:    v_readlane_b32 s10, v2, s92043; GFX9GISEL-NEXT:    v_mov_b32_e32 v4, s102044; GFX9GISEL-NEXT:    s_bitset0_b64 s[6:7], s92045; GFX9GISEL-NEXT:    v_max_f32_e32 v4, s8, v42046; GFX9GISEL-NEXT:    s_cmp_lg_u64 s[6:7], 02047; GFX9GISEL-NEXT:    v_readfirstlane_b32 s8, v42048; GFX9GISEL-NEXT:    s_cbranch_scc1 .LBB8_22049; GFX9GISEL-NEXT:  .LBB8_3: ; %Flow2050; GFX9GISEL-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]2051; GFX9GISEL-NEXT:    s_cbranch_execz .LBB8_62052; GFX9GISEL-NEXT:  ; %bb.4: ; %if2053; GFX9GISEL-NEXT:    s_mov_b64 s[6:7], exec2054; GFX9GISEL-NEXT:    s_mov_b32 s8, 0x7fc000002055; GFX9GISEL-NEXT:  .LBB8_5: ; =>This Inner Loop Header: Depth=12056; GFX9GISEL-NEXT:    s_ff1_i32_b64 s9, s[6:7]2057; GFX9GISEL-NEXT:    v_readlane_b32 s10, v3, s92058; GFX9GISEL-NEXT:    v_mov_b32_e32 v2, s102059; GFX9GISEL-NEXT:    s_bitset0_b64 s[6:7], s92060; GFX9GISEL-NEXT:    v_max_f32_e32 v2, s8, v22061; GFX9GISEL-NEXT:    s_cmp_lg_u64 s[6:7], 02062; GFX9GISEL-NEXT:    v_readfirstlane_b32 s8, v22063; GFX9GISEL-NEXT:    s_cbranch_scc1 .LBB8_52064; GFX9GISEL-NEXT:  .LBB8_6: ; %endif2065; GFX9GISEL-NEXT:    s_or_b64 exec, exec, s[4:5]2066; GFX9GISEL-NEXT:    v_mov_b32_e32 v2, s82067; GFX9GISEL-NEXT:    global_store_dword v[0:1], v2, off2068; GFX9GISEL-NEXT:    s_waitcnt vmcnt(0)2069; GFX9GISEL-NEXT:    s_setpc_b64 s[30:31]2070;2071; GFX1064DAGISEL-LABEL: divergent_cfg_float:2072; GFX1064DAGISEL:       ; %bb.0: ; %entry2073; GFX1064DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2074; GFX1064DAGISEL-NEXT:    v_and_b32_e32 v4, 0x3ff, v312075; GFX1064DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc, 15, v42076; GFX1064DAGISEL-NEXT:    ; implicit-def: $vgpr42077; GFX1064DAGISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc2078; GFX1064DAGISEL-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]2079; GFX1064DAGISEL-NEXT:    s_cbranch_execz .LBB8_42080; GFX1064DAGISEL-NEXT:  ; %bb.1: ; %else2081; GFX1064DAGISEL-NEXT:    s_mov_b64 s[6:7], exec2082; GFX1064DAGISEL-NEXT:    s_mov_b32 s8, 0x7fc000002083; GFX1064DAGISEL-NEXT:  .LBB8_2: ; =>This Inner Loop Header: Depth=12084; GFX1064DAGISEL-NEXT:    s_ff1_i32_b64 s9, s[6:7]2085; GFX1064DAGISEL-NEXT:    v_readlane_b32 s10, v2, s92086; GFX1064DAGISEL-NEXT:    s_bitset0_b64 s[6:7], s92087; GFX1064DAGISEL-NEXT:    s_cmp_lg_u64 s[6:7], 02088; GFX1064DAGISEL-NEXT:    v_max_f32_e64 v3, s8, s102089; GFX1064DAGISEL-NEXT:    v_readfirstlane_b32 s8, v32090; GFX1064DAGISEL-NEXT:    s_cbranch_scc1 .LBB8_22091; GFX1064DAGISEL-NEXT:  ; %bb.3:2092; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v4, s82093; GFX1064DAGISEL-NEXT:    ; implicit-def: $vgpr32094; GFX1064DAGISEL-NEXT:  .LBB8_4: ; %Flow2095; GFX1064DAGISEL-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]2096; GFX1064DAGISEL-NEXT:    s_cbranch_execz .LBB8_82097; GFX1064DAGISEL-NEXT:  ; %bb.5: ; %if2098; GFX1064DAGISEL-NEXT:    s_mov_b64 s[6:7], exec2099; GFX1064DAGISEL-NEXT:    s_mov_b32 s8, 0x7fc000002100; GFX1064DAGISEL-NEXT:  .LBB8_6: ; =>This Inner Loop Header: Depth=12101; GFX1064DAGISEL-NEXT:    s_ff1_i32_b64 s9, s[6:7]2102; GFX1064DAGISEL-NEXT:    v_readlane_b32 s10, v3, s92103; GFX1064DAGISEL-NEXT:    s_bitset0_b64 s[6:7], s92104; GFX1064DAGISEL-NEXT:    s_cmp_lg_u64 s[6:7], 02105; GFX1064DAGISEL-NEXT:    v_max_f32_e64 v2, s8, s102106; GFX1064DAGISEL-NEXT:    v_readfirstlane_b32 s8, v22107; GFX1064DAGISEL-NEXT:    s_cbranch_scc1 .LBB8_62108; GFX1064DAGISEL-NEXT:  ; %bb.7:2109; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v4, s82110; GFX1064DAGISEL-NEXT:  .LBB8_8: ; %endif2111; GFX1064DAGISEL-NEXT:    s_or_b64 exec, exec, s[4:5]2112; GFX1064DAGISEL-NEXT:    global_store_dword v[0:1], v4, off2113; GFX1064DAGISEL-NEXT:    s_setpc_b64 s[30:31]2114;2115; GFX1064GISEL-LABEL: divergent_cfg_float:2116; GFX1064GISEL:       ; %bb.0: ; %entry2117; GFX1064GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2118; GFX1064GISEL-NEXT:    v_and_b32_e32 v4, 0x3ff, v312119; GFX1064GISEL-NEXT:    ; implicit-def: $sgpr82120; GFX1064GISEL-NEXT:    v_cmp_le_u32_e32 vcc, 16, v42121; GFX1064GISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc2122; GFX1064GISEL-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]2123; GFX1064GISEL-NEXT:    s_cbranch_execz .LBB8_32124; GFX1064GISEL-NEXT:  ; %bb.1: ; %else2125; GFX1064GISEL-NEXT:    s_mov_b64 s[6:7], exec2126; GFX1064GISEL-NEXT:    s_mov_b32 s8, 0x7fc000002127; GFX1064GISEL-NEXT:  .LBB8_2: ; =>This Inner Loop Header: Depth=12128; GFX1064GISEL-NEXT:    s_ff1_i32_b64 s9, s[6:7]2129; GFX1064GISEL-NEXT:    v_readlane_b32 s10, v2, s92130; GFX1064GISEL-NEXT:    s_bitset0_b64 s[6:7], s92131; GFX1064GISEL-NEXT:    s_cmp_lg_u64 s[6:7], 02132; GFX1064GISEL-NEXT:    v_max_f32_e64 v3, s8, s102133; GFX1064GISEL-NEXT:    v_readfirstlane_b32 s8, v32134; GFX1064GISEL-NEXT:    ; implicit-def: $vgpr32135; GFX1064GISEL-NEXT:    s_cbranch_scc1 .LBB8_22136; GFX1064GISEL-NEXT:  .LBB8_3: ; %Flow2137; GFX1064GISEL-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]2138; GFX1064GISEL-NEXT:    s_cbranch_execz .LBB8_62139; GFX1064GISEL-NEXT:  ; %bb.4: ; %if2140; GFX1064GISEL-NEXT:    s_mov_b64 s[6:7], exec2141; GFX1064GISEL-NEXT:    s_mov_b32 s8, 0x7fc000002142; GFX1064GISEL-NEXT:  .LBB8_5: ; =>This Inner Loop Header: Depth=12143; GFX1064GISEL-NEXT:    s_ff1_i32_b64 s9, s[6:7]2144; GFX1064GISEL-NEXT:    v_readlane_b32 s10, v3, s92145; GFX1064GISEL-NEXT:    s_bitset0_b64 s[6:7], s92146; GFX1064GISEL-NEXT:    s_cmp_lg_u64 s[6:7], 02147; GFX1064GISEL-NEXT:    v_max_f32_e64 v2, s8, s102148; GFX1064GISEL-NEXT:    v_readfirstlane_b32 s8, v22149; GFX1064GISEL-NEXT:    s_cbranch_scc1 .LBB8_52150; GFX1064GISEL-NEXT:  .LBB8_6: ; %endif2151; GFX1064GISEL-NEXT:    s_or_b64 exec, exec, s[4:5]2152; GFX1064GISEL-NEXT:    v_mov_b32_e32 v2, s82153; GFX1064GISEL-NEXT:    global_store_dword v[0:1], v2, off2154; GFX1064GISEL-NEXT:    s_setpc_b64 s[30:31]2155;2156; GFX1032DAGISEL-LABEL: divergent_cfg_float:2157; GFX1032DAGISEL:       ; %bb.0: ; %entry2158; GFX1032DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2159; GFX1032DAGISEL-NEXT:    v_and_b32_e32 v4, 0x3ff, v312160; GFX1032DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc_lo, 15, v42161; GFX1032DAGISEL-NEXT:    ; implicit-def: $vgpr42162; GFX1032DAGISEL-NEXT:    s_and_saveexec_b32 s4, vcc_lo2163; GFX1032DAGISEL-NEXT:    s_xor_b32 s4, exec_lo, s42164; GFX1032DAGISEL-NEXT:    s_cbranch_execz .LBB8_42165; GFX1032DAGISEL-NEXT:  ; %bb.1: ; %else2166; GFX1032DAGISEL-NEXT:    s_mov_b32 s5, exec_lo2167; GFX1032DAGISEL-NEXT:    s_mov_b32 s6, 0x7fc000002168; GFX1032DAGISEL-NEXT:  .LBB8_2: ; =>This Inner Loop Header: Depth=12169; GFX1032DAGISEL-NEXT:    s_ff1_i32_b32 s7, s52170; GFX1032DAGISEL-NEXT:    v_readlane_b32 s8, v2, s72171; GFX1032DAGISEL-NEXT:    s_bitset0_b32 s5, s72172; GFX1032DAGISEL-NEXT:    s_cmp_lg_u32 s5, 02173; GFX1032DAGISEL-NEXT:    v_max_f32_e64 v3, s6, s82174; GFX1032DAGISEL-NEXT:    v_readfirstlane_b32 s6, v32175; GFX1032DAGISEL-NEXT:    s_cbranch_scc1 .LBB8_22176; GFX1032DAGISEL-NEXT:  ; %bb.3:2177; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v4, s62178; GFX1032DAGISEL-NEXT:    ; implicit-def: $vgpr32179; GFX1032DAGISEL-NEXT:  .LBB8_4: ; %Flow2180; GFX1032DAGISEL-NEXT:    s_andn2_saveexec_b32 s4, s42181; GFX1032DAGISEL-NEXT:    s_cbranch_execz .LBB8_82182; GFX1032DAGISEL-NEXT:  ; %bb.5: ; %if2183; GFX1032DAGISEL-NEXT:    s_mov_b32 s5, exec_lo2184; GFX1032DAGISEL-NEXT:    s_mov_b32 s6, 0x7fc000002185; GFX1032DAGISEL-NEXT:  .LBB8_6: ; =>This Inner Loop Header: Depth=12186; GFX1032DAGISEL-NEXT:    s_ff1_i32_b32 s7, s52187; GFX1032DAGISEL-NEXT:    v_readlane_b32 s8, v3, s72188; GFX1032DAGISEL-NEXT:    s_bitset0_b32 s5, s72189; GFX1032DAGISEL-NEXT:    s_cmp_lg_u32 s5, 02190; GFX1032DAGISEL-NEXT:    v_max_f32_e64 v2, s6, s82191; GFX1032DAGISEL-NEXT:    v_readfirstlane_b32 s6, v22192; GFX1032DAGISEL-NEXT:    s_cbranch_scc1 .LBB8_62193; GFX1032DAGISEL-NEXT:  ; %bb.7:2194; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v4, s62195; GFX1032DAGISEL-NEXT:  .LBB8_8: ; %endif2196; GFX1032DAGISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s42197; GFX1032DAGISEL-NEXT:    global_store_dword v[0:1], v4, off2198; GFX1032DAGISEL-NEXT:    s_setpc_b64 s[30:31]2199;2200; GFX1032GISEL-LABEL: divergent_cfg_float:2201; GFX1032GISEL:       ; %bb.0: ; %entry2202; GFX1032GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2203; GFX1032GISEL-NEXT:    v_and_b32_e32 v4, 0x3ff, v312204; GFX1032GISEL-NEXT:    ; implicit-def: $sgpr42205; GFX1032GISEL-NEXT:    v_cmp_le_u32_e32 vcc_lo, 16, v42206; GFX1032GISEL-NEXT:    s_and_saveexec_b32 s5, vcc_lo2207; GFX1032GISEL-NEXT:    s_xor_b32 s5, exec_lo, s52208; GFX1032GISEL-NEXT:    s_cbranch_execz .LBB8_32209; GFX1032GISEL-NEXT:  ; %bb.1: ; %else2210; GFX1032GISEL-NEXT:    s_mov_b32 s6, exec_lo2211; GFX1032GISEL-NEXT:    s_mov_b32 s4, 0x7fc000002212; GFX1032GISEL-NEXT:  .LBB8_2: ; =>This Inner Loop Header: Depth=12213; GFX1032GISEL-NEXT:    s_ff1_i32_b32 s7, s62214; GFX1032GISEL-NEXT:    v_readlane_b32 s8, v2, s72215; GFX1032GISEL-NEXT:    s_bitset0_b32 s6, s72216; GFX1032GISEL-NEXT:    s_cmp_lg_u32 s6, 02217; GFX1032GISEL-NEXT:    v_max_f32_e64 v3, s4, s82218; GFX1032GISEL-NEXT:    v_readfirstlane_b32 s4, v32219; GFX1032GISEL-NEXT:    ; implicit-def: $vgpr32220; GFX1032GISEL-NEXT:    s_cbranch_scc1 .LBB8_22221; GFX1032GISEL-NEXT:  .LBB8_3: ; %Flow2222; GFX1032GISEL-NEXT:    s_andn2_saveexec_b32 s5, s52223; GFX1032GISEL-NEXT:    s_cbranch_execz .LBB8_62224; GFX1032GISEL-NEXT:  ; %bb.4: ; %if2225; GFX1032GISEL-NEXT:    s_mov_b32 s6, exec_lo2226; GFX1032GISEL-NEXT:    s_mov_b32 s4, 0x7fc000002227; GFX1032GISEL-NEXT:  .LBB8_5: ; =>This Inner Loop Header: Depth=12228; GFX1032GISEL-NEXT:    s_ff1_i32_b32 s7, s62229; GFX1032GISEL-NEXT:    v_readlane_b32 s8, v3, s72230; GFX1032GISEL-NEXT:    s_bitset0_b32 s6, s72231; GFX1032GISEL-NEXT:    s_cmp_lg_u32 s6, 02232; GFX1032GISEL-NEXT:    v_max_f32_e64 v2, s4, s82233; GFX1032GISEL-NEXT:    v_readfirstlane_b32 s4, v22234; GFX1032GISEL-NEXT:    s_cbranch_scc1 .LBB8_52235; GFX1032GISEL-NEXT:  .LBB8_6: ; %endif2236; GFX1032GISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s52237; GFX1032GISEL-NEXT:    v_mov_b32_e32 v2, s42238; GFX1032GISEL-NEXT:    global_store_dword v[0:1], v2, off2239; GFX1032GISEL-NEXT:    s_setpc_b64 s[30:31]2240;2241; GFX1164DAGISEL-LABEL: divergent_cfg_float:2242; GFX1164DAGISEL:       ; %bb.0: ; %entry2243; GFX1164DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2244; GFX1164DAGISEL-NEXT:    v_and_b32_e32 v4, 0x3ff, v312245; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)2246; GFX1164DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc, 15, v42247; GFX1164DAGISEL-NEXT:    ; implicit-def: $vgpr42248; GFX1164DAGISEL-NEXT:    s_and_saveexec_b64 s[0:1], vcc2249; GFX1164DAGISEL-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]2250; GFX1164DAGISEL-NEXT:    s_cbranch_execz .LBB8_42251; GFX1164DAGISEL-NEXT:  ; %bb.1: ; %else2252; GFX1164DAGISEL-NEXT:    s_mov_b64 s[2:3], exec2253; GFX1164DAGISEL-NEXT:    s_mov_b32 s4, 0x7fc000002254; GFX1164DAGISEL-NEXT:  .LBB8_2: ; =>This Inner Loop Header: Depth=12255; GFX1164DAGISEL-NEXT:    s_ctz_i32_b64 s5, s[2:3]2256; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)2257; GFX1164DAGISEL-NEXT:    v_readlane_b32 s6, v2, s52258; GFX1164DAGISEL-NEXT:    s_bitset0_b64 s[2:3], s52259; GFX1164DAGISEL-NEXT:    s_cmp_lg_u64 s[2:3], 02260; GFX1164DAGISEL-NEXT:    v_max_f32_e64 v3, s4, s62261; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2262; GFX1164DAGISEL-NEXT:    v_readfirstlane_b32 s4, v32263; GFX1164DAGISEL-NEXT:    s_cbranch_scc1 .LBB8_22264; GFX1164DAGISEL-NEXT:  ; %bb.3:2265; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v4, s42266; GFX1164DAGISEL-NEXT:    ; implicit-def: $vgpr32267; GFX1164DAGISEL-NEXT:  .LBB8_4: ; %Flow2268; GFX1164DAGISEL-NEXT:    s_and_not1_saveexec_b64 s[0:1], s[0:1]2269; GFX1164DAGISEL-NEXT:    s_cbranch_execz .LBB8_82270; GFX1164DAGISEL-NEXT:  ; %bb.5: ; %if2271; GFX1164DAGISEL-NEXT:    s_mov_b64 s[2:3], exec2272; GFX1164DAGISEL-NEXT:    s_mov_b32 s4, 0x7fc000002273; GFX1164DAGISEL-NEXT:  .LBB8_6: ; =>This Inner Loop Header: Depth=12274; GFX1164DAGISEL-NEXT:    s_ctz_i32_b64 s5, s[2:3]2275; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)2276; GFX1164DAGISEL-NEXT:    v_readlane_b32 s6, v3, s52277; GFX1164DAGISEL-NEXT:    s_bitset0_b64 s[2:3], s52278; GFX1164DAGISEL-NEXT:    s_cmp_lg_u64 s[2:3], 02279; GFX1164DAGISEL-NEXT:    v_max_f32_e64 v2, s4, s62280; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2281; GFX1164DAGISEL-NEXT:    v_readfirstlane_b32 s4, v22282; GFX1164DAGISEL-NEXT:    s_cbranch_scc1 .LBB8_62283; GFX1164DAGISEL-NEXT:  ; %bb.7:2284; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v4, s42285; GFX1164DAGISEL-NEXT:  .LBB8_8: ; %endif2286; GFX1164DAGISEL-NEXT:    s_or_b64 exec, exec, s[0:1]2287; GFX1164DAGISEL-NEXT:    global_store_b32 v[0:1], v4, off2288; GFX1164DAGISEL-NEXT:    s_setpc_b64 s[30:31]2289;2290; GFX1164GISEL-LABEL: divergent_cfg_float:2291; GFX1164GISEL:       ; %bb.0: ; %entry2292; GFX1164GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2293; GFX1164GISEL-NEXT:    v_and_b32_e32 v4, 0x3ff, v312294; GFX1164GISEL-NEXT:    s_mov_b64 s[0:1], exec2295; GFX1164GISEL-NEXT:    ; implicit-def: $sgpr42296; GFX1164GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2297; GFX1164GISEL-NEXT:    v_cmpx_le_u32_e32 16, v42298; GFX1164GISEL-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]2299; GFX1164GISEL-NEXT:    s_cbranch_execz .LBB8_32300; GFX1164GISEL-NEXT:  ; %bb.1: ; %else2301; GFX1164GISEL-NEXT:    s_mov_b64 s[2:3], exec2302; GFX1164GISEL-NEXT:    s_mov_b32 s4, 0x7fc000002303; GFX1164GISEL-NEXT:  .LBB8_2: ; =>This Inner Loop Header: Depth=12304; GFX1164GISEL-NEXT:    s_ctz_i32_b64 s5, s[2:3]2305; GFX1164GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)2306; GFX1164GISEL-NEXT:    v_readlane_b32 s6, v2, s52307; GFX1164GISEL-NEXT:    s_bitset0_b64 s[2:3], s52308; GFX1164GISEL-NEXT:    s_cmp_lg_u64 s[2:3], 02309; GFX1164GISEL-NEXT:    v_max_f32_e64 v3, s4, s62310; GFX1164GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2311; GFX1164GISEL-NEXT:    v_readfirstlane_b32 s4, v32312; GFX1164GISEL-NEXT:    ; implicit-def: $vgpr32313; GFX1164GISEL-NEXT:    s_cbranch_scc1 .LBB8_22314; GFX1164GISEL-NEXT:  .LBB8_3: ; %Flow2315; GFX1164GISEL-NEXT:    s_and_not1_saveexec_b64 s[0:1], s[0:1]2316; GFX1164GISEL-NEXT:    s_cbranch_execz .LBB8_62317; GFX1164GISEL-NEXT:  ; %bb.4: ; %if2318; GFX1164GISEL-NEXT:    s_mov_b64 s[2:3], exec2319; GFX1164GISEL-NEXT:    s_mov_b32 s4, 0x7fc000002320; GFX1164GISEL-NEXT:  .LBB8_5: ; =>This Inner Loop Header: Depth=12321; GFX1164GISEL-NEXT:    s_ctz_i32_b64 s5, s[2:3]2322; GFX1164GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)2323; GFX1164GISEL-NEXT:    v_readlane_b32 s6, v3, s52324; GFX1164GISEL-NEXT:    s_bitset0_b64 s[2:3], s52325; GFX1164GISEL-NEXT:    s_cmp_lg_u64 s[2:3], 02326; GFX1164GISEL-NEXT:    v_max_f32_e64 v2, s4, s62327; GFX1164GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2328; GFX1164GISEL-NEXT:    v_readfirstlane_b32 s4, v22329; GFX1164GISEL-NEXT:    s_cbranch_scc1 .LBB8_52330; GFX1164GISEL-NEXT:  .LBB8_6: ; %endif2331; GFX1164GISEL-NEXT:    s_or_b64 exec, exec, s[0:1]2332; GFX1164GISEL-NEXT:    v_mov_b32_e32 v2, s42333; GFX1164GISEL-NEXT:    global_store_b32 v[0:1], v2, off2334; GFX1164GISEL-NEXT:    s_setpc_b64 s[30:31]2335;2336; GFX1132DAGISEL-LABEL: divergent_cfg_float:2337; GFX1132DAGISEL:       ; %bb.0: ; %entry2338; GFX1132DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2339; GFX1132DAGISEL-NEXT:    v_and_b32_e32 v4, 0x3ff, v312340; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)2341; GFX1132DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc_lo, 15, v42342; GFX1132DAGISEL-NEXT:    ; implicit-def: $vgpr42343; GFX1132DAGISEL-NEXT:    s_and_saveexec_b32 s0, vcc_lo2344; GFX1132DAGISEL-NEXT:    s_xor_b32 s0, exec_lo, s02345; GFX1132DAGISEL-NEXT:    s_cbranch_execz .LBB8_42346; GFX1132DAGISEL-NEXT:  ; %bb.1: ; %else2347; GFX1132DAGISEL-NEXT:    s_mov_b32 s1, exec_lo2348; GFX1132DAGISEL-NEXT:    s_mov_b32 s2, 0x7fc000002349; GFX1132DAGISEL-NEXT:  .LBB8_2: ; =>This Inner Loop Header: Depth=12350; GFX1132DAGISEL-NEXT:    s_ctz_i32_b32 s3, s12351; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)2352; GFX1132DAGISEL-NEXT:    v_readlane_b32 s4, v2, s32353; GFX1132DAGISEL-NEXT:    s_bitset0_b32 s1, s32354; GFX1132DAGISEL-NEXT:    s_cmp_lg_u32 s1, 02355; GFX1132DAGISEL-NEXT:    v_max_f32_e64 v3, s2, s42356; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2357; GFX1132DAGISEL-NEXT:    v_readfirstlane_b32 s2, v32358; GFX1132DAGISEL-NEXT:    s_cbranch_scc1 .LBB8_22359; GFX1132DAGISEL-NEXT:  ; %bb.3:2360; GFX1132DAGISEL-NEXT:    v_mov_b32_e32 v4, s22361; GFX1132DAGISEL-NEXT:    ; implicit-def: $vgpr32362; GFX1132DAGISEL-NEXT:  .LBB8_4: ; %Flow2363; GFX1132DAGISEL-NEXT:    s_and_not1_saveexec_b32 s0, s02364; GFX1132DAGISEL-NEXT:    s_cbranch_execz .LBB8_82365; GFX1132DAGISEL-NEXT:  ; %bb.5: ; %if2366; GFX1132DAGISEL-NEXT:    s_mov_b32 s1, exec_lo2367; GFX1132DAGISEL-NEXT:    s_mov_b32 s2, 0x7fc000002368; GFX1132DAGISEL-NEXT:  .LBB8_6: ; =>This Inner Loop Header: Depth=12369; GFX1132DAGISEL-NEXT:    s_ctz_i32_b32 s3, s12370; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)2371; GFX1132DAGISEL-NEXT:    v_readlane_b32 s4, v3, s32372; GFX1132DAGISEL-NEXT:    s_bitset0_b32 s1, s32373; GFX1132DAGISEL-NEXT:    s_cmp_lg_u32 s1, 02374; GFX1132DAGISEL-NEXT:    v_max_f32_e64 v2, s2, s42375; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2376; GFX1132DAGISEL-NEXT:    v_readfirstlane_b32 s2, v22377; GFX1132DAGISEL-NEXT:    s_cbranch_scc1 .LBB8_62378; GFX1132DAGISEL-NEXT:  ; %bb.7:2379; GFX1132DAGISEL-NEXT:    v_mov_b32_e32 v4, s22380; GFX1132DAGISEL-NEXT:  .LBB8_8: ; %endif2381; GFX1132DAGISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s02382; GFX1132DAGISEL-NEXT:    global_store_b32 v[0:1], v4, off2383; GFX1132DAGISEL-NEXT:    s_setpc_b64 s[30:31]2384;2385; GFX1132GISEL-LABEL: divergent_cfg_float:2386; GFX1132GISEL:       ; %bb.0: ; %entry2387; GFX1132GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2388; GFX1132GISEL-NEXT:    v_and_b32_e32 v4, 0x3ff, v312389; GFX1132GISEL-NEXT:    s_mov_b32 s1, exec_lo2390; GFX1132GISEL-NEXT:    ; implicit-def: $sgpr02391; GFX1132GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2392; GFX1132GISEL-NEXT:    v_cmpx_le_u32_e32 16, v42393; GFX1132GISEL-NEXT:    s_xor_b32 s1, exec_lo, s12394; GFX1132GISEL-NEXT:    s_cbranch_execz .LBB8_32395; GFX1132GISEL-NEXT:  ; %bb.1: ; %else2396; GFX1132GISEL-NEXT:    s_mov_b32 s2, exec_lo2397; GFX1132GISEL-NEXT:    s_mov_b32 s0, 0x7fc000002398; GFX1132GISEL-NEXT:  .LBB8_2: ; =>This Inner Loop Header: Depth=12399; GFX1132GISEL-NEXT:    s_ctz_i32_b32 s3, s22400; GFX1132GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)2401; GFX1132GISEL-NEXT:    v_readlane_b32 s4, v2, s32402; GFX1132GISEL-NEXT:    s_bitset0_b32 s2, s32403; GFX1132GISEL-NEXT:    s_cmp_lg_u32 s2, 02404; GFX1132GISEL-NEXT:    v_max_f32_e64 v3, s0, s42405; GFX1132GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2406; GFX1132GISEL-NEXT:    v_readfirstlane_b32 s0, v32407; GFX1132GISEL-NEXT:    ; implicit-def: $vgpr32408; GFX1132GISEL-NEXT:    s_cbranch_scc1 .LBB8_22409; GFX1132GISEL-NEXT:  .LBB8_3: ; %Flow2410; GFX1132GISEL-NEXT:    s_and_not1_saveexec_b32 s1, s12411; GFX1132GISEL-NEXT:    s_cbranch_execz .LBB8_62412; GFX1132GISEL-NEXT:  ; %bb.4: ; %if2413; GFX1132GISEL-NEXT:    s_mov_b32 s2, exec_lo2414; GFX1132GISEL-NEXT:    s_mov_b32 s0, 0x7fc000002415; GFX1132GISEL-NEXT:  .LBB8_5: ; =>This Inner Loop Header: Depth=12416; GFX1132GISEL-NEXT:    s_ctz_i32_b32 s3, s22417; GFX1132GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)2418; GFX1132GISEL-NEXT:    v_readlane_b32 s4, v3, s32419; GFX1132GISEL-NEXT:    s_bitset0_b32 s2, s32420; GFX1132GISEL-NEXT:    s_cmp_lg_u32 s2, 02421; GFX1132GISEL-NEXT:    v_max_f32_e64 v2, s0, s42422; GFX1132GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)2423; GFX1132GISEL-NEXT:    v_readfirstlane_b32 s0, v22424; GFX1132GISEL-NEXT:    s_cbranch_scc1 .LBB8_52425; GFX1132GISEL-NEXT:  .LBB8_6: ; %endif2426; GFX1132GISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s12427; GFX1132GISEL-NEXT:    v_mov_b32_e32 v2, s02428; GFX1132GISEL-NEXT:    global_store_b32 v[0:1], v2, off2429; GFX1132GISEL-NEXT:    s_setpc_b64 s[30:31]2430entry:2431  %tid = call i32 @llvm.amdgcn.workitem.id.x()2432  %d_cmp = icmp ult i32 %tid, 162433  br i1 %d_cmp, label %if, label %else2434 2435if:2436  %reducedValTid = call float @llvm.amdgcn.wave.reduce.fmax(float %in2, i32 1)2437  br label %endif2438 2439else:2440  %reducedValIn = call float @llvm.amdgcn.wave.reduce.fmax(float %in, i32 1)2441  br label %endif2442 2443endif:2444  %combine = phi float [%reducedValTid, %if], [%reducedValIn, %else]2445  store float %combine, ptr addrspace(1) %out2446  ret void2447}2448;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:2449; GFX11DAGISEL: {{.*}}2450; GFX11GISEL: {{.*}}2451