brintos

brintos / llvm-project-archived public Read only

0
0
Text · 29.2 KiB · f497752 Raw
864 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -amdgpu-scalar-ir-passes=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefix=GCN %s3 4define float @select_undef_lhs(float %val, i1 %cond) {5; GCN-LABEL: select_undef_lhs:6; GCN:       ; %bb.0:7; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8; GCN-NEXT:    s_setpc_b64 s[30:31]9  %sel = select i1 %cond, float poison, float %val10  ret float %sel11}12 13define float @select_undef_rhs(float %val, i1 %cond) {14; GCN-LABEL: select_undef_rhs:15; GCN:       ; %bb.0:16; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)17; GCN-NEXT:    s_setpc_b64 s[30:31]18  %sel = select i1 %cond, float %val, float poison19  ret float %sel20}21 22define void @select_undef_n1(ptr addrspace(1) %a, i32 %c) {23; GCN-LABEL: select_undef_n1:24; GCN:       ; %bb.0:25; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)26; GCN-NEXT:    v_mov_b32_e32 v2, 1.027; GCN-NEXT:    global_store_dword v[0:1], v2, off28; GCN-NEXT:    s_waitcnt vmcnt(0)29; GCN-NEXT:    s_setpc_b64 s[30:31]30  %cc = icmp eq i32 %c, 031  %sel = select i1 %cc, float 1.000000e+00, float poison32  store float %sel, ptr addrspace(1) %a33  ret void34}35 36define void @select_undef_n2(ptr addrspace(1) %a, i32 %c) {37; GCN-LABEL: select_undef_n2:38; GCN:       ; %bb.0:39; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)40; GCN-NEXT:    v_mov_b32_e32 v2, 1.041; GCN-NEXT:    global_store_dword v[0:1], v2, off42; GCN-NEXT:    s_waitcnt vmcnt(0)43; GCN-NEXT:    s_setpc_b64 s[30:31]44  %cc = icmp eq i32 %c, 045  %sel = select i1 %cc, float poison, float 1.000000e+0046  store float %sel, ptr addrspace(1) %a47  ret void48}49 50declare float @llvm.amdgcn.rcp.f32(float)51 52 53; Make sure the vector undef isn't lowered into 0s.54define amdgpu_kernel void @undef_v6f32(ptr addrspace(3) %ptr, i1 %cond) {55; GCN-LABEL: undef_v6f32:56; GCN:       ; %bb.0: ; %entry57; GCN-NEXT:    s_load_dword s0, s[8:9], 0x458; GCN-NEXT:    ; implicit-def: $vgpr459; GCN-NEXT:    s_waitcnt lgkmcnt(0)60; GCN-NEXT:    s_bitcmp1_b32 s0, 061; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 062; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -163; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]64; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v065; GCN-NEXT:    ; implicit-def: $vgpr066; GCN-NEXT:  .LBB4_1: ; %loop67; GCN-NEXT:    ; =>This Inner Loop Header: Depth=168; GCN-NEXT:    ds_read_b128 v[6:9], v069; GCN-NEXT:    ds_read_b64 v[10:11], v070; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]71; GCN-NEXT:    s_waitcnt lgkmcnt(1)72; GCN-NEXT:    v_add_f32_e32 v3, v9, v373; GCN-NEXT:    s_waitcnt lgkmcnt(0)74; GCN-NEXT:    v_add_f32_e32 v5, v11, v575; GCN-NEXT:    v_add_f32_e32 v4, v10, v476; GCN-NEXT:    v_add_f32_e32 v2, v8, v277; GCN-NEXT:    v_add_f32_e32 v1, v7, v178; GCN-NEXT:    v_add_f32_e32 v0, v6, v079; GCN-NEXT:    s_cbranch_vccnz .LBB4_180; GCN-NEXT:  ; %bb.2: ; %ret81; GCN-NEXT:    ds_write_b64 v0, v[4:5]82; GCN-NEXT:    ds_write_b128 v0, v[0:3]83; GCN-NEXT:    s_endpgm84entry:85  br label %loop86 87loop:88  %phi = phi <6 x float> [ poison, %entry ], [ %add, %loop ]89  %load = load volatile <6 x float>, ptr addrspace(3) poison90  %add = fadd <6 x float> %load, %phi91  br i1 %cond, label %loop, label %ret92 93ret:94  store volatile <6 x float> %add, ptr addrspace(3) poison95  ret void96}97 98define amdgpu_kernel void @undef_v6i32(ptr addrspace(3) %ptr, i1 %cond) {99; GCN-LABEL: undef_v6i32:100; GCN:       ; %bb.0: ; %entry101; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4102; GCN-NEXT:    ; implicit-def: $vgpr4103; GCN-NEXT:    s_waitcnt lgkmcnt(0)104; GCN-NEXT:    s_bitcmp1_b32 s0, 0105; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0106; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1107; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]108; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0109; GCN-NEXT:    ; implicit-def: $vgpr0110; GCN-NEXT:  .LBB5_1: ; %loop111; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1112; GCN-NEXT:    ds_read_b128 v[6:9], v0113; GCN-NEXT:    ds_read_b64 v[10:11], v0114; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]115; GCN-NEXT:    s_waitcnt lgkmcnt(1)116; GCN-NEXT:    v_add_u32_e32 v3, v9, v3117; GCN-NEXT:    s_waitcnt lgkmcnt(0)118; GCN-NEXT:    v_add_u32_e32 v5, v11, v5119; GCN-NEXT:    v_add_u32_e32 v4, v10, v4120; GCN-NEXT:    v_add_u32_e32 v2, v8, v2121; GCN-NEXT:    v_add_u32_e32 v1, v7, v1122; GCN-NEXT:    v_add_u32_e32 v0, v6, v0123; GCN-NEXT:    s_cbranch_vccnz .LBB5_1124; GCN-NEXT:  ; %bb.2: ; %ret125; GCN-NEXT:    ds_write_b64 v0, v[4:5]126; GCN-NEXT:    ds_write_b128 v0, v[0:3]127; GCN-NEXT:    s_endpgm128entry:129  br label %loop130 131loop:132  %phi = phi <6 x i32> [ poison, %entry ], [ %add, %loop ]133  %load = load volatile <6 x i32>, ptr addrspace(3) poison134  %add = add <6 x i32> %load, %phi135  br i1 %cond, label %loop, label %ret136 137ret:138  store volatile <6 x i32> %add, ptr addrspace(3) poison139  ret void140}141 142; Make sure the vector undef isn't lowered into 0s.143define amdgpu_kernel void @undef_v5f32(ptr addrspace(3) %ptr, i1 %cond) {144; GCN-LABEL: undef_v5f32:145; GCN:       ; %bb.0: ; %entry146; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4147; GCN-NEXT:    ; implicit-def: $vgpr4148; GCN-NEXT:    s_waitcnt lgkmcnt(0)149; GCN-NEXT:    s_bitcmp1_b32 s0, 0150; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0151; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1152; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]153; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0154; GCN-NEXT:    ; implicit-def: $vgpr0155; GCN-NEXT:  .LBB6_1: ; %loop156; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1157; GCN-NEXT:    ds_read_b128 v[5:8], v0158; GCN-NEXT:    ds_read_b32 v9, v0159; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]160; GCN-NEXT:    s_waitcnt lgkmcnt(1)161; GCN-NEXT:    v_add_f32_e32 v3, v8, v3162; GCN-NEXT:    s_waitcnt lgkmcnt(0)163; GCN-NEXT:    v_add_f32_e32 v4, v9, v4164; GCN-NEXT:    v_add_f32_e32 v2, v7, v2165; GCN-NEXT:    v_add_f32_e32 v1, v6, v1166; GCN-NEXT:    v_add_f32_e32 v0, v5, v0167; GCN-NEXT:    s_cbranch_vccnz .LBB6_1168; GCN-NEXT:  ; %bb.2: ; %ret169; GCN-NEXT:    ds_write_b32 v0, v4170; GCN-NEXT:    ds_write_b128 v0, v[0:3]171; GCN-NEXT:    s_endpgm172entry:173  br label %loop174 175loop:176  %phi = phi <5 x float> [ poison, %entry ], [ %add, %loop ]177  %load = load volatile <5 x float>, ptr addrspace(3) poison178  %add = fadd <5 x float> %load, %phi179  br i1 %cond, label %loop, label %ret180 181ret:182  store volatile <5 x float> %add, ptr addrspace(3) poison183  ret void184}185 186define amdgpu_kernel void @undef_v5i32(ptr addrspace(3) %ptr, i1 %cond) {187; GCN-LABEL: undef_v5i32:188; GCN:       ; %bb.0: ; %entry189; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4190; GCN-NEXT:    ; implicit-def: $vgpr4191; GCN-NEXT:    s_waitcnt lgkmcnt(0)192; GCN-NEXT:    s_bitcmp1_b32 s0, 0193; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0194; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1195; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]196; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0197; GCN-NEXT:    ; implicit-def: $vgpr0198; GCN-NEXT:  .LBB7_1: ; %loop199; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1200; GCN-NEXT:    ds_read_b128 v[5:8], v0201; GCN-NEXT:    ds_read_b32 v9, v0202; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]203; GCN-NEXT:    s_waitcnt lgkmcnt(1)204; GCN-NEXT:    v_add_u32_e32 v3, v8, v3205; GCN-NEXT:    s_waitcnt lgkmcnt(0)206; GCN-NEXT:    v_add_u32_e32 v4, v9, v4207; GCN-NEXT:    v_add_u32_e32 v2, v7, v2208; GCN-NEXT:    v_add_u32_e32 v1, v6, v1209; GCN-NEXT:    v_add_u32_e32 v0, v5, v0210; GCN-NEXT:    s_cbranch_vccnz .LBB7_1211; GCN-NEXT:  ; %bb.2: ; %ret212; GCN-NEXT:    ds_write_b32 v0, v4213; GCN-NEXT:    ds_write_b128 v0, v[0:3]214; GCN-NEXT:    s_endpgm215entry:216  br label %loop217 218loop:219  %phi = phi <5 x i32> [ poison, %entry ], [ %add, %loop ]220  %load = load volatile <5 x i32>, ptr addrspace(3) poison221  %add = add <5 x i32> %load, %phi222  br i1 %cond, label %loop, label %ret223 224ret:225  store volatile <5 x i32> %add, ptr addrspace(3) poison226  ret void227}228 229; Make sure the vector undef isn't lowered into 0s.230define amdgpu_kernel void @undef_v3f64(ptr addrspace(3) %ptr, i1 %cond) {231; GCN-LABEL: undef_v3f64:232; GCN:       ; %bb.0: ; %entry233; GCN-NEXT:    s_load_dwordx2 s[2:3], s[8:9], 0x0234; GCN-NEXT:    ; implicit-def: $vgpr4_vgpr5235; GCN-NEXT:    s_waitcnt lgkmcnt(0)236; GCN-NEXT:    s_bitcmp1_b32 s3, 0237; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0238; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1239; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]240; GCN-NEXT:    v_mov_b32_e32 v6, s2241; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0242; GCN-NEXT:    ; implicit-def: $vgpr0_vgpr1243; GCN-NEXT:  .LBB8_1: ; %loop244; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1245; GCN-NEXT:    ds_read_b128 v[7:10], v6246; GCN-NEXT:    ds_read_b64 v[11:12], v6 offset:16247; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]248; GCN-NEXT:    s_waitcnt lgkmcnt(1)249; GCN-NEXT:    v_add_f64 v[2:3], v[9:10], v[2:3]250; GCN-NEXT:    s_waitcnt lgkmcnt(0)251; GCN-NEXT:    v_add_f64 v[4:5], v[11:12], v[4:5]252; GCN-NEXT:    v_add_f64 v[0:1], v[7:8], v[0:1]253; GCN-NEXT:    s_cbranch_vccnz .LBB8_1254; GCN-NEXT:  ; %bb.2: ; %ret255; GCN-NEXT:    v_mov_b32_e32 v6, s2256; GCN-NEXT:    ds_write_b64 v6, v[4:5] offset:16257; GCN-NEXT:    ds_write_b128 v6, v[0:3]258; GCN-NEXT:    s_endpgm259entry:260  br label %loop261 262loop:263  %phi = phi <3 x double> [ poison, %entry ], [ %add, %loop ]264  %load = load volatile <3 x double>, ptr addrspace(3) %ptr265  %add = fadd <3 x double> %load, %phi266  br i1 %cond, label %loop, label %ret267 268ret:269  store volatile <3 x double> %add, ptr addrspace(3) %ptr270  ret void271}272 273define amdgpu_kernel void @undef_v3i64(ptr addrspace(3) %ptr, i1 %cond) {274; GCN-LABEL: undef_v3i64:275; GCN:       ; %bb.0: ; %entry276; GCN-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x0277; GCN-NEXT:    ; implicit-def: $vgpr4_vgpr5278; GCN-NEXT:    s_waitcnt lgkmcnt(0)279; GCN-NEXT:    s_bitcmp1_b32 s5, 0280; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0281; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1282; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]283; GCN-NEXT:    v_mov_b32_e32 v6, s4284; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0285; GCN-NEXT:    ; implicit-def: $vgpr0_vgpr1286; GCN-NEXT:  .LBB9_1: ; %loop287; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1288; GCN-NEXT:    ds_read_b128 v[7:10], v6289; GCN-NEXT:    ds_read_b64 v[11:12], v6 offset:16290; GCN-NEXT:    s_waitcnt lgkmcnt(1)291; GCN-NEXT:    v_add_co_u32_e64 v0, s[2:3], v7, v0292; GCN-NEXT:    s_waitcnt lgkmcnt(0)293; GCN-NEXT:    v_add_co_u32_e32 v4, vcc, v11, v4294; GCN-NEXT:    v_addc_co_u32_e32 v5, vcc, v12, v5, vcc295; GCN-NEXT:    v_add_co_u32_e32 v2, vcc, v9, v2296; GCN-NEXT:    v_addc_co_u32_e32 v3, vcc, v10, v3, vcc297; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]298; GCN-NEXT:    v_addc_co_u32_e64 v1, s[2:3], v8, v1, s[2:3]299; GCN-NEXT:    s_cbranch_vccnz .LBB9_1300; GCN-NEXT:  ; %bb.2: ; %ret301; GCN-NEXT:    v_mov_b32_e32 v6, s4302; GCN-NEXT:    ds_write_b64 v6, v[4:5] offset:16303; GCN-NEXT:    ds_write_b128 v6, v[0:3]304; GCN-NEXT:    s_endpgm305entry:306  br label %loop307 308loop:309  %phi = phi <3 x i64> [ poison, %entry ], [ %add, %loop ]310  %load = load volatile <3 x i64>, ptr addrspace(3) %ptr311  %add = add <3 x i64> %load, %phi312  br i1 %cond, label %loop, label %ret313 314ret:315  store volatile <3 x i64> %add, ptr addrspace(3) %ptr316  ret void317}318 319; Make sure the vector undef isn't lowered into 0s.320define amdgpu_kernel void @undef_v4f16(ptr addrspace(3) %ptr, i1 %cond) {321; GCN-LABEL: undef_v4f16:322; GCN:       ; %bb.0: ; %entry323; GCN-NEXT:    s_load_dwordx2 s[2:3], s[8:9], 0x0324; GCN-NEXT:    s_waitcnt lgkmcnt(0)325; GCN-NEXT:    s_bitcmp1_b32 s3, 0326; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0327; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1328; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]329; GCN-NEXT:    v_mov_b32_e32 v2, s2330; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0331; GCN-NEXT:    ; implicit-def: $vgpr0332; GCN-NEXT:  .LBB10_1: ; %loop333; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1334; GCN-NEXT:    ds_read_b64 v[3:4], v2335; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]336; GCN-NEXT:    s_waitcnt lgkmcnt(0)337; GCN-NEXT:    v_pk_add_f16 v1, v4, v1338; GCN-NEXT:    v_pk_add_f16 v0, v3, v0339; GCN-NEXT:    s_cbranch_vccnz .LBB10_1340; GCN-NEXT:  ; %bb.2: ; %ret341; GCN-NEXT:    v_mov_b32_e32 v2, s2342; GCN-NEXT:    ds_write_b64 v2, v[0:1]343; GCN-NEXT:    s_endpgm344entry:345  br label %loop346 347loop:348  %phi = phi <4 x half> [ poison, %entry ], [ %add, %loop ]349  %load = load volatile <4 x half>, ptr addrspace(3) %ptr350  %add = fadd <4 x half> %load, %phi351  br i1 %cond, label %loop, label %ret352 353ret:354  store volatile <4 x half> %add, ptr addrspace(3) %ptr355  ret void356}357 358define amdgpu_kernel void @undef_v4i16(ptr addrspace(3) %ptr, i1 %cond) {359; GCN-LABEL: undef_v4i16:360; GCN:       ; %bb.0: ; %entry361; GCN-NEXT:    s_load_dwordx2 s[2:3], s[8:9], 0x0362; GCN-NEXT:    s_waitcnt lgkmcnt(0)363; GCN-NEXT:    s_bitcmp1_b32 s3, 0364; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0365; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1366; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]367; GCN-NEXT:    v_mov_b32_e32 v2, s2368; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0369; GCN-NEXT:    ; implicit-def: $vgpr0370; GCN-NEXT:  .LBB11_1: ; %loop371; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1372; GCN-NEXT:    ds_read_b64 v[3:4], v2373; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]374; GCN-NEXT:    s_waitcnt lgkmcnt(0)375; GCN-NEXT:    v_pk_add_u16 v1, v4, v1376; GCN-NEXT:    v_pk_add_u16 v0, v3, v0377; GCN-NEXT:    s_cbranch_vccnz .LBB11_1378; GCN-NEXT:  ; %bb.2: ; %ret379; GCN-NEXT:    v_mov_b32_e32 v2, s2380; GCN-NEXT:    ds_write_b64 v2, v[0:1]381; GCN-NEXT:    s_endpgm382entry:383  br label %loop384 385loop:386  %phi = phi <4 x i16> [ poison, %entry ], [ %add, %loop ]387  %load = load volatile <4 x i16>, ptr addrspace(3) %ptr388  %add = add <4 x i16> %load, %phi389  br i1 %cond, label %loop, label %ret390 391ret:392  store volatile <4 x i16> %add, ptr addrspace(3) %ptr393  ret void394}395 396; Make sure the vector undef isn't lowered into 0s.397define amdgpu_kernel void @undef_v2f16(ptr addrspace(3) %ptr, i1 %cond) {398; GCN-LABEL: undef_v2f16:399; GCN:       ; %bb.0: ; %entry400; GCN-NEXT:    s_load_dwordx2 s[2:3], s[8:9], 0x0401; GCN-NEXT:    s_waitcnt lgkmcnt(0)402; GCN-NEXT:    s_bitcmp1_b32 s3, 0403; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0404; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1405; GCN-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[0:1]406; GCN-NEXT:    v_mov_b32_e32 v0, s2407; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v1408; GCN-NEXT:    ; implicit-def: $vgpr1409; GCN-NEXT:  .LBB12_1: ; %loop410; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1411; GCN-NEXT:    ds_read_b32 v2, v0412; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]413; GCN-NEXT:    s_waitcnt lgkmcnt(0)414; GCN-NEXT:    v_pk_add_f16 v1, v2, v1415; GCN-NEXT:    s_cbranch_vccnz .LBB12_1416; GCN-NEXT:  ; %bb.2: ; %ret417; GCN-NEXT:    v_mov_b32_e32 v0, s2418; GCN-NEXT:    ds_write_b32 v0, v1419; GCN-NEXT:    s_endpgm420entry:421  br label %loop422 423loop:424  %phi = phi <2 x half> [ poison, %entry ], [ %add, %loop ]425  %load = load volatile <2 x half>, ptr addrspace(3) %ptr426  %add = fadd <2 x half> %load, %phi427  br i1 %cond, label %loop, label %ret428 429ret:430  store volatile <2 x half> %add, ptr addrspace(3) %ptr431  ret void432}433 434define amdgpu_kernel void @undef_v2i16(ptr addrspace(3) %ptr, i1 %cond) {435; GCN-LABEL: undef_v2i16:436; GCN:       ; %bb.0: ; %entry437; GCN-NEXT:    s_load_dwordx2 s[2:3], s[8:9], 0x0438; GCN-NEXT:    s_waitcnt lgkmcnt(0)439; GCN-NEXT:    s_bitcmp1_b32 s3, 0440; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0441; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1442; GCN-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[0:1]443; GCN-NEXT:    v_mov_b32_e32 v0, s2444; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v1445; GCN-NEXT:    ; implicit-def: $vgpr1446; GCN-NEXT:  .LBB13_1: ; %loop447; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1448; GCN-NEXT:    ds_read_b32 v2, v0449; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]450; GCN-NEXT:    s_waitcnt lgkmcnt(0)451; GCN-NEXT:    v_pk_add_u16 v1, v2, v1452; GCN-NEXT:    s_cbranch_vccnz .LBB13_1453; GCN-NEXT:  ; %bb.2: ; %ret454; GCN-NEXT:    v_mov_b32_e32 v0, s2455; GCN-NEXT:    ds_write_b32 v0, v1456; GCN-NEXT:    s_endpgm457entry:458  br label %loop459 460loop:461  %phi = phi <2 x i16> [ poison, %entry ], [ %add, %loop ]462  %load = load volatile <2 x i16>, ptr addrspace(3) %ptr463  %add = add <2 x i16> %load, %phi464  br i1 %cond, label %loop, label %ret465 466ret:467  store volatile <2 x i16> %add, ptr addrspace(3) %ptr468  ret void469}470 471; We were expanding undef vectors into zero vectors. Optimizations472; would then see we used no elements of the vector, and reform the473; undef vector resulting in a combiner loop.474define void @inf_loop_undef_vector(<6 x float> %arg, float %arg1, i64 %arg2) {475; GCN-LABEL: inf_loop_undef_vector:476; GCN:       ; %bb.0:477; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)478; GCN-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v6, v7, v[0:1]479; GCN-NEXT:    v_mul_lo_u32 v2, v6, v8480; GCN-NEXT:    v_mul_lo_u32 v3, v3, v7481; GCN-NEXT:    v_add3_u32 v1, v3, v1, v2482; GCN-NEXT:    global_store_dwordx2 v[0:1], v[0:1], off483; GCN-NEXT:    s_waitcnt vmcnt(0)484; GCN-NEXT:    s_setpc_b64 s[30:31]485  %i = insertelement <6 x float> %arg, float %arg1, i64 2486  %i3 = bitcast <6 x float> %i to <3 x i64>487  %i4 = extractelement <3 x i64> %i3, i64 0488  %i5 = extractelement <3 x i64> %i3, i64 1489  %i6 = mul i64 %i5, %arg2490  %i7 = add i64 %i6, %i4491  store volatile i64 %i7, ptr addrspace(1) poison, align 4492  ret void493}494 495define amdgpu_kernel void @undef_bf16(ptr addrspace(3) %ptr, i1 %cond) {496; GCN-LABEL: undef_bf16:497; GCN:       ; %bb.0: ; %entry498; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4499; GCN-NEXT:    s_waitcnt lgkmcnt(0)500; GCN-NEXT:    s_bitcmp1_b32 s0, 0501; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0502; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1503; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]504; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0505; GCN-NEXT:    ; implicit-def: $vgpr0506; GCN-NEXT:  .LBB15_1: ; %loop507; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1508; GCN-NEXT:    ds_read_u16 v1, v0509; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]510; GCN-NEXT:    s_waitcnt lgkmcnt(0)511; GCN-NEXT:    v_add_u32_e32 v0, v1, v0512; GCN-NEXT:    s_cbranch_vccnz .LBB15_1513; GCN-NEXT:  ; %bb.2: ; %ret514; GCN-NEXT:    ds_write_b16 v0, v0515; GCN-NEXT:    s_endpgm516entry:517  br label %loop518 519loop:520  %phi = phi bfloat [ poison, %entry ], [ %add, %loop ]521  %load = load volatile bfloat, ptr addrspace(3) poison522  %bc.0 = bitcast bfloat %load to i16523  %bc.1 = bitcast bfloat %phi to i16524  %add.i = add i16 %bc.0, %bc.1525  %add = bitcast i16 %add.i to bfloat526  br i1 %cond, label %loop, label %ret527 528ret:529  store volatile bfloat %add, ptr addrspace(3) poison530  ret void531}532 533define amdgpu_kernel void @undef_v2bf16(ptr addrspace(3) %ptr, i1 %cond) {534; GCN-LABEL: undef_v2bf16:535; GCN:       ; %bb.0: ; %entry536; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4537; GCN-NEXT:    s_waitcnt lgkmcnt(0)538; GCN-NEXT:    s_bitcmp1_b32 s0, 0539; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0540; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1541; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]542; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0543; GCN-NEXT:    ; implicit-def: $vgpr0544; GCN-NEXT:  .LBB16_1: ; %loop545; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1546; GCN-NEXT:    ds_read_b32 v1, v0547; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]548; GCN-NEXT:    s_waitcnt lgkmcnt(0)549; GCN-NEXT:    v_pk_add_u16 v0, v1, v0550; GCN-NEXT:    s_cbranch_vccnz .LBB16_1551; GCN-NEXT:  ; %bb.2: ; %ret552; GCN-NEXT:    ds_write_b32 v0, v0553; GCN-NEXT:    s_endpgm554entry:555  br label %loop556 557loop:558  %phi = phi <2 x bfloat> [ poison, %entry ], [ %add, %loop ]559  %load = load volatile <2 x bfloat>, ptr addrspace(3) poison560  %bc.0 = bitcast <2 x bfloat> %load to <2 x i16>561  %bc.1 = bitcast <2 x bfloat> %phi to <2 x i16>562  %add.i = add <2 x i16> %bc.0, %bc.1563  %add = bitcast <2 x i16> %add.i to <2 x bfloat>564  br i1 %cond, label %loop, label %ret565 566ret:567  store volatile <2 x bfloat> %add, ptr addrspace(3) poison568  ret void569}570 571define amdgpu_kernel void @undef_v3bf16(ptr addrspace(3) %ptr, i1 %cond) {572; GCN-LABEL: undef_v3bf16:573; GCN:       ; %bb.0: ; %entry574; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4575; GCN-NEXT:    ; implicit-def: $vgpr1576; GCN-NEXT:    s_waitcnt lgkmcnt(0)577; GCN-NEXT:    s_bitcmp1_b32 s0, 0578; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0579; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1580; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]581; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0582; GCN-NEXT:    ; implicit-def: $vgpr0583; GCN-NEXT:  .LBB17_1: ; %loop584; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1585; GCN-NEXT:    ds_read_b32 v2, v0586; GCN-NEXT:    ds_read_u16 v3, v0587; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]588; GCN-NEXT:    s_waitcnt lgkmcnt(1)589; GCN-NEXT:    v_pk_add_u16 v0, v2, v0590; GCN-NEXT:    s_waitcnt lgkmcnt(0)591; GCN-NEXT:    v_pk_add_u16 v1, v3, v1592; GCN-NEXT:    s_cbranch_vccnz .LBB17_1593; GCN-NEXT:  ; %bb.2: ; %ret594; GCN-NEXT:    ds_write_b16 v0, v1595; GCN-NEXT:    ds_write_b32 v0, v0596; GCN-NEXT:    s_endpgm597entry:598  br label %loop599 600loop:601  %phi = phi <3 x bfloat> [ poison, %entry ], [ %add, %loop ]602  %load = load volatile <3 x bfloat>, ptr addrspace(3) poison603  %bc.0 = bitcast <3 x bfloat> %load to <3 x i16>604  %bc.1 = bitcast <3 x bfloat> %phi to <3 x i16>605  %add.i = add <3 x i16> %bc.0, %bc.1606  %add = bitcast <3 x i16> %add.i to <3 x bfloat>607  br i1 %cond, label %loop, label %ret608 609ret:610  store volatile <3 x bfloat> %add, ptr addrspace(3) poison611  ret void612}613 614define amdgpu_kernel void @undef_v4bf16(ptr addrspace(3) %ptr, i1 %cond) {615; GCN-LABEL: undef_v4bf16:616; GCN:       ; %bb.0: ; %entry617; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4618; GCN-NEXT:    s_waitcnt lgkmcnt(0)619; GCN-NEXT:    s_bitcmp1_b32 s0, 0620; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0621; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1622; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]623; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0624; GCN-NEXT:    ; implicit-def: $vgpr0625; GCN-NEXT:  .LBB18_1: ; %loop626; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1627; GCN-NEXT:    ds_read_b64 v[2:3], v0628; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]629; GCN-NEXT:    s_waitcnt lgkmcnt(0)630; GCN-NEXT:    v_pk_add_u16 v1, v3, v1631; GCN-NEXT:    v_pk_add_u16 v0, v2, v0632; GCN-NEXT:    s_cbranch_vccnz .LBB18_1633; GCN-NEXT:  ; %bb.2: ; %ret634; GCN-NEXT:    ds_write_b64 v0, v[0:1]635; GCN-NEXT:    s_endpgm636entry:637  br label %loop638 639loop:640  %phi = phi <4 x bfloat> [ poison, %entry ], [ %add, %loop ]641  %load = load volatile <4 x bfloat>, ptr addrspace(3) poison642  %bc.0 = bitcast <4 x bfloat> %load to <4 x i16>643  %bc.1 = bitcast <4 x bfloat> %phi to <4 x i16>644  %add.i = add <4 x i16> %bc.0, %bc.1645  %add = bitcast <4 x i16> %add.i to <4 x bfloat>646  br i1 %cond, label %loop, label %ret647 648ret:649  store volatile <4 x bfloat> %add, ptr addrspace(3) poison650  ret void651}652 653define amdgpu_kernel void @undef_v6bf16(ptr addrspace(3) %ptr, i1 %cond) {654; GCN-LABEL: undef_v6bf16:655; GCN:       ; %bb.0: ; %entry656; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4657; GCN-NEXT:    ; implicit-def: $vgpr2658; GCN-NEXT:    s_waitcnt lgkmcnt(0)659; GCN-NEXT:    s_bitcmp1_b32 s0, 0660; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0661; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1662; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]663; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0664; GCN-NEXT:    ; implicit-def: $vgpr0665; GCN-NEXT:  .LBB19_1: ; %loop666; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1667; GCN-NEXT:    ds_read_b64 v[3:4], v0668; GCN-NEXT:    ds_read_b32 v5, v0669; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]670; GCN-NEXT:    s_waitcnt lgkmcnt(1)671; GCN-NEXT:    v_pk_add_u16 v1, v4, v1672; GCN-NEXT:    s_waitcnt lgkmcnt(0)673; GCN-NEXT:    v_pk_add_u16 v2, v5, v2674; GCN-NEXT:    v_pk_add_u16 v0, v3, v0675; GCN-NEXT:    s_cbranch_vccnz .LBB19_1676; GCN-NEXT:  ; %bb.2: ; %ret677; GCN-NEXT:    ds_write_b32 v0, v2678; GCN-NEXT:    ds_write_b64 v0, v[0:1]679; GCN-NEXT:    s_endpgm680entry:681  br label %loop682 683loop:684  %phi = phi <6 x bfloat> [ poison, %entry ], [ %add, %loop ]685  %load = load volatile <6 x bfloat>, ptr addrspace(3) poison686  %bc.0 = bitcast <6 x bfloat> %load to <6 x i16>687  %bc.1 = bitcast <6 x bfloat> %phi to <6 x i16>688  %add.i = add <6 x i16> %bc.0, %bc.1689  %add = bitcast <6 x i16> %add.i to <6 x bfloat>690  br i1 %cond, label %loop, label %ret691 692ret:693  store volatile <6 x bfloat> %add, ptr addrspace(3) poison694  ret void695}696 697define amdgpu_kernel void @undef_v8bf16(ptr addrspace(3) %ptr, i1 %cond) {698; GCN-LABEL: undef_v8bf16:699; GCN:       ; %bb.0: ; %entry700; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4701; GCN-NEXT:    s_waitcnt lgkmcnt(0)702; GCN-NEXT:    s_bitcmp1_b32 s0, 0703; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0704; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1705; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]706; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0707; GCN-NEXT:    ; implicit-def: $vgpr0708; GCN-NEXT:  .LBB20_1: ; %loop709; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1710; GCN-NEXT:    ds_read_b128 v[4:7], v0711; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]712; GCN-NEXT:    s_waitcnt lgkmcnt(0)713; GCN-NEXT:    v_pk_add_u16 v3, v7, v3714; GCN-NEXT:    v_pk_add_u16 v2, v6, v2715; GCN-NEXT:    v_pk_add_u16 v1, v5, v1716; GCN-NEXT:    v_pk_add_u16 v0, v4, v0717; GCN-NEXT:    s_cbranch_vccnz .LBB20_1718; GCN-NEXT:  ; %bb.2: ; %ret719; GCN-NEXT:    ds_write_b128 v0, v[0:3]720; GCN-NEXT:    s_endpgm721entry:722  br label %loop723 724loop:725  %phi = phi <8 x bfloat> [ poison, %entry ], [ %add, %loop ]726  %load = load volatile <8 x bfloat>, ptr addrspace(3) poison727  %bc.0 = bitcast <8 x bfloat> %load to <8 x i16>728  %bc.1 = bitcast <8 x bfloat> %phi to <8 x i16>729  %add.i = add <8 x i16> %bc.0, %bc.1730  %add = bitcast <8 x i16> %add.i to <8 x bfloat>731  br i1 %cond, label %loop, label %ret732 733ret:734  store volatile <8 x bfloat> %add, ptr addrspace(3) poison735  ret void736}737 738define amdgpu_kernel void @undef_v16bf16(ptr addrspace(3) %ptr, i1 %cond) {739; GCN-LABEL: undef_v16bf16:740; GCN:       ; %bb.0: ; %entry741; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4742; GCN-NEXT:    ; implicit-def: $vgpr4743; GCN-NEXT:    s_waitcnt lgkmcnt(0)744; GCN-NEXT:    s_bitcmp1_b32 s0, 0745; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0746; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1747; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]748; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0749; GCN-NEXT:    ; implicit-def: $vgpr0750; GCN-NEXT:  .LBB21_1: ; %loop751; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1752; GCN-NEXT:    ds_read_b128 v[8:11], v0753; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]754; GCN-NEXT:    s_waitcnt lgkmcnt(0)755; GCN-NEXT:    v_pk_add_u16 v7, v11, v7756; GCN-NEXT:    v_pk_add_u16 v6, v10, v6757; GCN-NEXT:    v_pk_add_u16 v5, v9, v5758; GCN-NEXT:    v_pk_add_u16 v4, v8, v4759; GCN-NEXT:    v_pk_add_u16 v3, v11, v3760; GCN-NEXT:    v_pk_add_u16 v2, v10, v2761; GCN-NEXT:    v_pk_add_u16 v1, v9, v1762; GCN-NEXT:    v_pk_add_u16 v0, v8, v0763; GCN-NEXT:    s_cbranch_vccnz .LBB21_1764; GCN-NEXT:  ; %bb.2: ; %ret765; GCN-NEXT:    ds_write_b128 v0, v[4:7]766; GCN-NEXT:    ds_write_b128 v0, v[0:3]767; GCN-NEXT:    s_endpgm768entry:769  br label %loop770 771loop:772  %phi = phi <16 x bfloat> [ poison, %entry ], [ %add, %loop ]773  %load = load volatile <16 x bfloat>, ptr addrspace(3) poison774  %bc.0 = bitcast <16 x bfloat> %load to <16 x i16>775  %bc.1 = bitcast <16 x bfloat> %phi to <16 x i16>776  %add.i = add <16 x i16> %bc.0, %bc.1777  %add = bitcast <16 x i16> %add.i to <16 x bfloat>778  br i1 %cond, label %loop, label %ret779 780ret:781  store volatile <16 x bfloat> %add, ptr addrspace(3) poison782  ret void783}784 785define amdgpu_kernel void @undef_v32bf16(ptr addrspace(3) %ptr, i1 %cond) {786; GCN-LABEL: undef_v32bf16:787; GCN:       ; %bb.0: ; %entry788; GCN-NEXT:    s_load_dword s0, s[8:9], 0x4789; GCN-NEXT:    ; implicit-def: $vgpr4790; GCN-NEXT:    ; implicit-def: $vgpr8791; GCN-NEXT:    ; implicit-def: $vgpr12792; GCN-NEXT:    s_waitcnt lgkmcnt(0)793; GCN-NEXT:    s_bitcmp1_b32 s0, 0794; GCN-NEXT:    s_cselect_b64 s[0:1], -1, 0795; GCN-NEXT:    s_xor_b64 s[0:1], s[0:1], -1796; GCN-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]797; GCN-NEXT:    v_cmp_ne_u32_e64 s[0:1], 1, v0798; GCN-NEXT:    ; implicit-def: $vgpr0799; GCN-NEXT:  .LBB22_1: ; %loop800; GCN-NEXT:    ; =>This Inner Loop Header: Depth=1801; GCN-NEXT:    ds_read_b128 v[16:19], v0802; GCN-NEXT:    s_and_b64 vcc, exec, s[0:1]803; GCN-NEXT:    s_waitcnt lgkmcnt(0)804; GCN-NEXT:    v_pk_add_u16 v15, v19, v15805; GCN-NEXT:    v_pk_add_u16 v14, v18, v14806; GCN-NEXT:    v_pk_add_u16 v13, v17, v13807; GCN-NEXT:    v_pk_add_u16 v12, v16, v12808; GCN-NEXT:    v_pk_add_u16 v11, v19, v11809; GCN-NEXT:    v_pk_add_u16 v10, v18, v10810; GCN-NEXT:    v_pk_add_u16 v9, v17, v9811; GCN-NEXT:    v_pk_add_u16 v8, v16, v8812; GCN-NEXT:    v_pk_add_u16 v7, v19, v7813; GCN-NEXT:    v_pk_add_u16 v6, v18, v6814; GCN-NEXT:    v_pk_add_u16 v5, v17, v5815; GCN-NEXT:    v_pk_add_u16 v4, v16, v4816; GCN-NEXT:    v_pk_add_u16 v3, v19, v3817; GCN-NEXT:    v_pk_add_u16 v2, v18, v2818; GCN-NEXT:    v_pk_add_u16 v1, v17, v1819; GCN-NEXT:    v_pk_add_u16 v0, v16, v0820; GCN-NEXT:    s_cbranch_vccnz .LBB22_1821; GCN-NEXT:  ; %bb.2: ; %ret822; GCN-NEXT:    ds_write_b128 v0, v[12:15]823; GCN-NEXT:    ds_write_b128 v0, v[8:11]824; GCN-NEXT:    ds_write_b128 v0, v[4:7]825; GCN-NEXT:    ds_write_b128 v0, v[0:3]826; GCN-NEXT:    s_endpgm827entry:828  br label %loop829 830loop:831  %phi = phi <32 x bfloat> [ poison, %entry ], [ %add, %loop ]832  %load = load volatile <32 x bfloat>, ptr addrspace(3) poison833  %bc.0 = bitcast <32 x bfloat> %load to <32 x i16>834  %bc.1 = bitcast <32 x bfloat> %phi to <32 x i16>835  %add.i = add <32 x i16> %bc.0, %bc.1836  %add = bitcast <32 x i16> %add.i to <32 x bfloat>837  br i1 %cond, label %loop, label %ret838 839ret:840  store volatile <32 x bfloat> %add, ptr addrspace(3) poison841  ret void842}843 844define i64 @poison_should_freeze(i1 %cond1, i32 %val, i16 %val2, i64 %a, i64 %b) {845; GCN-LABEL: poison_should_freeze:846; GCN:       ; %bb.0:847; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)848; GCN-NEXT:    v_and_b32_e32 v0, 1, v0849; GCN-NEXT:    v_mov_b32_e32 v7, 0x5040100850; GCN-NEXT:    v_perm_b32 v2, v2, s4, v7851; GCN-NEXT:    v_cmp_eq_u32_e32 vcc, 1, v0852; GCN-NEXT:    v_cndmask_b32_e32 v0, v1, v2, vcc853; GCN-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v0854; GCN-NEXT:    v_cndmask_b32_e32 v0, v5, v3, vcc855; GCN-NEXT:    v_cndmask_b32_e32 v1, v6, v4, vcc856; GCN-NEXT:    s_setpc_b64 s[30:31]857  %poisonv = insertelement <2 x i16> poison, i16 %val2, i32 1858  %poison = bitcast <2 x i16> %poisonv to i32859  %cond2 = select i1 %cond1, i32 %poison, i32 %val860  %cmp = icmp eq i32 %cond2, 0861  %select = select i1 %cmp, i64 %a, i64 %b862  ret i64 %select863}864