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