xref: /aosp_15_r20/external/llvm/test/CodeGen/Mips/msa/llvm-stress-s3997499501.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; v4f32 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_SD3997499501(i8*, i32*, i64*, i32, i64, i8) {
11*9880d681SAndroid Build Coastguard WorkerBB:
12*9880d681SAndroid Build Coastguard Worker  %A4 = alloca <1 x double>
13*9880d681SAndroid Build Coastguard Worker  %A3 = alloca double
14*9880d681SAndroid Build Coastguard Worker  %A2 = alloca float
15*9880d681SAndroid Build Coastguard Worker  %A1 = alloca double
16*9880d681SAndroid Build Coastguard Worker  %A = alloca double
17*9880d681SAndroid Build Coastguard Worker  %L = load i8, i8* %0
18*9880d681SAndroid Build Coastguard Worker  store i8 97, i8* %0
19*9880d681SAndroid Build Coastguard Worker  %E = extractelement <16 x i64> <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>, i32 14
20*9880d681SAndroid Build Coastguard Worker  %Shuff = shufflevector <2 x i1> zeroinitializer, <2 x i1> zeroinitializer, <2 x i32> <i32 1, i32 3>
21*9880d681SAndroid Build Coastguard Worker  %I = insertelement <4 x i64> zeroinitializer, i64 0, i32 3
22*9880d681SAndroid Build Coastguard Worker  %Tr = trunc <1 x i64> zeroinitializer to <1 x i8>
23*9880d681SAndroid Build Coastguard Worker  %Sl = select i1 false, double* %A1, double* %A
24*9880d681SAndroid Build Coastguard Worker  %Cmp = icmp ne <2 x i64> zeroinitializer, zeroinitializer
25*9880d681SAndroid Build Coastguard Worker  %L5 = load double, double* %Sl
26*9880d681SAndroid Build Coastguard Worker  store float -4.374162e+06, float* %A2
27*9880d681SAndroid Build Coastguard Worker  %E6 = extractelement <4 x i64> zeroinitializer, i32 3
28*9880d681SAndroid Build Coastguard Worker  %Shuff7 = shufflevector <4 x i64> zeroinitializer, <4 x i64> %I, <4 x i32> <i32 2, i32 4, i32 6, i32 undef>
29*9880d681SAndroid Build Coastguard Worker  %I8 = insertelement <2 x i1> %Shuff, i1 false, i32 0
30*9880d681SAndroid Build Coastguard Worker  %B = ashr <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, <i32 -1, i32 -1, i32 -1, i32 -1>
31*9880d681SAndroid Build Coastguard Worker  %PC = bitcast float* %A2 to float*
32*9880d681SAndroid Build Coastguard Worker  %Sl9 = select i1 false, i32 82299, i32 0
33*9880d681SAndroid Build Coastguard Worker  %Cmp10 = icmp slt i8 97, %5
34*9880d681SAndroid Build Coastguard Worker  br label %CF72
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard WorkerCF72:                                             ; preds = %CF72, %CF80, %CF78, %BB
37*9880d681SAndroid Build Coastguard Worker  %L11 = load double, double* %Sl
38*9880d681SAndroid Build Coastguard Worker  store double 0.000000e+00, double* %Sl
39*9880d681SAndroid Build Coastguard Worker  %E12 = extractelement <2 x i1> zeroinitializer, i32 0
40*9880d681SAndroid Build Coastguard Worker  br i1 %E12, label %CF72, label %CF80
41*9880d681SAndroid Build Coastguard Worker
42*9880d681SAndroid Build Coastguard WorkerCF80:                                             ; preds = %CF72
43*9880d681SAndroid Build Coastguard Worker  %Shuff13 = shufflevector <2 x i1> zeroinitializer, <2 x i1> zeroinitializer, <2 x i32> <i32 3, i32 1>
44*9880d681SAndroid Build Coastguard Worker  %I14 = insertelement <2 x i64> zeroinitializer, i64 %4, i32 1
45*9880d681SAndroid Build Coastguard Worker  %B15 = fadd double %L5, 0.000000e+00
46*9880d681SAndroid Build Coastguard Worker  %BC = bitcast i32 0 to float
47*9880d681SAndroid Build Coastguard Worker  %Sl16 = select i1 %E12, float 0xC7957ED940000000, float %BC
48*9880d681SAndroid Build Coastguard Worker  %Cmp17 = icmp eq i32 136082, 471909
49*9880d681SAndroid Build Coastguard Worker  br i1 %Cmp17, label %CF72, label %CF77
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard WorkerCF77:                                             ; preds = %CF77, %CF80
52*9880d681SAndroid Build Coastguard Worker  %L18 = load double, double* %Sl
53*9880d681SAndroid Build Coastguard Worker  store double 0.000000e+00, double* %Sl
54*9880d681SAndroid Build Coastguard Worker  %E19 = extractelement <2 x i1> zeroinitializer, i32 0
55*9880d681SAndroid Build Coastguard Worker  br i1 %E19, label %CF77, label %CF78
56*9880d681SAndroid Build Coastguard Worker
57*9880d681SAndroid Build Coastguard WorkerCF78:                                             ; preds = %CF77
58*9880d681SAndroid Build Coastguard Worker  %Shuff20 = shufflevector <2 x i1> zeroinitializer, <2 x i1> zeroinitializer, <2 x i32> <i32 1, i32 3>
59*9880d681SAndroid Build Coastguard Worker  %I21 = insertelement <8 x i1> zeroinitializer, i1 %Cmp10, i32 7
60*9880d681SAndroid Build Coastguard Worker  %B22 = sdiv <4 x i64> %Shuff7, zeroinitializer
61*9880d681SAndroid Build Coastguard Worker  %FC = uitofp i8 97 to double
62*9880d681SAndroid Build Coastguard Worker  %Sl23 = select i1 %Cmp10, <2 x i1> zeroinitializer, <2 x i1> zeroinitializer
63*9880d681SAndroid Build Coastguard Worker  %L24 = load double, double* %Sl
64*9880d681SAndroid Build Coastguard Worker  store float %Sl16, float* %PC
65*9880d681SAndroid Build Coastguard Worker  %E25 = extractelement <2 x i1> %Shuff, i32 1
66*9880d681SAndroid Build Coastguard Worker  br i1 %E25, label %CF72, label %CF76
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard WorkerCF76:                                             ; preds = %CF78
69*9880d681SAndroid Build Coastguard Worker  %Shuff26 = shufflevector <4 x i64> zeroinitializer, <4 x i64> %B22, <4 x i32> <i32 undef, i32 undef, i32 0, i32 undef>
70*9880d681SAndroid Build Coastguard Worker  %I27 = insertelement <4 x i64> zeroinitializer, i64 %E, i32 2
71*9880d681SAndroid Build Coastguard Worker  %B28 = mul <4 x i64> %I27, zeroinitializer
72*9880d681SAndroid Build Coastguard Worker  %ZE = zext <8 x i1> zeroinitializer to <8 x i64>
73*9880d681SAndroid Build Coastguard Worker  %Sl29 = select i1 %Cmp17, float -4.374162e+06, float -4.374162e+06
74*9880d681SAndroid Build Coastguard Worker  %L30 = load i8, i8* %0
75*9880d681SAndroid Build Coastguard Worker  store double %L5, double* %Sl
76*9880d681SAndroid Build Coastguard Worker  %E31 = extractelement <8 x i1> zeroinitializer, i32 5
77*9880d681SAndroid Build Coastguard Worker  br label %CF
78*9880d681SAndroid Build Coastguard Worker
79*9880d681SAndroid Build Coastguard WorkerCF:                                               ; preds = %CF, %CF81, %CF76
80*9880d681SAndroid Build Coastguard Worker  %Shuff32 = shufflevector <16 x i64> <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>, <16 x i64> <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>, <16 x i32> <i32 8, i32 undef, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 undef, i32 26, i32 28, i32 30, i32 undef, i32 2, i32 4, i32 6>
81*9880d681SAndroid Build Coastguard Worker  %I33 = insertelement <8 x i1> zeroinitializer, i1 false, i32 2
82*9880d681SAndroid Build Coastguard Worker  %BC34 = bitcast <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1> to <4 x float>
83*9880d681SAndroid Build Coastguard Worker  %Sl35 = select i1 %E12, <2 x i1> %I8, <2 x i1> zeroinitializer
84*9880d681SAndroid Build Coastguard Worker  %Cmp36 = fcmp oge double 0xC2C3BAE2D5C18360, 0xC2C3BAE2D5C18360
85*9880d681SAndroid Build Coastguard Worker  br i1 %Cmp36, label %CF, label %CF74
86*9880d681SAndroid Build Coastguard Worker
87*9880d681SAndroid Build Coastguard WorkerCF74:                                             ; preds = %CF74, %CF
88*9880d681SAndroid Build Coastguard Worker  %L37 = load float, float* %PC
89*9880d681SAndroid Build Coastguard Worker  store double 0.000000e+00, double* %Sl
90*9880d681SAndroid Build Coastguard Worker  %E38 = extractelement <2 x i1> %Sl23, i32 1
91*9880d681SAndroid Build Coastguard Worker  br i1 %E38, label %CF74, label %CF75
92*9880d681SAndroid Build Coastguard Worker
93*9880d681SAndroid Build Coastguard WorkerCF75:                                             ; preds = %CF75, %CF82, %CF74
94*9880d681SAndroid Build Coastguard Worker  %Shuff39 = shufflevector <2 x i1> %Shuff13, <2 x i1> zeroinitializer, <2 x i32> <i32 undef, i32 2>
95*9880d681SAndroid Build Coastguard Worker  %I40 = insertelement <4 x i64> zeroinitializer, i64 %4, i32 2
96*9880d681SAndroid Build Coastguard Worker  %Sl41 = select i1 %Cmp10, i32 0, i32 %3
97*9880d681SAndroid Build Coastguard Worker  %Cmp42 = icmp ne <1 x i64> zeroinitializer, zeroinitializer
98*9880d681SAndroid Build Coastguard Worker  %L43 = load double, double* %Sl
99*9880d681SAndroid Build Coastguard Worker  store i64 %4, i64* %2
100*9880d681SAndroid Build Coastguard Worker  %E44 = extractelement <2 x i1> %Shuff20, i32 1
101*9880d681SAndroid Build Coastguard Worker  br i1 %E44, label %CF75, label %CF82
102*9880d681SAndroid Build Coastguard Worker
103*9880d681SAndroid Build Coastguard WorkerCF82:                                             ; preds = %CF75
104*9880d681SAndroid Build Coastguard Worker  %Shuff45 = shufflevector <2 x i1> %Sl23, <2 x i1> %Sl23, <2 x i32> <i32 2, i32 0>
105*9880d681SAndroid Build Coastguard Worker  %I46 = insertelement <4 x i64> zeroinitializer, i64 0, i32 0
106*9880d681SAndroid Build Coastguard Worker  %B47 = sub i64 %E, %E6
107*9880d681SAndroid Build Coastguard Worker  %Sl48 = select i1 %Cmp10, double %L5, double %L43
108*9880d681SAndroid Build Coastguard Worker  %Cmp49 = icmp uge i64 %4, %B47
109*9880d681SAndroid Build Coastguard Worker  br i1 %Cmp49, label %CF75, label %CF81
110*9880d681SAndroid Build Coastguard Worker
111*9880d681SAndroid Build Coastguard WorkerCF81:                                             ; preds = %CF82
112*9880d681SAndroid Build Coastguard Worker  %L50 = load i8, i8* %0
113*9880d681SAndroid Build Coastguard Worker  store double %L43, double* %Sl
114*9880d681SAndroid Build Coastguard Worker  %E51 = extractelement <4 x i64> %Shuff7, i32 3
115*9880d681SAndroid Build Coastguard Worker  %Shuff52 = shufflevector <4 x float> %BC34, <4 x float> %BC34, <4 x i32> <i32 2, i32 4, i32 6, i32 0>
116*9880d681SAndroid Build Coastguard Worker  %I53 = insertelement <2 x i1> %Cmp, i1 %E25, i32 0
117*9880d681SAndroid Build Coastguard Worker  %B54 = fdiv double %L24, %L43
118*9880d681SAndroid Build Coastguard Worker  %BC55 = bitcast <4 x i64> zeroinitializer to <4 x double>
119*9880d681SAndroid Build Coastguard Worker  %Sl56 = select i1 false, i8 %5, i8 97
120*9880d681SAndroid Build Coastguard Worker  %L57 = load i8, i8* %0
121*9880d681SAndroid Build Coastguard Worker  store i8 %L50, i8* %0
122*9880d681SAndroid Build Coastguard Worker  %E58 = extractelement <2 x i1> %Shuff20, i32 1
123*9880d681SAndroid Build Coastguard Worker  br i1 %E58, label %CF, label %CF73
124*9880d681SAndroid Build Coastguard Worker
125*9880d681SAndroid Build Coastguard WorkerCF73:                                             ; preds = %CF73, %CF81
126*9880d681SAndroid Build Coastguard Worker  %Shuff59 = shufflevector <2 x i1> %Shuff13, <2 x i1> %Shuff45, <2 x i32> <i32 undef, i32 0>
127*9880d681SAndroid Build Coastguard Worker  %I60 = insertelement <4 x float> %Shuff52, float -4.374162e+06, i32 0
128*9880d681SAndroid Build Coastguard Worker  %B61 = mul <4 x i64> %I46, zeroinitializer
129*9880d681SAndroid Build Coastguard Worker  %PC62 = bitcast double* %A3 to float*
130*9880d681SAndroid Build Coastguard Worker  %Sl63 = select i1 %Cmp10, <1 x i64> zeroinitializer, <1 x i64> zeroinitializer
131*9880d681SAndroid Build Coastguard Worker  %Cmp64 = icmp ne <2 x i1> %Cmp, %Shuff
132*9880d681SAndroid Build Coastguard Worker  %L65 = load double, double* %A1
133*9880d681SAndroid Build Coastguard Worker  store float -4.374162e+06, float* %PC62
134*9880d681SAndroid Build Coastguard Worker  %E66 = extractelement <8 x i1> %I21, i32 3
135*9880d681SAndroid Build Coastguard Worker  br i1 %E66, label %CF73, label %CF79
136*9880d681SAndroid Build Coastguard Worker
137*9880d681SAndroid Build Coastguard WorkerCF79:                                             ; preds = %CF79, %CF73
138*9880d681SAndroid Build Coastguard Worker  %Shuff67 = shufflevector <8 x i1> %I21, <8 x i1> %I21, <8 x i32> <i32 6, i32 8, i32 10, i32 12, i32 14, i32 0, i32 undef, i32 4>
139*9880d681SAndroid Build Coastguard Worker  %I68 = insertelement <1 x i1> %Cmp42, i1 %E25, i32 0
140*9880d681SAndroid Build Coastguard Worker  %B69 = sdiv <16 x i64> <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
141*9880d681SAndroid Build Coastguard Worker  %Sl70 = select i1 %Cmp49, <2 x i1> %Sl23, <2 x i1> %Shuff45
142*9880d681SAndroid Build Coastguard Worker  %Cmp71 = icmp ne i1 false, false
143*9880d681SAndroid Build Coastguard Worker  br i1 %Cmp71, label %CF79, label %CF83
144*9880d681SAndroid Build Coastguard Worker
145*9880d681SAndroid Build Coastguard WorkerCF83:                                             ; preds = %CF79
146*9880d681SAndroid Build Coastguard Worker  store double 0.000000e+00, double* %Sl
147*9880d681SAndroid Build Coastguard Worker  store float %BC, float* %PC62
148*9880d681SAndroid Build Coastguard Worker  store double %Sl48, double* %Sl
149*9880d681SAndroid Build Coastguard Worker  store double %FC, double* %Sl
150*9880d681SAndroid Build Coastguard Worker  store float %BC, float* %PC62
151*9880d681SAndroid Build Coastguard Worker  ret void
152*9880d681SAndroid Build Coastguard Worker}
153