xref: /aosp_15_r20/external/llvm/test/CodeGen/Mips/msa/llvm-stress-s997348632.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mips < %s
2*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mips -mattr=+msa,+fp64 < %s
3*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mipsel < %s
4*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mipsel -mattr=+msa,+fp64 < %s
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker; This test originally failed to select instructions for extract_vector_elt for
7*9880d681SAndroid Build Coastguard Worker; v2f64 on MSA.
8*9880d681SAndroid Build Coastguard Worker; It should at least successfully build.
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Workerdefine void @autogen_SD997348632(i8*, i32*, i64*, i32, i64, i8) {
11*9880d681SAndroid Build Coastguard WorkerBB:
12*9880d681SAndroid Build Coastguard Worker  %A4 = alloca <2 x i32>
13*9880d681SAndroid Build Coastguard Worker  %A3 = alloca <16 x i16>
14*9880d681SAndroid Build Coastguard Worker  %A2 = alloca <4 x i1>
15*9880d681SAndroid Build Coastguard Worker  %A1 = alloca <4 x i16>
16*9880d681SAndroid Build Coastguard Worker  %A = alloca <2 x i32>
17*9880d681SAndroid Build Coastguard Worker  %L = load i8, i8* %0
18*9880d681SAndroid Build Coastguard Worker  store i8 %L, i8* %0
19*9880d681SAndroid Build Coastguard Worker  %E = extractelement <4 x i32> zeroinitializer, i32 0
20*9880d681SAndroid Build Coastguard Worker  %Shuff = shufflevector <4 x i64> zeroinitializer, <4 x i64> zeroinitializer, <4 x i32> <i32 undef, i32 1, i32 3, i32 5>
21*9880d681SAndroid Build Coastguard Worker  %I = insertelement <2 x i1> zeroinitializer, i1 false, i32 1
22*9880d681SAndroid Build Coastguard Worker  %FC = sitofp <4 x i32> zeroinitializer to <4 x double>
23*9880d681SAndroid Build Coastguard Worker  %Sl = select i1 false, <4 x i64> %Shuff, <4 x i64> %Shuff
24*9880d681SAndroid Build Coastguard Worker  %L5 = load i8, i8* %0
25*9880d681SAndroid Build Coastguard Worker  store i8 %5, i8* %0
26*9880d681SAndroid Build Coastguard Worker  %E6 = extractelement <1 x i16> zeroinitializer, i32 0
27*9880d681SAndroid Build Coastguard Worker  %Shuff7 = shufflevector <2 x i1> %I, <2 x i1> %I, <2 x i32> <i32 1, i32 undef>
28*9880d681SAndroid Build Coastguard Worker  %I8 = insertelement <1 x i16> zeroinitializer, i16 0, i32 0
29*9880d681SAndroid Build Coastguard Worker  %B = xor i32 376034, %3
30*9880d681SAndroid Build Coastguard Worker  %FC9 = fptoui float 0x406DB70180000000 to i64
31*9880d681SAndroid Build Coastguard Worker  %Sl10 = select i1 false, <8 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>, <8 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
32*9880d681SAndroid Build Coastguard Worker  %Cmp = icmp ult <4 x i64> zeroinitializer, zeroinitializer
33*9880d681SAndroid Build Coastguard Worker  %L11 = load i8, i8* %0
34*9880d681SAndroid Build Coastguard Worker  store i8 %L, i8* %0
35*9880d681SAndroid Build Coastguard Worker  %E12 = extractelement <4 x i64> zeroinitializer, i32 2
36*9880d681SAndroid Build Coastguard Worker  %Shuff13 = shufflevector <4 x i32> zeroinitializer, <4 x i32> zeroinitializer, <4 x i32> <i32 5, i32 7, i32 undef, i32 3>
37*9880d681SAndroid Build Coastguard Worker  %I14 = insertelement <8 x i32> zeroinitializer, i32 -1, i32 7
38*9880d681SAndroid Build Coastguard Worker  %B15 = fdiv <4 x double> %FC, %FC
39*9880d681SAndroid Build Coastguard Worker  %Tr = trunc i32 376034 to i16
40*9880d681SAndroid Build Coastguard Worker  %Sl16 = select i1 false, <8 x i32> %Sl10, <8 x i32> zeroinitializer
41*9880d681SAndroid Build Coastguard Worker  %Cmp17 = icmp uge i32 233658, %E
42*9880d681SAndroid Build Coastguard Worker  br label %CF
43*9880d681SAndroid Build Coastguard Worker
44*9880d681SAndroid Build Coastguard WorkerCF:                                               ; preds = %CF, %CF79, %CF84, %BB
45*9880d681SAndroid Build Coastguard Worker  %L18 = load i8, i8* %0
46*9880d681SAndroid Build Coastguard Worker  store i8 %L, i8* %0
47*9880d681SAndroid Build Coastguard Worker  %E19 = extractelement <4 x i64> %Sl, i32 3
48*9880d681SAndroid Build Coastguard Worker  %Shuff20 = shufflevector <2 x i1> %Shuff7, <2 x i1> %I, <2 x i32> <i32 2, i32 0>
49*9880d681SAndroid Build Coastguard Worker  %I21 = insertelement <4 x i64> zeroinitializer, i64 %FC9, i32 0
50*9880d681SAndroid Build Coastguard Worker  %B22 = xor <8 x i32> %I14, %I14
51*9880d681SAndroid Build Coastguard Worker  %Tr23 = trunc i16 0 to i8
52*9880d681SAndroid Build Coastguard Worker  %Sl24 = select i1 false, <8 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>, <8 x i32> zeroinitializer
53*9880d681SAndroid Build Coastguard Worker  %Cmp25 = icmp eq i1 false, false
54*9880d681SAndroid Build Coastguard Worker  br i1 %Cmp25, label %CF, label %CF79
55*9880d681SAndroid Build Coastguard Worker
56*9880d681SAndroid Build Coastguard WorkerCF79:                                             ; preds = %CF
57*9880d681SAndroid Build Coastguard Worker  %L26 = load i8, i8* %0
58*9880d681SAndroid Build Coastguard Worker  store i8 %L26, i8* %0
59*9880d681SAndroid Build Coastguard Worker  %E27 = extractelement <1 x i16> zeroinitializer, i32 0
60*9880d681SAndroid Build Coastguard Worker  %Shuff28 = shufflevector <16 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>, <16 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>, <16 x i32> <i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31, i32 1, i32 3, i32 5, i32 7, i32 9, i32 11>
61*9880d681SAndroid Build Coastguard Worker  %I29 = insertelement <16 x i32> %Shuff28, i32 %B, i32 15
62*9880d681SAndroid Build Coastguard Worker  %B30 = fdiv float 0.000000e+00, -6.749110e+06
63*9880d681SAndroid Build Coastguard Worker  %Sl31 = select i1 false, i32 %3, i32 %3
64*9880d681SAndroid Build Coastguard Worker  %Cmp32 = fcmp uno float 0.000000e+00, 0x406DB70180000000
65*9880d681SAndroid Build Coastguard Worker  br i1 %Cmp32, label %CF, label %CF78
66*9880d681SAndroid Build Coastguard Worker
67*9880d681SAndroid Build Coastguard WorkerCF78:                                             ; preds = %CF78, %CF79
68*9880d681SAndroid Build Coastguard Worker  %L33 = load i8, i8* %0
69*9880d681SAndroid Build Coastguard Worker  store i8 %L, i8* %0
70*9880d681SAndroid Build Coastguard Worker  %E34 = extractelement <16 x i32> %Shuff28, i32 1
71*9880d681SAndroid Build Coastguard Worker  %Shuff35 = shufflevector <4 x i64> zeroinitializer, <4 x i64> %I21, <4 x i32> <i32 undef, i32 6, i32 0, i32 2>
72*9880d681SAndroid Build Coastguard Worker  %I36 = insertelement <4 x double> %FC, double 0xA4A57F449CA36CC2, i32 2
73*9880d681SAndroid Build Coastguard Worker  %Se = sext <4 x i1> %Cmp to <4 x i32>
74*9880d681SAndroid Build Coastguard Worker  %Sl37 = select i1 %Cmp17, i32 0, i32 0
75*9880d681SAndroid Build Coastguard Worker  %Cmp38 = icmp ne i32 440284, 376034
76*9880d681SAndroid Build Coastguard Worker  br i1 %Cmp38, label %CF78, label %CF80
77*9880d681SAndroid Build Coastguard Worker
78*9880d681SAndroid Build Coastguard WorkerCF80:                                             ; preds = %CF80, %CF82, %CF78
79*9880d681SAndroid Build Coastguard Worker  %L39 = load i8, i8* %0
80*9880d681SAndroid Build Coastguard Worker  store i8 %L, i8* %0
81*9880d681SAndroid Build Coastguard Worker  %E40 = extractelement <2 x i1> %Shuff20, i32 1
82*9880d681SAndroid Build Coastguard Worker  br i1 %E40, label %CF80, label %CF82
83*9880d681SAndroid Build Coastguard Worker
84*9880d681SAndroid Build Coastguard WorkerCF82:                                             ; preds = %CF80
85*9880d681SAndroid Build Coastguard Worker  %Shuff41 = shufflevector <2 x i1> zeroinitializer, <2 x i1> %Shuff20, <2 x i32> <i32 2, i32 0>
86*9880d681SAndroid Build Coastguard Worker  %I42 = insertelement <2 x i1> %Shuff41, i1 false, i32 0
87*9880d681SAndroid Build Coastguard Worker  %B43 = sub i32 %E, 0
88*9880d681SAndroid Build Coastguard Worker  %Sl44 = select i1 %Cmp32, <16 x i32> %Shuff28, <16 x i32> %Shuff28
89*9880d681SAndroid Build Coastguard Worker  %Cmp45 = icmp sgt <4 x i64> zeroinitializer, %I21
90*9880d681SAndroid Build Coastguard Worker  %L46 = load i8, i8* %0
91*9880d681SAndroid Build Coastguard Worker  store i8 %L11, i8* %0
92*9880d681SAndroid Build Coastguard Worker  %E47 = extractelement <8 x i32> %Sl16, i32 4
93*9880d681SAndroid Build Coastguard Worker  %Shuff48 = shufflevector <2 x i1> zeroinitializer, <2 x i1> %Shuff7, <2 x i32> <i32 undef, i32 1>
94*9880d681SAndroid Build Coastguard Worker  %I49 = insertelement <2 x i1> %Shuff48, i1 %Cmp17, i32 1
95*9880d681SAndroid Build Coastguard Worker  %B50 = and <8 x i32> %I14, %Sl10
96*9880d681SAndroid Build Coastguard Worker  %FC51 = fptoui float -6.749110e+06 to i1
97*9880d681SAndroid Build Coastguard Worker  br i1 %FC51, label %CF80, label %CF81
98*9880d681SAndroid Build Coastguard Worker
99*9880d681SAndroid Build Coastguard WorkerCF81:                                             ; preds = %CF81, %CF82
100*9880d681SAndroid Build Coastguard Worker  %Sl52 = select i1 false, float -6.749110e+06, float 0x406DB70180000000
101*9880d681SAndroid Build Coastguard Worker  %Cmp53 = icmp uge <2 x i32> <i32 -1, i32 -1>, <i32 -1, i32 -1>
102*9880d681SAndroid Build Coastguard Worker  %L54 = load i8, i8* %0
103*9880d681SAndroid Build Coastguard Worker  store i8 %L5, i8* %0
104*9880d681SAndroid Build Coastguard Worker  %E55 = extractelement <8 x i32> zeroinitializer, i32 7
105*9880d681SAndroid Build Coastguard Worker  %Shuff56 = shufflevector <4 x i64> zeroinitializer, <4 x i64> zeroinitializer, <4 x i32> <i32 undef, i32 4, i32 6, i32 0>
106*9880d681SAndroid Build Coastguard Worker  %I57 = insertelement <2 x i1> %Shuff7, i1 false, i32 0
107*9880d681SAndroid Build Coastguard Worker  %B58 = fmul <4 x double> %FC, %FC
108*9880d681SAndroid Build Coastguard Worker  %FC59 = fptoui <4 x double> %I36 to <4 x i16>
109*9880d681SAndroid Build Coastguard Worker  %Sl60 = select i1 %Cmp17, <2 x i1> %I, <2 x i1> %I57
110*9880d681SAndroid Build Coastguard Worker  %Cmp61 = icmp ule <8 x i32> %B50, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
111*9880d681SAndroid Build Coastguard Worker  %L62 = load i8, i8* %0
112*9880d681SAndroid Build Coastguard Worker  store i8 %L33, i8* %0
113*9880d681SAndroid Build Coastguard Worker  %E63 = extractelement <4 x i64> %Shuff, i32 2
114*9880d681SAndroid Build Coastguard Worker  %Shuff64 = shufflevector <4 x i64> %Shuff56, <4 x i64> %Shuff56, <4 x i32> <i32 5, i32 7, i32 1, i32 undef>
115*9880d681SAndroid Build Coastguard Worker  %I65 = insertelement <2 x i1> zeroinitializer, i1 false, i32 1
116*9880d681SAndroid Build Coastguard Worker  %B66 = sdiv i32 %B, %E55
117*9880d681SAndroid Build Coastguard Worker  %Tr67 = trunc i8 %L54 to i1
118*9880d681SAndroid Build Coastguard Worker  br i1 %Tr67, label %CF81, label %CF83
119*9880d681SAndroid Build Coastguard Worker
120*9880d681SAndroid Build Coastguard WorkerCF83:                                             ; preds = %CF83, %CF81
121*9880d681SAndroid Build Coastguard Worker  %Sl68 = select i1 %Cmp17, i1 %Cmp25, i1 %Tr67
122*9880d681SAndroid Build Coastguard Worker  br i1 %Sl68, label %CF83, label %CF84
123*9880d681SAndroid Build Coastguard Worker
124*9880d681SAndroid Build Coastguard WorkerCF84:                                             ; preds = %CF83
125*9880d681SAndroid Build Coastguard Worker  %Cmp69 = icmp uge i32 %E, %E34
126*9880d681SAndroid Build Coastguard Worker  br i1 %Cmp69, label %CF, label %CF77
127*9880d681SAndroid Build Coastguard Worker
128*9880d681SAndroid Build Coastguard WorkerCF77:                                             ; preds = %CF84
129*9880d681SAndroid Build Coastguard Worker  %L70 = load i8, i8* %0
130*9880d681SAndroid Build Coastguard Worker  store i8 %L, i8* %0
131*9880d681SAndroid Build Coastguard Worker  %E71 = extractelement <4 x i64> %Shuff, i32 0
132*9880d681SAndroid Build Coastguard Worker  %Shuff72 = shufflevector <2 x i1> zeroinitializer, <2 x i1> %I, <2 x i32> <i32 3, i32 1>
133*9880d681SAndroid Build Coastguard Worker  %I73 = insertelement <8 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>, i32 %B66, i32 1
134*9880d681SAndroid Build Coastguard Worker  %FC74 = uitofp i1 %Cmp32 to double
135*9880d681SAndroid Build Coastguard Worker  %Sl75 = select i1 %FC51, i16 9704, i16 0
136*9880d681SAndroid Build Coastguard Worker  %Cmp76 = icmp ugt <1 x i16> %I8, %I8
137*9880d681SAndroid Build Coastguard Worker  store i8 %L39, i8* %0
138*9880d681SAndroid Build Coastguard Worker  store i8 %5, i8* %0
139*9880d681SAndroid Build Coastguard Worker  store i8 %Tr23, i8* %0
140*9880d681SAndroid Build Coastguard Worker  store i8 %L, i8* %0
141*9880d681SAndroid Build Coastguard Worker  store i8 %5, i8* %0
142*9880d681SAndroid Build Coastguard Worker  ret void
143*9880d681SAndroid Build Coastguard Worker}
144