brintos

brintos / llvm-project-archived public Read only

0
0
Text · 82.9 KiB · d5f1750 Raw
1845 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_dword s6, s[4:5], 0x2c19; GFX8DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2420; GFX8DAGISEL-NEXT:    s_mov_b64 s[2:3], exec21; GFX8DAGISEL-NEXT:    s_bcnt1_i32_b64 s2, s[2:3]22; GFX8DAGISEL-NEXT:    s_and_b32 s2, s2, 123; GFX8DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)24; GFX8DAGISEL-NEXT:    s_mul_i32 s2, s6, s225; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v0, s026; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v1, s127; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v2, s228; GFX8DAGISEL-NEXT:    flat_store_dword v[0:1], v229; GFX8DAGISEL-NEXT:    s_endpgm30;31; GFX8GISEL-LABEL: uniform_value:32; GFX8GISEL:       ; %bb.0: ; %entry33; GFX8GISEL-NEXT:    s_load_dword s6, s[4:5], 0x2c34; GFX8GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2435; GFX8GISEL-NEXT:    s_mov_b64 s[2:3], exec36; GFX8GISEL-NEXT:    s_bcnt1_i32_b64 s2, s[2:3]37; GFX8GISEL-NEXT:    s_and_b32 s2, s2, 138; GFX8GISEL-NEXT:    s_waitcnt lgkmcnt(0)39; GFX8GISEL-NEXT:    s_mul_i32 s2, s6, s240; GFX8GISEL-NEXT:    v_mov_b32_e32 v0, s041; GFX8GISEL-NEXT:    v_mov_b32_e32 v2, s242; GFX8GISEL-NEXT:    v_mov_b32_e32 v1, s143; GFX8GISEL-NEXT:    flat_store_dword v[0:1], v244; GFX8GISEL-NEXT:    s_endpgm45;46; GFX9DAGISEL-LABEL: uniform_value:47; GFX9DAGISEL:       ; %bb.0: ; %entry48; GFX9DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2449; GFX9DAGISEL-NEXT:    s_load_dword s6, s[4:5], 0x2c50; GFX9DAGISEL-NEXT:    s_mov_b64 s[2:3], exec51; GFX9DAGISEL-NEXT:    s_bcnt1_i32_b64 s2, s[2:3]52; GFX9DAGISEL-NEXT:    s_and_b32 s2, s2, 153; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v0, 054; GFX9DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)55; GFX9DAGISEL-NEXT:    s_mul_i32 s2, s6, s256; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v1, s257; GFX9DAGISEL-NEXT:    global_store_dword v0, v1, s[0:1]58; GFX9DAGISEL-NEXT:    s_endpgm59;60; GFX9GISEL-LABEL: uniform_value:61; GFX9GISEL:       ; %bb.0: ; %entry62; GFX9GISEL-NEXT:    s_load_dword s6, s[4:5], 0x2c63; GFX9GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2464; GFX9GISEL-NEXT:    s_mov_b64 s[2:3], exec65; GFX9GISEL-NEXT:    s_bcnt1_i32_b64 s2, s[2:3]66; GFX9GISEL-NEXT:    s_and_b32 s2, s2, 167; GFX9GISEL-NEXT:    s_waitcnt lgkmcnt(0)68; GFX9GISEL-NEXT:    s_mul_i32 s2, s6, s269; GFX9GISEL-NEXT:    v_mov_b32_e32 v0, s270; GFX9GISEL-NEXT:    v_mov_b32_e32 v1, 071; GFX9GISEL-NEXT:    global_store_dword v1, v0, s[0:1]72; GFX9GISEL-NEXT:    s_endpgm73;74; GFX1064DAGISEL-LABEL: uniform_value:75; GFX1064DAGISEL:       ; %bb.0: ; %entry76; GFX1064DAGISEL-NEXT:    s_clause 0x177; GFX1064DAGISEL-NEXT:    s_load_dword s6, s[4:5], 0x2c78; GFX1064DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2479; GFX1064DAGISEL-NEXT:    s_mov_b64 s[2:3], exec80; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v0, 081; GFX1064DAGISEL-NEXT:    s_bcnt1_i32_b64 s2, s[2:3]82; GFX1064DAGISEL-NEXT:    s_and_b32 s2, s2, 183; GFX1064DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)84; GFX1064DAGISEL-NEXT:    s_mul_i32 s2, s6, s285; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v1, s286; GFX1064DAGISEL-NEXT:    global_store_dword v0, v1, s[0:1]87; GFX1064DAGISEL-NEXT:    s_endpgm88;89; GFX1064GISEL-LABEL: uniform_value:90; GFX1064GISEL:       ; %bb.0: ; %entry91; GFX1064GISEL-NEXT:    s_clause 0x192; GFX1064GISEL-NEXT:    s_load_dword s6, s[4:5], 0x2c93; GFX1064GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2494; GFX1064GISEL-NEXT:    s_mov_b64 s[2:3], exec95; GFX1064GISEL-NEXT:    v_mov_b32_e32 v1, 096; GFX1064GISEL-NEXT:    s_bcnt1_i32_b64 s2, s[2:3]97; GFX1064GISEL-NEXT:    s_and_b32 s2, s2, 198; GFX1064GISEL-NEXT:    s_waitcnt lgkmcnt(0)99; GFX1064GISEL-NEXT:    s_mul_i32 s2, s6, s2100; GFX1064GISEL-NEXT:    v_mov_b32_e32 v0, s2101; GFX1064GISEL-NEXT:    global_store_dword v1, v0, s[0:1]102; GFX1064GISEL-NEXT:    s_endpgm103;104; GFX1032DAGISEL-LABEL: uniform_value:105; GFX1032DAGISEL:       ; %bb.0: ; %entry106; GFX1032DAGISEL-NEXT:    s_clause 0x1107; GFX1032DAGISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c108; GFX1032DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24109; GFX1032DAGISEL-NEXT:    s_mov_b32 s3, exec_lo110; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v0, 0111; GFX1032DAGISEL-NEXT:    s_bcnt1_i32_b32 s3, s3112; GFX1032DAGISEL-NEXT:    s_and_b32 s3, s3, 1113; GFX1032DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)114; GFX1032DAGISEL-NEXT:    s_mul_i32 s2, s2, s3115; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v1, s2116; GFX1032DAGISEL-NEXT:    global_store_dword v0, v1, s[0:1]117; GFX1032DAGISEL-NEXT:    s_endpgm118;119; GFX1032GISEL-LABEL: uniform_value:120; GFX1032GISEL:       ; %bb.0: ; %entry121; GFX1032GISEL-NEXT:    s_clause 0x1122; GFX1032GISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c123; GFX1032GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24124; GFX1032GISEL-NEXT:    s_mov_b32 s3, exec_lo125; GFX1032GISEL-NEXT:    v_mov_b32_e32 v1, 0126; GFX1032GISEL-NEXT:    s_bcnt1_i32_b32 s3, s3127; GFX1032GISEL-NEXT:    s_and_b32 s3, s3, 1128; GFX1032GISEL-NEXT:    s_waitcnt lgkmcnt(0)129; GFX1032GISEL-NEXT:    s_mul_i32 s2, s2, s3130; GFX1032GISEL-NEXT:    v_mov_b32_e32 v0, s2131; GFX1032GISEL-NEXT:    global_store_dword v1, v0, s[0:1]132; GFX1032GISEL-NEXT:    s_endpgm133;134; GFX1164DAGISEL-LABEL: uniform_value:135; GFX1164DAGISEL:       ; %bb.0: ; %entry136; GFX1164DAGISEL-NEXT:    s_clause 0x1137; GFX1164DAGISEL-NEXT:    s_load_b32 s6, s[4:5], 0x2c138; GFX1164DAGISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24139; GFX1164DAGISEL-NEXT:    s_mov_b64 s[2:3], exec140; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v0, 0141; GFX1164DAGISEL-NEXT:    s_bcnt1_i32_b64 s2, s[2:3]142; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)143; GFX1164DAGISEL-NEXT:    s_and_b32 s2, s2, 1144; GFX1164DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)145; GFX1164DAGISEL-NEXT:    s_mul_i32 s2, s6, s2146; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v1, s2147; GFX1164DAGISEL-NEXT:    global_store_b32 v0, v1, s[0:1]148; GFX1164DAGISEL-NEXT:    s_endpgm149;150; GFX1164GISEL-LABEL: uniform_value:151; GFX1164GISEL:       ; %bb.0: ; %entry152; GFX1164GISEL-NEXT:    s_clause 0x1153; GFX1164GISEL-NEXT:    s_load_b32 s6, s[4:5], 0x2c154; GFX1164GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24155; GFX1164GISEL-NEXT:    s_mov_b64 s[2:3], exec156; GFX1164GISEL-NEXT:    v_mov_b32_e32 v1, 0157; GFX1164GISEL-NEXT:    s_bcnt1_i32_b64 s2, s[2:3]158; GFX1164GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)159; GFX1164GISEL-NEXT:    s_and_b32 s2, s2, 1160; GFX1164GISEL-NEXT:    s_waitcnt lgkmcnt(0)161; GFX1164GISEL-NEXT:    s_mul_i32 s2, s6, s2162; GFX1164GISEL-NEXT:    v_mov_b32_e32 v0, s2163; GFX1164GISEL-NEXT:    global_store_b32 v1, v0, s[0:1]164; GFX1164GISEL-NEXT:    s_endpgm165;166; GFX1132DAGISEL-LABEL: uniform_value:167; GFX1132DAGISEL:       ; %bb.0: ; %entry168; GFX1132DAGISEL-NEXT:    s_clause 0x1169; GFX1132DAGISEL-NEXT:    s_load_b32 s2, s[4:5], 0x2c170; GFX1132DAGISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24171; GFX1132DAGISEL-NEXT:    s_mov_b32 s3, exec_lo172; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)173; GFX1132DAGISEL-NEXT:    s_bcnt1_i32_b32 s3, s3174; GFX1132DAGISEL-NEXT:    s_and_b32 s3, s3, 1175; GFX1132DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)176; GFX1132DAGISEL-NEXT:    s_mul_i32 s2, s2, s3177; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)178; GFX1132DAGISEL-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2179; GFX1132DAGISEL-NEXT:    global_store_b32 v0, v1, s[0:1]180; GFX1132DAGISEL-NEXT:    s_endpgm181;182; GFX1132GISEL-LABEL: uniform_value:183; GFX1132GISEL:       ; %bb.0: ; %entry184; GFX1132GISEL-NEXT:    s_clause 0x1185; GFX1132GISEL-NEXT:    s_load_b32 s2, s[4:5], 0x2c186; GFX1132GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24187; GFX1132GISEL-NEXT:    s_mov_b32 s3, exec_lo188; GFX1132GISEL-NEXT:    v_mov_b32_e32 v1, 0189; GFX1132GISEL-NEXT:    s_bcnt1_i32_b32 s3, s3190; GFX1132GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)191; GFX1132GISEL-NEXT:    s_and_b32 s3, s3, 1192; GFX1132GISEL-NEXT:    s_waitcnt lgkmcnt(0)193; GFX1132GISEL-NEXT:    s_mul_i32 s2, s2, s3194; GFX1132GISEL-NEXT:    v_mov_b32_e32 v0, s2195; GFX1132GISEL-NEXT:    global_store_b32 v1, v0, s[0:1]196; GFX1132GISEL-NEXT:    s_endpgm197entry:198  %result = call i32 @llvm.amdgcn.wave.reduce.xor.i32(i32 %in, i32 1)199  store i32 %result, ptr addrspace(1) %out200  ret void201}202 203define amdgpu_kernel void @divergent_value(ptr addrspace(1) %out) {204; GFX8DAGISEL-LABEL: divergent_value:205; GFX8DAGISEL:       ; %bb.0: ; %entry206; GFX8DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24207; GFX8DAGISEL-NEXT:    s_mov_b64 s[2:3], exec208; GFX8DAGISEL-NEXT:    s_mov_b32 s4, 0209; GFX8DAGISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1210; GFX8DAGISEL-NEXT:    s_ff1_i32_b64 s5, s[2:3]211; GFX8DAGISEL-NEXT:    v_readlane_b32 s6, v0, s5212; GFX8DAGISEL-NEXT:    s_bitset0_b64 s[2:3], s5213; GFX8DAGISEL-NEXT:    s_xor_b32 s4, s4, s6214; GFX8DAGISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0215; GFX8DAGISEL-NEXT:    s_cbranch_scc1 .LBB1_1216; GFX8DAGISEL-NEXT:  ; %bb.2:217; GFX8DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)218; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v0, s0219; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v1, s1220; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v2, s4221; GFX8DAGISEL-NEXT:    flat_store_dword v[0:1], v2222; GFX8DAGISEL-NEXT:    s_endpgm223;224; GFX8GISEL-LABEL: divergent_value:225; GFX8GISEL:       ; %bb.0: ; %entry226; GFX8GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24227; GFX8GISEL-NEXT:    s_mov_b64 s[2:3], exec228; GFX8GISEL-NEXT:    s_mov_b32 s4, 0229; GFX8GISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1230; GFX8GISEL-NEXT:    s_ff1_i32_b64 s5, s[2:3]231; GFX8GISEL-NEXT:    v_readlane_b32 s6, v0, s5232; GFX8GISEL-NEXT:    s_bitset0_b64 s[2:3], s5233; GFX8GISEL-NEXT:    s_xor_b32 s4, s4, s6234; GFX8GISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0235; GFX8GISEL-NEXT:    s_cbranch_scc1 .LBB1_1236; GFX8GISEL-NEXT:  ; %bb.2:237; GFX8GISEL-NEXT:    s_waitcnt lgkmcnt(0)238; GFX8GISEL-NEXT:    v_mov_b32_e32 v0, s0239; GFX8GISEL-NEXT:    v_mov_b32_e32 v2, s4240; GFX8GISEL-NEXT:    v_mov_b32_e32 v1, s1241; GFX8GISEL-NEXT:    flat_store_dword v[0:1], v2242; GFX8GISEL-NEXT:    s_endpgm243;244; GFX9DAGISEL-LABEL: divergent_value:245; GFX9DAGISEL:       ; %bb.0: ; %entry246; GFX9DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24247; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v1, 0248; GFX9DAGISEL-NEXT:    s_mov_b64 s[2:3], exec249; GFX9DAGISEL-NEXT:    s_mov_b32 s4, 0250; GFX9DAGISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1251; GFX9DAGISEL-NEXT:    s_ff1_i32_b64 s5, s[2:3]252; GFX9DAGISEL-NEXT:    v_readlane_b32 s6, v0, s5253; GFX9DAGISEL-NEXT:    s_bitset0_b64 s[2:3], s5254; GFX9DAGISEL-NEXT:    s_xor_b32 s4, s4, s6255; GFX9DAGISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0256; GFX9DAGISEL-NEXT:    s_cbranch_scc1 .LBB1_1257; GFX9DAGISEL-NEXT:  ; %bb.2:258; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v0, s4259; GFX9DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)260; GFX9DAGISEL-NEXT:    global_store_dword v1, v0, s[0:1]261; GFX9DAGISEL-NEXT:    s_endpgm262;263; GFX9GISEL-LABEL: divergent_value:264; GFX9GISEL:       ; %bb.0: ; %entry265; GFX9GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24266; GFX9GISEL-NEXT:    s_mov_b64 s[2:3], exec267; GFX9GISEL-NEXT:    s_mov_b32 s4, 0268; GFX9GISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1269; GFX9GISEL-NEXT:    s_ff1_i32_b64 s5, s[2:3]270; GFX9GISEL-NEXT:    v_readlane_b32 s6, v0, s5271; GFX9GISEL-NEXT:    s_bitset0_b64 s[2:3], s5272; GFX9GISEL-NEXT:    s_xor_b32 s4, s4, s6273; GFX9GISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0274; GFX9GISEL-NEXT:    s_cbranch_scc1 .LBB1_1275; GFX9GISEL-NEXT:  ; %bb.2:276; GFX9GISEL-NEXT:    v_mov_b32_e32 v0, s4277; GFX9GISEL-NEXT:    v_mov_b32_e32 v1, 0278; GFX9GISEL-NEXT:    s_waitcnt lgkmcnt(0)279; GFX9GISEL-NEXT:    global_store_dword v1, v0, s[0:1]280; GFX9GISEL-NEXT:    s_endpgm281;282; GFX1064DAGISEL-LABEL: divergent_value:283; GFX1064DAGISEL:       ; %bb.0: ; %entry284; GFX1064DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24285; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v1, 0286; GFX1064DAGISEL-NEXT:    s_mov_b64 s[2:3], exec287; GFX1064DAGISEL-NEXT:    s_mov_b32 s4, 0288; GFX1064DAGISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1289; GFX1064DAGISEL-NEXT:    s_ff1_i32_b64 s5, s[2:3]290; GFX1064DAGISEL-NEXT:    v_readlane_b32 s6, v0, s5291; GFX1064DAGISEL-NEXT:    s_bitset0_b64 s[2:3], s5292; GFX1064DAGISEL-NEXT:    s_xor_b32 s4, s4, s6293; GFX1064DAGISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0294; GFX1064DAGISEL-NEXT:    s_cbranch_scc1 .LBB1_1295; GFX1064DAGISEL-NEXT:  ; %bb.2:296; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v0, s4297; GFX1064DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)298; GFX1064DAGISEL-NEXT:    global_store_dword v1, v0, s[0:1]299; GFX1064DAGISEL-NEXT:    s_endpgm300;301; GFX1064GISEL-LABEL: divergent_value:302; GFX1064GISEL:       ; %bb.0: ; %entry303; GFX1064GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24304; GFX1064GISEL-NEXT:    s_mov_b64 s[2:3], exec305; GFX1064GISEL-NEXT:    s_mov_b32 s4, 0306; GFX1064GISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1307; GFX1064GISEL-NEXT:    s_ff1_i32_b64 s5, s[2:3]308; GFX1064GISEL-NEXT:    v_readlane_b32 s6, v0, s5309; GFX1064GISEL-NEXT:    s_bitset0_b64 s[2:3], s5310; GFX1064GISEL-NEXT:    s_xor_b32 s4, s4, s6311; GFX1064GISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0312; GFX1064GISEL-NEXT:    s_cbranch_scc1 .LBB1_1313; GFX1064GISEL-NEXT:  ; %bb.2:314; GFX1064GISEL-NEXT:    v_mov_b32_e32 v0, s4315; GFX1064GISEL-NEXT:    v_mov_b32_e32 v1, 0316; GFX1064GISEL-NEXT:    s_waitcnt lgkmcnt(0)317; GFX1064GISEL-NEXT:    global_store_dword v1, v0, s[0:1]318; GFX1064GISEL-NEXT:    s_endpgm319;320; GFX1032DAGISEL-LABEL: divergent_value:321; GFX1032DAGISEL:       ; %bb.0: ; %entry322; GFX1032DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24323; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v1, 0324; GFX1032DAGISEL-NEXT:    s_mov_b32 s3, exec_lo325; GFX1032DAGISEL-NEXT:    s_mov_b32 s2, 0326; GFX1032DAGISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1327; GFX1032DAGISEL-NEXT:    s_ff1_i32_b32 s4, s3328; GFX1032DAGISEL-NEXT:    v_readlane_b32 s5, v0, s4329; GFX1032DAGISEL-NEXT:    s_bitset0_b32 s3, s4330; GFX1032DAGISEL-NEXT:    s_xor_b32 s2, s2, s5331; GFX1032DAGISEL-NEXT:    s_cmp_lg_u32 s3, 0332; GFX1032DAGISEL-NEXT:    s_cbranch_scc1 .LBB1_1333; GFX1032DAGISEL-NEXT:  ; %bb.2:334; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v0, s2335; GFX1032DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)336; GFX1032DAGISEL-NEXT:    global_store_dword v1, v0, s[0:1]337; GFX1032DAGISEL-NEXT:    s_endpgm338;339; GFX1032GISEL-LABEL: divergent_value:340; GFX1032GISEL:       ; %bb.0: ; %entry341; GFX1032GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24342; GFX1032GISEL-NEXT:    s_mov_b32 s3, exec_lo343; GFX1032GISEL-NEXT:    s_mov_b32 s2, 0344; GFX1032GISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1345; GFX1032GISEL-NEXT:    s_ff1_i32_b32 s4, s3346; GFX1032GISEL-NEXT:    v_readlane_b32 s5, v0, s4347; GFX1032GISEL-NEXT:    s_bitset0_b32 s3, s4348; GFX1032GISEL-NEXT:    s_xor_b32 s2, s2, s5349; GFX1032GISEL-NEXT:    s_cmp_lg_u32 s3, 0350; GFX1032GISEL-NEXT:    s_cbranch_scc1 .LBB1_1351; GFX1032GISEL-NEXT:  ; %bb.2:352; GFX1032GISEL-NEXT:    v_mov_b32_e32 v0, s2353; GFX1032GISEL-NEXT:    v_mov_b32_e32 v1, 0354; GFX1032GISEL-NEXT:    s_waitcnt lgkmcnt(0)355; GFX1032GISEL-NEXT:    global_store_dword v1, v0, s[0:1]356; GFX1032GISEL-NEXT:    s_endpgm357;358; GFX1164DAGISEL-LABEL: divergent_value:359; GFX1164DAGISEL:       ; %bb.0: ; %entry360; GFX1164DAGISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24361; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v1, 0362; GFX1164DAGISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v0363; GFX1164DAGISEL-NEXT:    s_mov_b64 s[2:3], exec364; GFX1164DAGISEL-NEXT:    s_mov_b32 s4, 0365; GFX1164DAGISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1366; GFX1164DAGISEL-NEXT:    s_ctz_i32_b64 s5, s[2:3]367; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)368; GFX1164DAGISEL-NEXT:    v_readlane_b32 s6, v0, s5369; GFX1164DAGISEL-NEXT:    s_bitset0_b64 s[2:3], s5370; GFX1164DAGISEL-NEXT:    s_xor_b32 s4, s4, s6371; GFX1164DAGISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0372; GFX1164DAGISEL-NEXT:    s_cbranch_scc1 .LBB1_1373; GFX1164DAGISEL-NEXT:  ; %bb.2:374; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v0, s4375; GFX1164DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)376; GFX1164DAGISEL-NEXT:    global_store_b32 v1, v0, s[0:1]377; GFX1164DAGISEL-NEXT:    s_endpgm378;379; GFX1164GISEL-LABEL: divergent_value:380; GFX1164GISEL:       ; %bb.0: ; %entry381; GFX1164GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24382; GFX1164GISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v0383; GFX1164GISEL-NEXT:    s_mov_b64 s[2:3], exec384; GFX1164GISEL-NEXT:    s_mov_b32 s4, 0385; GFX1164GISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1386; GFX1164GISEL-NEXT:    s_ctz_i32_b64 s5, s[2:3]387; GFX1164GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)388; GFX1164GISEL-NEXT:    v_readlane_b32 s6, v0, s5389; GFX1164GISEL-NEXT:    s_bitset0_b64 s[2:3], s5390; GFX1164GISEL-NEXT:    s_xor_b32 s4, s4, s6391; GFX1164GISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0392; GFX1164GISEL-NEXT:    s_cbranch_scc1 .LBB1_1393; GFX1164GISEL-NEXT:  ; %bb.2:394; GFX1164GISEL-NEXT:    v_mov_b32_e32 v0, s4395; GFX1164GISEL-NEXT:    v_mov_b32_e32 v1, 0396; GFX1164GISEL-NEXT:    s_waitcnt lgkmcnt(0)397; GFX1164GISEL-NEXT:    global_store_b32 v1, v0, s[0:1]398; GFX1164GISEL-NEXT:    s_endpgm399;400; GFX1132DAGISEL-LABEL: divergent_value:401; GFX1132DAGISEL:       ; %bb.0: ; %entry402; GFX1132DAGISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24403; GFX1132DAGISEL-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_and_b32 v0, 0x3ff, v0404; GFX1132DAGISEL-NEXT:    s_mov_b32 s3, exec_lo405; GFX1132DAGISEL-NEXT:    s_mov_b32 s2, 0406; GFX1132DAGISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1407; GFX1132DAGISEL-NEXT:    s_ctz_i32_b32 s4, s3408; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)409; GFX1132DAGISEL-NEXT:    v_readlane_b32 s5, v0, s4410; GFX1132DAGISEL-NEXT:    s_bitset0_b32 s3, s4411; GFX1132DAGISEL-NEXT:    s_xor_b32 s2, s2, s5412; GFX1132DAGISEL-NEXT:    s_cmp_lg_u32 s3, 0413; GFX1132DAGISEL-NEXT:    s_cbranch_scc1 .LBB1_1414; GFX1132DAGISEL-NEXT:  ; %bb.2:415; GFX1132DAGISEL-NEXT:    v_mov_b32_e32 v0, s2416; GFX1132DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)417; GFX1132DAGISEL-NEXT:    global_store_b32 v1, v0, s[0:1]418; GFX1132DAGISEL-NEXT:    s_endpgm419;420; GFX1132GISEL-LABEL: divergent_value:421; GFX1132GISEL:       ; %bb.0: ; %entry422; GFX1132GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24423; GFX1132GISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v0424; GFX1132GISEL-NEXT:    s_mov_b32 s3, exec_lo425; GFX1132GISEL-NEXT:    s_mov_b32 s2, 0426; GFX1132GISEL-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1427; GFX1132GISEL-NEXT:    s_ctz_i32_b32 s4, s3428; GFX1132GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)429; GFX1132GISEL-NEXT:    v_readlane_b32 s5, v0, s4430; GFX1132GISEL-NEXT:    s_bitset0_b32 s3, s4431; GFX1132GISEL-NEXT:    s_xor_b32 s2, s2, s5432; GFX1132GISEL-NEXT:    s_cmp_lg_u32 s3, 0433; GFX1132GISEL-NEXT:    s_cbranch_scc1 .LBB1_1434; GFX1132GISEL-NEXT:  ; %bb.2:435; GFX1132GISEL-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, 0436; GFX1132GISEL-NEXT:    s_waitcnt lgkmcnt(0)437; GFX1132GISEL-NEXT:    global_store_b32 v1, v0, s[0:1]438; GFX1132GISEL-NEXT:    s_endpgm439entry:440  %id.x = call i32 @llvm.amdgcn.workitem.id.x()441  %result = call i32 @llvm.amdgcn.wave.reduce.xor.i32(i32 %id.x, i32 1)442  store i32 %result, ptr addrspace(1) %out443  ret void444}445 446define amdgpu_kernel void @divergent_cfg(ptr addrspace(1) %out, i32 %in) {447; GFX8DAGISEL-LABEL: divergent_cfg:448; GFX8DAGISEL:       ; %bb.0: ; %entry449; GFX8DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc, 15, v0450; GFX8DAGISEL-NEXT:    ; implicit-def: $sgpr2451; GFX8DAGISEL-NEXT:    s_and_saveexec_b64 s[0:1], vcc452; GFX8DAGISEL-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]453; GFX8DAGISEL-NEXT:    s_cbranch_execz .LBB2_2454; GFX8DAGISEL-NEXT:  ; %bb.1: ; %else455; GFX8DAGISEL-NEXT:    s_load_dword s6, s[4:5], 0x2c456; GFX8DAGISEL-NEXT:    s_mov_b64 s[2:3], exec457; GFX8DAGISEL-NEXT:    s_bcnt1_i32_b64 s2, s[2:3]458; GFX8DAGISEL-NEXT:    s_and_b32 s2, s2, 1459; GFX8DAGISEL-NEXT:    ; implicit-def: $vgpr0460; GFX8DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)461; GFX8DAGISEL-NEXT:    s_mul_i32 s2, s6, s2462; GFX8DAGISEL-NEXT:  .LBB2_2: ; %Flow463; GFX8DAGISEL-NEXT:    s_or_saveexec_b64 s[0:1], s[0:1]464; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v1, s2465; GFX8DAGISEL-NEXT:    s_xor_b64 exec, exec, s[0:1]466; GFX8DAGISEL-NEXT:    s_cbranch_execz .LBB2_6467; GFX8DAGISEL-NEXT:  ; %bb.3: ; %if468; GFX8DAGISEL-NEXT:    s_mov_b64 s[2:3], exec469; GFX8DAGISEL-NEXT:    s_mov_b32 s6, 0470; GFX8DAGISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1471; GFX8DAGISEL-NEXT:    s_ff1_i32_b64 s7, s[2:3]472; GFX8DAGISEL-NEXT:    v_readlane_b32 s8, v0, s7473; GFX8DAGISEL-NEXT:    s_bitset0_b64 s[2:3], s7474; GFX8DAGISEL-NEXT:    s_xor_b32 s6, s6, s8475; GFX8DAGISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0476; GFX8DAGISEL-NEXT:    s_cbranch_scc1 .LBB2_4477; GFX8DAGISEL-NEXT:  ; %bb.5:478; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v1, s6479; GFX8DAGISEL-NEXT:  .LBB2_6: ; %endif480; GFX8DAGISEL-NEXT:    s_or_b64 exec, exec, s[0:1]481; GFX8DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24482; GFX8DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)483; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v3, s1484; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v2, s0485; GFX8DAGISEL-NEXT:    flat_store_dword v[2:3], v1486; GFX8DAGISEL-NEXT:    s_endpgm487;488; GFX8GISEL-LABEL: divergent_cfg:489; GFX8GISEL:       ; %bb.0: ; %entry490; GFX8GISEL-NEXT:    v_cmp_le_u32_e32 vcc, 16, v0491; GFX8GISEL-NEXT:    ; implicit-def: $sgpr6492; GFX8GISEL-NEXT:    s_and_saveexec_b64 s[0:1], vcc493; GFX8GISEL-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]494; GFX8GISEL-NEXT:    s_cbranch_execz .LBB2_2495; GFX8GISEL-NEXT:  ; %bb.1: ; %else496; GFX8GISEL-NEXT:    s_load_dword s6, s[4:5], 0x2c497; GFX8GISEL-NEXT:    s_mov_b64 s[2:3], exec498; GFX8GISEL-NEXT:    s_bcnt1_i32_b64 s2, s[2:3]499; GFX8GISEL-NEXT:    s_and_b32 s2, s2, 1500; GFX8GISEL-NEXT:    ; implicit-def: $vgpr0501; GFX8GISEL-NEXT:    s_waitcnt lgkmcnt(0)502; GFX8GISEL-NEXT:    s_mul_i32 s6, s6, s2503; GFX8GISEL-NEXT:  .LBB2_2: ; %Flow504; GFX8GISEL-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]505; GFX8GISEL-NEXT:    s_cbranch_execz .LBB2_5506; GFX8GISEL-NEXT:  ; %bb.3: ; %if507; GFX8GISEL-NEXT:    s_mov_b64 s[2:3], exec508; GFX8GISEL-NEXT:    s_mov_b32 s6, 0509; GFX8GISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1510; GFX8GISEL-NEXT:    s_ff1_i32_b64 s7, s[2:3]511; GFX8GISEL-NEXT:    v_readlane_b32 s8, v0, s7512; GFX8GISEL-NEXT:    s_bitset0_b64 s[2:3], s7513; GFX8GISEL-NEXT:    s_xor_b32 s6, s6, s8514; GFX8GISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0515; GFX8GISEL-NEXT:    s_cbranch_scc1 .LBB2_4516; GFX8GISEL-NEXT:  .LBB2_5: ; %endif517; GFX8GISEL-NEXT:    s_or_b64 exec, exec, s[0:1]518; GFX8GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24519; GFX8GISEL-NEXT:    v_mov_b32_e32 v2, s6520; GFX8GISEL-NEXT:    s_waitcnt lgkmcnt(0)521; GFX8GISEL-NEXT:    v_mov_b32_e32 v0, s0522; GFX8GISEL-NEXT:    v_mov_b32_e32 v1, s1523; GFX8GISEL-NEXT:    flat_store_dword v[0:1], v2524; GFX8GISEL-NEXT:    s_endpgm525;526; GFX9DAGISEL-LABEL: divergent_cfg:527; GFX9DAGISEL:       ; %bb.0: ; %entry528; GFX9DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc, 15, v0529; GFX9DAGISEL-NEXT:    ; implicit-def: $sgpr2530; GFX9DAGISEL-NEXT:    s_and_saveexec_b64 s[0:1], vcc531; GFX9DAGISEL-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]532; GFX9DAGISEL-NEXT:    s_cbranch_execz .LBB2_2533; GFX9DAGISEL-NEXT:  ; %bb.1: ; %else534; GFX9DAGISEL-NEXT:    s_load_dword s6, s[4:5], 0x2c535; GFX9DAGISEL-NEXT:    s_mov_b64 s[2:3], exec536; GFX9DAGISEL-NEXT:    s_bcnt1_i32_b64 s2, s[2:3]537; GFX9DAGISEL-NEXT:    s_and_b32 s2, s2, 1538; GFX9DAGISEL-NEXT:    ; implicit-def: $vgpr0539; GFX9DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)540; GFX9DAGISEL-NEXT:    s_mul_i32 s2, s6, s2541; GFX9DAGISEL-NEXT:  .LBB2_2: ; %Flow542; GFX9DAGISEL-NEXT:    s_or_saveexec_b64 s[0:1], s[0:1]543; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v1, s2544; GFX9DAGISEL-NEXT:    s_xor_b64 exec, exec, s[0:1]545; GFX9DAGISEL-NEXT:    s_cbranch_execz .LBB2_6546; GFX9DAGISEL-NEXT:  ; %bb.3: ; %if547; GFX9DAGISEL-NEXT:    s_mov_b64 s[2:3], exec548; GFX9DAGISEL-NEXT:    s_mov_b32 s6, 0549; GFX9DAGISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1550; GFX9DAGISEL-NEXT:    s_ff1_i32_b64 s7, s[2:3]551; GFX9DAGISEL-NEXT:    v_readlane_b32 s8, v0, s7552; GFX9DAGISEL-NEXT:    s_bitset0_b64 s[2:3], s7553; GFX9DAGISEL-NEXT:    s_xor_b32 s6, s6, s8554; GFX9DAGISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0555; GFX9DAGISEL-NEXT:    s_cbranch_scc1 .LBB2_4556; GFX9DAGISEL-NEXT:  ; %bb.5:557; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v1, s6558; GFX9DAGISEL-NEXT:  .LBB2_6: ; %endif559; GFX9DAGISEL-NEXT:    s_or_b64 exec, exec, s[0:1]560; GFX9DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24561; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v0, 0562; GFX9DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)563; GFX9DAGISEL-NEXT:    global_store_dword v0, v1, s[0:1]564; GFX9DAGISEL-NEXT:    s_endpgm565;566; GFX9GISEL-LABEL: divergent_cfg:567; GFX9GISEL:       ; %bb.0: ; %entry568; GFX9GISEL-NEXT:    v_cmp_le_u32_e32 vcc, 16, v0569; GFX9GISEL-NEXT:    ; implicit-def: $sgpr6570; GFX9GISEL-NEXT:    s_and_saveexec_b64 s[0:1], vcc571; GFX9GISEL-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]572; GFX9GISEL-NEXT:    s_cbranch_execz .LBB2_2573; GFX9GISEL-NEXT:  ; %bb.1: ; %else574; GFX9GISEL-NEXT:    s_load_dword s6, s[4:5], 0x2c575; GFX9GISEL-NEXT:    s_mov_b64 s[2:3], exec576; GFX9GISEL-NEXT:    s_bcnt1_i32_b64 s2, s[2:3]577; GFX9GISEL-NEXT:    s_and_b32 s2, s2, 1578; GFX9GISEL-NEXT:    ; implicit-def: $vgpr0579; GFX9GISEL-NEXT:    s_waitcnt lgkmcnt(0)580; GFX9GISEL-NEXT:    s_mul_i32 s6, s6, s2581; GFX9GISEL-NEXT:  .LBB2_2: ; %Flow582; GFX9GISEL-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]583; GFX9GISEL-NEXT:    s_cbranch_execz .LBB2_5584; GFX9GISEL-NEXT:  ; %bb.3: ; %if585; GFX9GISEL-NEXT:    s_mov_b64 s[2:3], exec586; GFX9GISEL-NEXT:    s_mov_b32 s6, 0587; GFX9GISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1588; GFX9GISEL-NEXT:    s_ff1_i32_b64 s7, s[2:3]589; GFX9GISEL-NEXT:    v_readlane_b32 s8, v0, s7590; GFX9GISEL-NEXT:    s_bitset0_b64 s[2:3], s7591; GFX9GISEL-NEXT:    s_xor_b32 s6, s6, s8592; GFX9GISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0593; GFX9GISEL-NEXT:    s_cbranch_scc1 .LBB2_4594; GFX9GISEL-NEXT:  .LBB2_5: ; %endif595; GFX9GISEL-NEXT:    s_or_b64 exec, exec, s[0:1]596; GFX9GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24597; GFX9GISEL-NEXT:    v_mov_b32_e32 v0, s6598; GFX9GISEL-NEXT:    v_mov_b32_e32 v1, 0599; GFX9GISEL-NEXT:    s_waitcnt lgkmcnt(0)600; GFX9GISEL-NEXT:    global_store_dword v1, v0, s[0:1]601; GFX9GISEL-NEXT:    s_endpgm602;603; GFX1064DAGISEL-LABEL: divergent_cfg:604; GFX1064DAGISEL:       ; %bb.0: ; %entry605; GFX1064DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc, 15, v0606; GFX1064DAGISEL-NEXT:    ; implicit-def: $sgpr2607; GFX1064DAGISEL-NEXT:    s_and_saveexec_b64 s[0:1], vcc608; GFX1064DAGISEL-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]609; GFX1064DAGISEL-NEXT:    s_cbranch_execz .LBB2_2610; GFX1064DAGISEL-NEXT:  ; %bb.1: ; %else611; GFX1064DAGISEL-NEXT:    s_load_dword s6, s[4:5], 0x2c612; GFX1064DAGISEL-NEXT:    s_mov_b64 s[2:3], exec613; GFX1064DAGISEL-NEXT:    ; implicit-def: $vgpr0614; GFX1064DAGISEL-NEXT:    s_bcnt1_i32_b64 s2, s[2:3]615; GFX1064DAGISEL-NEXT:    s_and_b32 s2, s2, 1616; GFX1064DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)617; GFX1064DAGISEL-NEXT:    s_mul_i32 s2, s6, s2618; GFX1064DAGISEL-NEXT:  .LBB2_2: ; %Flow619; GFX1064DAGISEL-NEXT:    s_or_saveexec_b64 s[0:1], s[0:1]620; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v1, s2621; GFX1064DAGISEL-NEXT:    s_xor_b64 exec, exec, s[0:1]622; GFX1064DAGISEL-NEXT:    s_cbranch_execz .LBB2_6623; GFX1064DAGISEL-NEXT:  ; %bb.3: ; %if624; GFX1064DAGISEL-NEXT:    s_mov_b64 s[2:3], exec625; GFX1064DAGISEL-NEXT:    s_mov_b32 s6, 0626; GFX1064DAGISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1627; GFX1064DAGISEL-NEXT:    s_ff1_i32_b64 s7, s[2:3]628; GFX1064DAGISEL-NEXT:    v_readlane_b32 s8, v0, s7629; GFX1064DAGISEL-NEXT:    s_bitset0_b64 s[2:3], s7630; GFX1064DAGISEL-NEXT:    s_xor_b32 s6, s6, s8631; GFX1064DAGISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0632; GFX1064DAGISEL-NEXT:    s_cbranch_scc1 .LBB2_4633; GFX1064DAGISEL-NEXT:  ; %bb.5:634; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v1, s6635; GFX1064DAGISEL-NEXT:  .LBB2_6: ; %endif636; GFX1064DAGISEL-NEXT:    s_or_b64 exec, exec, s[0:1]637; GFX1064DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24638; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v0, 0639; GFX1064DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)640; GFX1064DAGISEL-NEXT:    global_store_dword v0, v1, s[0:1]641; GFX1064DAGISEL-NEXT:    s_endpgm642;643; GFX1064GISEL-LABEL: divergent_cfg:644; GFX1064GISEL:       ; %bb.0: ; %entry645; GFX1064GISEL-NEXT:    v_cmp_le_u32_e32 vcc, 16, v0646; GFX1064GISEL-NEXT:    ; implicit-def: $sgpr6647; GFX1064GISEL-NEXT:    s_and_saveexec_b64 s[0:1], vcc648; GFX1064GISEL-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]649; GFX1064GISEL-NEXT:    s_cbranch_execz .LBB2_2650; GFX1064GISEL-NEXT:  ; %bb.1: ; %else651; GFX1064GISEL-NEXT:    s_load_dword s6, s[4:5], 0x2c652; GFX1064GISEL-NEXT:    s_mov_b64 s[2:3], exec653; GFX1064GISEL-NEXT:    ; implicit-def: $vgpr0654; GFX1064GISEL-NEXT:    s_bcnt1_i32_b64 s2, s[2:3]655; GFX1064GISEL-NEXT:    s_and_b32 s2, s2, 1656; GFX1064GISEL-NEXT:    s_waitcnt lgkmcnt(0)657; GFX1064GISEL-NEXT:    s_mul_i32 s6, s6, s2658; GFX1064GISEL-NEXT:  .LBB2_2: ; %Flow659; GFX1064GISEL-NEXT:    s_andn2_saveexec_b64 s[0:1], s[0:1]660; GFX1064GISEL-NEXT:    s_cbranch_execz .LBB2_5661; GFX1064GISEL-NEXT:  ; %bb.3: ; %if662; GFX1064GISEL-NEXT:    s_mov_b64 s[2:3], exec663; GFX1064GISEL-NEXT:    s_mov_b32 s6, 0664; GFX1064GISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1665; GFX1064GISEL-NEXT:    s_ff1_i32_b64 s7, s[2:3]666; GFX1064GISEL-NEXT:    v_readlane_b32 s8, v0, s7667; GFX1064GISEL-NEXT:    s_bitset0_b64 s[2:3], s7668; GFX1064GISEL-NEXT:    s_xor_b32 s6, s6, s8669; GFX1064GISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0670; GFX1064GISEL-NEXT:    s_cbranch_scc1 .LBB2_4671; GFX1064GISEL-NEXT:  .LBB2_5: ; %endif672; GFX1064GISEL-NEXT:    s_or_b64 exec, exec, s[0:1]673; GFX1064GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24674; GFX1064GISEL-NEXT:    v_mov_b32_e32 v0, s6675; GFX1064GISEL-NEXT:    v_mov_b32_e32 v1, 0676; GFX1064GISEL-NEXT:    s_waitcnt lgkmcnt(0)677; GFX1064GISEL-NEXT:    global_store_dword v1, v0, s[0:1]678; GFX1064GISEL-NEXT:    s_endpgm679;680; GFX1032DAGISEL-LABEL: divergent_cfg:681; GFX1032DAGISEL:       ; %bb.0: ; %entry682; GFX1032DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc_lo, 15, v0683; GFX1032DAGISEL-NEXT:    ; implicit-def: $sgpr1684; GFX1032DAGISEL-NEXT:    s_and_saveexec_b32 s0, vcc_lo685; GFX1032DAGISEL-NEXT:    s_xor_b32 s0, exec_lo, s0686; GFX1032DAGISEL-NEXT:    s_cbranch_execz .LBB2_2687; GFX1032DAGISEL-NEXT:  ; %bb.1: ; %else688; GFX1032DAGISEL-NEXT:    s_load_dword s1, s[4:5], 0x2c689; GFX1032DAGISEL-NEXT:    s_mov_b32 s2, exec_lo690; GFX1032DAGISEL-NEXT:    ; implicit-def: $vgpr0691; GFX1032DAGISEL-NEXT:    s_bcnt1_i32_b32 s2, s2692; GFX1032DAGISEL-NEXT:    s_and_b32 s2, s2, 1693; GFX1032DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)694; GFX1032DAGISEL-NEXT:    s_mul_i32 s1, s1, s2695; GFX1032DAGISEL-NEXT:  .LBB2_2: ; %Flow696; GFX1032DAGISEL-NEXT:    s_or_saveexec_b32 s0, s0697; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v1, s1698; GFX1032DAGISEL-NEXT:    s_xor_b32 exec_lo, exec_lo, s0699; GFX1032DAGISEL-NEXT:    s_cbranch_execz .LBB2_6700; GFX1032DAGISEL-NEXT:  ; %bb.3: ; %if701; GFX1032DAGISEL-NEXT:    s_mov_b32 s2, exec_lo702; GFX1032DAGISEL-NEXT:    s_mov_b32 s1, 0703; GFX1032DAGISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1704; GFX1032DAGISEL-NEXT:    s_ff1_i32_b32 s3, s2705; GFX1032DAGISEL-NEXT:    v_readlane_b32 s6, v0, s3706; GFX1032DAGISEL-NEXT:    s_bitset0_b32 s2, s3707; GFX1032DAGISEL-NEXT:    s_xor_b32 s1, s1, s6708; GFX1032DAGISEL-NEXT:    s_cmp_lg_u32 s2, 0709; GFX1032DAGISEL-NEXT:    s_cbranch_scc1 .LBB2_4710; GFX1032DAGISEL-NEXT:  ; %bb.5:711; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v1, s1712; GFX1032DAGISEL-NEXT:  .LBB2_6: ; %endif713; GFX1032DAGISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s0714; GFX1032DAGISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24715; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v0, 0716; GFX1032DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)717; GFX1032DAGISEL-NEXT:    global_store_dword v0, v1, s[0:1]718; GFX1032DAGISEL-NEXT:    s_endpgm719;720; GFX1032GISEL-LABEL: divergent_cfg:721; GFX1032GISEL:       ; %bb.0: ; %entry722; GFX1032GISEL-NEXT:    v_cmp_le_u32_e32 vcc_lo, 16, v0723; GFX1032GISEL-NEXT:    ; implicit-def: $sgpr0724; GFX1032GISEL-NEXT:    s_and_saveexec_b32 s1, vcc_lo725; GFX1032GISEL-NEXT:    s_xor_b32 s1, exec_lo, s1726; GFX1032GISEL-NEXT:    s_cbranch_execz .LBB2_2727; GFX1032GISEL-NEXT:  ; %bb.1: ; %else728; GFX1032GISEL-NEXT:    s_load_dword s0, s[4:5], 0x2c729; GFX1032GISEL-NEXT:    s_mov_b32 s2, exec_lo730; GFX1032GISEL-NEXT:    ; implicit-def: $vgpr0731; GFX1032GISEL-NEXT:    s_bcnt1_i32_b32 s2, s2732; GFX1032GISEL-NEXT:    s_and_b32 s2, s2, 1733; GFX1032GISEL-NEXT:    s_waitcnt lgkmcnt(0)734; GFX1032GISEL-NEXT:    s_mul_i32 s0, s0, s2735; GFX1032GISEL-NEXT:  .LBB2_2: ; %Flow736; GFX1032GISEL-NEXT:    s_andn2_saveexec_b32 s1, s1737; GFX1032GISEL-NEXT:    s_cbranch_execz .LBB2_5738; GFX1032GISEL-NEXT:  ; %bb.3: ; %if739; GFX1032GISEL-NEXT:    s_mov_b32 s2, exec_lo740; GFX1032GISEL-NEXT:    s_mov_b32 s0, 0741; GFX1032GISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1742; GFX1032GISEL-NEXT:    s_ff1_i32_b32 s3, s2743; GFX1032GISEL-NEXT:    v_readlane_b32 s6, v0, s3744; GFX1032GISEL-NEXT:    s_bitset0_b32 s2, s3745; GFX1032GISEL-NEXT:    s_xor_b32 s0, s0, s6746; GFX1032GISEL-NEXT:    s_cmp_lg_u32 s2, 0747; GFX1032GISEL-NEXT:    s_cbranch_scc1 .LBB2_4748; GFX1032GISEL-NEXT:  .LBB2_5: ; %endif749; GFX1032GISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s1750; GFX1032GISEL-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x24751; GFX1032GISEL-NEXT:    v_mov_b32_e32 v0, s0752; GFX1032GISEL-NEXT:    v_mov_b32_e32 v1, 0753; GFX1032GISEL-NEXT:    s_waitcnt lgkmcnt(0)754; GFX1032GISEL-NEXT:    global_store_dword v1, v0, s[2:3]755; GFX1032GISEL-NEXT:    s_endpgm756;757; GFX1164DAGISEL-LABEL: divergent_cfg:758; GFX1164DAGISEL:       ; %bb.0: ; %entry759; GFX1164DAGISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v0760; GFX1164DAGISEL-NEXT:    s_mov_b64 s[0:1], exec761; GFX1164DAGISEL-NEXT:    ; implicit-def: $sgpr2762; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)763; GFX1164DAGISEL-NEXT:    v_cmpx_lt_u32_e32 15, v0764; GFX1164DAGISEL-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]765; GFX1164DAGISEL-NEXT:    s_cbranch_execz .LBB2_2766; GFX1164DAGISEL-NEXT:  ; %bb.1: ; %else767; GFX1164DAGISEL-NEXT:    s_load_b32 s6, s[4:5], 0x2c768; GFX1164DAGISEL-NEXT:    s_mov_b64 s[2:3], exec769; GFX1164DAGISEL-NEXT:    ; implicit-def: $vgpr0770; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)771; GFX1164DAGISEL-NEXT:    s_bcnt1_i32_b64 s2, s[2:3]772; GFX1164DAGISEL-NEXT:    s_and_b32 s2, s2, 1773; GFX1164DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)774; GFX1164DAGISEL-NEXT:    s_mul_i32 s2, s6, s2775; GFX1164DAGISEL-NEXT:  .LBB2_2: ; %Flow776; GFX1164DAGISEL-NEXT:    s_or_saveexec_b64 s[0:1], s[0:1]777; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v1, s2778; GFX1164DAGISEL-NEXT:    s_xor_b64 exec, exec, s[0:1]779; GFX1164DAGISEL-NEXT:    s_cbranch_execz .LBB2_6780; GFX1164DAGISEL-NEXT:  ; %bb.3: ; %if781; GFX1164DAGISEL-NEXT:    s_mov_b64 s[2:3], exec782; GFX1164DAGISEL-NEXT:    s_mov_b32 s6, 0783; GFX1164DAGISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1784; GFX1164DAGISEL-NEXT:    s_ctz_i32_b64 s7, s[2:3]785; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)786; GFX1164DAGISEL-NEXT:    v_readlane_b32 s8, v0, s7787; GFX1164DAGISEL-NEXT:    s_bitset0_b64 s[2:3], s7788; GFX1164DAGISEL-NEXT:    s_xor_b32 s6, s6, s8789; GFX1164DAGISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0790; GFX1164DAGISEL-NEXT:    s_cbranch_scc1 .LBB2_4791; GFX1164DAGISEL-NEXT:  ; %bb.5:792; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v1, s6793; GFX1164DAGISEL-NEXT:  .LBB2_6: ; %endif794; GFX1164DAGISEL-NEXT:    s_or_b64 exec, exec, s[0:1]795; GFX1164DAGISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24796; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v0, 0797; GFX1164DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)798; GFX1164DAGISEL-NEXT:    global_store_b32 v0, v1, s[0:1]799; GFX1164DAGISEL-NEXT:    s_endpgm800;801; GFX1164GISEL-LABEL: divergent_cfg:802; GFX1164GISEL:       ; %bb.0: ; %entry803; GFX1164GISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v0804; GFX1164GISEL-NEXT:    s_mov_b64 s[0:1], exec805; GFX1164GISEL-NEXT:    ; implicit-def: $sgpr6806; GFX1164GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)807; GFX1164GISEL-NEXT:    v_cmpx_le_u32_e32 16, v0808; GFX1164GISEL-NEXT:    s_xor_b64 s[0:1], exec, s[0:1]809; GFX1164GISEL-NEXT:    s_cbranch_execz .LBB2_2810; GFX1164GISEL-NEXT:  ; %bb.1: ; %else811; GFX1164GISEL-NEXT:    s_load_b32 s6, s[4:5], 0x2c812; GFX1164GISEL-NEXT:    s_mov_b64 s[2:3], exec813; GFX1164GISEL-NEXT:    ; implicit-def: $vgpr0814; GFX1164GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)815; GFX1164GISEL-NEXT:    s_bcnt1_i32_b64 s2, s[2:3]816; GFX1164GISEL-NEXT:    s_and_b32 s2, s2, 1817; GFX1164GISEL-NEXT:    s_waitcnt lgkmcnt(0)818; GFX1164GISEL-NEXT:    s_mul_i32 s6, s6, s2819; GFX1164GISEL-NEXT:  .LBB2_2: ; %Flow820; GFX1164GISEL-NEXT:    s_and_not1_saveexec_b64 s[0:1], s[0:1]821; GFX1164GISEL-NEXT:    s_cbranch_execz .LBB2_5822; GFX1164GISEL-NEXT:  ; %bb.3: ; %if823; GFX1164GISEL-NEXT:    s_mov_b64 s[2:3], exec824; GFX1164GISEL-NEXT:    s_mov_b32 s6, 0825; GFX1164GISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1826; GFX1164GISEL-NEXT:    s_ctz_i32_b64 s7, s[2:3]827; GFX1164GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)828; GFX1164GISEL-NEXT:    v_readlane_b32 s8, v0, s7829; GFX1164GISEL-NEXT:    s_bitset0_b64 s[2:3], s7830; GFX1164GISEL-NEXT:    s_xor_b32 s6, s6, s8831; GFX1164GISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0832; GFX1164GISEL-NEXT:    s_cbranch_scc1 .LBB2_4833; GFX1164GISEL-NEXT:  .LBB2_5: ; %endif834; GFX1164GISEL-NEXT:    s_or_b64 exec, exec, s[0:1]835; GFX1164GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24836; GFX1164GISEL-NEXT:    v_mov_b32_e32 v0, s6837; GFX1164GISEL-NEXT:    v_mov_b32_e32 v1, 0838; GFX1164GISEL-NEXT:    s_waitcnt lgkmcnt(0)839; GFX1164GISEL-NEXT:    global_store_b32 v1, v0, s[0:1]840; GFX1164GISEL-NEXT:    s_endpgm841;842; GFX1132DAGISEL-LABEL: divergent_cfg:843; GFX1132DAGISEL:       ; %bb.0: ; %entry844; GFX1132DAGISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v0845; GFX1132DAGISEL-NEXT:    s_mov_b32 s0, exec_lo846; GFX1132DAGISEL-NEXT:    ; implicit-def: $sgpr1847; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)848; GFX1132DAGISEL-NEXT:    v_cmpx_lt_u32_e32 15, v0849; GFX1132DAGISEL-NEXT:    s_xor_b32 s0, exec_lo, s0850; GFX1132DAGISEL-NEXT:    s_cbranch_execz .LBB2_2851; GFX1132DAGISEL-NEXT:  ; %bb.1: ; %else852; GFX1132DAGISEL-NEXT:    s_load_b32 s1, s[4:5], 0x2c853; GFX1132DAGISEL-NEXT:    s_mov_b32 s2, exec_lo854; GFX1132DAGISEL-NEXT:    ; implicit-def: $vgpr0855; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)856; GFX1132DAGISEL-NEXT:    s_bcnt1_i32_b32 s2, s2857; GFX1132DAGISEL-NEXT:    s_and_b32 s2, s2, 1858; GFX1132DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)859; GFX1132DAGISEL-NEXT:    s_mul_i32 s1, s1, s2860; GFX1132DAGISEL-NEXT:  .LBB2_2: ; %Flow861; GFX1132DAGISEL-NEXT:    s_or_saveexec_b32 s0, s0862; GFX1132DAGISEL-NEXT:    v_mov_b32_e32 v1, s1863; GFX1132DAGISEL-NEXT:    s_xor_b32 exec_lo, exec_lo, s0864; GFX1132DAGISEL-NEXT:    s_cbranch_execz .LBB2_6865; GFX1132DAGISEL-NEXT:  ; %bb.3: ; %if866; GFX1132DAGISEL-NEXT:    s_mov_b32 s2, exec_lo867; GFX1132DAGISEL-NEXT:    s_mov_b32 s1, 0868; GFX1132DAGISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1869; GFX1132DAGISEL-NEXT:    s_ctz_i32_b32 s3, s2870; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)871; GFX1132DAGISEL-NEXT:    v_readlane_b32 s6, v0, s3872; GFX1132DAGISEL-NEXT:    s_bitset0_b32 s2, s3873; GFX1132DAGISEL-NEXT:    s_xor_b32 s1, s1, s6874; GFX1132DAGISEL-NEXT:    s_cmp_lg_u32 s2, 0875; GFX1132DAGISEL-NEXT:    s_cbranch_scc1 .LBB2_4876; GFX1132DAGISEL-NEXT:  ; %bb.5:877; GFX1132DAGISEL-NEXT:    v_mov_b32_e32 v1, s1878; GFX1132DAGISEL-NEXT:  .LBB2_6: ; %endif879; GFX1132DAGISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s0880; GFX1132DAGISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24881; GFX1132DAGISEL-NEXT:    v_mov_b32_e32 v0, 0882; GFX1132DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)883; GFX1132DAGISEL-NEXT:    global_store_b32 v0, v1, s[0:1]884; GFX1132DAGISEL-NEXT:    s_endpgm885;886; GFX1132GISEL-LABEL: divergent_cfg:887; GFX1132GISEL:       ; %bb.0: ; %entry888; GFX1132GISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v0889; GFX1132GISEL-NEXT:    s_mov_b32 s1, exec_lo890; GFX1132GISEL-NEXT:    ; implicit-def: $sgpr0891; GFX1132GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)892; GFX1132GISEL-NEXT:    v_cmpx_le_u32_e32 16, v0893; GFX1132GISEL-NEXT:    s_xor_b32 s1, exec_lo, s1894; GFX1132GISEL-NEXT:    s_cbranch_execz .LBB2_2895; GFX1132GISEL-NEXT:  ; %bb.1: ; %else896; GFX1132GISEL-NEXT:    s_load_b32 s0, s[4:5], 0x2c897; GFX1132GISEL-NEXT:    s_mov_b32 s2, exec_lo898; GFX1132GISEL-NEXT:    ; implicit-def: $vgpr0899; GFX1132GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)900; GFX1132GISEL-NEXT:    s_bcnt1_i32_b32 s2, s2901; GFX1132GISEL-NEXT:    s_and_b32 s2, s2, 1902; GFX1132GISEL-NEXT:    s_waitcnt lgkmcnt(0)903; GFX1132GISEL-NEXT:    s_mul_i32 s0, s0, s2904; GFX1132GISEL-NEXT:  .LBB2_2: ; %Flow905; GFX1132GISEL-NEXT:    s_and_not1_saveexec_b32 s1, s1906; GFX1132GISEL-NEXT:    s_cbranch_execz .LBB2_5907; GFX1132GISEL-NEXT:  ; %bb.3: ; %if908; GFX1132GISEL-NEXT:    s_mov_b32 s2, exec_lo909; GFX1132GISEL-NEXT:    s_mov_b32 s0, 0910; GFX1132GISEL-NEXT:  .LBB2_4: ; =>This Inner Loop Header: Depth=1911; GFX1132GISEL-NEXT:    s_ctz_i32_b32 s3, s2912; GFX1132GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)913; GFX1132GISEL-NEXT:    v_readlane_b32 s6, v0, s3914; GFX1132GISEL-NEXT:    s_bitset0_b32 s2, s3915; GFX1132GISEL-NEXT:    s_xor_b32 s0, s0, s6916; GFX1132GISEL-NEXT:    s_cmp_lg_u32 s2, 0917; GFX1132GISEL-NEXT:    s_cbranch_scc1 .LBB2_4918; GFX1132GISEL-NEXT:  .LBB2_5: ; %endif919; GFX1132GISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s1920; GFX1132GISEL-NEXT:    s_load_b64 s[2:3], s[4:5], 0x24921; GFX1132GISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, 0922; GFX1132GISEL-NEXT:    s_waitcnt lgkmcnt(0)923; GFX1132GISEL-NEXT:    global_store_b32 v1, v0, s[2:3]924; GFX1132GISEL-NEXT:    s_endpgm925entry:926  %tid = call i32 @llvm.amdgcn.workitem.id.x()927  %d_cmp = icmp ult i32 %tid, 16928  br i1 %d_cmp, label %if, label %else929 930if:931  %reducedValTid = call i32 @llvm.amdgcn.wave.reduce.xor.i32(i32 %tid, i32 1)932  br label %endif933 934else:935  %reducedValIn = call i32 @llvm.amdgcn.wave.reduce.xor.i32(i32 %in, i32 1)936  br label %endif937 938endif:939  %combine = phi i32 [%reducedValTid, %if], [%reducedValIn, %else]940  store i32 %combine, ptr addrspace(1) %out941  ret void942}943 944define amdgpu_kernel void @uniform_value_i64(ptr addrspace(1) %out, i64 %in) {945; GFX8DAGISEL-LABEL: uniform_value_i64:946; GFX8DAGISEL:       ; %bb.0: ; %entry947; GFX8DAGISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24948; GFX8DAGISEL-NEXT:    s_mov_b64 s[4:5], exec949; GFX8DAGISEL-NEXT:    s_bcnt1_i32_b64 s4, s[4:5]950; GFX8DAGISEL-NEXT:    s_and_b32 s4, s4, 1951; GFX8DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)952; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v1, s1953; GFX8DAGISEL-NEXT:    s_mul_i32 s1, s3, s4954; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v0, s0955; GFX8DAGISEL-NEXT:    s_mul_i32 s0, s2, s4956; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v3, s1957; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v2, s0958; GFX8DAGISEL-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]959; GFX8DAGISEL-NEXT:    s_endpgm960;961; GFX8GISEL-LABEL: uniform_value_i64:962; GFX8GISEL:       ; %bb.0: ; %entry963; GFX8GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24964; GFX8GISEL-NEXT:    s_mov_b64 s[4:5], exec965; GFX8GISEL-NEXT:    s_bcnt1_i32_b64 s4, s[4:5]966; GFX8GISEL-NEXT:    s_and_b32 s4, s4, 1967; GFX8GISEL-NEXT:    s_waitcnt lgkmcnt(0)968; GFX8GISEL-NEXT:    s_mul_i32 s2, s2, s4969; GFX8GISEL-NEXT:    s_mul_i32 s3, s3, s4970; GFX8GISEL-NEXT:    v_mov_b32_e32 v0, s2971; GFX8GISEL-NEXT:    v_mov_b32_e32 v3, s1972; GFX8GISEL-NEXT:    v_mov_b32_e32 v1, s3973; GFX8GISEL-NEXT:    v_mov_b32_e32 v2, s0974; GFX8GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]975; GFX8GISEL-NEXT:    s_endpgm976;977; GFX9DAGISEL-LABEL: uniform_value_i64:978; GFX9DAGISEL:       ; %bb.0: ; %entry979; GFX9DAGISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24980; GFX9DAGISEL-NEXT:    s_mov_b64 s[4:5], exec981; GFX9DAGISEL-NEXT:    s_bcnt1_i32_b64 s4, s[4:5]982; GFX9DAGISEL-NEXT:    s_and_b32 s4, s4, 1983; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v2, 0984; GFX9DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)985; GFX9DAGISEL-NEXT:    s_mul_i32 s2, s2, s4986; GFX9DAGISEL-NEXT:    s_mul_i32 s3, s3, s4987; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v0, s2988; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v1, s3989; GFX9DAGISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]990; GFX9DAGISEL-NEXT:    s_endpgm991;992; GFX9GISEL-LABEL: uniform_value_i64:993; GFX9GISEL:       ; %bb.0: ; %entry994; GFX9GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24995; GFX9GISEL-NEXT:    s_mov_b64 s[4:5], exec996; GFX9GISEL-NEXT:    s_bcnt1_i32_b64 s4, s[4:5]997; GFX9GISEL-NEXT:    s_and_b32 s4, s4, 1998; GFX9GISEL-NEXT:    v_mov_b32_e32 v2, 0999; GFX9GISEL-NEXT:    s_waitcnt lgkmcnt(0)1000; GFX9GISEL-NEXT:    s_mul_i32 s2, s2, s41001; GFX9GISEL-NEXT:    s_mul_i32 s3, s3, s41002; GFX9GISEL-NEXT:    v_mov_b32_e32 v0, s21003; GFX9GISEL-NEXT:    v_mov_b32_e32 v1, s31004; GFX9GISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1005; GFX9GISEL-NEXT:    s_endpgm1006;1007; GFX1064DAGISEL-LABEL: uniform_value_i64:1008; GFX1064DAGISEL:       ; %bb.0: ; %entry1009; GFX1064DAGISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241010; GFX1064DAGISEL-NEXT:    s_mov_b64 s[4:5], exec1011; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v2, 01012; GFX1064DAGISEL-NEXT:    s_bcnt1_i32_b64 s4, s[4:5]1013; GFX1064DAGISEL-NEXT:    s_and_b32 s4, s4, 11014; GFX1064DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1015; GFX1064DAGISEL-NEXT:    s_mul_i32 s2, s2, s41016; GFX1064DAGISEL-NEXT:    s_mul_i32 s3, s3, s41017; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v0, s21018; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v1, s31019; GFX1064DAGISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1020; GFX1064DAGISEL-NEXT:    s_endpgm1021;1022; GFX1064GISEL-LABEL: uniform_value_i64:1023; GFX1064GISEL:       ; %bb.0: ; %entry1024; GFX1064GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241025; GFX1064GISEL-NEXT:    s_mov_b64 s[4:5], exec1026; GFX1064GISEL-NEXT:    v_mov_b32_e32 v2, 01027; GFX1064GISEL-NEXT:    s_bcnt1_i32_b64 s4, s[4:5]1028; GFX1064GISEL-NEXT:    s_and_b32 s4, s4, 11029; GFX1064GISEL-NEXT:    s_waitcnt lgkmcnt(0)1030; GFX1064GISEL-NEXT:    s_mul_i32 s2, s2, s41031; GFX1064GISEL-NEXT:    s_mul_i32 s3, s3, s41032; GFX1064GISEL-NEXT:    v_mov_b32_e32 v0, s21033; GFX1064GISEL-NEXT:    v_mov_b32_e32 v1, s31034; GFX1064GISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1035; GFX1064GISEL-NEXT:    s_endpgm1036;1037; GFX1032DAGISEL-LABEL: uniform_value_i64:1038; GFX1032DAGISEL:       ; %bb.0: ; %entry1039; GFX1032DAGISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241040; GFX1032DAGISEL-NEXT:    s_mov_b32 s4, exec_lo1041; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v2, 01042; GFX1032DAGISEL-NEXT:    s_bcnt1_i32_b32 s4, s41043; GFX1032DAGISEL-NEXT:    s_and_b32 s4, s4, 11044; GFX1032DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1045; GFX1032DAGISEL-NEXT:    s_mul_i32 s2, s2, s41046; GFX1032DAGISEL-NEXT:    s_mul_i32 s3, s3, s41047; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v0, s21048; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v1, s31049; GFX1032DAGISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1050; GFX1032DAGISEL-NEXT:    s_endpgm1051;1052; GFX1032GISEL-LABEL: uniform_value_i64:1053; GFX1032GISEL:       ; %bb.0: ; %entry1054; GFX1032GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241055; GFX1032GISEL-NEXT:    s_mov_b32 s4, exec_lo1056; GFX1032GISEL-NEXT:    v_mov_b32_e32 v2, 01057; GFX1032GISEL-NEXT:    s_bcnt1_i32_b32 s4, s41058; GFX1032GISEL-NEXT:    s_and_b32 s4, s4, 11059; GFX1032GISEL-NEXT:    s_waitcnt lgkmcnt(0)1060; GFX1032GISEL-NEXT:    s_mul_i32 s2, s2, s41061; GFX1032GISEL-NEXT:    s_mul_i32 s3, s3, s41062; GFX1032GISEL-NEXT:    v_mov_b32_e32 v0, s21063; GFX1032GISEL-NEXT:    v_mov_b32_e32 v1, s31064; GFX1032GISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1065; GFX1032GISEL-NEXT:    s_endpgm1066;1067; GFX1164DAGISEL-LABEL: uniform_value_i64:1068; GFX1164DAGISEL:       ; %bb.0: ; %entry1069; GFX1164DAGISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241070; GFX1164DAGISEL-NEXT:    s_mov_b64 s[4:5], exec1071; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v2, 01072; GFX1164DAGISEL-NEXT:    s_bcnt1_i32_b64 s4, s[4:5]1073; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1074; GFX1164DAGISEL-NEXT:    s_and_b32 s4, s4, 11075; GFX1164DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1076; GFX1164DAGISEL-NEXT:    s_mul_i32 s2, s2, s41077; GFX1164DAGISEL-NEXT:    s_mul_i32 s3, s3, s41078; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v0, s21079; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v1, s31080; GFX1164DAGISEL-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1081; GFX1164DAGISEL-NEXT:    s_endpgm1082;1083; GFX1164GISEL-LABEL: uniform_value_i64:1084; GFX1164GISEL:       ; %bb.0: ; %entry1085; GFX1164GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241086; GFX1164GISEL-NEXT:    s_mov_b64 s[4:5], exec1087; GFX1164GISEL-NEXT:    v_mov_b32_e32 v2, 01088; GFX1164GISEL-NEXT:    s_bcnt1_i32_b64 s4, s[4:5]1089; GFX1164GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1090; GFX1164GISEL-NEXT:    s_and_b32 s4, s4, 11091; GFX1164GISEL-NEXT:    s_waitcnt lgkmcnt(0)1092; GFX1164GISEL-NEXT:    s_mul_i32 s2, s2, s41093; GFX1164GISEL-NEXT:    s_mul_i32 s3, s3, s41094; GFX1164GISEL-NEXT:    v_mov_b32_e32 v0, s21095; GFX1164GISEL-NEXT:    v_mov_b32_e32 v1, s31096; GFX1164GISEL-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1097; GFX1164GISEL-NEXT:    s_endpgm1098;1099; GFX1132DAGISEL-LABEL: uniform_value_i64:1100; GFX1132DAGISEL:       ; %bb.0: ; %entry1101; GFX1132DAGISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241102; GFX1132DAGISEL-NEXT:    s_mov_b32 s4, exec_lo1103; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)1104; GFX1132DAGISEL-NEXT:    s_bcnt1_i32_b32 s4, s41105; GFX1132DAGISEL-NEXT:    s_and_b32 s4, s4, 11106; GFX1132DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1107; GFX1132DAGISEL-NEXT:    s_mul_i32 s2, s2, s41108; GFX1132DAGISEL-NEXT:    s_mul_i32 s3, s3, s41109; GFX1132DAGISEL-NEXT:    v_mov_b32_e32 v0, s21110; GFX1132DAGISEL-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v1, s31111; GFX1132DAGISEL-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1112; GFX1132DAGISEL-NEXT:    s_endpgm1113;1114; GFX1132GISEL-LABEL: uniform_value_i64:1115; GFX1132GISEL:       ; %bb.0: ; %entry1116; GFX1132GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241117; GFX1132GISEL-NEXT:    s_mov_b32 s4, exec_lo1118; GFX1132GISEL-NEXT:    v_mov_b32_e32 v2, 01119; GFX1132GISEL-NEXT:    s_bcnt1_i32_b32 s4, s41120; GFX1132GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)1121; GFX1132GISEL-NEXT:    s_and_b32 s4, s4, 11122; GFX1132GISEL-NEXT:    s_waitcnt lgkmcnt(0)1123; GFX1132GISEL-NEXT:    s_mul_i32 s2, s2, s41124; GFX1132GISEL-NEXT:    s_mul_i32 s3, s3, s41125; GFX1132GISEL-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s31126; GFX1132GISEL-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1127; GFX1132GISEL-NEXT:    s_endpgm1128entry:1129  %result = call i64 @llvm.amdgcn.wave.reduce.xor.i64(i64 %in, i32 1)1130  store i64 %result, ptr addrspace(1) %out1131  ret void1132}1133 1134define void @divergent_value_i64(ptr addrspace(1) %out, i64 %id.x) {1135; GFX8DAGISEL-LABEL: divergent_value_i64:1136; GFX8DAGISEL:       ; %bb.0: ; %entry1137; GFX8DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1138; GFX8DAGISEL-NEXT:    s_mov_b64 s[4:5], 01139; GFX8DAGISEL-NEXT:    s_mov_b64 s[6:7], exec1140; GFX8DAGISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=11141; GFX8DAGISEL-NEXT:    s_ff1_i32_b64 s10, s[6:7]1142; GFX8DAGISEL-NEXT:    v_readlane_b32 s8, v2, s101143; GFX8DAGISEL-NEXT:    v_readlane_b32 s9, v3, s101144; GFX8DAGISEL-NEXT:    s_bitset0_b64 s[6:7], s101145; GFX8DAGISEL-NEXT:    s_xor_b64 s[4:5], s[4:5], s[8:9]1146; GFX8DAGISEL-NEXT:    s_cmp_lg_u64 s[6:7], 01147; GFX8DAGISEL-NEXT:    s_cbranch_scc1 .LBB4_11148; GFX8DAGISEL-NEXT:  ; %bb.2:1149; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v2, s41150; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v3, s51151; GFX8DAGISEL-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]1152; GFX8DAGISEL-NEXT:    s_waitcnt vmcnt(0)1153; GFX8DAGISEL-NEXT:    s_setpc_b64 s[30:31]1154;1155; GFX8GISEL-LABEL: divergent_value_i64:1156; GFX8GISEL:       ; %bb.0: ; %entry1157; GFX8GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1158; GFX8GISEL-NEXT:    s_mov_b64 s[4:5], 01159; GFX8GISEL-NEXT:    s_mov_b64 s[6:7], exec1160; GFX8GISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=11161; GFX8GISEL-NEXT:    s_ff1_i32_b64 s10, s[6:7]1162; GFX8GISEL-NEXT:    v_readlane_b32 s8, v2, s101163; GFX8GISEL-NEXT:    v_readlane_b32 s9, v3, s101164; GFX8GISEL-NEXT:    s_bitset0_b64 s[6:7], s101165; GFX8GISEL-NEXT:    s_xor_b64 s[4:5], s[4:5], s[8:9]1166; GFX8GISEL-NEXT:    s_cmp_lg_u64 s[6:7], 01167; GFX8GISEL-NEXT:    s_cbranch_scc1 .LBB4_11168; GFX8GISEL-NEXT:  ; %bb.2:1169; GFX8GISEL-NEXT:    v_mov_b32_e32 v2, s41170; GFX8GISEL-NEXT:    v_mov_b32_e32 v3, s51171; GFX8GISEL-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]1172; GFX8GISEL-NEXT:    s_waitcnt vmcnt(0)1173; GFX8GISEL-NEXT:    s_setpc_b64 s[30:31]1174;1175; GFX9DAGISEL-LABEL: divergent_value_i64:1176; GFX9DAGISEL:       ; %bb.0: ; %entry1177; GFX9DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1178; GFX9DAGISEL-NEXT:    s_mov_b64 s[4:5], 01179; GFX9DAGISEL-NEXT:    s_mov_b64 s[6:7], exec1180; GFX9DAGISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=11181; GFX9DAGISEL-NEXT:    s_ff1_i32_b64 s10, s[6:7]1182; GFX9DAGISEL-NEXT:    v_readlane_b32 s8, v2, s101183; GFX9DAGISEL-NEXT:    v_readlane_b32 s9, v3, s101184; GFX9DAGISEL-NEXT:    s_bitset0_b64 s[6:7], s101185; GFX9DAGISEL-NEXT:    s_xor_b64 s[4:5], s[4:5], s[8:9]1186; GFX9DAGISEL-NEXT:    s_cmp_lg_u64 s[6:7], 01187; GFX9DAGISEL-NEXT:    s_cbranch_scc1 .LBB4_11188; GFX9DAGISEL-NEXT:  ; %bb.2:1189; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v2, s41190; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v3, s51191; GFX9DAGISEL-NEXT:    global_store_dwordx2 v[0:1], v[2:3], off1192; GFX9DAGISEL-NEXT:    s_waitcnt vmcnt(0)1193; GFX9DAGISEL-NEXT:    s_setpc_b64 s[30:31]1194;1195; GFX9GISEL-LABEL: divergent_value_i64:1196; GFX9GISEL:       ; %bb.0: ; %entry1197; GFX9GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1198; GFX9GISEL-NEXT:    s_mov_b64 s[4:5], 01199; GFX9GISEL-NEXT:    s_mov_b64 s[6:7], exec1200; GFX9GISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=11201; GFX9GISEL-NEXT:    s_ff1_i32_b64 s10, s[6:7]1202; GFX9GISEL-NEXT:    v_readlane_b32 s8, v2, s101203; GFX9GISEL-NEXT:    v_readlane_b32 s9, v3, s101204; GFX9GISEL-NEXT:    s_bitset0_b64 s[6:7], s101205; GFX9GISEL-NEXT:    s_xor_b64 s[4:5], s[4:5], s[8:9]1206; GFX9GISEL-NEXT:    s_cmp_lg_u64 s[6:7], 01207; GFX9GISEL-NEXT:    s_cbranch_scc1 .LBB4_11208; GFX9GISEL-NEXT:  ; %bb.2:1209; GFX9GISEL-NEXT:    v_mov_b32_e32 v2, s41210; GFX9GISEL-NEXT:    v_mov_b32_e32 v3, s51211; GFX9GISEL-NEXT:    global_store_dwordx2 v[0:1], v[2:3], off1212; GFX9GISEL-NEXT:    s_waitcnt vmcnt(0)1213; GFX9GISEL-NEXT:    s_setpc_b64 s[30:31]1214;1215; GFX1064DAGISEL-LABEL: divergent_value_i64:1216; GFX1064DAGISEL:       ; %bb.0: ; %entry1217; GFX1064DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1218; GFX1064DAGISEL-NEXT:    s_mov_b64 s[4:5], 01219; GFX1064DAGISEL-NEXT:    s_mov_b64 s[6:7], exec1220; GFX1064DAGISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=11221; GFX1064DAGISEL-NEXT:    s_ff1_i32_b64 s10, s[6:7]1222; GFX1064DAGISEL-NEXT:    v_readlane_b32 s8, v2, s101223; GFX1064DAGISEL-NEXT:    v_readlane_b32 s9, v3, s101224; GFX1064DAGISEL-NEXT:    s_bitset0_b64 s[6:7], s101225; GFX1064DAGISEL-NEXT:    s_xor_b64 s[4:5], s[4:5], s[8:9]1226; GFX1064DAGISEL-NEXT:    s_cmp_lg_u64 s[6:7], 01227; GFX1064DAGISEL-NEXT:    s_cbranch_scc1 .LBB4_11228; GFX1064DAGISEL-NEXT:  ; %bb.2:1229; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v2, s41230; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v3, s51231; GFX1064DAGISEL-NEXT:    global_store_dwordx2 v[0:1], v[2:3], off1232; GFX1064DAGISEL-NEXT:    s_setpc_b64 s[30:31]1233;1234; GFX1064GISEL-LABEL: divergent_value_i64:1235; GFX1064GISEL:       ; %bb.0: ; %entry1236; GFX1064GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1237; GFX1064GISEL-NEXT:    s_mov_b64 s[4:5], 01238; GFX1064GISEL-NEXT:    s_mov_b64 s[6:7], exec1239; GFX1064GISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=11240; GFX1064GISEL-NEXT:    s_ff1_i32_b64 s10, s[6:7]1241; GFX1064GISEL-NEXT:    v_readlane_b32 s8, v2, s101242; GFX1064GISEL-NEXT:    v_readlane_b32 s9, v3, s101243; GFX1064GISEL-NEXT:    s_bitset0_b64 s[6:7], s101244; GFX1064GISEL-NEXT:    s_xor_b64 s[4:5], s[4:5], s[8:9]1245; GFX1064GISEL-NEXT:    s_cmp_lg_u64 s[6:7], 01246; GFX1064GISEL-NEXT:    s_cbranch_scc1 .LBB4_11247; GFX1064GISEL-NEXT:  ; %bb.2:1248; GFX1064GISEL-NEXT:    v_mov_b32_e32 v2, s41249; GFX1064GISEL-NEXT:    v_mov_b32_e32 v3, s51250; GFX1064GISEL-NEXT:    global_store_dwordx2 v[0:1], v[2:3], off1251; GFX1064GISEL-NEXT:    s_setpc_b64 s[30:31]1252;1253; GFX1032DAGISEL-LABEL: divergent_value_i64:1254; GFX1032DAGISEL:       ; %bb.0: ; %entry1255; GFX1032DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1256; GFX1032DAGISEL-NEXT:    s_mov_b64 s[4:5], 01257; GFX1032DAGISEL-NEXT:    s_mov_b32 s6, exec_lo1258; GFX1032DAGISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=11259; GFX1032DAGISEL-NEXT:    s_ff1_i32_b32 s7, s61260; GFX1032DAGISEL-NEXT:    v_readlane_b32 s8, v2, s71261; GFX1032DAGISEL-NEXT:    v_readlane_b32 s9, v3, s71262; GFX1032DAGISEL-NEXT:    s_bitset0_b32 s6, s71263; GFX1032DAGISEL-NEXT:    s_xor_b64 s[4:5], s[4:5], s[8:9]1264; GFX1032DAGISEL-NEXT:    s_cmp_lg_u32 s6, 01265; GFX1032DAGISEL-NEXT:    s_cbranch_scc1 .LBB4_11266; GFX1032DAGISEL-NEXT:  ; %bb.2:1267; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v2, s41268; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v3, s51269; GFX1032DAGISEL-NEXT:    global_store_dwordx2 v[0:1], v[2:3], off1270; GFX1032DAGISEL-NEXT:    s_setpc_b64 s[30:31]1271;1272; GFX1032GISEL-LABEL: divergent_value_i64:1273; GFX1032GISEL:       ; %bb.0: ; %entry1274; GFX1032GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1275; GFX1032GISEL-NEXT:    s_mov_b64 s[4:5], 01276; GFX1032GISEL-NEXT:    s_mov_b32 s6, exec_lo1277; GFX1032GISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=11278; GFX1032GISEL-NEXT:    s_ff1_i32_b32 s7, s61279; GFX1032GISEL-NEXT:    v_readlane_b32 s8, v2, s71280; GFX1032GISEL-NEXT:    v_readlane_b32 s9, v3, s71281; GFX1032GISEL-NEXT:    s_bitset0_b32 s6, s71282; GFX1032GISEL-NEXT:    s_xor_b64 s[4:5], s[4:5], s[8:9]1283; GFX1032GISEL-NEXT:    s_cmp_lg_u32 s6, 01284; GFX1032GISEL-NEXT:    s_cbranch_scc1 .LBB4_11285; GFX1032GISEL-NEXT:  ; %bb.2:1286; GFX1032GISEL-NEXT:    v_mov_b32_e32 v2, s41287; GFX1032GISEL-NEXT:    v_mov_b32_e32 v3, s51288; GFX1032GISEL-NEXT:    global_store_dwordx2 v[0:1], v[2:3], off1289; GFX1032GISEL-NEXT:    s_setpc_b64 s[30:31]1290;1291; GFX1164DAGISEL-LABEL: divergent_value_i64:1292; GFX1164DAGISEL:       ; %bb.0: ; %entry1293; GFX1164DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1294; GFX1164DAGISEL-NEXT:    s_mov_b64 s[0:1], 01295; GFX1164DAGISEL-NEXT:    s_mov_b64 s[2:3], exec1296; GFX1164DAGISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=11297; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)1298; GFX1164DAGISEL-NEXT:    s_ctz_i32_b64 s6, s[2:3]1299; GFX1164DAGISEL-NEXT:    v_readlane_b32 s4, v2, s61300; GFX1164DAGISEL-NEXT:    v_readlane_b32 s5, v3, s61301; GFX1164DAGISEL-NEXT:    s_bitset0_b64 s[2:3], s61302; GFX1164DAGISEL-NEXT:    s_xor_b64 s[0:1], s[0:1], s[4:5]1303; GFX1164DAGISEL-NEXT:    s_cmp_lg_u64 s[2:3], 01304; GFX1164DAGISEL-NEXT:    s_cbranch_scc1 .LBB4_11305; GFX1164DAGISEL-NEXT:  ; %bb.2:1306; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v3, s11307; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v2, s01308; GFX1164DAGISEL-NEXT:    global_store_b64 v[0:1], v[2:3], off1309; GFX1164DAGISEL-NEXT:    s_setpc_b64 s[30:31]1310;1311; GFX1164GISEL-LABEL: divergent_value_i64:1312; GFX1164GISEL:       ; %bb.0: ; %entry1313; GFX1164GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1314; GFX1164GISEL-NEXT:    s_mov_b64 s[0:1], 01315; GFX1164GISEL-NEXT:    s_mov_b64 s[2:3], exec1316; GFX1164GISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=11317; GFX1164GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)1318; GFX1164GISEL-NEXT:    s_ctz_i32_b64 s6, s[2:3]1319; GFX1164GISEL-NEXT:    v_readlane_b32 s4, v2, s61320; GFX1164GISEL-NEXT:    v_readlane_b32 s5, v3, s61321; GFX1164GISEL-NEXT:    s_bitset0_b64 s[2:3], s61322; GFX1164GISEL-NEXT:    s_xor_b64 s[0:1], s[0:1], s[4:5]1323; GFX1164GISEL-NEXT:    s_cmp_lg_u64 s[2:3], 01324; GFX1164GISEL-NEXT:    s_cbranch_scc1 .LBB4_11325; GFX1164GISEL-NEXT:  ; %bb.2:1326; GFX1164GISEL-NEXT:    v_mov_b32_e32 v3, s11327; GFX1164GISEL-NEXT:    v_mov_b32_e32 v2, s01328; GFX1164GISEL-NEXT:    global_store_b64 v[0:1], v[2:3], off1329; GFX1164GISEL-NEXT:    s_setpc_b64 s[30:31]1330;1331; GFX1132DAGISEL-LABEL: divergent_value_i64:1332; GFX1132DAGISEL:       ; %bb.0: ; %entry1333; GFX1132DAGISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1334; GFX1132DAGISEL-NEXT:    s_mov_b64 s[0:1], 01335; GFX1132DAGISEL-NEXT:    s_mov_b32 s2, exec_lo1336; GFX1132DAGISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=11337; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)1338; GFX1132DAGISEL-NEXT:    s_ctz_i32_b32 s3, s21339; GFX1132DAGISEL-NEXT:    v_readlane_b32 s4, v2, s31340; GFX1132DAGISEL-NEXT:    v_readlane_b32 s5, v3, s31341; GFX1132DAGISEL-NEXT:    s_bitset0_b32 s2, s31342; GFX1132DAGISEL-NEXT:    s_xor_b64 s[0:1], s[0:1], s[4:5]1343; GFX1132DAGISEL-NEXT:    s_cmp_lg_u32 s2, 01344; GFX1132DAGISEL-NEXT:    s_cbranch_scc1 .LBB4_11345; GFX1132DAGISEL-NEXT:  ; %bb.2:1346; GFX1132DAGISEL-NEXT:    v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s01347; GFX1132DAGISEL-NEXT:    global_store_b64 v[0:1], v[2:3], off1348; GFX1132DAGISEL-NEXT:    s_setpc_b64 s[30:31]1349;1350; GFX1132GISEL-LABEL: divergent_value_i64:1351; GFX1132GISEL:       ; %bb.0: ; %entry1352; GFX1132GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1353; GFX1132GISEL-NEXT:    s_mov_b64 s[0:1], 01354; GFX1132GISEL-NEXT:    s_mov_b32 s2, exec_lo1355; GFX1132GISEL-NEXT:  .LBB4_1: ; =>This Inner Loop Header: Depth=11356; GFX1132GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)1357; GFX1132GISEL-NEXT:    s_ctz_i32_b32 s3, s21358; GFX1132GISEL-NEXT:    v_readlane_b32 s4, v2, s31359; GFX1132GISEL-NEXT:    v_readlane_b32 s5, v3, s31360; GFX1132GISEL-NEXT:    s_bitset0_b32 s2, s31361; GFX1132GISEL-NEXT:    s_xor_b64 s[0:1], s[0:1], s[4:5]1362; GFX1132GISEL-NEXT:    s_cmp_lg_u32 s2, 01363; GFX1132GISEL-NEXT:    s_cbranch_scc1 .LBB4_11364; GFX1132GISEL-NEXT:  ; %bb.2:1365; GFX1132GISEL-NEXT:    v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s01366; GFX1132GISEL-NEXT:    global_store_b64 v[0:1], v[2:3], off1367; GFX1132GISEL-NEXT:    s_setpc_b64 s[30:31]1368entry:1369  %result = call i64 @llvm.amdgcn.wave.reduce.xor.i64(i64 %id.x, i32 1)1370  store i64 %result, ptr addrspace(1) %out1371  ret void1372}1373 1374define amdgpu_kernel void @divergent_cfg_i64(ptr addrspace(1) %out, i64 %in, i64 %in2) {1375; GFX8DAGISEL-LABEL: divergent_cfg_i64:1376; GFX8DAGISEL:       ; %bb.0: ; %entry1377; GFX8DAGISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241378; GFX8DAGISEL-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x341379; GFX8DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc, 15, v01380; GFX8DAGISEL-NEXT:    ; implicit-def: $sgpr6_sgpr71381; GFX8DAGISEL-NEXT:    s_and_saveexec_b64 s[8:9], vcc1382; GFX8DAGISEL-NEXT:    s_xor_b64 s[8:9], exec, s[8:9]1383; GFX8DAGISEL-NEXT:    s_cbranch_execz .LBB5_21384; GFX8DAGISEL-NEXT:  ; %bb.1: ; %else1385; GFX8DAGISEL-NEXT:    s_mov_b64 s[6:7], exec1386; GFX8DAGISEL-NEXT:    s_bcnt1_i32_b64 s6, s[6:7]1387; GFX8DAGISEL-NEXT:    s_and_b32 s7, s6, 11388; GFX8DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1389; GFX8DAGISEL-NEXT:    s_mul_i32 s6, s2, s71390; GFX8DAGISEL-NEXT:    s_mul_i32 s7, s3, s71391; GFX8DAGISEL-NEXT:  .LBB5_2: ; %Flow1392; GFX8DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1393; GFX8DAGISEL-NEXT:    s_or_saveexec_b64 s[2:3], s[8:9]1394; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v0, s61395; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v1, s71396; GFX8DAGISEL-NEXT:    s_xor_b64 exec, exec, s[2:3]1397; GFX8DAGISEL-NEXT:  ; %bb.3: ; %if1398; GFX8DAGISEL-NEXT:    s_mov_b64 s[6:7], exec1399; GFX8DAGISEL-NEXT:    s_bcnt1_i32_b64 s6, s[6:7]1400; GFX8DAGISEL-NEXT:    s_and_b32 s6, s6, 11401; GFX8DAGISEL-NEXT:    s_mul_i32 s4, s4, s61402; GFX8DAGISEL-NEXT:    s_mul_i32 s5, s5, s61403; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v0, s41404; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v1, s51405; GFX8DAGISEL-NEXT:  ; %bb.4: ; %endif1406; GFX8DAGISEL-NEXT:    s_or_b64 exec, exec, s[2:3]1407; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v2, s01408; GFX8DAGISEL-NEXT:    v_mov_b32_e32 v3, s11409; GFX8DAGISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1410; GFX8DAGISEL-NEXT:    s_endpgm1411;1412; GFX8GISEL-LABEL: divergent_cfg_i64:1413; GFX8GISEL:       ; %bb.0: ; %entry1414; GFX8GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241415; GFX8GISEL-NEXT:    v_cmp_le_u32_e32 vcc, 16, v01416; GFX8GISEL-NEXT:    ; implicit-def: $sgpr6_sgpr71417; GFX8GISEL-NEXT:    s_and_saveexec_b64 s[8:9], vcc1418; GFX8GISEL-NEXT:    s_xor_b64 s[8:9], exec, s[8:9]1419; GFX8GISEL-NEXT:    s_cbranch_execz .LBB5_21420; GFX8GISEL-NEXT:  ; %bb.1: ; %else1421; GFX8GISEL-NEXT:    s_mov_b64 s[6:7], exec1422; GFX8GISEL-NEXT:    s_bcnt1_i32_b64 s6, s[6:7]1423; GFX8GISEL-NEXT:    s_and_b32 s7, s6, 11424; GFX8GISEL-NEXT:    s_waitcnt lgkmcnt(0)1425; GFX8GISEL-NEXT:    s_mul_i32 s6, s2, s71426; GFX8GISEL-NEXT:    s_mul_i32 s7, s3, s71427; GFX8GISEL-NEXT:  .LBB5_2: ; %Flow1428; GFX8GISEL-NEXT:    s_waitcnt lgkmcnt(0)1429; GFX8GISEL-NEXT:    s_andn2_saveexec_b64 s[2:3], s[8:9]1430; GFX8GISEL-NEXT:    s_cbranch_execz .LBB5_41431; GFX8GISEL-NEXT:  ; %bb.3: ; %if1432; GFX8GISEL-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x341433; GFX8GISEL-NEXT:    s_mov_b64 s[6:7], exec1434; GFX8GISEL-NEXT:    s_bcnt1_i32_b64 s6, s[6:7]1435; GFX8GISEL-NEXT:    s_and_b32 s7, s6, 11436; GFX8GISEL-NEXT:    s_waitcnt lgkmcnt(0)1437; GFX8GISEL-NEXT:    s_mul_i32 s6, s4, s71438; GFX8GISEL-NEXT:    s_mul_i32 s7, s5, s71439; GFX8GISEL-NEXT:  .LBB5_4: ; %endif1440; GFX8GISEL-NEXT:    s_or_b64 exec, exec, s[2:3]1441; GFX8GISEL-NEXT:    v_mov_b32_e32 v0, s61442; GFX8GISEL-NEXT:    v_mov_b32_e32 v3, s11443; GFX8GISEL-NEXT:    v_mov_b32_e32 v1, s71444; GFX8GISEL-NEXT:    v_mov_b32_e32 v2, s01445; GFX8GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1446; GFX8GISEL-NEXT:    s_endpgm1447;1448; GFX9DAGISEL-LABEL: divergent_cfg_i64:1449; GFX9DAGISEL:       ; %bb.0: ; %entry1450; GFX9DAGISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241451; GFX9DAGISEL-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x341452; GFX9DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc, 15, v01453; GFX9DAGISEL-NEXT:    ; implicit-def: $sgpr4_sgpr51454; GFX9DAGISEL-NEXT:    s_and_saveexec_b64 s[8:9], vcc1455; GFX9DAGISEL-NEXT:    s_xor_b64 s[8:9], exec, s[8:9]1456; GFX9DAGISEL-NEXT:    s_cbranch_execz .LBB5_21457; GFX9DAGISEL-NEXT:  ; %bb.1: ; %else1458; GFX9DAGISEL-NEXT:    s_mov_b64 s[4:5], exec1459; GFX9DAGISEL-NEXT:    s_bcnt1_i32_b64 s4, s[4:5]1460; GFX9DAGISEL-NEXT:    s_and_b32 s5, s4, 11461; GFX9DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1462; GFX9DAGISEL-NEXT:    s_mul_i32 s4, s2, s51463; GFX9DAGISEL-NEXT:    s_mul_i32 s5, s3, s51464; GFX9DAGISEL-NEXT:  .LBB5_2: ; %Flow1465; GFX9DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1466; GFX9DAGISEL-NEXT:    s_or_saveexec_b64 s[2:3], s[8:9]1467; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v0, s41468; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v1, s51469; GFX9DAGISEL-NEXT:    s_xor_b64 exec, exec, s[2:3]1470; GFX9DAGISEL-NEXT:  ; %bb.3: ; %if1471; GFX9DAGISEL-NEXT:    s_mov_b64 s[4:5], exec1472; GFX9DAGISEL-NEXT:    s_bcnt1_i32_b64 s4, s[4:5]1473; GFX9DAGISEL-NEXT:    s_and_b32 s5, s4, 11474; GFX9DAGISEL-NEXT:    s_mul_i32 s4, s6, s51475; GFX9DAGISEL-NEXT:    s_mul_i32 s5, s7, s51476; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v0, s41477; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v1, s51478; GFX9DAGISEL-NEXT:  ; %bb.4: ; %endif1479; GFX9DAGISEL-NEXT:    s_or_b64 exec, exec, s[2:3]1480; GFX9DAGISEL-NEXT:    v_mov_b32_e32 v2, 01481; GFX9DAGISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1482; GFX9DAGISEL-NEXT:    s_endpgm1483;1484; GFX9GISEL-LABEL: divergent_cfg_i64:1485; GFX9GISEL:       ; %bb.0: ; %entry1486; GFX9GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241487; GFX9GISEL-NEXT:    v_cmp_le_u32_e32 vcc, 16, v01488; GFX9GISEL-NEXT:    ; implicit-def: $sgpr6_sgpr71489; GFX9GISEL-NEXT:    s_and_saveexec_b64 s[8:9], vcc1490; GFX9GISEL-NEXT:    s_xor_b64 s[8:9], exec, s[8:9]1491; GFX9GISEL-NEXT:    s_cbranch_execz .LBB5_21492; GFX9GISEL-NEXT:  ; %bb.1: ; %else1493; GFX9GISEL-NEXT:    s_mov_b64 s[6:7], exec1494; GFX9GISEL-NEXT:    s_bcnt1_i32_b64 s6, s[6:7]1495; GFX9GISEL-NEXT:    s_and_b32 s7, s6, 11496; GFX9GISEL-NEXT:    s_waitcnt lgkmcnt(0)1497; GFX9GISEL-NEXT:    s_mul_i32 s6, s2, s71498; GFX9GISEL-NEXT:    s_mul_i32 s7, s3, s71499; GFX9GISEL-NEXT:  .LBB5_2: ; %Flow1500; GFX9GISEL-NEXT:    s_waitcnt lgkmcnt(0)1501; GFX9GISEL-NEXT:    s_andn2_saveexec_b64 s[2:3], s[8:9]1502; GFX9GISEL-NEXT:    s_cbranch_execz .LBB5_41503; GFX9GISEL-NEXT:  ; %bb.3: ; %if1504; GFX9GISEL-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x341505; GFX9GISEL-NEXT:    s_mov_b64 s[4:5], exec1506; GFX9GISEL-NEXT:    s_bcnt1_i32_b64 s4, s[4:5]1507; GFX9GISEL-NEXT:    s_and_b32 s4, s4, 11508; GFX9GISEL-NEXT:    s_waitcnt lgkmcnt(0)1509; GFX9GISEL-NEXT:    s_mul_i32 s6, s6, s41510; GFX9GISEL-NEXT:    s_mul_i32 s7, s7, s41511; GFX9GISEL-NEXT:  .LBB5_4: ; %endif1512; GFX9GISEL-NEXT:    s_or_b64 exec, exec, s[2:3]1513; GFX9GISEL-NEXT:    v_mov_b32_e32 v0, s61514; GFX9GISEL-NEXT:    v_mov_b32_e32 v1, s71515; GFX9GISEL-NEXT:    v_mov_b32_e32 v2, 01516; GFX9GISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1517; GFX9GISEL-NEXT:    s_endpgm1518;1519; GFX1064DAGISEL-LABEL: divergent_cfg_i64:1520; GFX1064DAGISEL:       ; %bb.0: ; %entry1521; GFX1064DAGISEL-NEXT:    s_clause 0x11522; GFX1064DAGISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241523; GFX1064DAGISEL-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x341524; GFX1064DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc, 15, v01525; GFX1064DAGISEL-NEXT:    ; implicit-def: $sgpr4_sgpr51526; GFX1064DAGISEL-NEXT:    s_and_saveexec_b64 s[8:9], vcc1527; GFX1064DAGISEL-NEXT:    s_xor_b64 s[8:9], exec, s[8:9]1528; GFX1064DAGISEL-NEXT:    s_cbranch_execz .LBB5_21529; GFX1064DAGISEL-NEXT:  ; %bb.1: ; %else1530; GFX1064DAGISEL-NEXT:    s_mov_b64 s[4:5], exec1531; GFX1064DAGISEL-NEXT:    s_bcnt1_i32_b64 s4, s[4:5]1532; GFX1064DAGISEL-NEXT:    s_and_b32 s5, s4, 11533; GFX1064DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1534; GFX1064DAGISEL-NEXT:    s_mul_i32 s4, s2, s51535; GFX1064DAGISEL-NEXT:    s_mul_i32 s5, s3, s51536; GFX1064DAGISEL-NEXT:  .LBB5_2: ; %Flow1537; GFX1064DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1538; GFX1064DAGISEL-NEXT:    s_or_saveexec_b64 s[2:3], s[8:9]1539; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v0, s41540; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v1, s51541; GFX1064DAGISEL-NEXT:    s_xor_b64 exec, exec, s[2:3]1542; GFX1064DAGISEL-NEXT:  ; %bb.3: ; %if1543; GFX1064DAGISEL-NEXT:    s_mov_b64 s[4:5], exec1544; GFX1064DAGISEL-NEXT:    s_bcnt1_i32_b64 s4, s[4:5]1545; GFX1064DAGISEL-NEXT:    s_and_b32 s5, s4, 11546; GFX1064DAGISEL-NEXT:    s_mul_i32 s4, s6, s51547; GFX1064DAGISEL-NEXT:    s_mul_i32 s5, s7, s51548; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v0, s41549; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v1, s51550; GFX1064DAGISEL-NEXT:  ; %bb.4: ; %endif1551; GFX1064DAGISEL-NEXT:    s_or_b64 exec, exec, s[2:3]1552; GFX1064DAGISEL-NEXT:    v_mov_b32_e32 v2, 01553; GFX1064DAGISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1554; GFX1064DAGISEL-NEXT:    s_endpgm1555;1556; GFX1064GISEL-LABEL: divergent_cfg_i64:1557; GFX1064GISEL:       ; %bb.0: ; %entry1558; GFX1064GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241559; GFX1064GISEL-NEXT:    v_cmp_le_u32_e32 vcc, 16, v01560; GFX1064GISEL-NEXT:    ; implicit-def: $sgpr6_sgpr71561; GFX1064GISEL-NEXT:    s_and_saveexec_b64 s[8:9], vcc1562; GFX1064GISEL-NEXT:    s_xor_b64 s[8:9], exec, s[8:9]1563; GFX1064GISEL-NEXT:    s_cbranch_execz .LBB5_21564; GFX1064GISEL-NEXT:  ; %bb.1: ; %else1565; GFX1064GISEL-NEXT:    s_mov_b64 s[6:7], exec1566; GFX1064GISEL-NEXT:    s_bcnt1_i32_b64 s6, s[6:7]1567; GFX1064GISEL-NEXT:    s_and_b32 s7, s6, 11568; GFX1064GISEL-NEXT:    s_waitcnt lgkmcnt(0)1569; GFX1064GISEL-NEXT:    s_mul_i32 s6, s2, s71570; GFX1064GISEL-NEXT:    s_mul_i32 s7, s3, s71571; GFX1064GISEL-NEXT:  .LBB5_2: ; %Flow1572; GFX1064GISEL-NEXT:    s_waitcnt lgkmcnt(0)1573; GFX1064GISEL-NEXT:    s_andn2_saveexec_b64 s[2:3], s[8:9]1574; GFX1064GISEL-NEXT:    s_cbranch_execz .LBB5_41575; GFX1064GISEL-NEXT:  ; %bb.3: ; %if1576; GFX1064GISEL-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x341577; GFX1064GISEL-NEXT:    s_mov_b64 s[4:5], exec1578; GFX1064GISEL-NEXT:    s_bcnt1_i32_b64 s4, s[4:5]1579; GFX1064GISEL-NEXT:    s_and_b32 s4, s4, 11580; GFX1064GISEL-NEXT:    s_waitcnt lgkmcnt(0)1581; GFX1064GISEL-NEXT:    s_mul_i32 s6, s6, s41582; GFX1064GISEL-NEXT:    s_mul_i32 s7, s7, s41583; GFX1064GISEL-NEXT:  .LBB5_4: ; %endif1584; GFX1064GISEL-NEXT:    s_or_b64 exec, exec, s[2:3]1585; GFX1064GISEL-NEXT:    v_mov_b32_e32 v0, s61586; GFX1064GISEL-NEXT:    v_mov_b32_e32 v1, s71587; GFX1064GISEL-NEXT:    v_mov_b32_e32 v2, 01588; GFX1064GISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1589; GFX1064GISEL-NEXT:    s_endpgm1590;1591; GFX1032DAGISEL-LABEL: divergent_cfg_i64:1592; GFX1032DAGISEL:       ; %bb.0: ; %entry1593; GFX1032DAGISEL-NEXT:    s_clause 0x11594; GFX1032DAGISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241595; GFX1032DAGISEL-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x341596; GFX1032DAGISEL-NEXT:    v_cmp_lt_u32_e32 vcc_lo, 15, v01597; GFX1032DAGISEL-NEXT:    ; implicit-def: $sgpr4_sgpr51598; GFX1032DAGISEL-NEXT:    s_and_saveexec_b32 s8, vcc_lo1599; GFX1032DAGISEL-NEXT:    s_xor_b32 s8, exec_lo, s81600; GFX1032DAGISEL-NEXT:    s_cbranch_execz .LBB5_21601; GFX1032DAGISEL-NEXT:  ; %bb.1: ; %else1602; GFX1032DAGISEL-NEXT:    s_mov_b32 s4, exec_lo1603; GFX1032DAGISEL-NEXT:    s_bcnt1_i32_b32 s4, s41604; GFX1032DAGISEL-NEXT:    s_and_b32 s5, s4, 11605; GFX1032DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1606; GFX1032DAGISEL-NEXT:    s_mul_i32 s4, s2, s51607; GFX1032DAGISEL-NEXT:    s_mul_i32 s5, s3, s51608; GFX1032DAGISEL-NEXT:  .LBB5_2: ; %Flow1609; GFX1032DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1610; GFX1032DAGISEL-NEXT:    s_or_saveexec_b32 s2, s81611; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v0, s41612; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v1, s51613; GFX1032DAGISEL-NEXT:    s_xor_b32 exec_lo, exec_lo, s21614; GFX1032DAGISEL-NEXT:  ; %bb.3: ; %if1615; GFX1032DAGISEL-NEXT:    s_mov_b32 s3, exec_lo1616; GFX1032DAGISEL-NEXT:    s_bcnt1_i32_b32 s3, s31617; GFX1032DAGISEL-NEXT:    s_and_b32 s3, s3, 11618; GFX1032DAGISEL-NEXT:    s_mul_i32 s4, s6, s31619; GFX1032DAGISEL-NEXT:    s_mul_i32 s5, s7, s31620; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v0, s41621; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v1, s51622; GFX1032DAGISEL-NEXT:  ; %bb.4: ; %endif1623; GFX1032DAGISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s21624; GFX1032DAGISEL-NEXT:    v_mov_b32_e32 v2, 01625; GFX1032DAGISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1626; GFX1032DAGISEL-NEXT:    s_endpgm1627;1628; GFX1032GISEL-LABEL: divergent_cfg_i64:1629; GFX1032GISEL:       ; %bb.0: ; %entry1630; GFX1032GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241631; GFX1032GISEL-NEXT:    v_cmp_le_u32_e32 vcc_lo, 16, v01632; GFX1032GISEL-NEXT:    ; implicit-def: $sgpr6_sgpr71633; GFX1032GISEL-NEXT:    s_and_saveexec_b32 s8, vcc_lo1634; GFX1032GISEL-NEXT:    s_xor_b32 s8, exec_lo, s81635; GFX1032GISEL-NEXT:    s_cbranch_execz .LBB5_21636; GFX1032GISEL-NEXT:  ; %bb.1: ; %else1637; GFX1032GISEL-NEXT:    s_mov_b32 s6, exec_lo1638; GFX1032GISEL-NEXT:    s_bcnt1_i32_b32 s6, s61639; GFX1032GISEL-NEXT:    s_and_b32 s7, s6, 11640; GFX1032GISEL-NEXT:    s_waitcnt lgkmcnt(0)1641; GFX1032GISEL-NEXT:    s_mul_i32 s6, s2, s71642; GFX1032GISEL-NEXT:    s_mul_i32 s7, s3, s71643; GFX1032GISEL-NEXT:  .LBB5_2: ; %Flow1644; GFX1032GISEL-NEXT:    s_waitcnt lgkmcnt(0)1645; GFX1032GISEL-NEXT:    s_andn2_saveexec_b32 s2, s81646; GFX1032GISEL-NEXT:    s_cbranch_execz .LBB5_41647; GFX1032GISEL-NEXT:  ; %bb.3: ; %if1648; GFX1032GISEL-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x341649; GFX1032GISEL-NEXT:    s_mov_b32 s3, exec_lo1650; GFX1032GISEL-NEXT:    s_bcnt1_i32_b32 s3, s31651; GFX1032GISEL-NEXT:    s_and_b32 s3, s3, 11652; GFX1032GISEL-NEXT:    s_waitcnt lgkmcnt(0)1653; GFX1032GISEL-NEXT:    s_mul_i32 s6, s6, s31654; GFX1032GISEL-NEXT:    s_mul_i32 s7, s7, s31655; GFX1032GISEL-NEXT:  .LBB5_4: ; %endif1656; GFX1032GISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s21657; GFX1032GISEL-NEXT:    v_mov_b32_e32 v0, s61658; GFX1032GISEL-NEXT:    v_mov_b32_e32 v1, s71659; GFX1032GISEL-NEXT:    v_mov_b32_e32 v2, 01660; GFX1032GISEL-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1661; GFX1032GISEL-NEXT:    s_endpgm1662;1663; GFX1164DAGISEL-LABEL: divergent_cfg_i64:1664; GFX1164DAGISEL:       ; %bb.0: ; %entry1665; GFX1164DAGISEL-NEXT:    s_clause 0x11666; GFX1164DAGISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241667; GFX1164DAGISEL-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341668; GFX1164DAGISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v01669; GFX1164DAGISEL-NEXT:    s_mov_b64 s[8:9], exec1670; GFX1164DAGISEL-NEXT:    ; implicit-def: $sgpr6_sgpr71671; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1672; GFX1164DAGISEL-NEXT:    v_cmpx_lt_u32_e32 15, v01673; GFX1164DAGISEL-NEXT:    s_xor_b64 s[8:9], exec, s[8:9]1674; GFX1164DAGISEL-NEXT:    s_cbranch_execz .LBB5_21675; GFX1164DAGISEL-NEXT:  ; %bb.1: ; %else1676; GFX1164DAGISEL-NEXT:    s_mov_b64 s[6:7], exec1677; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)1678; GFX1164DAGISEL-NEXT:    s_bcnt1_i32_b64 s6, s[6:7]1679; GFX1164DAGISEL-NEXT:    s_and_b32 s7, s6, 11680; GFX1164DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1681; GFX1164DAGISEL-NEXT:    s_mul_i32 s6, s2, s71682; GFX1164DAGISEL-NEXT:    s_mul_i32 s7, s3, s71683; GFX1164DAGISEL-NEXT:  .LBB5_2: ; %Flow1684; GFX1164DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1685; GFX1164DAGISEL-NEXT:    s_or_saveexec_b64 s[2:3], s[8:9]1686; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v0, s61687; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v1, s71688; GFX1164DAGISEL-NEXT:    s_xor_b64 exec, exec, s[2:3]1689; GFX1164DAGISEL-NEXT:  ; %bb.3: ; %if1690; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)1691; GFX1164DAGISEL-NEXT:    s_mov_b64 s[6:7], exec1692; GFX1164DAGISEL-NEXT:    s_bcnt1_i32_b64 s6, s[6:7]1693; GFX1164DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)1694; GFX1164DAGISEL-NEXT:    s_and_b32 s6, s6, 11695; GFX1164DAGISEL-NEXT:    s_mul_i32 s4, s4, s61696; GFX1164DAGISEL-NEXT:    s_mul_i32 s5, s5, s61697; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v0, s41698; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v1, s51699; GFX1164DAGISEL-NEXT:  ; %bb.4: ; %endif1700; GFX1164DAGISEL-NEXT:    s_or_b64 exec, exec, s[2:3]1701; GFX1164DAGISEL-NEXT:    v_mov_b32_e32 v2, 01702; GFX1164DAGISEL-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1703; GFX1164DAGISEL-NEXT:    s_endpgm1704;1705; GFX1164GISEL-LABEL: divergent_cfg_i64:1706; GFX1164GISEL:       ; %bb.0: ; %entry1707; GFX1164GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241708; GFX1164GISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v01709; GFX1164GISEL-NEXT:    s_mov_b64 s[8:9], exec1710; GFX1164GISEL-NEXT:    ; implicit-def: $sgpr6_sgpr71711; GFX1164GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1712; GFX1164GISEL-NEXT:    v_cmpx_le_u32_e32 16, v01713; GFX1164GISEL-NEXT:    s_xor_b64 s[8:9], exec, s[8:9]1714; GFX1164GISEL-NEXT:    s_cbranch_execz .LBB5_21715; GFX1164GISEL-NEXT:  ; %bb.1: ; %else1716; GFX1164GISEL-NEXT:    s_mov_b64 s[6:7], exec1717; GFX1164GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)1718; GFX1164GISEL-NEXT:    s_bcnt1_i32_b64 s6, s[6:7]1719; GFX1164GISEL-NEXT:    s_and_b32 s7, s6, 11720; GFX1164GISEL-NEXT:    s_waitcnt lgkmcnt(0)1721; GFX1164GISEL-NEXT:    s_mul_i32 s6, s2, s71722; GFX1164GISEL-NEXT:    s_mul_i32 s7, s3, s71723; GFX1164GISEL-NEXT:  .LBB5_2: ; %Flow1724; GFX1164GISEL-NEXT:    s_waitcnt lgkmcnt(0)1725; GFX1164GISEL-NEXT:    s_and_not1_saveexec_b64 s[2:3], s[8:9]1726; GFX1164GISEL-NEXT:    s_cbranch_execz .LBB5_41727; GFX1164GISEL-NEXT:  ; %bb.3: ; %if1728; GFX1164GISEL-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341729; GFX1164GISEL-NEXT:    s_mov_b64 s[6:7], exec1730; GFX1164GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)1731; GFX1164GISEL-NEXT:    s_bcnt1_i32_b64 s6, s[6:7]1732; GFX1164GISEL-NEXT:    s_and_b32 s7, s6, 11733; GFX1164GISEL-NEXT:    s_waitcnt lgkmcnt(0)1734; GFX1164GISEL-NEXT:    s_mul_i32 s6, s4, s71735; GFX1164GISEL-NEXT:    s_mul_i32 s7, s5, s71736; GFX1164GISEL-NEXT:  .LBB5_4: ; %endif1737; GFX1164GISEL-NEXT:    s_or_b64 exec, exec, s[2:3]1738; GFX1164GISEL-NEXT:    v_mov_b32_e32 v0, s61739; GFX1164GISEL-NEXT:    v_mov_b32_e32 v1, s71740; GFX1164GISEL-NEXT:    v_mov_b32_e32 v2, 01741; GFX1164GISEL-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1742; GFX1164GISEL-NEXT:    s_endpgm1743;1744; GFX1132DAGISEL-LABEL: divergent_cfg_i64:1745; GFX1132DAGISEL:       ; %bb.0: ; %entry1746; GFX1132DAGISEL-NEXT:    s_clause 0x11747; GFX1132DAGISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241748; GFX1132DAGISEL-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341749; GFX1132DAGISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v01750; GFX1132DAGISEL-NEXT:    s_mov_b32 s8, exec_lo1751; GFX1132DAGISEL-NEXT:    ; implicit-def: $sgpr6_sgpr71752; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1753; GFX1132DAGISEL-NEXT:    v_cmpx_lt_u32_e32 15, v01754; GFX1132DAGISEL-NEXT:    s_xor_b32 s8, exec_lo, s81755; GFX1132DAGISEL-NEXT:    s_cbranch_execz .LBB5_21756; GFX1132DAGISEL-NEXT:  ; %bb.1: ; %else1757; GFX1132DAGISEL-NEXT:    s_mov_b32 s6, exec_lo1758; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)1759; GFX1132DAGISEL-NEXT:    s_bcnt1_i32_b32 s6, s61760; GFX1132DAGISEL-NEXT:    s_and_b32 s7, s6, 11761; GFX1132DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1762; GFX1132DAGISEL-NEXT:    s_mul_i32 s6, s2, s71763; GFX1132DAGISEL-NEXT:    s_mul_i32 s7, s3, s71764; GFX1132DAGISEL-NEXT:  .LBB5_2: ; %Flow1765; GFX1132DAGISEL-NEXT:    s_waitcnt lgkmcnt(0)1766; GFX1132DAGISEL-NEXT:    s_or_saveexec_b32 s2, s81767; GFX1132DAGISEL-NEXT:    v_dual_mov_b32 v0, s6 :: v_dual_mov_b32 v1, s71768; GFX1132DAGISEL-NEXT:    s_xor_b32 exec_lo, exec_lo, s21769; GFX1132DAGISEL-NEXT:  ; %bb.3: ; %if1770; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)1771; GFX1132DAGISEL-NEXT:    s_mov_b32 s3, exec_lo1772; GFX1132DAGISEL-NEXT:    s_bcnt1_i32_b32 s3, s31773; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)1774; GFX1132DAGISEL-NEXT:    s_and_b32 s3, s3, 11775; GFX1132DAGISEL-NEXT:    s_mul_i32 s4, s4, s31776; GFX1132DAGISEL-NEXT:    s_mul_i32 s5, s5, s31777; GFX1132DAGISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)1778; GFX1132DAGISEL-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v1, s51779; GFX1132DAGISEL-NEXT:  ; %bb.4: ; %endif1780; GFX1132DAGISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s21781; GFX1132DAGISEL-NEXT:    v_mov_b32_e32 v2, 01782; GFX1132DAGISEL-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1783; GFX1132DAGISEL-NEXT:    s_endpgm1784;1785; GFX1132GISEL-LABEL: divergent_cfg_i64:1786; GFX1132GISEL:       ; %bb.0: ; %entry1787; GFX1132GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241788; GFX1132GISEL-NEXT:    v_and_b32_e32 v0, 0x3ff, v01789; GFX1132GISEL-NEXT:    s_mov_b32 s8, exec_lo1790; GFX1132GISEL-NEXT:    ; implicit-def: $sgpr6_sgpr71791; GFX1132GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)1792; GFX1132GISEL-NEXT:    v_cmpx_le_u32_e32 16, v01793; GFX1132GISEL-NEXT:    s_xor_b32 s8, exec_lo, s81794; GFX1132GISEL-NEXT:    s_cbranch_execz .LBB5_21795; GFX1132GISEL-NEXT:  ; %bb.1: ; %else1796; GFX1132GISEL-NEXT:    s_mov_b32 s6, exec_lo1797; GFX1132GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)1798; GFX1132GISEL-NEXT:    s_bcnt1_i32_b32 s6, s61799; GFX1132GISEL-NEXT:    s_and_b32 s7, s6, 11800; GFX1132GISEL-NEXT:    s_waitcnt lgkmcnt(0)1801; GFX1132GISEL-NEXT:    s_mul_i32 s6, s2, s71802; GFX1132GISEL-NEXT:    s_mul_i32 s7, s3, s71803; GFX1132GISEL-NEXT:  .LBB5_2: ; %Flow1804; GFX1132GISEL-NEXT:    s_waitcnt lgkmcnt(0)1805; GFX1132GISEL-NEXT:    s_and_not1_saveexec_b32 s2, s81806; GFX1132GISEL-NEXT:    s_cbranch_execz .LBB5_41807; GFX1132GISEL-NEXT:  ; %bb.3: ; %if1808; GFX1132GISEL-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341809; GFX1132GISEL-NEXT:    s_mov_b32 s3, exec_lo1810; GFX1132GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)1811; GFX1132GISEL-NEXT:    s_bcnt1_i32_b32 s3, s31812; GFX1132GISEL-NEXT:    s_and_b32 s3, s3, 11813; GFX1132GISEL-NEXT:    s_waitcnt lgkmcnt(0)1814; GFX1132GISEL-NEXT:    s_mul_i32 s6, s4, s31815; GFX1132GISEL-NEXT:    s_mul_i32 s7, s5, s31816; GFX1132GISEL-NEXT:  .LBB5_4: ; %endif1817; GFX1132GISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s21818; GFX1132GISEL-NEXT:    v_dual_mov_b32 v0, s6 :: v_dual_mov_b32 v1, s71819; GFX1132GISEL-NEXT:    v_mov_b32_e32 v2, 01820; GFX1132GISEL-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1821; GFX1132GISEL-NEXT:    s_endpgm1822entry:1823  %tid = call i32 @llvm.amdgcn.workitem.id.x()1824  %d_cmp = icmp ult i32 %tid, 161825  br i1 %d_cmp, label %if, label %else1826 1827if:1828  %reducedValTid = call i64 @llvm.amdgcn.wave.reduce.xor.i64(i64 %in2, i32 1)1829  br label %endif1830 1831else:1832  %reducedValIn = call i64 @llvm.amdgcn.wave.reduce.xor.i64(i64 %in, i32 1)1833  br label %endif1834 1835endif:1836  %combine = phi i64 [%reducedValTid, %if], [%reducedValIn, %else]1837  store i64 %combine, ptr addrspace(1) %out1838  ret void1839}1840;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:1841; GFX10DAGISEL: {{.*}}1842; GFX10GISEL: {{.*}}1843; GFX11DAGISEL: {{.*}}1844; GFX11GISEL: {{.*}}1845