aboutsummaryrefslogtreecommitdiffstats
path: root/test/CodeGen/Mips/msa/llvm-stress-s525530439.ll
blob: c0bc905634847a725d0d70472b1a6ddb15706b76 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
; RUN: llc -march=mips < %s
; RUN: llc -march=mips -mattr=+msa,+fp64 < %s
; RUN: llc -march=mipsel < %s
; RUN: llc -march=mipsel -mattr=+msa,+fp64 < %s

; This test originally failed for MSA with a
; `Num < NumOperands && "Invalid child # of SDNode!"' assertion.
; It should at least successfully build.

define void @autogen_SD525530439(i8*, i32*, i64*, i32, i64, i8) {
BB:
  %A4 = alloca i32
  %A3 = alloca double
  %A2 = alloca <1 x double>
  %A1 = alloca <8 x double>
  %A = alloca i64
  %L = load i8, i8* %0
  store i64 33695, i64* %A
  %E = extractelement <4 x i32> zeroinitializer, i32 3
  %Shuff = shufflevector <2 x i32> <i32 -1, i32 -1>, <2 x i32> <i32 -1, i32 -1>, <2 x i32> <i32 2, i32 0>
  %I = insertelement <4 x i16> zeroinitializer, i16 -11642, i32 0
  %B = lshr <8 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>
  %ZE = fpext float 0x3B64A2B880000000 to double
  %Sl = select i1 true, i16 -1, i16 -11642
  %L5 = load i8, i8* %0
  store i8 0, i8* %0
  %E6 = extractelement <4 x i32> zeroinitializer, i32 2
  %Shuff7 = shufflevector <8 x i1> zeroinitializer, <8 x i1> zeroinitializer, <8 x i32> <i32 undef, i32 7, i32 9, i32 11, i32 13, i32 15, i32 1, i32 undef>
  %I8 = insertelement <4 x i32> zeroinitializer, i32 %3, i32 3
  %B9 = sub i32 71140, 439732
  %BC = bitcast <2 x i32> <i32 -1, i32 -1> to <2 x float>
  %Sl10 = select i1 true, i32* %1, i32* %1
  %Cmp = icmp sge <8 x i64> zeroinitializer, zeroinitializer
  %L11 = load i32, i32* %Sl10
  store <1 x double> zeroinitializer, <1 x double>* %A2
  %E12 = extractelement <4 x i16> zeroinitializer, i32 0
  %Shuff13 = shufflevector <1 x i64> zeroinitializer, <1 x i64> zeroinitializer, <1 x i32> undef
  %I14 = insertelement <1 x i16> zeroinitializer, i16 %Sl, i32 0
  %B15 = or i16 -1, %E12
  %BC16 = bitcast <4 x i32> zeroinitializer to <4 x float>
  %Sl17 = select i1 true, i64 %4, i64 %4
  %Cmp18 = fcmp ugt float 0xC5ABB1BF80000000, 0x3EEF3D6300000000
  br label %CF75

CF75:                                             ; preds = %CF75, %BB
  %L19 = load i32, i32* %Sl10
  store i32 %L11, i32* %Sl10
  %E20 = extractelement <4 x i32> zeroinitializer, i32 1
  %Shuff21 = shufflevector <4 x i32> zeroinitializer, <4 x i32> %I8, <4 x i32> <i32 undef, i32 2, i32 4, i32 6>
  %I22 = insertelement <4 x float> %BC16, float 0x3EEF3D6300000000, i32 2
  %B23 = shl i32 71140, 439732
  %ZE24 = fpext <4 x float> %I22 to <4 x double>
  %Sl25 = select i1 %Cmp18, i32 %L11, i32 %L11
  %Cmp26 = icmp ne i32 %E20, %L19
  br i1 %Cmp26, label %CF75, label %CF76

CF76:                                             ; preds = %CF75
  %L27 = load i32, i32* %Sl10
  store i32 439732, i32* %Sl10
  %E28 = extractelement <4 x i32> %Shuff21, i32 3
  %Shuff29 = shufflevector <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>, <8 x i32> <i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 0>
  %I30 = insertelement <8 x i1> %Shuff7, i1 %Cmp18, i32 4
  %Sl31 = select i1 %Cmp18, i32 %3, i32 %B23
  %Cmp32 = icmp ugt i32 0, %3
  br label %CF74

CF74:                                             ; preds = %CF74, %CF80, %CF78, %CF76
  %L33 = load i64, i64* %2
  store i32 71140, i32* %Sl10
  %E34 = extractelement <4 x i32> zeroinitializer, i32 1
  %Shuff35 = shufflevector <1 x i16> zeroinitializer, <1 x i16> zeroinitializer, <1 x i32> undef
  %I36 = insertelement <4 x i16> zeroinitializer, i16 -11642, i32 0
  %B37 = mul <8 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>, %Shuff29
  %Sl38 = select i1 %Cmp18, double 0.000000e+00, double 0x2BA9DB480DA732C6
  %Cmp39 = icmp sgt i16 -11642, %Sl
  br i1 %Cmp39, label %CF74, label %CF80

CF80:                                             ; preds = %CF74
  %L40 = load i8, i8* %0
  store i32 0, i32* %Sl10
  %E41 = extractelement <8 x i64> zeroinitializer, i32 1
  %Shuff42 = shufflevector <1 x i16> %I14, <1 x i16> %I14, <1 x i32> undef
  %I43 = insertelement <4 x i16> %I36, i16 -11642, i32 0
  %FC = fptoui float 0x455CA2B080000000 to i16
  %Sl44 = select i1 %Cmp18, i1 %Cmp18, i1 %Cmp39
  br i1 %Sl44, label %CF74, label %CF78

CF78:                                             ; preds = %CF80
  %L45 = load i32, i32* %Sl10
  store i8 %L5, i8* %0
  %E46 = extractelement <8 x i1> %Shuff7, i32 2
  br i1 %E46, label %CF74, label %CF77

CF77:                                             ; preds = %CF77, %CF78
  %Shuff47 = shufflevector <4 x i16> %I43, <4 x i16> zeroinitializer, <4 x i32> <i32 5, i32 undef, i32 1, i32 3>
  %I48 = insertelement <1 x i16> %Shuff42, i16 %Sl, i32 0
  %B49 = mul i8 0, %L40
  %FC50 = uitofp i32 %3 to double
  %Sl51 = select i1 %Sl44, i32 %L27, i32 0
  %Cmp52 = icmp sge i8 %B49, 0
  br i1 %Cmp52, label %CF77, label %CF79

CF79:                                             ; preds = %CF77
  %L53 = load i32, i32* %Sl10
  store i8 %L40, i8* %0
  %E54 = extractelement <4 x i32> zeroinitializer, i32 1
  %Shuff55 = shufflevector <4 x i32> %Shuff21, <4 x i32> %I8, <4 x i32> <i32 4, i32 6, i32 undef, i32 2>
  %I56 = insertelement <4 x i32> zeroinitializer, i32 %Sl51, i32 2
  %Tr = trunc <1 x i64> %Shuff13 to <1 x i16>
  %Sl57 = select i1 %Cmp18, <2 x i32> <i32 -1, i32 -1>, <2 x i32> <i32 -1, i32 -1>
  %Cmp58 = icmp uge <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, %I56
  %L59 = load i8, i8* %0
  store <1 x double> zeroinitializer, <1 x double>* %A2
  %E60 = extractelement <4 x i32> zeroinitializer, i32 0
  %Shuff61 = shufflevector <4 x i32> %I8, <4 x i32> %I8, <4 x i32> <i32 undef, i32 1, i32 undef, i32 undef>
  %I62 = insertelement <4 x i16> zeroinitializer, i16 %E12, i32 1
  %B63 = and <4 x i32> %Shuff61, <i32 -1, i32 -1, i32 -1, i32 -1>
  %PC = bitcast double* %A3 to i32*
  %Sl64 = select i1 %Cmp18, <4 x i32> %Shuff61, <4 x i32> %Shuff55
  %Cmp65 = icmp sgt i32 439732, %3
  br label %CF

CF:                                               ; preds = %CF79
  %L66 = load i32, i32* %Sl10
  store i32 %E6, i32* %PC
  %E67 = extractelement <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, i32 2
  %Shuff68 = shufflevector <4 x i32> %Sl64, <4 x i32> %I8, <4 x i32> <i32 5, i32 undef, i32 1, i32 undef>
  %I69 = insertelement <4 x i16> %Shuff47, i16 %Sl, i32 3
  %B70 = sdiv <4 x i64> zeroinitializer, zeroinitializer
  %FC71 = sitofp i32 %L66 to double
  %Sl72 = select i1 %Cmp18, i64 %4, i64 %4
  %Cmp73 = icmp eq <4 x i64> zeroinitializer, %B70
  store i32 %B23, i32* %PC
  store i32 %3, i32* %PC
  store i32 %3, i32* %Sl10
  store i32 %L27, i32* %1
  store i32 0, i32* %PC
  ret void
}