xref: /aosp_15_r20/external/llvm/test/CodeGen/Hexagon/vect/vect-load.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=hexagon < %s
2*9880d681SAndroid Build Coastguard Worker; Used to fail with "Cannot select: 0x16cf370: v2i16,ch = load"
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker; ModuleID = 'bugpoint-reduced-simplified.bc'
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 Worker%struct.ext_hdrs.10.65.142.274.307.318.329.681.692.703.714.725.736.758.791.802.846.857.868.879.890.901.945.956.958 = type { i8, i8, i8, i8, i8, i8, i16, i32, [8 x %struct.hcdc_ext_vec.9.64.141.273.306.317.328.680.691.702.713.724.735.757.790.801.845.856.867.878.889.900.944.955.957] }
9*9880d681SAndroid Build Coastguard Worker%struct.hcdc_ext_vec.9.64.141.273.306.317.328.680.691.702.713.724.735.757.790.801.845.856.867.878.889.900.944.955.957 = type { i8, i8, i16 }
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Workerdefine void @foo(%struct.ext_hdrs.10.65.142.274.307.318.329.681.692.703.714.725.736.758.791.802.846.857.868.879.890.901.945.956.958* %hc_ext_info) nounwind {
12*9880d681SAndroid Build Coastguard Workerentry:
13*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %if.end, label %if.then
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Workerif.then:                                          ; preds = %entry
16*9880d681SAndroid Build Coastguard Worker  unreachable
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Workerif.end:                                           ; preds = %entry
19*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %if.end5, label %if.then3
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerif.then3:                                         ; preds = %if.end
22*9880d681SAndroid Build Coastguard Worker  br label %if.end5
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Workerif.end5:                                          ; preds = %if.then3, %if.end
25*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds %struct.ext_hdrs.10.65.142.274.307.318.329.681.692.703.714.725.736.758.791.802.846.857.868.879.890.901.945.956.958, %struct.ext_hdrs.10.65.142.274.307.318.329.681.692.703.714.725.736.758.791.802.846.857.868.879.890.901.945.956.958* %hc_ext_info, i32 0, i32 8, i32 0
26*9880d681SAndroid Build Coastguard Worker  %add.ptr22 = getelementptr inbounds %struct.ext_hdrs.10.65.142.274.307.318.329.681.692.703.714.725.736.758.791.802.846.857.868.879.890.901.945.956.958, %struct.ext_hdrs.10.65.142.274.307.318.329.681.692.703.714.725.736.758.791.802.846.857.868.879.890.901.945.956.958* null, i32 0, i32 8, i32 undef
27*9880d681SAndroid Build Coastguard Worker  br label %while.cond
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Workerwhile.cond:                                       ; preds = %if.end419, %if.end5
30*9880d681SAndroid Build Coastguard Worker  %gre_chksum.0 = phi <2 x i8> [ undef, %if.end5 ], [ %gre_chksum.2, %if.end419 ]
31*9880d681SAndroid Build Coastguard Worker  %cmp23 = icmp ult %struct.hcdc_ext_vec.9.64.141.273.306.317.328.680.691.702.713.724.735.757.790.801.845.856.867.878.889.900.944.955.957* null, %add.ptr
32*9880d681SAndroid Build Coastguard Worker  %cmp25 = icmp ult %struct.hcdc_ext_vec.9.64.141.273.306.317.328.680.691.702.713.724.735.757.790.801.845.856.867.878.889.900.944.955.957* null, %add.ptr22
33*9880d681SAndroid Build Coastguard Worker  %sel1 = and i1 %cmp23, %cmp25
34*9880d681SAndroid Build Coastguard Worker  br i1 %sel1, label %while.body, label %while.end422
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Workerwhile.body:                                       ; preds = %while.cond
37*9880d681SAndroid Build Coastguard Worker  switch i8 undef, label %if.end419 [
38*9880d681SAndroid Build Coastguard Worker    i8 5, label %if.then70
39*9880d681SAndroid Build Coastguard Worker    i8 3, label %if.then70
40*9880d681SAndroid Build Coastguard Worker    i8 2, label %if.then70
41*9880d681SAndroid Build Coastguard Worker    i8 1, label %if.then70
42*9880d681SAndroid Build Coastguard Worker    i8 0, label %if.then70
43*9880d681SAndroid Build Coastguard Worker    i8 4, label %if.then93
44*9880d681SAndroid Build Coastguard Worker    i8 6, label %if.then195
45*9880d681SAndroid Build Coastguard Worker  ]
46*9880d681SAndroid Build Coastguard Worker
47*9880d681SAndroid Build Coastguard Workerif.then70:                                        ; preds = %while.body, %while.body, %while.body, %while.body, %while.body
48*9880d681SAndroid Build Coastguard Worker  unreachable
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Workerif.then93:                                        ; preds = %while.body
51*9880d681SAndroid Build Coastguard Worker  unreachable
52*9880d681SAndroid Build Coastguard Worker
53*9880d681SAndroid Build Coastguard Workerif.then195:                                       ; preds = %while.body
54*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %if.end274, label %if.then202
55*9880d681SAndroid Build Coastguard Worker
56*9880d681SAndroid Build Coastguard Workerif.then202:                                       ; preds = %if.then195
57*9880d681SAndroid Build Coastguard Worker  br label %while.body222
58*9880d681SAndroid Build Coastguard Worker
59*9880d681SAndroid Build Coastguard Workerwhile.body222:                                    ; preds = %while.body222, %if.then202
60*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %if.end240, label %while.body222
61*9880d681SAndroid Build Coastguard Worker
62*9880d681SAndroid Build Coastguard Workerif.end240:                                        ; preds = %while.body222
63*9880d681SAndroid Build Coastguard Worker  %_p_vec_full100 = load <2 x i8>, <2 x i8>* undef, align 8
64*9880d681SAndroid Build Coastguard Worker  br label %if.end274
65*9880d681SAndroid Build Coastguard Worker
66*9880d681SAndroid Build Coastguard Workerif.end274:                                        ; preds = %if.end240, %if.then195
67*9880d681SAndroid Build Coastguard Worker  %gre_chksum.1 = phi <2 x i8> [ %gre_chksum.0, %if.then195 ], [ %_p_vec_full100, %if.end240 ]
68*9880d681SAndroid Build Coastguard Worker  br label %if.end419
69*9880d681SAndroid Build Coastguard Worker
70*9880d681SAndroid Build Coastguard Workerif.end419:                                        ; preds = %if.end274, %while.body
71*9880d681SAndroid Build Coastguard Worker  %gre_chksum.2 = phi <2 x i8> [ %gre_chksum.0, %while.body ], [ %gre_chksum.1, %if.end274 ]
72*9880d681SAndroid Build Coastguard Worker  br label %while.cond
73*9880d681SAndroid Build Coastguard Worker
74*9880d681SAndroid Build Coastguard Workerwhile.end422:                                     ; preds = %while.cond
75*9880d681SAndroid Build Coastguard Worker  ret void
76*9880d681SAndroid Build Coastguard Worker}
77