1 ; Test that the correct instruction is chosen for spill and reload by trying
2 ; to have 33 live MSA registers simultaneously
4 ; RUN: llc -march=mips -mattr=+msa < %s | FileCheck %s
6 define i32 @test_i8(<16 x i8>* %p0, <16 x i8>* %q1) nounwind {
8 %p1 = getelementptr <16 x i8>* %p0, i32 1
9 %p2 = getelementptr <16 x i8>* %p0, i32 2
10 %p3 = getelementptr <16 x i8>* %p0, i32 3
11 %p4 = getelementptr <16 x i8>* %p0, i32 4
12 %p5 = getelementptr <16 x i8>* %p0, i32 5
13 %p6 = getelementptr <16 x i8>* %p0, i32 6
14 %p7 = getelementptr <16 x i8>* %p0, i32 7
15 %p8 = getelementptr <16 x i8>* %p0, i32 8
16 %p9 = getelementptr <16 x i8>* %p0, i32 9
17 %p10 = getelementptr <16 x i8>* %p0, i32 10
18 %p11 = getelementptr <16 x i8>* %p0, i32 11
19 %p12 = getelementptr <16 x i8>* %p0, i32 12
20 %p13 = getelementptr <16 x i8>* %p0, i32 13
21 %p14 = getelementptr <16 x i8>* %p0, i32 14
22 %p15 = getelementptr <16 x i8>* %p0, i32 15
23 %p16 = getelementptr <16 x i8>* %p0, i32 16
24 %p17 = getelementptr <16 x i8>* %p0, i32 17
25 %p18 = getelementptr <16 x i8>* %p0, i32 18
26 %p19 = getelementptr <16 x i8>* %p0, i32 19
27 %p20 = getelementptr <16 x i8>* %p0, i32 20
28 %p21 = getelementptr <16 x i8>* %p0, i32 21
29 %p22 = getelementptr <16 x i8>* %p0, i32 22
30 %p23 = getelementptr <16 x i8>* %p0, i32 23
31 %p24 = getelementptr <16 x i8>* %p0, i32 24
32 %p25 = getelementptr <16 x i8>* %p0, i32 25
33 %p26 = getelementptr <16 x i8>* %p0, i32 26
34 %p27 = getelementptr <16 x i8>* %p0, i32 27
35 %p28 = getelementptr <16 x i8>* %p0, i32 28
36 %p29 = getelementptr <16 x i8>* %p0, i32 29
37 %p30 = getelementptr <16 x i8>* %p0, i32 30
38 %p31 = getelementptr <16 x i8>* %p0, i32 31
39 %p32 = getelementptr <16 x i8>* %p0, i32 32
40 %p33 = getelementptr <16 x i8>* %p0, i32 33
41 %0 = load <16 x i8>* %p0, align 16
42 %1 = load <16 x i8>* %p1, align 16
43 %2 = load <16 x i8>* %p2, align 16
44 %3 = load <16 x i8>* %p3, align 16
45 %4 = load <16 x i8>* %p4, align 16
46 %5 = load <16 x i8>* %p5, align 16
47 %6 = load <16 x i8>* %p6, align 16
48 %7 = load <16 x i8>* %p7, align 16
49 %8 = load <16 x i8>* %p8, align 16
50 %9 = load <16 x i8>* %p9, align 16
51 %10 = load <16 x i8>* %p10, align 16
52 %11 = load <16 x i8>* %p11, align 16
53 %12 = load <16 x i8>* %p12, align 16
54 %13 = load <16 x i8>* %p13, align 16
55 %14 = load <16 x i8>* %p14, align 16
56 %15 = load <16 x i8>* %p15, align 16
57 %16 = load <16 x i8>* %p16, align 16
58 %17 = load <16 x i8>* %p17, align 16
59 %18 = load <16 x i8>* %p18, align 16
60 %19 = load <16 x i8>* %p19, align 16
61 %20 = load <16 x i8>* %p20, align 16
62 %21 = load <16 x i8>* %p21, align 16
63 %22 = load <16 x i8>* %p22, align 16
64 %23 = load <16 x i8>* %p23, align 16
65 %24 = load <16 x i8>* %p24, align 16
66 %25 = load <16 x i8>* %p25, align 16
67 %26 = load <16 x i8>* %p26, align 16
68 %27 = load <16 x i8>* %p27, align 16
69 %28 = load <16 x i8>* %p28, align 16
70 %29 = load <16 x i8>* %p29, align 16
71 %30 = load <16 x i8>* %p30, align 16
72 %31 = load <16 x i8>* %p31, align 16
73 %32 = load <16 x i8>* %p32, align 16
74 %33 = load <16 x i8>* %p33, align 16
75 %r1 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %0, <16 x i8> %1)
76 %r2 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r1, <16 x i8> %2)
77 %r3 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r2, <16 x i8> %3)
78 %r4 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r3, <16 x i8> %4)
79 %r5 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r4, <16 x i8> %5)
80 %r6 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r5, <16 x i8> %6)
81 %r7 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r6, <16 x i8> %7)
82 %r8 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r7, <16 x i8> %8)
83 %r9 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r8, <16 x i8> %9)
84 %r10 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r9, <16 x i8> %10)
85 %r11 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r10, <16 x i8> %11)
86 %r12 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r11, <16 x i8> %12)
87 %r13 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r12, <16 x i8> %13)
88 %r14 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r13, <16 x i8> %14)
89 %r15 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r14, <16 x i8> %15)
90 %r16 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r15, <16 x i8> %16)
91 %r17 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r16, <16 x i8> %17)
92 %r18 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r17, <16 x i8> %18)
93 %r19 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r18, <16 x i8> %19)
94 %r20 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r19, <16 x i8> %20)
95 %r21 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r20, <16 x i8> %21)
96 %r22 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r21, <16 x i8> %22)
97 %r23 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r22, <16 x i8> %23)
98 %r24 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r23, <16 x i8> %24)
99 %r25 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r24, <16 x i8> %25)
100 %r26 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r25, <16 x i8> %26)
101 %r27 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r26, <16 x i8> %27)
102 %r28 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r27, <16 x i8> %28)
103 %r29 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r28, <16 x i8> %29)
104 %r30 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r29, <16 x i8> %30)
105 %r31 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r30, <16 x i8> %31)
106 %r32 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r31, <16 x i8> %32)
107 %r33 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r32, <16 x i8> %33)
108 %rx1 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %r33, <16 x i8> %1)
109 %rx2 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx1, <16 x i8> %2)
110 %rx3 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx2, <16 x i8> %3)
111 %rx4 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx3, <16 x i8> %4)
112 %rx5 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx4, <16 x i8> %5)
113 %rx6 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx5, <16 x i8> %6)
114 %rx7 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx6, <16 x i8> %7)
115 %rx8 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx7, <16 x i8> %8)
116 %rx9 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx8, <16 x i8> %9)
117 %rx10 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx9, <16 x i8> %10)
118 %rx11 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx10, <16 x i8> %11)
119 %rx12 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx11, <16 x i8> %12)
120 %rx13 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx12, <16 x i8> %13)
121 %rx14 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx13, <16 x i8> %14)
122 %rx15 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx14, <16 x i8> %15)
123 %rx16 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx15, <16 x i8> %16)
124 %rx17 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx16, <16 x i8> %17)
125 %rx18 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx17, <16 x i8> %18)
126 %rx19 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx18, <16 x i8> %19)
127 %rx20 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx19, <16 x i8> %20)
128 %rx21 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx20, <16 x i8> %21)
129 %rx22 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx21, <16 x i8> %22)
130 %rx23 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx22, <16 x i8> %23)
131 %rx24 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx23, <16 x i8> %24)
132 %rx25 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx24, <16 x i8> %25)
133 %rx26 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx25, <16 x i8> %26)
134 %rx27 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx26, <16 x i8> %27)
135 %rx28 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx27, <16 x i8> %28)
136 %rx29 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx28, <16 x i8> %29)
137 %rx30 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx29, <16 x i8> %30)
138 %rx31 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx30, <16 x i8> %31)
139 %rx32 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx31, <16 x i8> %32)
140 %rx33 = call <16 x i8> @llvm.mips.addv.b(<16 x i8> %rx32, <16 x i8> %33)
141 %res = call i32 @llvm.mips.copy.s.b(<16 x i8> %rx33, i32 0)
145 declare <16 x i8> @llvm.mips.addv.b(<16 x i8>, <16 x i8>) nounwind
146 declare i32 @llvm.mips.copy.s.b(<16 x i8>, i32) nounwind
149 ; CHECK: st.b {{.*}} Spill
150 ; CHECK: st.b {{.*}} Spill
151 ; CHECK: ld.b {{.*}} Reload
152 ; CHECK: ld.b {{.*}} Reload
155 define i32 @test_i16(<8 x i16>* %p0, <8 x i16>* %q1) nounwind {
157 %p1 = getelementptr <8 x i16>* %p0, i32 1
158 %p2 = getelementptr <8 x i16>* %p0, i32 2
159 %p3 = getelementptr <8 x i16>* %p0, i32 3
160 %p4 = getelementptr <8 x i16>* %p0, i32 4
161 %p5 = getelementptr <8 x i16>* %p0, i32 5
162 %p6 = getelementptr <8 x i16>* %p0, i32 6
163 %p7 = getelementptr <8 x i16>* %p0, i32 7
164 %p8 = getelementptr <8 x i16>* %p0, i32 8
165 %p9 = getelementptr <8 x i16>* %p0, i32 9
166 %p10 = getelementptr <8 x i16>* %p0, i32 10
167 %p11 = getelementptr <8 x i16>* %p0, i32 11
168 %p12 = getelementptr <8 x i16>* %p0, i32 12
169 %p13 = getelementptr <8 x i16>* %p0, i32 13
170 %p14 = getelementptr <8 x i16>* %p0, i32 14
171 %p15 = getelementptr <8 x i16>* %p0, i32 15
172 %p16 = getelementptr <8 x i16>* %p0, i32 16
173 %p17 = getelementptr <8 x i16>* %p0, i32 17
174 %p18 = getelementptr <8 x i16>* %p0, i32 18
175 %p19 = getelementptr <8 x i16>* %p0, i32 19
176 %p20 = getelementptr <8 x i16>* %p0, i32 20
177 %p21 = getelementptr <8 x i16>* %p0, i32 21
178 %p22 = getelementptr <8 x i16>* %p0, i32 22
179 %p23 = getelementptr <8 x i16>* %p0, i32 23
180 %p24 = getelementptr <8 x i16>* %p0, i32 24
181 %p25 = getelementptr <8 x i16>* %p0, i32 25
182 %p26 = getelementptr <8 x i16>* %p0, i32 26
183 %p27 = getelementptr <8 x i16>* %p0, i32 27
184 %p28 = getelementptr <8 x i16>* %p0, i32 28
185 %p29 = getelementptr <8 x i16>* %p0, i32 29
186 %p30 = getelementptr <8 x i16>* %p0, i32 30
187 %p31 = getelementptr <8 x i16>* %p0, i32 31
188 %p32 = getelementptr <8 x i16>* %p0, i32 32
189 %p33 = getelementptr <8 x i16>* %p0, i32 33
190 %0 = load <8 x i16>* %p0, align 16
191 %1 = load <8 x i16>* %p1, align 16
192 %2 = load <8 x i16>* %p2, align 16
193 %3 = load <8 x i16>* %p3, align 16
194 %4 = load <8 x i16>* %p4, align 16
195 %5 = load <8 x i16>* %p5, align 16
196 %6 = load <8 x i16>* %p6, align 16
197 %7 = load <8 x i16>* %p7, align 16
198 %8 = load <8 x i16>* %p8, align 16
199 %9 = load <8 x i16>* %p9, align 16
200 %10 = load <8 x i16>* %p10, align 16
201 %11 = load <8 x i16>* %p11, align 16
202 %12 = load <8 x i16>* %p12, align 16
203 %13 = load <8 x i16>* %p13, align 16
204 %14 = load <8 x i16>* %p14, align 16
205 %15 = load <8 x i16>* %p15, align 16
206 %16 = load <8 x i16>* %p16, align 16
207 %17 = load <8 x i16>* %p17, align 16
208 %18 = load <8 x i16>* %p18, align 16
209 %19 = load <8 x i16>* %p19, align 16
210 %20 = load <8 x i16>* %p20, align 16
211 %21 = load <8 x i16>* %p21, align 16
212 %22 = load <8 x i16>* %p22, align 16
213 %23 = load <8 x i16>* %p23, align 16
214 %24 = load <8 x i16>* %p24, align 16
215 %25 = load <8 x i16>* %p25, align 16
216 %26 = load <8 x i16>* %p26, align 16
217 %27 = load <8 x i16>* %p27, align 16
218 %28 = load <8 x i16>* %p28, align 16
219 %29 = load <8 x i16>* %p29, align 16
220 %30 = load <8 x i16>* %p30, align 16
221 %31 = load <8 x i16>* %p31, align 16
222 %32 = load <8 x i16>* %p32, align 16
223 %33 = load <8 x i16>* %p33, align 16
224 %r1 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %0, <8 x i16> %1)
225 %r2 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r1, <8 x i16> %2)
226 %r3 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r2, <8 x i16> %3)
227 %r4 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r3, <8 x i16> %4)
228 %r5 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r4, <8 x i16> %5)
229 %r6 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r5, <8 x i16> %6)
230 %r7 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r6, <8 x i16> %7)
231 %r8 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r7, <8 x i16> %8)
232 %r9 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r8, <8 x i16> %9)
233 %r10 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r9, <8 x i16> %10)
234 %r11 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r10, <8 x i16> %11)
235 %r12 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r11, <8 x i16> %12)
236 %r13 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r12, <8 x i16> %13)
237 %r14 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r13, <8 x i16> %14)
238 %r15 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r14, <8 x i16> %15)
239 %r16 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r15, <8 x i16> %16)
240 %r17 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r16, <8 x i16> %17)
241 %r18 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r17, <8 x i16> %18)
242 %r19 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r18, <8 x i16> %19)
243 %r20 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r19, <8 x i16> %20)
244 %r21 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r20, <8 x i16> %21)
245 %r22 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r21, <8 x i16> %22)
246 %r23 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r22, <8 x i16> %23)
247 %r24 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r23, <8 x i16> %24)
248 %r25 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r24, <8 x i16> %25)
249 %r26 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r25, <8 x i16> %26)
250 %r27 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r26, <8 x i16> %27)
251 %r28 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r27, <8 x i16> %28)
252 %r29 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r28, <8 x i16> %29)
253 %r30 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r29, <8 x i16> %30)
254 %r31 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r30, <8 x i16> %31)
255 %r32 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r31, <8 x i16> %32)
256 %r33 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r32, <8 x i16> %33)
257 %rx1 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %r33, <8 x i16> %1)
258 %rx2 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx1, <8 x i16> %2)
259 %rx3 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx2, <8 x i16> %3)
260 %rx4 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx3, <8 x i16> %4)
261 %rx5 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx4, <8 x i16> %5)
262 %rx6 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx5, <8 x i16> %6)
263 %rx7 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx6, <8 x i16> %7)
264 %rx8 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx7, <8 x i16> %8)
265 %rx9 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx8, <8 x i16> %9)
266 %rx10 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx9, <8 x i16> %10)
267 %rx11 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx10, <8 x i16> %11)
268 %rx12 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx11, <8 x i16> %12)
269 %rx13 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx12, <8 x i16> %13)
270 %rx14 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx13, <8 x i16> %14)
271 %rx15 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx14, <8 x i16> %15)
272 %rx16 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx15, <8 x i16> %16)
273 %rx17 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx16, <8 x i16> %17)
274 %rx18 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx17, <8 x i16> %18)
275 %rx19 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx18, <8 x i16> %19)
276 %rx20 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx19, <8 x i16> %20)
277 %rx21 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx20, <8 x i16> %21)
278 %rx22 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx21, <8 x i16> %22)
279 %rx23 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx22, <8 x i16> %23)
280 %rx24 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx23, <8 x i16> %24)
281 %rx25 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx24, <8 x i16> %25)
282 %rx26 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx25, <8 x i16> %26)
283 %rx27 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx26, <8 x i16> %27)
284 %rx28 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx27, <8 x i16> %28)
285 %rx29 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx28, <8 x i16> %29)
286 %rx30 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx29, <8 x i16> %30)
287 %rx31 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx30, <8 x i16> %31)
288 %rx32 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx31, <8 x i16> %32)
289 %rx33 = call <8 x i16> @llvm.mips.addv.h(<8 x i16> %rx32, <8 x i16> %33)
290 %res = call i32 @llvm.mips.copy.s.h(<8 x i16> %rx33, i32 0)
294 declare <8 x i16> @llvm.mips.addv.h(<8 x i16>, <8 x i16>) nounwind
295 declare i32 @llvm.mips.copy.s.h(<8 x i16>, i32) nounwind
298 ; CHECK: st.h {{.*}} Spill
299 ; CHECK: st.h {{.*}} Spill
300 ; CHECK: ld.h {{.*}} Reload
301 ; CHECK: ld.h {{.*}} Reload
304 define i32 @test_i32(<4 x i32>* %p0, <4 x i32>* %q1) nounwind {
306 %p1 = getelementptr <4 x i32>* %p0, i32 1
307 %p2 = getelementptr <4 x i32>* %p0, i32 2
308 %p3 = getelementptr <4 x i32>* %p0, i32 3
309 %p4 = getelementptr <4 x i32>* %p0, i32 4
310 %p5 = getelementptr <4 x i32>* %p0, i32 5
311 %p6 = getelementptr <4 x i32>* %p0, i32 6
312 %p7 = getelementptr <4 x i32>* %p0, i32 7
313 %p8 = getelementptr <4 x i32>* %p0, i32 8
314 %p9 = getelementptr <4 x i32>* %p0, i32 9
315 %p10 = getelementptr <4 x i32>* %p0, i32 10
316 %p11 = getelementptr <4 x i32>* %p0, i32 11
317 %p12 = getelementptr <4 x i32>* %p0, i32 12
318 %p13 = getelementptr <4 x i32>* %p0, i32 13
319 %p14 = getelementptr <4 x i32>* %p0, i32 14
320 %p15 = getelementptr <4 x i32>* %p0, i32 15
321 %p16 = getelementptr <4 x i32>* %p0, i32 16
322 %p17 = getelementptr <4 x i32>* %p0, i32 17
323 %p18 = getelementptr <4 x i32>* %p0, i32 18
324 %p19 = getelementptr <4 x i32>* %p0, i32 19
325 %p20 = getelementptr <4 x i32>* %p0, i32 20
326 %p21 = getelementptr <4 x i32>* %p0, i32 21
327 %p22 = getelementptr <4 x i32>* %p0, i32 22
328 %p23 = getelementptr <4 x i32>* %p0, i32 23
329 %p24 = getelementptr <4 x i32>* %p0, i32 24
330 %p25 = getelementptr <4 x i32>* %p0, i32 25
331 %p26 = getelementptr <4 x i32>* %p0, i32 26
332 %p27 = getelementptr <4 x i32>* %p0, i32 27
333 %p28 = getelementptr <4 x i32>* %p0, i32 28
334 %p29 = getelementptr <4 x i32>* %p0, i32 29
335 %p30 = getelementptr <4 x i32>* %p0, i32 30
336 %p31 = getelementptr <4 x i32>* %p0, i32 31
337 %p32 = getelementptr <4 x i32>* %p0, i32 32
338 %p33 = getelementptr <4 x i32>* %p0, i32 33
339 %0 = load <4 x i32>* %p0, align 16
340 %1 = load <4 x i32>* %p1, align 16
341 %2 = load <4 x i32>* %p2, align 16
342 %3 = load <4 x i32>* %p3, align 16
343 %4 = load <4 x i32>* %p4, align 16
344 %5 = load <4 x i32>* %p5, align 16
345 %6 = load <4 x i32>* %p6, align 16
346 %7 = load <4 x i32>* %p7, align 16
347 %8 = load <4 x i32>* %p8, align 16
348 %9 = load <4 x i32>* %p9, align 16
349 %10 = load <4 x i32>* %p10, align 16
350 %11 = load <4 x i32>* %p11, align 16
351 %12 = load <4 x i32>* %p12, align 16
352 %13 = load <4 x i32>* %p13, align 16
353 %14 = load <4 x i32>* %p14, align 16
354 %15 = load <4 x i32>* %p15, align 16
355 %16 = load <4 x i32>* %p16, align 16
356 %17 = load <4 x i32>* %p17, align 16
357 %18 = load <4 x i32>* %p18, align 16
358 %19 = load <4 x i32>* %p19, align 16
359 %20 = load <4 x i32>* %p20, align 16
360 %21 = load <4 x i32>* %p21, align 16
361 %22 = load <4 x i32>* %p22, align 16
362 %23 = load <4 x i32>* %p23, align 16
363 %24 = load <4 x i32>* %p24, align 16
364 %25 = load <4 x i32>* %p25, align 16
365 %26 = load <4 x i32>* %p26, align 16
366 %27 = load <4 x i32>* %p27, align 16
367 %28 = load <4 x i32>* %p28, align 16
368 %29 = load <4 x i32>* %p29, align 16
369 %30 = load <4 x i32>* %p30, align 16
370 %31 = load <4 x i32>* %p31, align 16
371 %32 = load <4 x i32>* %p32, align 16
372 %33 = load <4 x i32>* %p33, align 16
373 %r1 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %0, <4 x i32> %1)
374 %r2 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r1, <4 x i32> %2)
375 %r3 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r2, <4 x i32> %3)
376 %r4 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r3, <4 x i32> %4)
377 %r5 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r4, <4 x i32> %5)
378 %r6 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r5, <4 x i32> %6)
379 %r7 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r6, <4 x i32> %7)
380 %r8 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r7, <4 x i32> %8)
381 %r9 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r8, <4 x i32> %9)
382 %r10 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r9, <4 x i32> %10)
383 %r11 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r10, <4 x i32> %11)
384 %r12 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r11, <4 x i32> %12)
385 %r13 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r12, <4 x i32> %13)
386 %r14 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r13, <4 x i32> %14)
387 %r15 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r14, <4 x i32> %15)
388 %r16 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r15, <4 x i32> %16)
389 %r17 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r16, <4 x i32> %17)
390 %r18 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r17, <4 x i32> %18)
391 %r19 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r18, <4 x i32> %19)
392 %r20 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r19, <4 x i32> %20)
393 %r21 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r20, <4 x i32> %21)
394 %r22 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r21, <4 x i32> %22)
395 %r23 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r22, <4 x i32> %23)
396 %r24 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r23, <4 x i32> %24)
397 %r25 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r24, <4 x i32> %25)
398 %r26 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r25, <4 x i32> %26)
399 %r27 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r26, <4 x i32> %27)
400 %r28 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r27, <4 x i32> %28)
401 %r29 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r28, <4 x i32> %29)
402 %r30 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r29, <4 x i32> %30)
403 %r31 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r30, <4 x i32> %31)
404 %r32 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r31, <4 x i32> %32)
405 %r33 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r32, <4 x i32> %33)
406 %rx1 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %r33, <4 x i32> %1)
407 %rx2 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx1, <4 x i32> %2)
408 %rx3 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx2, <4 x i32> %3)
409 %rx4 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx3, <4 x i32> %4)
410 %rx5 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx4, <4 x i32> %5)
411 %rx6 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx5, <4 x i32> %6)
412 %rx7 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx6, <4 x i32> %7)
413 %rx8 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx7, <4 x i32> %8)
414 %rx9 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx8, <4 x i32> %9)
415 %rx10 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx9, <4 x i32> %10)
416 %rx11 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx10, <4 x i32> %11)
417 %rx12 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx11, <4 x i32> %12)
418 %rx13 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx12, <4 x i32> %13)
419 %rx14 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx13, <4 x i32> %14)
420 %rx15 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx14, <4 x i32> %15)
421 %rx16 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx15, <4 x i32> %16)
422 %rx17 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx16, <4 x i32> %17)
423 %rx18 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx17, <4 x i32> %18)
424 %rx19 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx18, <4 x i32> %19)
425 %rx20 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx19, <4 x i32> %20)
426 %rx21 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx20, <4 x i32> %21)
427 %rx22 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx21, <4 x i32> %22)
428 %rx23 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx22, <4 x i32> %23)
429 %rx24 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx23, <4 x i32> %24)
430 %rx25 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx24, <4 x i32> %25)
431 %rx26 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx25, <4 x i32> %26)
432 %rx27 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx26, <4 x i32> %27)
433 %rx28 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx27, <4 x i32> %28)
434 %rx29 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx28, <4 x i32> %29)
435 %rx30 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx29, <4 x i32> %30)
436 %rx31 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx30, <4 x i32> %31)
437 %rx32 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx31, <4 x i32> %32)
438 %rx33 = call <4 x i32> @llvm.mips.addv.w(<4 x i32> %rx32, <4 x i32> %33)
439 %res = call i32 @llvm.mips.copy.s.w(<4 x i32> %rx33, i32 0)
443 declare <4 x i32> @llvm.mips.addv.w(<4 x i32>, <4 x i32>) nounwind
444 declare i32 @llvm.mips.copy.s.w(<4 x i32>, i32) nounwind
447 ; CHECK: st.w {{.*}} Spill
448 ; CHECK: st.w {{.*}} Spill
449 ; CHECK: ld.w {{.*}} Reload
450 ; CHECK: ld.w {{.*}} Reload
453 define i32 @test_i64(<2 x i64>* %p0, <2 x i64>* %q1) nounwind {
455 %p1 = getelementptr <2 x i64>* %p0, i32 1
456 %p2 = getelementptr <2 x i64>* %p0, i32 2
457 %p3 = getelementptr <2 x i64>* %p0, i32 3
458 %p4 = getelementptr <2 x i64>* %p0, i32 4
459 %p5 = getelementptr <2 x i64>* %p0, i32 5
460 %p6 = getelementptr <2 x i64>* %p0, i32 6
461 %p7 = getelementptr <2 x i64>* %p0, i32 7
462 %p8 = getelementptr <2 x i64>* %p0, i32 8
463 %p9 = getelementptr <2 x i64>* %p0, i32 9
464 %p10 = getelementptr <2 x i64>* %p0, i32 10
465 %p11 = getelementptr <2 x i64>* %p0, i32 11
466 %p12 = getelementptr <2 x i64>* %p0, i32 12
467 %p13 = getelementptr <2 x i64>* %p0, i32 13
468 %p14 = getelementptr <2 x i64>* %p0, i32 14
469 %p15 = getelementptr <2 x i64>* %p0, i32 15
470 %p16 = getelementptr <2 x i64>* %p0, i32 16
471 %p17 = getelementptr <2 x i64>* %p0, i32 17
472 %p18 = getelementptr <2 x i64>* %p0, i32 18
473 %p19 = getelementptr <2 x i64>* %p0, i32 19
474 %p20 = getelementptr <2 x i64>* %p0, i32 20
475 %p21 = getelementptr <2 x i64>* %p0, i32 21
476 %p22 = getelementptr <2 x i64>* %p0, i32 22
477 %p23 = getelementptr <2 x i64>* %p0, i32 23
478 %p24 = getelementptr <2 x i64>* %p0, i32 24
479 %p25 = getelementptr <2 x i64>* %p0, i32 25
480 %p26 = getelementptr <2 x i64>* %p0, i32 26
481 %p27 = getelementptr <2 x i64>* %p0, i32 27
482 %p28 = getelementptr <2 x i64>* %p0, i32 28
483 %p29 = getelementptr <2 x i64>* %p0, i32 29
484 %p30 = getelementptr <2 x i64>* %p0, i32 30
485 %p31 = getelementptr <2 x i64>* %p0, i32 31
486 %p32 = getelementptr <2 x i64>* %p0, i32 32
487 %p33 = getelementptr <2 x i64>* %p0, i32 33
488 %0 = load <2 x i64>* %p0, align 16
489 %1 = load <2 x i64>* %p1, align 16
490 %2 = load <2 x i64>* %p2, align 16
491 %3 = load <2 x i64>* %p3, align 16
492 %4 = load <2 x i64>* %p4, align 16
493 %5 = load <2 x i64>* %p5, align 16
494 %6 = load <2 x i64>* %p6, align 16
495 %7 = load <2 x i64>* %p7, align 16
496 %8 = load <2 x i64>* %p8, align 16
497 %9 = load <2 x i64>* %p9, align 16
498 %10 = load <2 x i64>* %p10, align 16
499 %11 = load <2 x i64>* %p11, align 16
500 %12 = load <2 x i64>* %p12, align 16
501 %13 = load <2 x i64>* %p13, align 16
502 %14 = load <2 x i64>* %p14, align 16
503 %15 = load <2 x i64>* %p15, align 16
504 %16 = load <2 x i64>* %p16, align 16
505 %17 = load <2 x i64>* %p17, align 16
506 %18 = load <2 x i64>* %p18, align 16
507 %19 = load <2 x i64>* %p19, align 16
508 %20 = load <2 x i64>* %p20, align 16
509 %21 = load <2 x i64>* %p21, align 16
510 %22 = load <2 x i64>* %p22, align 16
511 %23 = load <2 x i64>* %p23, align 16
512 %24 = load <2 x i64>* %p24, align 16
513 %25 = load <2 x i64>* %p25, align 16
514 %26 = load <2 x i64>* %p26, align 16
515 %27 = load <2 x i64>* %p27, align 16
516 %28 = load <2 x i64>* %p28, align 16
517 %29 = load <2 x i64>* %p29, align 16
518 %30 = load <2 x i64>* %p30, align 16
519 %31 = load <2 x i64>* %p31, align 16
520 %32 = load <2 x i64>* %p32, align 16
521 %33 = load <2 x i64>* %p33, align 16
522 %r1 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %0, <2 x i64> %1)
523 %r2 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r1, <2 x i64> %2)
524 %r3 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r2, <2 x i64> %3)
525 %r4 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r3, <2 x i64> %4)
526 %r5 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r4, <2 x i64> %5)
527 %r6 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r5, <2 x i64> %6)
528 %r7 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r6, <2 x i64> %7)
529 %r8 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r7, <2 x i64> %8)
530 %r9 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r8, <2 x i64> %9)
531 %r10 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r9, <2 x i64> %10)
532 %r11 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r10, <2 x i64> %11)
533 %r12 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r11, <2 x i64> %12)
534 %r13 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r12, <2 x i64> %13)
535 %r14 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r13, <2 x i64> %14)
536 %r15 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r14, <2 x i64> %15)
537 %r16 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r15, <2 x i64> %16)
538 %r17 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r16, <2 x i64> %17)
539 %r18 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r17, <2 x i64> %18)
540 %r19 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r18, <2 x i64> %19)
541 %r20 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r19, <2 x i64> %20)
542 %r21 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r20, <2 x i64> %21)
543 %r22 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r21, <2 x i64> %22)
544 %r23 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r22, <2 x i64> %23)
545 %r24 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r23, <2 x i64> %24)
546 %r25 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r24, <2 x i64> %25)
547 %r26 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r25, <2 x i64> %26)
548 %r27 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r26, <2 x i64> %27)
549 %r28 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r27, <2 x i64> %28)
550 %r29 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r28, <2 x i64> %29)
551 %r30 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r29, <2 x i64> %30)
552 %r31 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r30, <2 x i64> %31)
553 %r32 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r31, <2 x i64> %32)
554 %r33 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r32, <2 x i64> %33)
555 %rx1 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %r33, <2 x i64> %1)
556 %rx2 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx1, <2 x i64> %2)
557 %rx3 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx2, <2 x i64> %3)
558 %rx4 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx3, <2 x i64> %4)
559 %rx5 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx4, <2 x i64> %5)
560 %rx6 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx5, <2 x i64> %6)
561 %rx7 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx6, <2 x i64> %7)
562 %rx8 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx7, <2 x i64> %8)
563 %rx9 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx8, <2 x i64> %9)
564 %rx10 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx9, <2 x i64> %10)
565 %rx11 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx10, <2 x i64> %11)
566 %rx12 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx11, <2 x i64> %12)
567 %rx13 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx12, <2 x i64> %13)
568 %rx14 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx13, <2 x i64> %14)
569 %rx15 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx14, <2 x i64> %15)
570 %rx16 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx15, <2 x i64> %16)
571 %rx17 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx16, <2 x i64> %17)
572 %rx18 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx17, <2 x i64> %18)
573 %rx19 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx18, <2 x i64> %19)
574 %rx20 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx19, <2 x i64> %20)
575 %rx21 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx20, <2 x i64> %21)
576 %rx22 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx21, <2 x i64> %22)
577 %rx23 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx22, <2 x i64> %23)
578 %rx24 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx23, <2 x i64> %24)
579 %rx25 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx24, <2 x i64> %25)
580 %rx26 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx25, <2 x i64> %26)
581 %rx27 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx26, <2 x i64> %27)
582 %rx28 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx27, <2 x i64> %28)
583 %rx29 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx28, <2 x i64> %29)
584 %rx30 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx29, <2 x i64> %30)
585 %rx31 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx30, <2 x i64> %31)
586 %rx32 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx31, <2 x i64> %32)
587 %rx33 = call <2 x i64> @llvm.mips.addv.d(<2 x i64> %rx32, <2 x i64> %33)
588 %res1 = bitcast <2 x i64> %rx33 to <4 x i32>
589 %res = call i32 @llvm.mips.copy.s.w(<4 x i32> %res1, i32 0)
593 declare <2 x i64> @llvm.mips.addv.d(<2 x i64>, <2 x i64>) nounwind
596 ; CHECK: st.d {{.*}} Spill
597 ; CHECK: st.d {{.*}} Spill
598 ; CHECK: ld.d {{.*}} Reload
599 ; CHECK: ld.d {{.*}} Reload