1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=hexagon < %s 2*9880d681SAndroid Build Coastguard Worker; REQUIRES: asserts 3*9880d681SAndroid Build Coastguard Worker; Used to fail with: Assertion `VT.getSizeInBits() == Operand.getValueType().getSizeInBits() && "Cannot BITCAST between types of different sizes!"' failed. 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-p:32:32:32-i64:64:64-i32:32:32-i16:16:16-i1:32:32-f64:64:64-f32:32:32-a0:0-n32" 6*9880d681SAndroid Build Coastguard Workertarget triple = "hexagon-unknown-linux-gnu" 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Workerdefine void @foo() nounwind { 9*9880d681SAndroid Build Coastguard Workerentry: 10*9880d681SAndroid Build Coastguard Worker br label %while.body 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Workerwhile.body: ; preds = %if.then155, %if.then12, %entry 13*9880d681SAndroid Build Coastguard Worker %cmp.i = icmp eq i8* undef, null 14*9880d681SAndroid Build Coastguard Worker br i1 %cmp.i, label %lab_ci.exit, label %if.end.i 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Workerif.end.i: ; preds = %while.body 17*9880d681SAndroid Build Coastguard Worker unreachable 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workerlab_ci.exit: ; preds = %while.body 20*9880d681SAndroid Build Coastguard Worker br i1 false, label %if.then, label %if.else 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Workerif.then: ; preds = %lab_ci.exit 23*9880d681SAndroid Build Coastguard Worker unreachable 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Workerif.else: ; preds = %lab_ci.exit 26*9880d681SAndroid Build Coastguard Worker br i1 undef, label %if.then12, label %if.else17 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Workerif.then12: ; preds = %if.else 29*9880d681SAndroid Build Coastguard Worker br label %while.body 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Workerif.else17: ; preds = %if.else 32*9880d681SAndroid Build Coastguard Worker br i1 false, label %if.then22, label %if.else35 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Workerif.then22: ; preds = %if.else17 35*9880d681SAndroid Build Coastguard Worker unreachable 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Workerif.else35: ; preds = %if.else17 38*9880d681SAndroid Build Coastguard Worker br i1 false, label %if.then40, label %if.else83 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Workerif.then40: ; preds = %if.else35 41*9880d681SAndroid Build Coastguard Worker unreachable 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Workerif.else83: ; preds = %if.else35 44*9880d681SAndroid Build Coastguard Worker br i1 false, label %if.then88, label %if.else150 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Workerif.then88: ; preds = %if.else83 47*9880d681SAndroid Build Coastguard Worker unreachable 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Workerif.else150: ; preds = %if.else83 50*9880d681SAndroid Build Coastguard Worker %cmp154 = icmp eq i32 undef, 0 51*9880d681SAndroid Build Coastguard Worker br i1 %cmp154, label %if.then155, label %if.else208 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Workerif.then155: ; preds = %if.else150 54*9880d681SAndroid Build Coastguard Worker %call191 = call i32 @strtol() nounwind 55*9880d681SAndroid Build Coastguard Worker %conv192 = trunc i32 %call191 to i16 56*9880d681SAndroid Build Coastguard Worker %_p_splat_one = insertelement <1 x i16> undef, i16 %conv192, i32 0 57*9880d681SAndroid Build Coastguard Worker %_p_splat = shufflevector <1 x i16> %_p_splat_one, <1 x i16> undef, <2 x i32> zeroinitializer 58*9880d681SAndroid Build Coastguard Worker %0 = sext <2 x i16> %_p_splat to <2 x i32> 59*9880d681SAndroid Build Coastguard Worker %mul198p_vec = shl <2 x i32> %0, <i32 2, i32 2> 60*9880d681SAndroid Build Coastguard Worker %1 = extractelement <2 x i32> %mul198p_vec, i32 0 61*9880d681SAndroid Build Coastguard Worker store i32 %1, i32* null, align 4 62*9880d681SAndroid Build Coastguard Worker br label %while.body 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Workerif.else208: ; preds = %if.else150 65*9880d681SAndroid Build Coastguard Worker unreachable 66*9880d681SAndroid Build Coastguard Worker} 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Workerdeclare i32 @strtol() nounwind 69