xref: /aosp_15_r20/external/llvm/test/CodeGen/Hexagon/vect/vect-bitcast-1.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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