Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / PowerPC / vector-reduce-fadd.ll
blob4a036a7868c1a94930a01b97c567f0b9b3660b4e
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
3 ; RUN:   -mcpu=pwr9 -mtriple=powerpc64le < %s | FileCheck %s --check-prefix=PWR9LE
4 ; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
5 ; RUN:   -mcpu=pwr9 -mtriple=powerpc64 < %s | FileCheck %s --check-prefix=PWR9BE
6 ; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
7 ; RUN:   -mattr=-paired-vector-memops -mcpu=pwr10 -mtriple=powerpc64le < %s | \
8 ; RUN:   FileCheck %s --check-prefix=PWR10LE
9 ; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
10 ; RUN:   -mattr=-paired-vector-memops -mcpu=pwr10 -mtriple=powerpc64 < %s | \
11 ; RUN:   FileCheck %s --check-prefix=PWR10BE
14 ;; Vectors of f32
16 define dso_local float @v2f32(<2 x float> %a) local_unnamed_addr #0 {
17 ; PWR9LE-LABEL: v2f32:
18 ; PWR9LE:       # %bb.0: # %entry
19 ; PWR9LE-NEXT:    xxsldwi vs0, v2, v2, 3
20 ; PWR9LE-NEXT:    xxswapd vs1, v2
21 ; PWR9LE-NEXT:    xscvspdpn f0, vs0
22 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
23 ; PWR9LE-NEXT:    xsaddsp f1, f0, f1
24 ; PWR9LE-NEXT:    blr
26 ; PWR9BE-LABEL: v2f32:
27 ; PWR9BE:       # %bb.0: # %entry
28 ; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 1
29 ; PWR9BE-NEXT:    xscvspdpn f0, v2
30 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
31 ; PWR9BE-NEXT:    xsaddsp f1, f0, f1
32 ; PWR9BE-NEXT:    blr
34 ; PWR10LE-LABEL: v2f32:
35 ; PWR10LE:       # %bb.0: # %entry
36 ; PWR10LE-NEXT:    xxsldwi vs0, v2, v2, 3
37 ; PWR10LE-NEXT:    xxswapd vs1, v2
38 ; PWR10LE-NEXT:    xscvspdpn f0, vs0
39 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
40 ; PWR10LE-NEXT:    xsaddsp f1, f0, f1
41 ; PWR10LE-NEXT:    blr
43 ; PWR10BE-LABEL: v2f32:
44 ; PWR10BE:       # %bb.0: # %entry
45 ; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 1
46 ; PWR10BE-NEXT:    xscvspdpn f0, v2
47 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
48 ; PWR10BE-NEXT:    xsaddsp f1, f0, f1
49 ; PWR10BE-NEXT:    blr
50 entry:
51   %0 = call float @llvm.vector.reduce.fadd.v2f32(float -0.000000e+00, <2 x float> %a)
52   ret float %0
55 define dso_local float @v2f32_b(<2 x float> %a, float %b) local_unnamed_addr #0 {
56 ; PWR9LE-LABEL: v2f32_b:
57 ; PWR9LE:       # %bb.0: # %entry
58 ; PWR9LE-NEXT:    xxsldwi vs0, v2, v2, 3
59 ; PWR9LE-NEXT:    xscvspdpn f0, vs0
60 ; PWR9LE-NEXT:    xsaddsp f0, f1, f0
61 ; PWR9LE-NEXT:    xxswapd vs1, v2
62 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
63 ; PWR9LE-NEXT:    xsaddsp f1, f0, f1
64 ; PWR9LE-NEXT:    blr
66 ; PWR9BE-LABEL: v2f32_b:
67 ; PWR9BE:       # %bb.0: # %entry
68 ; PWR9BE-NEXT:    xscvspdpn f0, v2
69 ; PWR9BE-NEXT:    xsaddsp f0, f1, f0
70 ; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 1
71 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
72 ; PWR9BE-NEXT:    xsaddsp f1, f0, f1
73 ; PWR9BE-NEXT:    blr
75 ; PWR10LE-LABEL: v2f32_b:
76 ; PWR10LE:       # %bb.0: # %entry
77 ; PWR10LE-NEXT:    xxsldwi vs0, v2, v2, 3
78 ; PWR10LE-NEXT:    xscvspdpn f0, vs0
79 ; PWR10LE-NEXT:    xsaddsp f0, f1, f0
80 ; PWR10LE-NEXT:    xxswapd vs1, v2
81 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
82 ; PWR10LE-NEXT:    xsaddsp f1, f0, f1
83 ; PWR10LE-NEXT:    blr
85 ; PWR10BE-LABEL: v2f32_b:
86 ; PWR10BE:       # %bb.0: # %entry
87 ; PWR10BE-NEXT:    xscvspdpn f0, v2
88 ; PWR10BE-NEXT:    xsaddsp f0, f1, f0
89 ; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 1
90 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
91 ; PWR10BE-NEXT:    xsaddsp f1, f0, f1
92 ; PWR10BE-NEXT:    blr
93 entry:
94   %0 = call float @llvm.vector.reduce.fadd.v2f32(float %b, <2 x float> %a)
95   ret float %0
98 define dso_local float @v2f32_fast(<2 x float> %a) local_unnamed_addr #0 {
99 ; PWR9LE-LABEL: v2f32_fast:
100 ; PWR9LE:       # %bb.0: # %entry
101 ; PWR9LE-NEXT:    xxspltw vs0, v2, 2
102 ; PWR9LE-NEXT:    xvaddsp vs0, v2, vs0
103 ; PWR9LE-NEXT:    xxsldwi vs0, vs0, vs0, 3
104 ; PWR9LE-NEXT:    xscvspdpn f1, vs0
105 ; PWR9LE-NEXT:    blr
107 ; PWR9BE-LABEL: v2f32_fast:
108 ; PWR9BE:       # %bb.0: # %entry
109 ; PWR9BE-NEXT:    xxspltw vs0, v2, 1
110 ; PWR9BE-NEXT:    xvaddsp vs0, v2, vs0
111 ; PWR9BE-NEXT:    xscvspdpn f1, vs0
112 ; PWR9BE-NEXT:    blr
114 ; PWR10LE-LABEL: v2f32_fast:
115 ; PWR10LE:       # %bb.0: # %entry
116 ; PWR10LE-NEXT:    xxspltw vs0, v2, 2
117 ; PWR10LE-NEXT:    xvaddsp vs0, v2, vs0
118 ; PWR10LE-NEXT:    xxsldwi vs0, vs0, vs0, 3
119 ; PWR10LE-NEXT:    xscvspdpn f1, vs0
120 ; PWR10LE-NEXT:    blr
122 ; PWR10BE-LABEL: v2f32_fast:
123 ; PWR10BE:       # %bb.0: # %entry
124 ; PWR10BE-NEXT:    xxspltw vs0, v2, 1
125 ; PWR10BE-NEXT:    xvaddsp vs0, v2, vs0
126 ; PWR10BE-NEXT:    xscvspdpn f1, vs0
127 ; PWR10BE-NEXT:    blr
128 entry:
129   %0 = call fast float @llvm.vector.reduce.fadd.v2f32(float -0.000000e+00, <2 x float> %a)
130   ret float %0
133 define dso_local float @v4f32(<4 x float> %a) local_unnamed_addr #0 {
134 ; PWR9LE-LABEL: v4f32:
135 ; PWR9LE:       # %bb.0: # %entry
136 ; PWR9LE-NEXT:    xxsldwi vs0, v2, v2, 3
137 ; PWR9LE-NEXT:    xxswapd vs1, v2
138 ; PWR9LE-NEXT:    xscvspdpn f0, vs0
139 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
140 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
141 ; PWR9LE-NEXT:    xxsldwi vs1, v2, v2, 1
142 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
143 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
144 ; PWR9LE-NEXT:    xscvspdpn f1, v2
145 ; PWR9LE-NEXT:    xsaddsp f1, f0, f1
146 ; PWR9LE-NEXT:    blr
148 ; PWR9BE-LABEL: v4f32:
149 ; PWR9BE:       # %bb.0: # %entry
150 ; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 1
151 ; PWR9BE-NEXT:    xscvspdpn f0, v2
152 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
153 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
154 ; PWR9BE-NEXT:    xxswapd vs1, v2
155 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
156 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
157 ; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 3
158 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
159 ; PWR9BE-NEXT:    xsaddsp f1, f0, f1
160 ; PWR9BE-NEXT:    blr
162 ; PWR10LE-LABEL: v4f32:
163 ; PWR10LE:       # %bb.0: # %entry
164 ; PWR10LE-NEXT:    xxsldwi vs0, v2, v2, 3
165 ; PWR10LE-NEXT:    xxswapd vs1, v2
166 ; PWR10LE-NEXT:    xscvspdpn f0, vs0
167 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
168 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
169 ; PWR10LE-NEXT:    xxsldwi vs1, v2, v2, 1
170 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
171 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
172 ; PWR10LE-NEXT:    xscvspdpn f1, v2
173 ; PWR10LE-NEXT:    xsaddsp f1, f0, f1
174 ; PWR10LE-NEXT:    blr
176 ; PWR10BE-LABEL: v4f32:
177 ; PWR10BE:       # %bb.0: # %entry
178 ; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 1
179 ; PWR10BE-NEXT:    xscvspdpn f0, v2
180 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
181 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
182 ; PWR10BE-NEXT:    xxswapd vs1, v2
183 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
184 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
185 ; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 3
186 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
187 ; PWR10BE-NEXT:    xsaddsp f1, f0, f1
188 ; PWR10BE-NEXT:    blr
189 entry:
190   %0 = call float @llvm.vector.reduce.fadd.v4f32(float -0.000000e+00, <4 x float> %a)
191   ret float %0
194 define dso_local float @v4f32_b(<4 x float> %a, float %b) local_unnamed_addr #0 {
195 ; PWR9LE-LABEL: v4f32_b:
196 ; PWR9LE:       # %bb.0: # %entry
197 ; PWR9LE-NEXT:    xxsldwi vs0, v2, v2, 3
198 ; PWR9LE-NEXT:    xscvspdpn f0, vs0
199 ; PWR9LE-NEXT:    xsaddsp f0, f1, f0
200 ; PWR9LE-NEXT:    xxswapd vs1, v2
201 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
202 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
203 ; PWR9LE-NEXT:    xxsldwi vs1, v2, v2, 1
204 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
205 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
206 ; PWR9LE-NEXT:    xscvspdpn f1, v2
207 ; PWR9LE-NEXT:    xsaddsp f1, f0, f1
208 ; PWR9LE-NEXT:    blr
210 ; PWR9BE-LABEL: v4f32_b:
211 ; PWR9BE:       # %bb.0: # %entry
212 ; PWR9BE-NEXT:    xscvspdpn f0, v2
213 ; PWR9BE-NEXT:    xsaddsp f0, f1, f0
214 ; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 1
215 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
216 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
217 ; PWR9BE-NEXT:    xxswapd vs1, v2
218 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
219 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
220 ; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 3
221 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
222 ; PWR9BE-NEXT:    xsaddsp f1, f0, f1
223 ; PWR9BE-NEXT:    blr
225 ; PWR10LE-LABEL: v4f32_b:
226 ; PWR10LE:       # %bb.0: # %entry
227 ; PWR10LE-NEXT:    xxsldwi vs0, v2, v2, 3
228 ; PWR10LE-NEXT:    xscvspdpn f0, vs0
229 ; PWR10LE-NEXT:    xsaddsp f0, f1, f0
230 ; PWR10LE-NEXT:    xxswapd vs1, v2
231 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
232 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
233 ; PWR10LE-NEXT:    xxsldwi vs1, v2, v2, 1
234 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
235 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
236 ; PWR10LE-NEXT:    xscvspdpn f1, v2
237 ; PWR10LE-NEXT:    xsaddsp f1, f0, f1
238 ; PWR10LE-NEXT:    blr
240 ; PWR10BE-LABEL: v4f32_b:
241 ; PWR10BE:       # %bb.0: # %entry
242 ; PWR10BE-NEXT:    xscvspdpn f0, v2
243 ; PWR10BE-NEXT:    xsaddsp f0, f1, f0
244 ; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 1
245 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
246 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
247 ; PWR10BE-NEXT:    xxswapd vs1, v2
248 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
249 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
250 ; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 3
251 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
252 ; PWR10BE-NEXT:    xsaddsp f1, f0, f1
253 ; PWR10BE-NEXT:    blr
254 entry:
255   %0 = call float @llvm.vector.reduce.fadd.v4f32(float %b, <4 x float> %a)
256   ret float %0
259 define dso_local float @v4f32_fast(<4 x float> %a) local_unnamed_addr #0 {
260 ; PWR9LE-LABEL: v4f32_fast:
261 ; PWR9LE:       # %bb.0: # %entry
262 ; PWR9LE-NEXT:    xxswapd v3, v2
263 ; PWR9LE-NEXT:    xvaddsp vs0, v2, v3
264 ; PWR9LE-NEXT:    xxspltw vs1, vs0, 2
265 ; PWR9LE-NEXT:    xvaddsp vs0, vs0, vs1
266 ; PWR9LE-NEXT:    xxsldwi vs0, vs0, vs0, 3
267 ; PWR9LE-NEXT:    xscvspdpn f1, vs0
268 ; PWR9LE-NEXT:    blr
270 ; PWR9BE-LABEL: v4f32_fast:
271 ; PWR9BE:       # %bb.0: # %entry
272 ; PWR9BE-NEXT:    xxswapd v3, v2
273 ; PWR9BE-NEXT:    xvaddsp vs0, v2, v3
274 ; PWR9BE-NEXT:    xxspltw vs1, vs0, 1
275 ; PWR9BE-NEXT:    xvaddsp vs0, vs0, vs1
276 ; PWR9BE-NEXT:    xscvspdpn f1, vs0
277 ; PWR9BE-NEXT:    blr
279 ; PWR10LE-LABEL: v4f32_fast:
280 ; PWR10LE:       # %bb.0: # %entry
281 ; PWR10LE-NEXT:    xxswapd v3, v2
282 ; PWR10LE-NEXT:    xvaddsp vs0, v2, v3
283 ; PWR10LE-NEXT:    xxspltw vs1, vs0, 2
284 ; PWR10LE-NEXT:    xvaddsp vs0, vs0, vs1
285 ; PWR10LE-NEXT:    xxsldwi vs0, vs0, vs0, 3
286 ; PWR10LE-NEXT:    xscvspdpn f1, vs0
287 ; PWR10LE-NEXT:    blr
289 ; PWR10BE-LABEL: v4f32_fast:
290 ; PWR10BE:       # %bb.0: # %entry
291 ; PWR10BE-NEXT:    xxswapd v3, v2
292 ; PWR10BE-NEXT:    xvaddsp vs0, v2, v3
293 ; PWR10BE-NEXT:    xxspltw vs1, vs0, 1
294 ; PWR10BE-NEXT:    xvaddsp vs0, vs0, vs1
295 ; PWR10BE-NEXT:    xscvspdpn f1, vs0
296 ; PWR10BE-NEXT:    blr
297 entry:
298   %0 = call fast float @llvm.vector.reduce.fadd.v4f32(float -0.000000e+00, <4 x float> %a)
299   ret float %0
302 define dso_local float @v8f32(<8 x float> %a) local_unnamed_addr #0 {
303 ; PWR9LE-LABEL: v8f32:
304 ; PWR9LE:       # %bb.0: # %entry
305 ; PWR9LE-NEXT:    xxsldwi vs0, v2, v2, 3
306 ; PWR9LE-NEXT:    xxswapd vs1, v2
307 ; PWR9LE-NEXT:    xscvspdpn f0, vs0
308 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
309 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
310 ; PWR9LE-NEXT:    xxsldwi vs1, v2, v2, 1
311 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
312 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
313 ; PWR9LE-NEXT:    xscvspdpn f1, v2
314 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
315 ; PWR9LE-NEXT:    xxsldwi vs1, v3, v3, 3
316 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
317 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
318 ; PWR9LE-NEXT:    xxswapd vs1, v3
319 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
320 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
321 ; PWR9LE-NEXT:    xxsldwi vs1, v3, v3, 1
322 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
323 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
324 ; PWR9LE-NEXT:    xscvspdpn f1, v3
325 ; PWR9LE-NEXT:    xsaddsp f1, f0, f1
326 ; PWR9LE-NEXT:    blr
328 ; PWR9BE-LABEL: v8f32:
329 ; PWR9BE:       # %bb.0: # %entry
330 ; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 1
331 ; PWR9BE-NEXT:    xscvspdpn f0, v2
332 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
333 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
334 ; PWR9BE-NEXT:    xxswapd vs1, v2
335 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
336 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
337 ; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 3
338 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
339 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
340 ; PWR9BE-NEXT:    xscvspdpn f1, v3
341 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
342 ; PWR9BE-NEXT:    xxsldwi vs1, v3, v3, 1
343 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
344 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
345 ; PWR9BE-NEXT:    xxswapd vs1, v3
346 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
347 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
348 ; PWR9BE-NEXT:    xxsldwi vs1, v3, v3, 3
349 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
350 ; PWR9BE-NEXT:    xsaddsp f1, f0, f1
351 ; PWR9BE-NEXT:    blr
353 ; PWR10LE-LABEL: v8f32:
354 ; PWR10LE:       # %bb.0: # %entry
355 ; PWR10LE-NEXT:    xxsldwi vs0, v2, v2, 3
356 ; PWR10LE-NEXT:    xxswapd vs1, v2
357 ; PWR10LE-NEXT:    xscvspdpn f0, vs0
358 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
359 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
360 ; PWR10LE-NEXT:    xxsldwi vs1, v2, v2, 1
361 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
362 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
363 ; PWR10LE-NEXT:    xscvspdpn f1, v2
364 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
365 ; PWR10LE-NEXT:    xxsldwi vs1, v3, v3, 3
366 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
367 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
368 ; PWR10LE-NEXT:    xxswapd vs1, v3
369 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
370 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
371 ; PWR10LE-NEXT:    xxsldwi vs1, v3, v3, 1
372 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
373 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
374 ; PWR10LE-NEXT:    xscvspdpn f1, v3
375 ; PWR10LE-NEXT:    xsaddsp f1, f0, f1
376 ; PWR10LE-NEXT:    blr
378 ; PWR10BE-LABEL: v8f32:
379 ; PWR10BE:       # %bb.0: # %entry
380 ; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 1
381 ; PWR10BE-NEXT:    xscvspdpn f0, v2
382 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
383 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
384 ; PWR10BE-NEXT:    xxswapd vs1, v2
385 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
386 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
387 ; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 3
388 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
389 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
390 ; PWR10BE-NEXT:    xscvspdpn f1, v3
391 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
392 ; PWR10BE-NEXT:    xxsldwi vs1, v3, v3, 1
393 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
394 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
395 ; PWR10BE-NEXT:    xxswapd vs1, v3
396 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
397 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
398 ; PWR10BE-NEXT:    xxsldwi vs1, v3, v3, 3
399 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
400 ; PWR10BE-NEXT:    xsaddsp f1, f0, f1
401 ; PWR10BE-NEXT:    blr
402 entry:
403   %0 = call float @llvm.vector.reduce.fadd.v8f32(float -0.000000e+00, <8 x float> %a)
404   ret float %0
407 define dso_local float @v8f32_b(<8 x float> %a, float %b) local_unnamed_addr #0 {
408 ; PWR9LE-LABEL: v8f32_b:
409 ; PWR9LE:       # %bb.0: # %entry
410 ; PWR9LE-NEXT:    xxsldwi vs0, v2, v2, 3
411 ; PWR9LE-NEXT:    xscvspdpn f0, vs0
412 ; PWR9LE-NEXT:    xsaddsp f0, f1, f0
413 ; PWR9LE-NEXT:    xxswapd vs1, v2
414 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
415 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
416 ; PWR9LE-NEXT:    xxsldwi vs1, v2, v2, 1
417 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
418 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
419 ; PWR9LE-NEXT:    xscvspdpn f1, v2
420 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
421 ; PWR9LE-NEXT:    xxsldwi vs1, v3, v3, 3
422 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
423 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
424 ; PWR9LE-NEXT:    xxswapd vs1, v3
425 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
426 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
427 ; PWR9LE-NEXT:    xxsldwi vs1, v3, v3, 1
428 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
429 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
430 ; PWR9LE-NEXT:    xscvspdpn f1, v3
431 ; PWR9LE-NEXT:    xsaddsp f1, f0, f1
432 ; PWR9LE-NEXT:    blr
434 ; PWR9BE-LABEL: v8f32_b:
435 ; PWR9BE:       # %bb.0: # %entry
436 ; PWR9BE-NEXT:    xscvspdpn f0, v2
437 ; PWR9BE-NEXT:    xsaddsp f0, f1, f0
438 ; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 1
439 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
440 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
441 ; PWR9BE-NEXT:    xxswapd vs1, v2
442 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
443 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
444 ; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 3
445 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
446 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
447 ; PWR9BE-NEXT:    xscvspdpn f1, v3
448 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
449 ; PWR9BE-NEXT:    xxsldwi vs1, v3, v3, 1
450 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
451 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
452 ; PWR9BE-NEXT:    xxswapd vs1, v3
453 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
454 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
455 ; PWR9BE-NEXT:    xxsldwi vs1, v3, v3, 3
456 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
457 ; PWR9BE-NEXT:    xsaddsp f1, f0, f1
458 ; PWR9BE-NEXT:    blr
460 ; PWR10LE-LABEL: v8f32_b:
461 ; PWR10LE:       # %bb.0: # %entry
462 ; PWR10LE-NEXT:    xxsldwi vs0, v2, v2, 3
463 ; PWR10LE-NEXT:    xscvspdpn f0, vs0
464 ; PWR10LE-NEXT:    xsaddsp f0, f1, f0
465 ; PWR10LE-NEXT:    xxswapd vs1, v2
466 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
467 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
468 ; PWR10LE-NEXT:    xxsldwi vs1, v2, v2, 1
469 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
470 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
471 ; PWR10LE-NEXT:    xscvspdpn f1, v2
472 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
473 ; PWR10LE-NEXT:    xxsldwi vs1, v3, v3, 3
474 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
475 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
476 ; PWR10LE-NEXT:    xxswapd vs1, v3
477 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
478 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
479 ; PWR10LE-NEXT:    xxsldwi vs1, v3, v3, 1
480 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
481 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
482 ; PWR10LE-NEXT:    xscvspdpn f1, v3
483 ; PWR10LE-NEXT:    xsaddsp f1, f0, f1
484 ; PWR10LE-NEXT:    blr
486 ; PWR10BE-LABEL: v8f32_b:
487 ; PWR10BE:       # %bb.0: # %entry
488 ; PWR10BE-NEXT:    xscvspdpn f0, v2
489 ; PWR10BE-NEXT:    xsaddsp f0, f1, f0
490 ; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 1
491 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
492 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
493 ; PWR10BE-NEXT:    xxswapd vs1, v2
494 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
495 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
496 ; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 3
497 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
498 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
499 ; PWR10BE-NEXT:    xscvspdpn f1, v3
500 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
501 ; PWR10BE-NEXT:    xxsldwi vs1, v3, v3, 1
502 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
503 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
504 ; PWR10BE-NEXT:    xxswapd vs1, v3
505 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
506 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
507 ; PWR10BE-NEXT:    xxsldwi vs1, v3, v3, 3
508 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
509 ; PWR10BE-NEXT:    xsaddsp f1, f0, f1
510 ; PWR10BE-NEXT:    blr
511 entry:
512   %0 = call float @llvm.vector.reduce.fadd.v8f32(float %b, <8 x float> %a)
513   ret float %0
516 define dso_local float @v8f32_fast(<8 x float> %a) local_unnamed_addr #0 {
517 ; PWR9LE-LABEL: v8f32_fast:
518 ; PWR9LE:       # %bb.0: # %entry
519 ; PWR9LE-NEXT:    xvaddsp vs0, v2, v3
520 ; PWR9LE-NEXT:    xxswapd v2, vs0
521 ; PWR9LE-NEXT:    xvaddsp vs0, vs0, v2
522 ; PWR9LE-NEXT:    xxspltw vs1, vs0, 2
523 ; PWR9LE-NEXT:    xvaddsp vs0, vs0, vs1
524 ; PWR9LE-NEXT:    xxsldwi vs0, vs0, vs0, 3
525 ; PWR9LE-NEXT:    xscvspdpn f1, vs0
526 ; PWR9LE-NEXT:    blr
528 ; PWR9BE-LABEL: v8f32_fast:
529 ; PWR9BE:       # %bb.0: # %entry
530 ; PWR9BE-NEXT:    xvaddsp vs0, v2, v3
531 ; PWR9BE-NEXT:    xxswapd v2, vs0
532 ; PWR9BE-NEXT:    xvaddsp vs0, vs0, v2
533 ; PWR9BE-NEXT:    xxspltw vs1, vs0, 1
534 ; PWR9BE-NEXT:    xvaddsp vs0, vs0, vs1
535 ; PWR9BE-NEXT:    xscvspdpn f1, vs0
536 ; PWR9BE-NEXT:    blr
538 ; PWR10LE-LABEL: v8f32_fast:
539 ; PWR10LE:       # %bb.0: # %entry
540 ; PWR10LE-NEXT:    xvaddsp vs0, v2, v3
541 ; PWR10LE-NEXT:    xxswapd v2, vs0
542 ; PWR10LE-NEXT:    xvaddsp vs0, vs0, v2
543 ; PWR10LE-NEXT:    xxspltw vs1, vs0, 2
544 ; PWR10LE-NEXT:    xvaddsp vs0, vs0, vs1
545 ; PWR10LE-NEXT:    xxsldwi vs0, vs0, vs0, 3
546 ; PWR10LE-NEXT:    xscvspdpn f1, vs0
547 ; PWR10LE-NEXT:    blr
549 ; PWR10BE-LABEL: v8f32_fast:
550 ; PWR10BE:       # %bb.0: # %entry
551 ; PWR10BE-NEXT:    xvaddsp vs0, v2, v3
552 ; PWR10BE-NEXT:    xxswapd v2, vs0
553 ; PWR10BE-NEXT:    xvaddsp vs0, vs0, v2
554 ; PWR10BE-NEXT:    xxspltw vs1, vs0, 1
555 ; PWR10BE-NEXT:    xvaddsp vs0, vs0, vs1
556 ; PWR10BE-NEXT:    xscvspdpn f1, vs0
557 ; PWR10BE-NEXT:    blr
558 entry:
559   %0 = call fast float @llvm.vector.reduce.fadd.v8f32(float -0.000000e+00, <8 x float> %a)
560   ret float %0
563 define dso_local float @v16f32(<16 x float> %a) local_unnamed_addr #0 {
564 ; PWR9LE-LABEL: v16f32:
565 ; PWR9LE:       # %bb.0: # %entry
566 ; PWR9LE-NEXT:    xxsldwi vs0, v2, v2, 3
567 ; PWR9LE-NEXT:    xxswapd vs1, v2
568 ; PWR9LE-NEXT:    xscvspdpn f0, vs0
569 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
570 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
571 ; PWR9LE-NEXT:    xxsldwi vs1, v2, v2, 1
572 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
573 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
574 ; PWR9LE-NEXT:    xscvspdpn f1, v2
575 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
576 ; PWR9LE-NEXT:    xxsldwi vs1, v3, v3, 3
577 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
578 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
579 ; PWR9LE-NEXT:    xxswapd vs1, v3
580 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
581 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
582 ; PWR9LE-NEXT:    xxsldwi vs1, v3, v3, 1
583 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
584 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
585 ; PWR9LE-NEXT:    xscvspdpn f1, v3
586 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
587 ; PWR9LE-NEXT:    xxsldwi vs1, v4, v4, 3
588 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
589 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
590 ; PWR9LE-NEXT:    xxswapd vs1, v4
591 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
592 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
593 ; PWR9LE-NEXT:    xxsldwi vs1, v4, v4, 1
594 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
595 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
596 ; PWR9LE-NEXT:    xscvspdpn f1, v4
597 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
598 ; PWR9LE-NEXT:    xxsldwi vs1, v5, v5, 3
599 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
600 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
601 ; PWR9LE-NEXT:    xxswapd vs1, v5
602 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
603 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
604 ; PWR9LE-NEXT:    xxsldwi vs1, v5, v5, 1
605 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
606 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
607 ; PWR9LE-NEXT:    xscvspdpn f1, v5
608 ; PWR9LE-NEXT:    xsaddsp f1, f0, f1
609 ; PWR9LE-NEXT:    blr
611 ; PWR9BE-LABEL: v16f32:
612 ; PWR9BE:       # %bb.0: # %entry
613 ; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 1
614 ; PWR9BE-NEXT:    xscvspdpn f0, v2
615 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
616 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
617 ; PWR9BE-NEXT:    xxswapd vs1, v2
618 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
619 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
620 ; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 3
621 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
622 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
623 ; PWR9BE-NEXT:    xscvspdpn f1, v3
624 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
625 ; PWR9BE-NEXT:    xxsldwi vs1, v3, v3, 1
626 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
627 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
628 ; PWR9BE-NEXT:    xxswapd vs1, v3
629 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
630 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
631 ; PWR9BE-NEXT:    xxsldwi vs1, v3, v3, 3
632 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
633 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
634 ; PWR9BE-NEXT:    xscvspdpn f1, v4
635 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
636 ; PWR9BE-NEXT:    xxsldwi vs1, v4, v4, 1
637 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
638 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
639 ; PWR9BE-NEXT:    xxswapd vs1, v4
640 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
641 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
642 ; PWR9BE-NEXT:    xxsldwi vs1, v4, v4, 3
643 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
644 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
645 ; PWR9BE-NEXT:    xscvspdpn f1, v5
646 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
647 ; PWR9BE-NEXT:    xxsldwi vs1, v5, v5, 1
648 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
649 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
650 ; PWR9BE-NEXT:    xxswapd vs1, v5
651 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
652 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
653 ; PWR9BE-NEXT:    xxsldwi vs1, v5, v5, 3
654 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
655 ; PWR9BE-NEXT:    xsaddsp f1, f0, f1
656 ; PWR9BE-NEXT:    blr
658 ; PWR10LE-LABEL: v16f32:
659 ; PWR10LE:       # %bb.0: # %entry
660 ; PWR10LE-NEXT:    xxsldwi vs0, v2, v2, 3
661 ; PWR10LE-NEXT:    xxswapd vs1, v2
662 ; PWR10LE-NEXT:    xscvspdpn f0, vs0
663 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
664 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
665 ; PWR10LE-NEXT:    xxsldwi vs1, v2, v2, 1
666 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
667 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
668 ; PWR10LE-NEXT:    xscvspdpn f1, v2
669 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
670 ; PWR10LE-NEXT:    xxsldwi vs1, v3, v3, 3
671 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
672 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
673 ; PWR10LE-NEXT:    xxswapd vs1, v3
674 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
675 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
676 ; PWR10LE-NEXT:    xxsldwi vs1, v3, v3, 1
677 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
678 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
679 ; PWR10LE-NEXT:    xscvspdpn f1, v3
680 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
681 ; PWR10LE-NEXT:    xxsldwi vs1, v4, v4, 3
682 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
683 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
684 ; PWR10LE-NEXT:    xxswapd vs1, v4
685 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
686 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
687 ; PWR10LE-NEXT:    xxsldwi vs1, v4, v4, 1
688 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
689 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
690 ; PWR10LE-NEXT:    xscvspdpn f1, v4
691 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
692 ; PWR10LE-NEXT:    xxsldwi vs1, v5, v5, 3
693 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
694 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
695 ; PWR10LE-NEXT:    xxswapd vs1, v5
696 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
697 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
698 ; PWR10LE-NEXT:    xxsldwi vs1, v5, v5, 1
699 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
700 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
701 ; PWR10LE-NEXT:    xscvspdpn f1, v5
702 ; PWR10LE-NEXT:    xsaddsp f1, f0, f1
703 ; PWR10LE-NEXT:    blr
705 ; PWR10BE-LABEL: v16f32:
706 ; PWR10BE:       # %bb.0: # %entry
707 ; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 1
708 ; PWR10BE-NEXT:    xscvspdpn f0, v2
709 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
710 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
711 ; PWR10BE-NEXT:    xxswapd vs1, v2
712 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
713 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
714 ; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 3
715 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
716 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
717 ; PWR10BE-NEXT:    xscvspdpn f1, v3
718 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
719 ; PWR10BE-NEXT:    xxsldwi vs1, v3, v3, 1
720 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
721 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
722 ; PWR10BE-NEXT:    xxswapd vs1, v3
723 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
724 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
725 ; PWR10BE-NEXT:    xxsldwi vs1, v3, v3, 3
726 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
727 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
728 ; PWR10BE-NEXT:    xscvspdpn f1, v4
729 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
730 ; PWR10BE-NEXT:    xxsldwi vs1, v4, v4, 1
731 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
732 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
733 ; PWR10BE-NEXT:    xxswapd vs1, v4
734 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
735 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
736 ; PWR10BE-NEXT:    xxsldwi vs1, v4, v4, 3
737 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
738 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
739 ; PWR10BE-NEXT:    xscvspdpn f1, v5
740 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
741 ; PWR10BE-NEXT:    xxsldwi vs1, v5, v5, 1
742 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
743 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
744 ; PWR10BE-NEXT:    xxswapd vs1, v5
745 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
746 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
747 ; PWR10BE-NEXT:    xxsldwi vs1, v5, v5, 3
748 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
749 ; PWR10BE-NEXT:    xsaddsp f1, f0, f1
750 ; PWR10BE-NEXT:    blr
751 entry:
752   %0 = call float @llvm.vector.reduce.fadd.v16f32(float -0.000000e+00, <16 x float> %a)
753   ret float %0
756 define dso_local float @v16f32_b(<16 x float> %a, float %b) local_unnamed_addr #0 {
757 ; PWR9LE-LABEL: v16f32_b:
758 ; PWR9LE:       # %bb.0: # %entry
759 ; PWR9LE-NEXT:    xxsldwi vs0, v2, v2, 3
760 ; PWR9LE-NEXT:    xscvspdpn f0, vs0
761 ; PWR9LE-NEXT:    xsaddsp f0, f1, f0
762 ; PWR9LE-NEXT:    xxswapd vs1, v2
763 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
764 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
765 ; PWR9LE-NEXT:    xxsldwi vs1, v2, v2, 1
766 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
767 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
768 ; PWR9LE-NEXT:    xscvspdpn f1, v2
769 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
770 ; PWR9LE-NEXT:    xxsldwi vs1, v3, v3, 3
771 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
772 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
773 ; PWR9LE-NEXT:    xxswapd vs1, v3
774 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
775 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
776 ; PWR9LE-NEXT:    xxsldwi vs1, v3, v3, 1
777 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
778 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
779 ; PWR9LE-NEXT:    xscvspdpn f1, v3
780 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
781 ; PWR9LE-NEXT:    xxsldwi vs1, v4, v4, 3
782 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
783 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
784 ; PWR9LE-NEXT:    xxswapd vs1, v4
785 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
786 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
787 ; PWR9LE-NEXT:    xxsldwi vs1, v4, v4, 1
788 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
789 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
790 ; PWR9LE-NEXT:    xscvspdpn f1, v4
791 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
792 ; PWR9LE-NEXT:    xxsldwi vs1, v5, v5, 3
793 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
794 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
795 ; PWR9LE-NEXT:    xxswapd vs1, v5
796 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
797 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
798 ; PWR9LE-NEXT:    xxsldwi vs1, v5, v5, 1
799 ; PWR9LE-NEXT:    xscvspdpn f1, vs1
800 ; PWR9LE-NEXT:    xsaddsp f0, f0, f1
801 ; PWR9LE-NEXT:    xscvspdpn f1, v5
802 ; PWR9LE-NEXT:    xsaddsp f1, f0, f1
803 ; PWR9LE-NEXT:    blr
805 ; PWR9BE-LABEL: v16f32_b:
806 ; PWR9BE:       # %bb.0: # %entry
807 ; PWR9BE-NEXT:    xscvspdpn f0, v2
808 ; PWR9BE-NEXT:    xsaddsp f0, f1, f0
809 ; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 1
810 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
811 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
812 ; PWR9BE-NEXT:    xxswapd vs1, v2
813 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
814 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
815 ; PWR9BE-NEXT:    xxsldwi vs1, v2, v2, 3
816 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
817 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
818 ; PWR9BE-NEXT:    xscvspdpn f1, v3
819 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
820 ; PWR9BE-NEXT:    xxsldwi vs1, v3, v3, 1
821 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
822 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
823 ; PWR9BE-NEXT:    xxswapd vs1, v3
824 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
825 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
826 ; PWR9BE-NEXT:    xxsldwi vs1, v3, v3, 3
827 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
828 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
829 ; PWR9BE-NEXT:    xscvspdpn f1, v4
830 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
831 ; PWR9BE-NEXT:    xxsldwi vs1, v4, v4, 1
832 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
833 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
834 ; PWR9BE-NEXT:    xxswapd vs1, v4
835 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
836 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
837 ; PWR9BE-NEXT:    xxsldwi vs1, v4, v4, 3
838 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
839 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
840 ; PWR9BE-NEXT:    xscvspdpn f1, v5
841 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
842 ; PWR9BE-NEXT:    xxsldwi vs1, v5, v5, 1
843 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
844 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
845 ; PWR9BE-NEXT:    xxswapd vs1, v5
846 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
847 ; PWR9BE-NEXT:    xsaddsp f0, f0, f1
848 ; PWR9BE-NEXT:    xxsldwi vs1, v5, v5, 3
849 ; PWR9BE-NEXT:    xscvspdpn f1, vs1
850 ; PWR9BE-NEXT:    xsaddsp f1, f0, f1
851 ; PWR9BE-NEXT:    blr
853 ; PWR10LE-LABEL: v16f32_b:
854 ; PWR10LE:       # %bb.0: # %entry
855 ; PWR10LE-NEXT:    xxsldwi vs0, v2, v2, 3
856 ; PWR10LE-NEXT:    xscvspdpn f0, vs0
857 ; PWR10LE-NEXT:    xsaddsp f0, f1, f0
858 ; PWR10LE-NEXT:    xxswapd vs1, v2
859 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
860 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
861 ; PWR10LE-NEXT:    xxsldwi vs1, v2, v2, 1
862 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
863 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
864 ; PWR10LE-NEXT:    xscvspdpn f1, v2
865 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
866 ; PWR10LE-NEXT:    xxsldwi vs1, v3, v3, 3
867 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
868 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
869 ; PWR10LE-NEXT:    xxswapd vs1, v3
870 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
871 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
872 ; PWR10LE-NEXT:    xxsldwi vs1, v3, v3, 1
873 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
874 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
875 ; PWR10LE-NEXT:    xscvspdpn f1, v3
876 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
877 ; PWR10LE-NEXT:    xxsldwi vs1, v4, v4, 3
878 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
879 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
880 ; PWR10LE-NEXT:    xxswapd vs1, v4
881 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
882 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
883 ; PWR10LE-NEXT:    xxsldwi vs1, v4, v4, 1
884 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
885 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
886 ; PWR10LE-NEXT:    xscvspdpn f1, v4
887 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
888 ; PWR10LE-NEXT:    xxsldwi vs1, v5, v5, 3
889 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
890 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
891 ; PWR10LE-NEXT:    xxswapd vs1, v5
892 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
893 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
894 ; PWR10LE-NEXT:    xxsldwi vs1, v5, v5, 1
895 ; PWR10LE-NEXT:    xscvspdpn f1, vs1
896 ; PWR10LE-NEXT:    xsaddsp f0, f0, f1
897 ; PWR10LE-NEXT:    xscvspdpn f1, v5
898 ; PWR10LE-NEXT:    xsaddsp f1, f0, f1
899 ; PWR10LE-NEXT:    blr
901 ; PWR10BE-LABEL: v16f32_b:
902 ; PWR10BE:       # %bb.0: # %entry
903 ; PWR10BE-NEXT:    xscvspdpn f0, v2
904 ; PWR10BE-NEXT:    xsaddsp f0, f1, f0
905 ; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 1
906 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
907 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
908 ; PWR10BE-NEXT:    xxswapd vs1, v2
909 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
910 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
911 ; PWR10BE-NEXT:    xxsldwi vs1, v2, v2, 3
912 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
913 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
914 ; PWR10BE-NEXT:    xscvspdpn f1, v3
915 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
916 ; PWR10BE-NEXT:    xxsldwi vs1, v3, v3, 1
917 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
918 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
919 ; PWR10BE-NEXT:    xxswapd vs1, v3
920 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
921 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
922 ; PWR10BE-NEXT:    xxsldwi vs1, v3, v3, 3
923 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
924 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
925 ; PWR10BE-NEXT:    xscvspdpn f1, v4
926 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
927 ; PWR10BE-NEXT:    xxsldwi vs1, v4, v4, 1
928 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
929 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
930 ; PWR10BE-NEXT:    xxswapd vs1, v4
931 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
932 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
933 ; PWR10BE-NEXT:    xxsldwi vs1, v4, v4, 3
934 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
935 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
936 ; PWR10BE-NEXT:    xscvspdpn f1, v5
937 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
938 ; PWR10BE-NEXT:    xxsldwi vs1, v5, v5, 1
939 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
940 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
941 ; PWR10BE-NEXT:    xxswapd vs1, v5
942 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
943 ; PWR10BE-NEXT:    xsaddsp f0, f0, f1
944 ; PWR10BE-NEXT:    xxsldwi vs1, v5, v5, 3
945 ; PWR10BE-NEXT:    xscvspdpn f1, vs1
946 ; PWR10BE-NEXT:    xsaddsp f1, f0, f1
947 ; PWR10BE-NEXT:    blr
948 entry:
949   %0 = call float @llvm.vector.reduce.fadd.v16f32(float %b, <16 x float> %a)
950   ret float %0
953 define dso_local float @v16f32_fast(<16 x float> %a) local_unnamed_addr #0 {
954 ; PWR9LE-LABEL: v16f32_fast:
955 ; PWR9LE:       # %bb.0: # %entry
956 ; PWR9LE-NEXT:    xvaddsp vs0, v3, v5
957 ; PWR9LE-NEXT:    xvaddsp vs1, v2, v4
958 ; PWR9LE-NEXT:    xvaddsp vs0, vs1, vs0
959 ; PWR9LE-NEXT:    xxswapd v2, vs0
960 ; PWR9LE-NEXT:    xvaddsp vs0, vs0, v2
961 ; PWR9LE-NEXT:    xxspltw vs1, vs0, 2
962 ; PWR9LE-NEXT:    xvaddsp vs0, vs0, vs1
963 ; PWR9LE-NEXT:    xxsldwi vs0, vs0, vs0, 3
964 ; PWR9LE-NEXT:    xscvspdpn f1, vs0
965 ; PWR9LE-NEXT:    blr
967 ; PWR9BE-LABEL: v16f32_fast:
968 ; PWR9BE:       # %bb.0: # %entry
969 ; PWR9BE-NEXT:    xvaddsp vs0, v3, v5
970 ; PWR9BE-NEXT:    xvaddsp vs1, v2, v4
971 ; PWR9BE-NEXT:    xvaddsp vs0, vs1, vs0
972 ; PWR9BE-NEXT:    xxswapd v2, vs0
973 ; PWR9BE-NEXT:    xvaddsp vs0, vs0, v2
974 ; PWR9BE-NEXT:    xxspltw vs1, vs0, 1
975 ; PWR9BE-NEXT:    xvaddsp vs0, vs0, vs1
976 ; PWR9BE-NEXT:    xscvspdpn f1, vs0
977 ; PWR9BE-NEXT:    blr
979 ; PWR10LE-LABEL: v16f32_fast:
980 ; PWR10LE:       # %bb.0: # %entry
981 ; PWR10LE-NEXT:    xvaddsp vs0, v3, v5
982 ; PWR10LE-NEXT:    xvaddsp vs1, v2, v4
983 ; PWR10LE-NEXT:    xvaddsp vs0, vs1, vs0
984 ; PWR10LE-NEXT:    xxswapd v2, vs0
985 ; PWR10LE-NEXT:    xvaddsp vs0, vs0, v2
986 ; PWR10LE-NEXT:    xxspltw vs1, vs0, 2
987 ; PWR10LE-NEXT:    xvaddsp vs0, vs0, vs1
988 ; PWR10LE-NEXT:    xxsldwi vs0, vs0, vs0, 3
989 ; PWR10LE-NEXT:    xscvspdpn f1, vs0
990 ; PWR10LE-NEXT:    blr
992 ; PWR10BE-LABEL: v16f32_fast:
993 ; PWR10BE:       # %bb.0: # %entry
994 ; PWR10BE-NEXT:    xvaddsp vs0, v3, v5
995 ; PWR10BE-NEXT:    xvaddsp vs1, v2, v4
996 ; PWR10BE-NEXT:    xvaddsp vs0, vs1, vs0
997 ; PWR10BE-NEXT:    xxswapd v2, vs0
998 ; PWR10BE-NEXT:    xvaddsp vs0, vs0, v2
999 ; PWR10BE-NEXT:    xxspltw vs1, vs0, 1
1000 ; PWR10BE-NEXT:    xvaddsp vs0, vs0, vs1
1001 ; PWR10BE-NEXT:    xscvspdpn f1, vs0
1002 ; PWR10BE-NEXT:    blr
1003 entry:
1004   %0 = call fast float @llvm.vector.reduce.fadd.v16f32(float -0.000000e+00, <16 x float> %a)
1005   ret float %0
1008 declare float @llvm.vector.reduce.fadd.v2f32(float, <2 x float>) #0
1009 declare float @llvm.vector.reduce.fadd.v4f32(float, <4 x float>) #0
1010 declare float @llvm.vector.reduce.fadd.v8f32(float, <8 x float>) #0
1011 declare float @llvm.vector.reduce.fadd.v16f32(float, <16 x float>) #0
1014 ;; Vectors of f64
1016 define dso_local double @v2f64(<2 x double> %a) local_unnamed_addr #0 {
1017 ; PWR9LE-LABEL: v2f64:
1018 ; PWR9LE:       # %bb.0: # %entry
1019 ; PWR9LE-NEXT:    xxswapd vs0, v2
1020 ; PWR9LE-NEXT:    xsadddp f1, f0, v2
1021 ; PWR9LE-NEXT:    blr
1023 ; PWR9BE-LABEL: v2f64:
1024 ; PWR9BE:       # %bb.0: # %entry
1025 ; PWR9BE-NEXT:    xxswapd vs0, v2
1026 ; PWR9BE-NEXT:    xsadddp f1, v2, f0
1027 ; PWR9BE-NEXT:    blr
1029 ; PWR10LE-LABEL: v2f64:
1030 ; PWR10LE:       # %bb.0: # %entry
1031 ; PWR10LE-NEXT:    xxswapd vs0, v2
1032 ; PWR10LE-NEXT:    xsadddp f1, f0, v2
1033 ; PWR10LE-NEXT:    blr
1035 ; PWR10BE-LABEL: v2f64:
1036 ; PWR10BE:       # %bb.0: # %entry
1037 ; PWR10BE-NEXT:    xxswapd vs0, v2
1038 ; PWR10BE-NEXT:    xsadddp f1, v2, f0
1039 ; PWR10BE-NEXT:    blr
1040 entry:
1041   %0 = call double @llvm.vector.reduce.fadd.v2f64(double -0.000000e+00, <2 x double> %a)
1042   ret double %0
1045 define dso_local double @v2f64_b(<2 x double> %a, double %b) local_unnamed_addr #0 {
1046 ; PWR9LE-LABEL: v2f64_b:
1047 ; PWR9LE:       # %bb.0: # %entry
1048 ; PWR9LE-NEXT:    xxswapd vs0, v2
1049 ; PWR9LE-NEXT:    xsadddp f0, f1, f0
1050 ; PWR9LE-NEXT:    xsadddp f1, f0, v2
1051 ; PWR9LE-NEXT:    blr
1053 ; PWR9BE-LABEL: v2f64_b:
1054 ; PWR9BE:       # %bb.0: # %entry
1055 ; PWR9BE-NEXT:    xsadddp f0, f1, v2
1056 ; PWR9BE-NEXT:    xxswapd vs1, v2
1057 ; PWR9BE-NEXT:    xsadddp f1, f0, f1
1058 ; PWR9BE-NEXT:    blr
1060 ; PWR10LE-LABEL: v2f64_b:
1061 ; PWR10LE:       # %bb.0: # %entry
1062 ; PWR10LE-NEXT:    xxswapd vs0, v2
1063 ; PWR10LE-NEXT:    xsadddp f0, f1, f0
1064 ; PWR10LE-NEXT:    xsadddp f1, f0, v2
1065 ; PWR10LE-NEXT:    blr
1067 ; PWR10BE-LABEL: v2f64_b:
1068 ; PWR10BE:       # %bb.0: # %entry
1069 ; PWR10BE-NEXT:    xsadddp f0, f1, v2
1070 ; PWR10BE-NEXT:    xxswapd vs1, v2
1071 ; PWR10BE-NEXT:    xsadddp f1, f0, f1
1072 ; PWR10BE-NEXT:    blr
1073 entry:
1074   %0 = call double @llvm.vector.reduce.fadd.v2f64(double %b, <2 x double> %a)
1075   ret double %0
1078 define dso_local double @v2f64_fast(<2 x double> %a) local_unnamed_addr #0 {
1079 ; PWR9LE-LABEL: v2f64_fast:
1080 ; PWR9LE:       # %bb.0: # %entry
1081 ; PWR9LE-NEXT:    xxswapd vs0, v2
1082 ; PWR9LE-NEXT:    xvadddp vs0, v2, vs0
1083 ; PWR9LE-NEXT:    xxswapd vs1, vs0
1084 ; PWR9LE-NEXT:    blr
1086 ; PWR9BE-LABEL: v2f64_fast:
1087 ; PWR9BE:       # %bb.0: # %entry
1088 ; PWR9BE-NEXT:    xxswapd vs0, v2
1089 ; PWR9BE-NEXT:    xvadddp vs1, v2, vs0
1090 ; PWR9BE-NEXT:    blr
1092 ; PWR10LE-LABEL: v2f64_fast:
1093 ; PWR10LE:       # %bb.0: # %entry
1094 ; PWR10LE-NEXT:    xxswapd vs0, v2
1095 ; PWR10LE-NEXT:    xvadddp vs0, v2, vs0
1096 ; PWR10LE-NEXT:    xxswapd vs1, vs0
1097 ; PWR10LE-NEXT:    blr
1099 ; PWR10BE-LABEL: v2f64_fast:
1100 ; PWR10BE:       # %bb.0: # %entry
1101 ; PWR10BE-NEXT:    xxswapd vs0, v2
1102 ; PWR10BE-NEXT:    xvadddp vs1, v2, vs0
1103 ; PWR10BE-NEXT:    blr
1104 entry:
1105   %0 = call fast double @llvm.vector.reduce.fadd.v2f64(double -0.000000e+00, <2 x double> %a)
1106   ret double %0
1109 define dso_local double @v4f64(<4 x double> %a) local_unnamed_addr #0 {
1110 ; PWR9LE-LABEL: v4f64:
1111 ; PWR9LE:       # %bb.0: # %entry
1112 ; PWR9LE-NEXT:    xxswapd vs0, v2
1113 ; PWR9LE-NEXT:    xxswapd vs1, v3
1114 ; PWR9LE-NEXT:    xsadddp f0, f0, v2
1115 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1116 ; PWR9LE-NEXT:    xsadddp f1, f0, v3
1117 ; PWR9LE-NEXT:    blr
1119 ; PWR9BE-LABEL: v4f64:
1120 ; PWR9BE:       # %bb.0: # %entry
1121 ; PWR9BE-NEXT:    xxswapd vs0, v2
1122 ; PWR9BE-NEXT:    xxswapd vs1, v3
1123 ; PWR9BE-NEXT:    xsadddp f0, v2, f0
1124 ; PWR9BE-NEXT:    xsadddp f0, f0, v3
1125 ; PWR9BE-NEXT:    xsadddp f1, f0, f1
1126 ; PWR9BE-NEXT:    blr
1128 ; PWR10LE-LABEL: v4f64:
1129 ; PWR10LE:       # %bb.0: # %entry
1130 ; PWR10LE-NEXT:    xxswapd vs0, v2
1131 ; PWR10LE-NEXT:    xxswapd vs1, v3
1132 ; PWR10LE-NEXT:    xsadddp f0, f0, v2
1133 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1134 ; PWR10LE-NEXT:    xsadddp f1, f0, v3
1135 ; PWR10LE-NEXT:    blr
1137 ; PWR10BE-LABEL: v4f64:
1138 ; PWR10BE:       # %bb.0: # %entry
1139 ; PWR10BE-NEXT:    xxswapd vs0, v2
1140 ; PWR10BE-NEXT:    xxswapd vs1, v3
1141 ; PWR10BE-NEXT:    xsadddp f0, v2, f0
1142 ; PWR10BE-NEXT:    xsadddp f0, f0, v3
1143 ; PWR10BE-NEXT:    xsadddp f1, f0, f1
1144 ; PWR10BE-NEXT:    blr
1145 entry:
1146   %0 = call double @llvm.vector.reduce.fadd.v4f64(double -0.000000e+00, <4 x double> %a)
1147   ret double %0
1150 define dso_local double @v4f64_b(<4 x double> %a, double %b) local_unnamed_addr #0 {
1151 ; PWR9LE-LABEL: v4f64_b:
1152 ; PWR9LE:       # %bb.0: # %entry
1153 ; PWR9LE-NEXT:    xxswapd vs0, v2
1154 ; PWR9LE-NEXT:    xsadddp f0, f1, f0
1155 ; PWR9LE-NEXT:    xxswapd vs1, v3
1156 ; PWR9LE-NEXT:    xsadddp f0, f0, v2
1157 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1158 ; PWR9LE-NEXT:    xsadddp f1, f0, v3
1159 ; PWR9LE-NEXT:    blr
1161 ; PWR9BE-LABEL: v4f64_b:
1162 ; PWR9BE:       # %bb.0: # %entry
1163 ; PWR9BE-NEXT:    xsadddp f0, f1, v2
1164 ; PWR9BE-NEXT:    xxswapd vs1, v2
1165 ; PWR9BE-NEXT:    xsadddp f0, f0, f1
1166 ; PWR9BE-NEXT:    xxswapd vs1, v3
1167 ; PWR9BE-NEXT:    xsadddp f0, f0, v3
1168 ; PWR9BE-NEXT:    xsadddp f1, f0, f1
1169 ; PWR9BE-NEXT:    blr
1171 ; PWR10LE-LABEL: v4f64_b:
1172 ; PWR10LE:       # %bb.0: # %entry
1173 ; PWR10LE-NEXT:    xxswapd vs0, v2
1174 ; PWR10LE-NEXT:    xsadddp f0, f1, f0
1175 ; PWR10LE-NEXT:    xxswapd vs1, v3
1176 ; PWR10LE-NEXT:    xsadddp f0, f0, v2
1177 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1178 ; PWR10LE-NEXT:    xsadddp f1, f0, v3
1179 ; PWR10LE-NEXT:    blr
1181 ; PWR10BE-LABEL: v4f64_b:
1182 ; PWR10BE:       # %bb.0: # %entry
1183 ; PWR10BE-NEXT:    xsadddp f0, f1, v2
1184 ; PWR10BE-NEXT:    xxswapd vs1, v2
1185 ; PWR10BE-NEXT:    xsadddp f0, f0, f1
1186 ; PWR10BE-NEXT:    xxswapd vs1, v3
1187 ; PWR10BE-NEXT:    xsadddp f0, f0, v3
1188 ; PWR10BE-NEXT:    xsadddp f1, f0, f1
1189 ; PWR10BE-NEXT:    blr
1190 entry:
1191   %0 = call double @llvm.vector.reduce.fadd.v4f64(double %b, <4 x double> %a)
1192   ret double %0
1195 define dso_local double @v4f64_fast(<4 x double> %a) local_unnamed_addr #0 {
1196 ; PWR9LE-LABEL: v4f64_fast:
1197 ; PWR9LE:       # %bb.0: # %entry
1198 ; PWR9LE-NEXT:    xvadddp vs0, v2, v3
1199 ; PWR9LE-NEXT:    xxswapd vs1, vs0
1200 ; PWR9LE-NEXT:    xvadddp vs0, vs0, vs1
1201 ; PWR9LE-NEXT:    xxswapd vs1, vs0
1202 ; PWR9LE-NEXT:    blr
1204 ; PWR9BE-LABEL: v4f64_fast:
1205 ; PWR9BE:       # %bb.0: # %entry
1206 ; PWR9BE-NEXT:    xvadddp vs0, v2, v3
1207 ; PWR9BE-NEXT:    xxswapd vs1, vs0
1208 ; PWR9BE-NEXT:    xvadddp vs1, vs0, vs1
1209 ; PWR9BE-NEXT:    blr
1211 ; PWR10LE-LABEL: v4f64_fast:
1212 ; PWR10LE:       # %bb.0: # %entry
1213 ; PWR10LE-NEXT:    xvadddp vs0, v2, v3
1214 ; PWR10LE-NEXT:    xxswapd vs1, vs0
1215 ; PWR10LE-NEXT:    xvadddp vs0, vs0, vs1
1216 ; PWR10LE-NEXT:    xxswapd vs1, vs0
1217 ; PWR10LE-NEXT:    blr
1219 ; PWR10BE-LABEL: v4f64_fast:
1220 ; PWR10BE:       # %bb.0: # %entry
1221 ; PWR10BE-NEXT:    xvadddp vs0, v2, v3
1222 ; PWR10BE-NEXT:    xxswapd vs1, vs0
1223 ; PWR10BE-NEXT:    xvadddp vs1, vs0, vs1
1224 ; PWR10BE-NEXT:    blr
1225 entry:
1226   %0 = call fast double @llvm.vector.reduce.fadd.v4f64(double -0.000000e+00, <4 x double> %a)
1227   ret double %0
1230 define dso_local double @v8f64(<8 x double> %a) local_unnamed_addr #0 {
1231 ; PWR9LE-LABEL: v8f64:
1232 ; PWR9LE:       # %bb.0: # %entry
1233 ; PWR9LE-NEXT:    xxswapd vs0, v2
1234 ; PWR9LE-NEXT:    xxswapd vs1, v3
1235 ; PWR9LE-NEXT:    xsadddp f0, f0, v2
1236 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1237 ; PWR9LE-NEXT:    xxswapd vs1, v4
1238 ; PWR9LE-NEXT:    xsadddp f0, f0, v3
1239 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1240 ; PWR9LE-NEXT:    xxswapd vs1, v5
1241 ; PWR9LE-NEXT:    xsadddp f0, f0, v4
1242 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1243 ; PWR9LE-NEXT:    xsadddp f1, f0, v5
1244 ; PWR9LE-NEXT:    blr
1246 ; PWR9BE-LABEL: v8f64:
1247 ; PWR9BE:       # %bb.0: # %entry
1248 ; PWR9BE-NEXT:    xxswapd vs0, v2
1249 ; PWR9BE-NEXT:    xxswapd vs1, v3
1250 ; PWR9BE-NEXT:    xsadddp f0, v2, f0
1251 ; PWR9BE-NEXT:    xsadddp f0, f0, v3
1252 ; PWR9BE-NEXT:    xsadddp f0, f0, f1
1253 ; PWR9BE-NEXT:    xxswapd vs1, v4
1254 ; PWR9BE-NEXT:    xsadddp f0, f0, v4
1255 ; PWR9BE-NEXT:    xsadddp f0, f0, f1
1256 ; PWR9BE-NEXT:    xxswapd vs1, v5
1257 ; PWR9BE-NEXT:    xsadddp f0, f0, v5
1258 ; PWR9BE-NEXT:    xsadddp f1, f0, f1
1259 ; PWR9BE-NEXT:    blr
1261 ; PWR10LE-LABEL: v8f64:
1262 ; PWR10LE:       # %bb.0: # %entry
1263 ; PWR10LE-NEXT:    xxswapd vs0, v2
1264 ; PWR10LE-NEXT:    xxswapd vs1, v3
1265 ; PWR10LE-NEXT:    xsadddp f0, f0, v2
1266 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1267 ; PWR10LE-NEXT:    xxswapd vs1, v4
1268 ; PWR10LE-NEXT:    xsadddp f0, f0, v3
1269 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1270 ; PWR10LE-NEXT:    xxswapd vs1, v5
1271 ; PWR10LE-NEXT:    xsadddp f0, f0, v4
1272 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1273 ; PWR10LE-NEXT:    xsadddp f1, f0, v5
1274 ; PWR10LE-NEXT:    blr
1276 ; PWR10BE-LABEL: v8f64:
1277 ; PWR10BE:       # %bb.0: # %entry
1278 ; PWR10BE-NEXT:    xxswapd vs0, v2
1279 ; PWR10BE-NEXT:    xxswapd vs1, v3
1280 ; PWR10BE-NEXT:    xsadddp f0, v2, f0
1281 ; PWR10BE-NEXT:    xsadddp f0, f0, v3
1282 ; PWR10BE-NEXT:    xsadddp f0, f0, f1
1283 ; PWR10BE-NEXT:    xxswapd vs1, v4
1284 ; PWR10BE-NEXT:    xsadddp f0, f0, v4
1285 ; PWR10BE-NEXT:    xsadddp f0, f0, f1
1286 ; PWR10BE-NEXT:    xxswapd vs1, v5
1287 ; PWR10BE-NEXT:    xsadddp f0, f0, v5
1288 ; PWR10BE-NEXT:    xsadddp f1, f0, f1
1289 ; PWR10BE-NEXT:    blr
1290 entry:
1291   %0 = call double @llvm.vector.reduce.fadd.v8f64(double -0.000000e+00, <8 x double> %a)
1292   ret double %0
1295 define dso_local double @v8f64_b(<8 x double> %a, double %b) local_unnamed_addr #0 {
1296 ; PWR9LE-LABEL: v8f64_b:
1297 ; PWR9LE:       # %bb.0: # %entry
1298 ; PWR9LE-NEXT:    xxswapd vs0, v2
1299 ; PWR9LE-NEXT:    xsadddp f0, f1, f0
1300 ; PWR9LE-NEXT:    xxswapd vs1, v3
1301 ; PWR9LE-NEXT:    xsadddp f0, f0, v2
1302 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1303 ; PWR9LE-NEXT:    xxswapd vs1, v4
1304 ; PWR9LE-NEXT:    xsadddp f0, f0, v3
1305 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1306 ; PWR9LE-NEXT:    xxswapd vs1, v5
1307 ; PWR9LE-NEXT:    xsadddp f0, f0, v4
1308 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1309 ; PWR9LE-NEXT:    xsadddp f1, f0, v5
1310 ; PWR9LE-NEXT:    blr
1312 ; PWR9BE-LABEL: v8f64_b:
1313 ; PWR9BE:       # %bb.0: # %entry
1314 ; PWR9BE-NEXT:    xsadddp f0, f1, v2
1315 ; PWR9BE-NEXT:    xxswapd vs1, v2
1316 ; PWR9BE-NEXT:    xsadddp f0, f0, f1
1317 ; PWR9BE-NEXT:    xxswapd vs1, v3
1318 ; PWR9BE-NEXT:    xsadddp f0, f0, v3
1319 ; PWR9BE-NEXT:    xsadddp f0, f0, f1
1320 ; PWR9BE-NEXT:    xxswapd vs1, v4
1321 ; PWR9BE-NEXT:    xsadddp f0, f0, v4
1322 ; PWR9BE-NEXT:    xsadddp f0, f0, f1
1323 ; PWR9BE-NEXT:    xxswapd vs1, v5
1324 ; PWR9BE-NEXT:    xsadddp f0, f0, v5
1325 ; PWR9BE-NEXT:    xsadddp f1, f0, f1
1326 ; PWR9BE-NEXT:    blr
1328 ; PWR10LE-LABEL: v8f64_b:
1329 ; PWR10LE:       # %bb.0: # %entry
1330 ; PWR10LE-NEXT:    xxswapd vs0, v2
1331 ; PWR10LE-NEXT:    xsadddp f0, f1, f0
1332 ; PWR10LE-NEXT:    xxswapd vs1, v3
1333 ; PWR10LE-NEXT:    xsadddp f0, f0, v2
1334 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1335 ; PWR10LE-NEXT:    xxswapd vs1, v4
1336 ; PWR10LE-NEXT:    xsadddp f0, f0, v3
1337 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1338 ; PWR10LE-NEXT:    xxswapd vs1, v5
1339 ; PWR10LE-NEXT:    xsadddp f0, f0, v4
1340 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1341 ; PWR10LE-NEXT:    xsadddp f1, f0, v5
1342 ; PWR10LE-NEXT:    blr
1344 ; PWR10BE-LABEL: v8f64_b:
1345 ; PWR10BE:       # %bb.0: # %entry
1346 ; PWR10BE-NEXT:    xsadddp f0, f1, v2
1347 ; PWR10BE-NEXT:    xxswapd vs1, v2
1348 ; PWR10BE-NEXT:    xsadddp f0, f0, f1
1349 ; PWR10BE-NEXT:    xxswapd vs1, v3
1350 ; PWR10BE-NEXT:    xsadddp f0, f0, v3
1351 ; PWR10BE-NEXT:    xsadddp f0, f0, f1
1352 ; PWR10BE-NEXT:    xxswapd vs1, v4
1353 ; PWR10BE-NEXT:    xsadddp f0, f0, v4
1354 ; PWR10BE-NEXT:    xsadddp f0, f0, f1
1355 ; PWR10BE-NEXT:    xxswapd vs1, v5
1356 ; PWR10BE-NEXT:    xsadddp f0, f0, v5
1357 ; PWR10BE-NEXT:    xsadddp f1, f0, f1
1358 ; PWR10BE-NEXT:    blr
1359 entry:
1360   %0 = call double @llvm.vector.reduce.fadd.v8f64(double %b, <8 x double> %a)
1361   ret double %0
1364 define dso_local double @v8f64_fast(<8 x double> %a) local_unnamed_addr #0 {
1365 ; PWR9LE-LABEL: v8f64_fast:
1366 ; PWR9LE:       # %bb.0: # %entry
1367 ; PWR9LE-NEXT:    xvadddp vs0, v3, v5
1368 ; PWR9LE-NEXT:    xvadddp vs1, v2, v4
1369 ; PWR9LE-NEXT:    xvadddp vs0, vs1, vs0
1370 ; PWR9LE-NEXT:    xxswapd vs1, vs0
1371 ; PWR9LE-NEXT:    xvadddp vs0, vs0, vs1
1372 ; PWR9LE-NEXT:    xxswapd vs1, vs0
1373 ; PWR9LE-NEXT:    blr
1375 ; PWR9BE-LABEL: v8f64_fast:
1376 ; PWR9BE:       # %bb.0: # %entry
1377 ; PWR9BE-NEXT:    xvadddp vs0, v3, v5
1378 ; PWR9BE-NEXT:    xvadddp vs1, v2, v4
1379 ; PWR9BE-NEXT:    xvadddp vs0, vs1, vs0
1380 ; PWR9BE-NEXT:    xxswapd vs1, vs0
1381 ; PWR9BE-NEXT:    xvadddp vs1, vs0, vs1
1382 ; PWR9BE-NEXT:    blr
1384 ; PWR10LE-LABEL: v8f64_fast:
1385 ; PWR10LE:       # %bb.0: # %entry
1386 ; PWR10LE-NEXT:    xvadddp vs0, v3, v5
1387 ; PWR10LE-NEXT:    xvadddp vs1, v2, v4
1388 ; PWR10LE-NEXT:    xvadddp vs0, vs1, vs0
1389 ; PWR10LE-NEXT:    xxswapd vs1, vs0
1390 ; PWR10LE-NEXT:    xvadddp vs0, vs0, vs1
1391 ; PWR10LE-NEXT:    xxswapd vs1, vs0
1392 ; PWR10LE-NEXT:    blr
1394 ; PWR10BE-LABEL: v8f64_fast:
1395 ; PWR10BE:       # %bb.0: # %entry
1396 ; PWR10BE-NEXT:    xvadddp vs0, v3, v5
1397 ; PWR10BE-NEXT:    xvadddp vs1, v2, v4
1398 ; PWR10BE-NEXT:    xvadddp vs0, vs1, vs0
1399 ; PWR10BE-NEXT:    xxswapd vs1, vs0
1400 ; PWR10BE-NEXT:    xvadddp vs1, vs0, vs1
1401 ; PWR10BE-NEXT:    blr
1402 entry:
1403   %0 = call fast double @llvm.vector.reduce.fadd.v8f64(double -0.000000e+00, <8 x double> %a)
1404   ret double %0
1407 define dso_local double @v16f64(<16 x double> %a) local_unnamed_addr #0 {
1408 ; PWR9LE-LABEL: v16f64:
1409 ; PWR9LE:       # %bb.0: # %entry
1410 ; PWR9LE-NEXT:    xxswapd vs0, v2
1411 ; PWR9LE-NEXT:    xxswapd vs1, v3
1412 ; PWR9LE-NEXT:    xsadddp f0, f0, v2
1413 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1414 ; PWR9LE-NEXT:    xxswapd vs1, v4
1415 ; PWR9LE-NEXT:    xsadddp f0, f0, v3
1416 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1417 ; PWR9LE-NEXT:    xxswapd vs1, v5
1418 ; PWR9LE-NEXT:    xsadddp f0, f0, v4
1419 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1420 ; PWR9LE-NEXT:    xxswapd vs1, v6
1421 ; PWR9LE-NEXT:    xsadddp f0, f0, v5
1422 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1423 ; PWR9LE-NEXT:    xxswapd vs1, v7
1424 ; PWR9LE-NEXT:    xsadddp f0, f0, v6
1425 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1426 ; PWR9LE-NEXT:    xxswapd vs1, v8
1427 ; PWR9LE-NEXT:    xsadddp f0, f0, v7
1428 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1429 ; PWR9LE-NEXT:    xxswapd vs1, v9
1430 ; PWR9LE-NEXT:    xsadddp f0, f0, v8
1431 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1432 ; PWR9LE-NEXT:    xsadddp f1, f0, v9
1433 ; PWR9LE-NEXT:    blr
1435 ; PWR9BE-LABEL: v16f64:
1436 ; PWR9BE:       # %bb.0: # %entry
1437 ; PWR9BE-NEXT:    xxswapd vs0, v2
1438 ; PWR9BE-NEXT:    xxswapd vs1, v3
1439 ; PWR9BE-NEXT:    xsadddp f0, v2, f0
1440 ; PWR9BE-NEXT:    xsadddp f0, f0, v3
1441 ; PWR9BE-NEXT:    xsadddp f0, f0, f1
1442 ; PWR9BE-NEXT:    xxswapd vs1, v4
1443 ; PWR9BE-NEXT:    xsadddp f0, f0, v4
1444 ; PWR9BE-NEXT:    xsadddp f0, f0, f1
1445 ; PWR9BE-NEXT:    xxswapd vs1, v5
1446 ; PWR9BE-NEXT:    xsadddp f0, f0, v5
1447 ; PWR9BE-NEXT:    xsadddp f0, f0, f1
1448 ; PWR9BE-NEXT:    xxswapd vs1, v6
1449 ; PWR9BE-NEXT:    xsadddp f0, f0, v6
1450 ; PWR9BE-NEXT:    xsadddp f0, f0, f1
1451 ; PWR9BE-NEXT:    xxswapd vs1, v7
1452 ; PWR9BE-NEXT:    xsadddp f0, f0, v7
1453 ; PWR9BE-NEXT:    xsadddp f0, f0, f1
1454 ; PWR9BE-NEXT:    xxswapd vs1, v8
1455 ; PWR9BE-NEXT:    xsadddp f0, f0, v8
1456 ; PWR9BE-NEXT:    xsadddp f0, f0, f1
1457 ; PWR9BE-NEXT:    xxswapd vs1, v9
1458 ; PWR9BE-NEXT:    xsadddp f0, f0, v9
1459 ; PWR9BE-NEXT:    xsadddp f1, f0, f1
1460 ; PWR9BE-NEXT:    blr
1462 ; PWR10LE-LABEL: v16f64:
1463 ; PWR10LE:       # %bb.0: # %entry
1464 ; PWR10LE-NEXT:    xxswapd vs0, v2
1465 ; PWR10LE-NEXT:    xxswapd vs1, v3
1466 ; PWR10LE-NEXT:    xsadddp f0, f0, v2
1467 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1468 ; PWR10LE-NEXT:    xxswapd vs1, v4
1469 ; PWR10LE-NEXT:    xsadddp f0, f0, v3
1470 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1471 ; PWR10LE-NEXT:    xxswapd vs1, v5
1472 ; PWR10LE-NEXT:    xsadddp f0, f0, v4
1473 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1474 ; PWR10LE-NEXT:    xxswapd vs1, v6
1475 ; PWR10LE-NEXT:    xsadddp f0, f0, v5
1476 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1477 ; PWR10LE-NEXT:    xxswapd vs1, v7
1478 ; PWR10LE-NEXT:    xsadddp f0, f0, v6
1479 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1480 ; PWR10LE-NEXT:    xxswapd vs1, v8
1481 ; PWR10LE-NEXT:    xsadddp f0, f0, v7
1482 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1483 ; PWR10LE-NEXT:    xxswapd vs1, v9
1484 ; PWR10LE-NEXT:    xsadddp f0, f0, v8
1485 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1486 ; PWR10LE-NEXT:    xsadddp f1, f0, v9
1487 ; PWR10LE-NEXT:    blr
1489 ; PWR10BE-LABEL: v16f64:
1490 ; PWR10BE:       # %bb.0: # %entry
1491 ; PWR10BE-NEXT:    xxswapd vs0, v2
1492 ; PWR10BE-NEXT:    xxswapd vs1, v3
1493 ; PWR10BE-NEXT:    xsadddp f0, v2, f0
1494 ; PWR10BE-NEXT:    xsadddp f0, f0, v3
1495 ; PWR10BE-NEXT:    xsadddp f0, f0, f1
1496 ; PWR10BE-NEXT:    xxswapd vs1, v4
1497 ; PWR10BE-NEXT:    xsadddp f0, f0, v4
1498 ; PWR10BE-NEXT:    xsadddp f0, f0, f1
1499 ; PWR10BE-NEXT:    xxswapd vs1, v5
1500 ; PWR10BE-NEXT:    xsadddp f0, f0, v5
1501 ; PWR10BE-NEXT:    xsadddp f0, f0, f1
1502 ; PWR10BE-NEXT:    xxswapd vs1, v6
1503 ; PWR10BE-NEXT:    xsadddp f0, f0, v6
1504 ; PWR10BE-NEXT:    xsadddp f0, f0, f1
1505 ; PWR10BE-NEXT:    xxswapd vs1, v7
1506 ; PWR10BE-NEXT:    xsadddp f0, f0, v7
1507 ; PWR10BE-NEXT:    xsadddp f0, f0, f1
1508 ; PWR10BE-NEXT:    xxswapd vs1, v8
1509 ; PWR10BE-NEXT:    xsadddp f0, f0, v8
1510 ; PWR10BE-NEXT:    xsadddp f0, f0, f1
1511 ; PWR10BE-NEXT:    xxswapd vs1, v9
1512 ; PWR10BE-NEXT:    xsadddp f0, f0, v9
1513 ; PWR10BE-NEXT:    xsadddp f1, f0, f1
1514 ; PWR10BE-NEXT:    blr
1515 entry:
1516   %0 = call double @llvm.vector.reduce.fadd.v16f64(double -0.000000e+00, <16 x double> %a)
1517   ret double %0
1520 define dso_local double @v16f64_b(<16 x double> %a, double %b) local_unnamed_addr #0 {
1521 ; PWR9LE-LABEL: v16f64_b:
1522 ; PWR9LE:       # %bb.0: # %entry
1523 ; PWR9LE-NEXT:    xxswapd vs0, v2
1524 ; PWR9LE-NEXT:    xsadddp f0, f1, f0
1525 ; PWR9LE-NEXT:    xxswapd vs1, v3
1526 ; PWR9LE-NEXT:    xsadddp f0, f0, v2
1527 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1528 ; PWR9LE-NEXT:    xxswapd vs1, v4
1529 ; PWR9LE-NEXT:    xsadddp f0, f0, v3
1530 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1531 ; PWR9LE-NEXT:    xxswapd vs1, v5
1532 ; PWR9LE-NEXT:    xsadddp f0, f0, v4
1533 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1534 ; PWR9LE-NEXT:    xxswapd vs1, v6
1535 ; PWR9LE-NEXT:    xsadddp f0, f0, v5
1536 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1537 ; PWR9LE-NEXT:    xxswapd vs1, v7
1538 ; PWR9LE-NEXT:    xsadddp f0, f0, v6
1539 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1540 ; PWR9LE-NEXT:    xxswapd vs1, v8
1541 ; PWR9LE-NEXT:    xsadddp f0, f0, v7
1542 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1543 ; PWR9LE-NEXT:    xxswapd vs1, v9
1544 ; PWR9LE-NEXT:    xsadddp f0, f0, v8
1545 ; PWR9LE-NEXT:    xsadddp f0, f0, f1
1546 ; PWR9LE-NEXT:    xsadddp f1, f0, v9
1547 ; PWR9LE-NEXT:    blr
1549 ; PWR9BE-LABEL: v16f64_b:
1550 ; PWR9BE:       # %bb.0: # %entry
1551 ; PWR9BE-NEXT:    xsadddp f0, f1, v2
1552 ; PWR9BE-NEXT:    xxswapd vs1, v2
1553 ; PWR9BE-NEXT:    xsadddp f0, f0, f1
1554 ; PWR9BE-NEXT:    xxswapd vs1, v3
1555 ; PWR9BE-NEXT:    xsadddp f0, f0, v3
1556 ; PWR9BE-NEXT:    xsadddp f0, f0, f1
1557 ; PWR9BE-NEXT:    xxswapd vs1, v4
1558 ; PWR9BE-NEXT:    xsadddp f0, f0, v4
1559 ; PWR9BE-NEXT:    xsadddp f0, f0, f1
1560 ; PWR9BE-NEXT:    xxswapd vs1, v5
1561 ; PWR9BE-NEXT:    xsadddp f0, f0, v5
1562 ; PWR9BE-NEXT:    xsadddp f0, f0, f1
1563 ; PWR9BE-NEXT:    xxswapd vs1, v6
1564 ; PWR9BE-NEXT:    xsadddp f0, f0, v6
1565 ; PWR9BE-NEXT:    xsadddp f0, f0, f1
1566 ; PWR9BE-NEXT:    xxswapd vs1, v7
1567 ; PWR9BE-NEXT:    xsadddp f0, f0, v7
1568 ; PWR9BE-NEXT:    xsadddp f0, f0, f1
1569 ; PWR9BE-NEXT:    xxswapd vs1, v8
1570 ; PWR9BE-NEXT:    xsadddp f0, f0, v8
1571 ; PWR9BE-NEXT:    xsadddp f0, f0, f1
1572 ; PWR9BE-NEXT:    xxswapd vs1, v9
1573 ; PWR9BE-NEXT:    xsadddp f0, f0, v9
1574 ; PWR9BE-NEXT:    xsadddp f1, f0, f1
1575 ; PWR9BE-NEXT:    blr
1577 ; PWR10LE-LABEL: v16f64_b:
1578 ; PWR10LE:       # %bb.0: # %entry
1579 ; PWR10LE-NEXT:    xxswapd vs0, v2
1580 ; PWR10LE-NEXT:    xsadddp f0, f1, f0
1581 ; PWR10LE-NEXT:    xxswapd vs1, v3
1582 ; PWR10LE-NEXT:    xsadddp f0, f0, v2
1583 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1584 ; PWR10LE-NEXT:    xxswapd vs1, v4
1585 ; PWR10LE-NEXT:    xsadddp f0, f0, v3
1586 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1587 ; PWR10LE-NEXT:    xxswapd vs1, v5
1588 ; PWR10LE-NEXT:    xsadddp f0, f0, v4
1589 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1590 ; PWR10LE-NEXT:    xxswapd vs1, v6
1591 ; PWR10LE-NEXT:    xsadddp f0, f0, v5
1592 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1593 ; PWR10LE-NEXT:    xxswapd vs1, v7
1594 ; PWR10LE-NEXT:    xsadddp f0, f0, v6
1595 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1596 ; PWR10LE-NEXT:    xxswapd vs1, v8
1597 ; PWR10LE-NEXT:    xsadddp f0, f0, v7
1598 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1599 ; PWR10LE-NEXT:    xxswapd vs1, v9
1600 ; PWR10LE-NEXT:    xsadddp f0, f0, v8
1601 ; PWR10LE-NEXT:    xsadddp f0, f0, f1
1602 ; PWR10LE-NEXT:    xsadddp f1, f0, v9
1603 ; PWR10LE-NEXT:    blr
1605 ; PWR10BE-LABEL: v16f64_b:
1606 ; PWR10BE:       # %bb.0: # %entry
1607 ; PWR10BE-NEXT:    xsadddp f0, f1, v2
1608 ; PWR10BE-NEXT:    xxswapd vs1, v2
1609 ; PWR10BE-NEXT:    xsadddp f0, f0, f1
1610 ; PWR10BE-NEXT:    xxswapd vs1, v3
1611 ; PWR10BE-NEXT:    xsadddp f0, f0, v3
1612 ; PWR10BE-NEXT:    xsadddp f0, f0, f1
1613 ; PWR10BE-NEXT:    xxswapd vs1, v4
1614 ; PWR10BE-NEXT:    xsadddp f0, f0, v4
1615 ; PWR10BE-NEXT:    xsadddp f0, f0, f1
1616 ; PWR10BE-NEXT:    xxswapd vs1, v5
1617 ; PWR10BE-NEXT:    xsadddp f0, f0, v5
1618 ; PWR10BE-NEXT:    xsadddp f0, f0, f1
1619 ; PWR10BE-NEXT:    xxswapd vs1, v6
1620 ; PWR10BE-NEXT:    xsadddp f0, f0, v6
1621 ; PWR10BE-NEXT:    xsadddp f0, f0, f1
1622 ; PWR10BE-NEXT:    xxswapd vs1, v7
1623 ; PWR10BE-NEXT:    xsadddp f0, f0, v7
1624 ; PWR10BE-NEXT:    xsadddp f0, f0, f1
1625 ; PWR10BE-NEXT:    xxswapd vs1, v8
1626 ; PWR10BE-NEXT:    xsadddp f0, f0, v8
1627 ; PWR10BE-NEXT:    xsadddp f0, f0, f1
1628 ; PWR10BE-NEXT:    xxswapd vs1, v9
1629 ; PWR10BE-NEXT:    xsadddp f0, f0, v9
1630 ; PWR10BE-NEXT:    xsadddp f1, f0, f1
1631 ; PWR10BE-NEXT:    blr
1632 entry:
1633   %0 = call double @llvm.vector.reduce.fadd.v16f64(double %b, <16 x double> %a)
1634   ret double %0
1637 define dso_local double @v16f64_fast(<16 x double> %a) local_unnamed_addr #0 {
1638 ; PWR9LE-LABEL: v16f64_fast:
1639 ; PWR9LE:       # %bb.0: # %entry
1640 ; PWR9LE-NEXT:    xvadddp vs0, v4, v8
1641 ; PWR9LE-NEXT:    xvadddp vs1, v2, v6
1642 ; PWR9LE-NEXT:    xvadddp vs2, v5, v9
1643 ; PWR9LE-NEXT:    xvadddp vs3, v3, v7
1644 ; PWR9LE-NEXT:    xvadddp vs2, vs3, vs2
1645 ; PWR9LE-NEXT:    xvadddp vs0, vs1, vs0
1646 ; PWR9LE-NEXT:    xvadddp vs0, vs0, vs2
1647 ; PWR9LE-NEXT:    xxswapd vs1, vs0
1648 ; PWR9LE-NEXT:    xvadddp vs0, vs0, vs1
1649 ; PWR9LE-NEXT:    xxswapd vs1, vs0
1650 ; PWR9LE-NEXT:    blr
1652 ; PWR9BE-LABEL: v16f64_fast:
1653 ; PWR9BE:       # %bb.0: # %entry
1654 ; PWR9BE-NEXT:    xvadddp vs0, v4, v8
1655 ; PWR9BE-NEXT:    xvadddp vs1, v2, v6
1656 ; PWR9BE-NEXT:    xvadddp vs2, v5, v9
1657 ; PWR9BE-NEXT:    xvadddp vs3, v3, v7
1658 ; PWR9BE-NEXT:    xvadddp vs2, vs3, vs2
1659 ; PWR9BE-NEXT:    xvadddp vs0, vs1, vs0
1660 ; PWR9BE-NEXT:    xvadddp vs0, vs0, vs2
1661 ; PWR9BE-NEXT:    xxswapd vs1, vs0
1662 ; PWR9BE-NEXT:    xvadddp vs1, vs0, vs1
1663 ; PWR9BE-NEXT:    blr
1665 ; PWR10LE-LABEL: v16f64_fast:
1666 ; PWR10LE:       # %bb.0: # %entry
1667 ; PWR10LE-NEXT:    xvadddp vs0, v4, v8
1668 ; PWR10LE-NEXT:    xvadddp vs1, v2, v6
1669 ; PWR10LE-NEXT:    xvadddp vs2, v5, v9
1670 ; PWR10LE-NEXT:    xvadddp vs3, v3, v7
1671 ; PWR10LE-NEXT:    xvadddp vs2, vs3, vs2
1672 ; PWR10LE-NEXT:    xvadddp vs0, vs1, vs0
1673 ; PWR10LE-NEXT:    xvadddp vs0, vs0, vs2
1674 ; PWR10LE-NEXT:    xxswapd vs1, vs0
1675 ; PWR10LE-NEXT:    xvadddp vs0, vs0, vs1
1676 ; PWR10LE-NEXT:    xxswapd vs1, vs0
1677 ; PWR10LE-NEXT:    blr
1679 ; PWR10BE-LABEL: v16f64_fast:
1680 ; PWR10BE:       # %bb.0: # %entry
1681 ; PWR10BE-NEXT:    xvadddp vs0, v4, v8
1682 ; PWR10BE-NEXT:    xvadddp vs1, v2, v6
1683 ; PWR10BE-NEXT:    xvadddp vs2, v5, v9
1684 ; PWR10BE-NEXT:    xvadddp vs3, v3, v7
1685 ; PWR10BE-NEXT:    xvadddp vs2, vs3, vs2
1686 ; PWR10BE-NEXT:    xvadddp vs0, vs1, vs0
1687 ; PWR10BE-NEXT:    xvadddp vs0, vs0, vs2
1688 ; PWR10BE-NEXT:    xxswapd vs1, vs0
1689 ; PWR10BE-NEXT:    xvadddp vs1, vs0, vs1
1690 ; PWR10BE-NEXT:    blr
1691 entry:
1692   %0 = call fast double @llvm.vector.reduce.fadd.v16f64(double -0.000000e+00, <16 x double> %a)
1693   ret double %0
1696 define dso_local double @v32f64(<32 x double> %a) local_unnamed_addr #0 {
1697 ; PWR9LE-LABEL: v32f64:
1698 ; PWR9LE:       # %bb.0: # %entry
1699 ; PWR9LE-NEXT:    xxswapd vs4, v2
1700 ; PWR9LE-NEXT:    xxswapd vs5, v3
1701 ; PWR9LE-NEXT:    lxv vs3, 224(r1)
1702 ; PWR9LE-NEXT:    lxv vs2, 240(r1)
1703 ; PWR9LE-NEXT:    lxv vs1, 256(r1)
1704 ; PWR9LE-NEXT:    lxv vs0, 272(r1)
1705 ; PWR9LE-NEXT:    xsadddp f4, f4, v2
1706 ; PWR9LE-NEXT:    xsadddp f4, f4, f5
1707 ; PWR9LE-NEXT:    xxswapd vs5, v4
1708 ; PWR9LE-NEXT:    xsadddp f4, f4, v3
1709 ; PWR9LE-NEXT:    xsadddp f4, f4, f5
1710 ; PWR9LE-NEXT:    xxswapd vs5, v5
1711 ; PWR9LE-NEXT:    xsadddp f4, f4, v4
1712 ; PWR9LE-NEXT:    xsadddp f4, f4, f5
1713 ; PWR9LE-NEXT:    xxswapd vs5, v6
1714 ; PWR9LE-NEXT:    xsadddp f4, f4, v5
1715 ; PWR9LE-NEXT:    xsadddp f4, f4, f5
1716 ; PWR9LE-NEXT:    xxswapd vs5, v7
1717 ; PWR9LE-NEXT:    xsadddp f4, f4, v6
1718 ; PWR9LE-NEXT:    xsadddp f4, f4, f5
1719 ; PWR9LE-NEXT:    xxswapd vs5, v8
1720 ; PWR9LE-NEXT:    xsadddp f4, f4, v7
1721 ; PWR9LE-NEXT:    xsadddp f4, f4, f5
1722 ; PWR9LE-NEXT:    xxswapd vs5, v9
1723 ; PWR9LE-NEXT:    xsadddp f4, f4, v8
1724 ; PWR9LE-NEXT:    xsadddp f4, f4, f5
1725 ; PWR9LE-NEXT:    xxswapd vs5, v10
1726 ; PWR9LE-NEXT:    xsadddp f4, f4, v9
1727 ; PWR9LE-NEXT:    xsadddp f4, f4, f5
1728 ; PWR9LE-NEXT:    xxswapd vs5, v11
1729 ; PWR9LE-NEXT:    xsadddp f4, f4, v10
1730 ; PWR9LE-NEXT:    xsadddp f4, f4, f5
1731 ; PWR9LE-NEXT:    xxswapd vs5, v12
1732 ; PWR9LE-NEXT:    xsadddp f4, f4, v11
1733 ; PWR9LE-NEXT:    xsadddp f4, f4, f5
1734 ; PWR9LE-NEXT:    xxswapd vs5, v13
1735 ; PWR9LE-NEXT:    xsadddp f4, f4, v12
1736 ; PWR9LE-NEXT:    xsadddp f4, f4, f5
1737 ; PWR9LE-NEXT:    xxswapd vs5, vs3
1738 ; PWR9LE-NEXT:    xsadddp f4, f4, v13
1739 ; PWR9LE-NEXT:    xsadddp f4, f4, f5
1740 ; PWR9LE-NEXT:    xsadddp f3, f4, f3
1741 ; PWR9LE-NEXT:    xxswapd vs4, vs2
1742 ; PWR9LE-NEXT:    xsadddp f3, f3, f4
1743 ; PWR9LE-NEXT:    xsadddp f2, f3, f2
1744 ; PWR9LE-NEXT:    xxswapd vs3, vs1
1745 ; PWR9LE-NEXT:    xsadddp f2, f2, f3
1746 ; PWR9LE-NEXT:    xsadddp f1, f2, f1
1747 ; PWR9LE-NEXT:    xxswapd vs2, vs0
1748 ; PWR9LE-NEXT:    xsadddp f1, f1, f2
1749 ; PWR9LE-NEXT:    xsadddp f1, f1, f0
1750 ; PWR9LE-NEXT:    blr
1752 ; PWR9BE-LABEL: v32f64:
1753 ; PWR9BE:       # %bb.0: # %entry
1754 ; PWR9BE-NEXT:    xxswapd vs4, v2
1755 ; PWR9BE-NEXT:    xxswapd vs5, v3
1756 ; PWR9BE-NEXT:    lxv vs3, 240(r1)
1757 ; PWR9BE-NEXT:    lxv vs2, 256(r1)
1758 ; PWR9BE-NEXT:    lxv vs1, 272(r1)
1759 ; PWR9BE-NEXT:    lxv vs0, 288(r1)
1760 ; PWR9BE-NEXT:    xsadddp f4, v2, f4
1761 ; PWR9BE-NEXT:    xsadddp f4, f4, v3
1762 ; PWR9BE-NEXT:    xsadddp f4, f4, f5
1763 ; PWR9BE-NEXT:    xxswapd vs5, v4
1764 ; PWR9BE-NEXT:    xsadddp f4, f4, v4
1765 ; PWR9BE-NEXT:    xsadddp f4, f4, f5
1766 ; PWR9BE-NEXT:    xxswapd vs5, v5
1767 ; PWR9BE-NEXT:    xsadddp f4, f4, v5
1768 ; PWR9BE-NEXT:    xsadddp f4, f4, f5
1769 ; PWR9BE-NEXT:    xxswapd vs5, v6
1770 ; PWR9BE-NEXT:    xsadddp f4, f4, v6
1771 ; PWR9BE-NEXT:    xsadddp f4, f4, f5
1772 ; PWR9BE-NEXT:    xxswapd vs5, v7
1773 ; PWR9BE-NEXT:    xsadddp f4, f4, v7
1774 ; PWR9BE-NEXT:    xsadddp f4, f4, f5
1775 ; PWR9BE-NEXT:    xxswapd vs5, v8
1776 ; PWR9BE-NEXT:    xsadddp f4, f4, v8
1777 ; PWR9BE-NEXT:    xsadddp f4, f4, f5
1778 ; PWR9BE-NEXT:    xxswapd vs5, v9
1779 ; PWR9BE-NEXT:    xsadddp f4, f4, v9
1780 ; PWR9BE-NEXT:    xsadddp f4, f4, f5
1781 ; PWR9BE-NEXT:    xxswapd vs5, v10
1782 ; PWR9BE-NEXT:    xsadddp f4, f4, v10
1783 ; PWR9BE-NEXT:    xsadddp f4, f4, f5
1784 ; PWR9BE-NEXT:    xxswapd vs5, v11
1785 ; PWR9BE-NEXT:    xsadddp f4, f4, v11
1786 ; PWR9BE-NEXT:    xsadddp f4, f4, f5
1787 ; PWR9BE-NEXT:    xxswapd vs5, v12
1788 ; PWR9BE-NEXT:    xsadddp f4, f4, v12
1789 ; PWR9BE-NEXT:    xsadddp f4, f4, f5
1790 ; PWR9BE-NEXT:    xxswapd vs5, v13
1791 ; PWR9BE-NEXT:    xsadddp f4, f4, v13
1792 ; PWR9BE-NEXT:    xsadddp f4, f4, f5
1793 ; PWR9BE-NEXT:    xsadddp f4, f4, f3
1794 ; PWR9BE-NEXT:    xxswapd vs3, vs3
1795 ; PWR9BE-NEXT:    xsadddp f3, f4, f3
1796 ; PWR9BE-NEXT:    xsadddp f3, f3, f2
1797 ; PWR9BE-NEXT:    xxswapd vs2, vs2
1798 ; PWR9BE-NEXT:    xsadddp f2, f3, f2
1799 ; PWR9BE-NEXT:    xsadddp f2, f2, f1
1800 ; PWR9BE-NEXT:    xxswapd vs1, vs1
1801 ; PWR9BE-NEXT:    xsadddp f1, f2, f1
1802 ; PWR9BE-NEXT:    xsadddp f1, f1, f0
1803 ; PWR9BE-NEXT:    xxswapd vs0, vs0
1804 ; PWR9BE-NEXT:    xsadddp f1, f1, f0
1805 ; PWR9BE-NEXT:    blr
1807 ; PWR10LE-LABEL: v32f64:
1808 ; PWR10LE:       # %bb.0: # %entry
1809 ; PWR10LE-NEXT:    xxswapd vs4, v2
1810 ; PWR10LE-NEXT:    xxswapd vs5, v3
1811 ; PWR10LE-NEXT:    lxv vs3, 224(r1)
1812 ; PWR10LE-NEXT:    lxv vs2, 240(r1)
1813 ; PWR10LE-NEXT:    xsadddp f4, f4, v2
1814 ; PWR10LE-NEXT:    lxv vs1, 256(r1)
1815 ; PWR10LE-NEXT:    lxv vs0, 272(r1)
1816 ; PWR10LE-NEXT:    xsadddp f4, f4, f5
1817 ; PWR10LE-NEXT:    xxswapd vs5, v4
1818 ; PWR10LE-NEXT:    xsadddp f4, f4, v3
1819 ; PWR10LE-NEXT:    xsadddp f4, f4, f5
1820 ; PWR10LE-NEXT:    xxswapd vs5, v5
1821 ; PWR10LE-NEXT:    xsadddp f4, f4, v4
1822 ; PWR10LE-NEXT:    xsadddp f4, f4, f5
1823 ; PWR10LE-NEXT:    xxswapd vs5, v6
1824 ; PWR10LE-NEXT:    xsadddp f4, f4, v5
1825 ; PWR10LE-NEXT:    xsadddp f4, f4, f5
1826 ; PWR10LE-NEXT:    xxswapd vs5, v7
1827 ; PWR10LE-NEXT:    xsadddp f4, f4, v6
1828 ; PWR10LE-NEXT:    xsadddp f4, f4, f5
1829 ; PWR10LE-NEXT:    xxswapd vs5, v8
1830 ; PWR10LE-NEXT:    xsadddp f4, f4, v7
1831 ; PWR10LE-NEXT:    xsadddp f4, f4, f5
1832 ; PWR10LE-NEXT:    xxswapd vs5, v9
1833 ; PWR10LE-NEXT:    xsadddp f4, f4, v8
1834 ; PWR10LE-NEXT:    xsadddp f4, f4, f5
1835 ; PWR10LE-NEXT:    xxswapd vs5, v10
1836 ; PWR10LE-NEXT:    xsadddp f4, f4, v9
1837 ; PWR10LE-NEXT:    xsadddp f4, f4, f5
1838 ; PWR10LE-NEXT:    xxswapd vs5, v11
1839 ; PWR10LE-NEXT:    xsadddp f4, f4, v10
1840 ; PWR10LE-NEXT:    xsadddp f4, f4, f5
1841 ; PWR10LE-NEXT:    xxswapd vs5, v12
1842 ; PWR10LE-NEXT:    xsadddp f4, f4, v11
1843 ; PWR10LE-NEXT:    xsadddp f4, f4, f5
1844 ; PWR10LE-NEXT:    xxswapd vs5, v13
1845 ; PWR10LE-NEXT:    xsadddp f4, f4, v12
1846 ; PWR10LE-NEXT:    xsadddp f4, f4, f5
1847 ; PWR10LE-NEXT:    xxswapd vs5, vs3
1848 ; PWR10LE-NEXT:    xsadddp f4, f4, v13
1849 ; PWR10LE-NEXT:    xsadddp f4, f4, f5
1850 ; PWR10LE-NEXT:    xsadddp f3, f4, f3
1851 ; PWR10LE-NEXT:    xxswapd vs4, vs2
1852 ; PWR10LE-NEXT:    xsadddp f3, f3, f4
1853 ; PWR10LE-NEXT:    xsadddp f2, f3, f2
1854 ; PWR10LE-NEXT:    xxswapd vs3, vs1
1855 ; PWR10LE-NEXT:    xsadddp f2, f2, f3
1856 ; PWR10LE-NEXT:    xsadddp f1, f2, f1
1857 ; PWR10LE-NEXT:    xxswapd vs2, vs0
1858 ; PWR10LE-NEXT:    xsadddp f1, f1, f2
1859 ; PWR10LE-NEXT:    xsadddp f1, f1, f0
1860 ; PWR10LE-NEXT:    blr
1862 ; PWR10BE-LABEL: v32f64:
1863 ; PWR10BE:       # %bb.0: # %entry
1864 ; PWR10BE-NEXT:    xxswapd vs4, v2
1865 ; PWR10BE-NEXT:    xxswapd vs5, v3
1866 ; PWR10BE-NEXT:    lxv vs3, 240(r1)
1867 ; PWR10BE-NEXT:    lxv vs2, 256(r1)
1868 ; PWR10BE-NEXT:    xsadddp f4, v2, f4
1869 ; PWR10BE-NEXT:    lxv vs1, 272(r1)
1870 ; PWR10BE-NEXT:    lxv vs0, 288(r1)
1871 ; PWR10BE-NEXT:    xsadddp f4, f4, v3
1872 ; PWR10BE-NEXT:    xsadddp f4, f4, f5
1873 ; PWR10BE-NEXT:    xxswapd vs5, v4
1874 ; PWR10BE-NEXT:    xsadddp f4, f4, v4
1875 ; PWR10BE-NEXT:    xsadddp f4, f4, f5
1876 ; PWR10BE-NEXT:    xxswapd vs5, v5
1877 ; PWR10BE-NEXT:    xsadddp f4, f4, v5
1878 ; PWR10BE-NEXT:    xsadddp f4, f4, f5
1879 ; PWR10BE-NEXT:    xxswapd vs5, v6
1880 ; PWR10BE-NEXT:    xsadddp f4, f4, v6
1881 ; PWR10BE-NEXT:    xsadddp f4, f4, f5
1882 ; PWR10BE-NEXT:    xxswapd vs5, v7
1883 ; PWR10BE-NEXT:    xsadddp f4, f4, v7
1884 ; PWR10BE-NEXT:    xsadddp f4, f4, f5
1885 ; PWR10BE-NEXT:    xxswapd vs5, v8
1886 ; PWR10BE-NEXT:    xsadddp f4, f4, v8
1887 ; PWR10BE-NEXT:    xsadddp f4, f4, f5
1888 ; PWR10BE-NEXT:    xxswapd vs5, v9
1889 ; PWR10BE-NEXT:    xsadddp f4, f4, v9
1890 ; PWR10BE-NEXT:    xsadddp f4, f4, f5
1891 ; PWR10BE-NEXT:    xxswapd vs5, v10
1892 ; PWR10BE-NEXT:    xsadddp f4, f4, v10
1893 ; PWR10BE-NEXT:    xsadddp f4, f4, f5
1894 ; PWR10BE-NEXT:    xxswapd vs5, v11
1895 ; PWR10BE-NEXT:    xsadddp f4, f4, v11
1896 ; PWR10BE-NEXT:    xsadddp f4, f4, f5
1897 ; PWR10BE-NEXT:    xxswapd vs5, v12
1898 ; PWR10BE-NEXT:    xsadddp f4, f4, v12
1899 ; PWR10BE-NEXT:    xsadddp f4, f4, f5
1900 ; PWR10BE-NEXT:    xxswapd vs5, v13
1901 ; PWR10BE-NEXT:    xsadddp f4, f4, v13
1902 ; PWR10BE-NEXT:    xsadddp f4, f4, f5
1903 ; PWR10BE-NEXT:    xsadddp f4, f4, f3
1904 ; PWR10BE-NEXT:    xxswapd vs3, vs3
1905 ; PWR10BE-NEXT:    xsadddp f3, f4, f3
1906 ; PWR10BE-NEXT:    xsadddp f3, f3, f2
1907 ; PWR10BE-NEXT:    xxswapd vs2, vs2
1908 ; PWR10BE-NEXT:    xsadddp f2, f3, f2
1909 ; PWR10BE-NEXT:    xsadddp f2, f2, f1
1910 ; PWR10BE-NEXT:    xxswapd vs1, vs1
1911 ; PWR10BE-NEXT:    xsadddp f1, f2, f1
1912 ; PWR10BE-NEXT:    xsadddp f1, f1, f0
1913 ; PWR10BE-NEXT:    xxswapd vs0, vs0
1914 ; PWR10BE-NEXT:    xsadddp f1, f1, f0
1915 ; PWR10BE-NEXT:    blr
1916 entry:
1917   %0 = call double @llvm.vector.reduce.fadd.v32f64(double -0.000000e+00, <32 x double> %a)
1918   ret double %0
1921 define dso_local double @v32f64_b(<32 x double> %a, double %b) local_unnamed_addr #0 {
1922 ; PWR9LE-LABEL: v32f64_b:
1923 ; PWR9LE:       # %bb.0: # %entry
1924 ; PWR9LE-NEXT:    xxswapd vs5, v2
1925 ; PWR9LE-NEXT:    lxv vs4, 224(r1)
1926 ; PWR9LE-NEXT:    lxv vs3, 240(r1)
1927 ; PWR9LE-NEXT:    lxv vs2, 256(r1)
1928 ; PWR9LE-NEXT:    lxv vs0, 272(r1)
1929 ; PWR9LE-NEXT:    xsadddp f1, f1, f5
1930 ; PWR9LE-NEXT:    xxswapd vs5, v3
1931 ; PWR9LE-NEXT:    xsadddp f1, f1, v2
1932 ; PWR9LE-NEXT:    xsadddp f1, f1, f5
1933 ; PWR9LE-NEXT:    xxswapd vs5, v4
1934 ; PWR9LE-NEXT:    xsadddp f1, f1, v3
1935 ; PWR9LE-NEXT:    xsadddp f1, f1, f5
1936 ; PWR9LE-NEXT:    xxswapd vs5, v5
1937 ; PWR9LE-NEXT:    xsadddp f1, f1, v4
1938 ; PWR9LE-NEXT:    xsadddp f1, f1, f5
1939 ; PWR9LE-NEXT:    xxswapd vs5, v6
1940 ; PWR9LE-NEXT:    xsadddp f1, f1, v5
1941 ; PWR9LE-NEXT:    xsadddp f1, f1, f5
1942 ; PWR9LE-NEXT:    xxswapd vs5, v7
1943 ; PWR9LE-NEXT:    xsadddp f1, f1, v6
1944 ; PWR9LE-NEXT:    xsadddp f1, f1, f5
1945 ; PWR9LE-NEXT:    xxswapd vs5, v8
1946 ; PWR9LE-NEXT:    xsadddp f1, f1, v7
1947 ; PWR9LE-NEXT:    xsadddp f1, f1, f5
1948 ; PWR9LE-NEXT:    xxswapd vs5, v9
1949 ; PWR9LE-NEXT:    xsadddp f1, f1, v8
1950 ; PWR9LE-NEXT:    xsadddp f1, f1, f5
1951 ; PWR9LE-NEXT:    xxswapd vs5, v10
1952 ; PWR9LE-NEXT:    xsadddp f1, f1, v9
1953 ; PWR9LE-NEXT:    xsadddp f1, f1, f5
1954 ; PWR9LE-NEXT:    xxswapd vs5, v11
1955 ; PWR9LE-NEXT:    xsadddp f1, f1, v10
1956 ; PWR9LE-NEXT:    xsadddp f1, f1, f5
1957 ; PWR9LE-NEXT:    xxswapd vs5, v12
1958 ; PWR9LE-NEXT:    xsadddp f1, f1, v11
1959 ; PWR9LE-NEXT:    xsadddp f1, f1, f5
1960 ; PWR9LE-NEXT:    xxswapd vs5, v13
1961 ; PWR9LE-NEXT:    xsadddp f1, f1, v12
1962 ; PWR9LE-NEXT:    xsadddp f1, f1, f5
1963 ; PWR9LE-NEXT:    xxswapd vs5, vs4
1964 ; PWR9LE-NEXT:    xsadddp f1, f1, v13
1965 ; PWR9LE-NEXT:    xsadddp f1, f1, f5
1966 ; PWR9LE-NEXT:    xsadddp f1, f1, f4
1967 ; PWR9LE-NEXT:    xxswapd vs4, vs3
1968 ; PWR9LE-NEXT:    xsadddp f1, f1, f4
1969 ; PWR9LE-NEXT:    xsadddp f1, f1, f3
1970 ; PWR9LE-NEXT:    xxswapd vs3, vs2
1971 ; PWR9LE-NEXT:    xsadddp f1, f1, f3
1972 ; PWR9LE-NEXT:    xsadddp f1, f1, f2
1973 ; PWR9LE-NEXT:    xxswapd vs2, vs0
1974 ; PWR9LE-NEXT:    xsadddp f1, f1, f2
1975 ; PWR9LE-NEXT:    xsadddp f1, f1, f0
1976 ; PWR9LE-NEXT:    blr
1978 ; PWR9BE-LABEL: v32f64_b:
1979 ; PWR9BE:       # %bb.0: # %entry
1980 ; PWR9BE-NEXT:    xsadddp f1, f1, v2
1981 ; PWR9BE-NEXT:    xxswapd vs5, v2
1982 ; PWR9BE-NEXT:    lxv vs4, 240(r1)
1983 ; PWR9BE-NEXT:    lxv vs3, 256(r1)
1984 ; PWR9BE-NEXT:    lxv vs2, 272(r1)
1985 ; PWR9BE-NEXT:    lxv vs0, 288(r1)
1986 ; PWR9BE-NEXT:    xsadddp f1, f1, f5
1987 ; PWR9BE-NEXT:    xxswapd vs5, v3
1988 ; PWR9BE-NEXT:    xsadddp f1, f1, v3
1989 ; PWR9BE-NEXT:    xsadddp f1, f1, f5
1990 ; PWR9BE-NEXT:    xxswapd vs5, v4
1991 ; PWR9BE-NEXT:    xsadddp f1, f1, v4
1992 ; PWR9BE-NEXT:    xsadddp f1, f1, f5
1993 ; PWR9BE-NEXT:    xxswapd vs5, v5
1994 ; PWR9BE-NEXT:    xsadddp f1, f1, v5
1995 ; PWR9BE-NEXT:    xsadddp f1, f1, f5
1996 ; PWR9BE-NEXT:    xxswapd vs5, v6
1997 ; PWR9BE-NEXT:    xsadddp f1, f1, v6
1998 ; PWR9BE-NEXT:    xsadddp f1, f1, f5
1999 ; PWR9BE-NEXT:    xxswapd vs5, v7
2000 ; PWR9BE-NEXT:    xsadddp f1, f1, v7
2001 ; PWR9BE-NEXT:    xsadddp f1, f1, f5
2002 ; PWR9BE-NEXT:    xxswapd vs5, v8
2003 ; PWR9BE-NEXT:    xsadddp f1, f1, v8
2004 ; PWR9BE-NEXT:    xsadddp f1, f1, f5
2005 ; PWR9BE-NEXT:    xxswapd vs5, v9
2006 ; PWR9BE-NEXT:    xsadddp f1, f1, v9
2007 ; PWR9BE-NEXT:    xsadddp f1, f1, f5
2008 ; PWR9BE-NEXT:    xxswapd vs5, v10
2009 ; PWR9BE-NEXT:    xsadddp f1, f1, v10
2010 ; PWR9BE-NEXT:    xsadddp f1, f1, f5
2011 ; PWR9BE-NEXT:    xxswapd vs5, v11
2012 ; PWR9BE-NEXT:    xsadddp f1, f1, v11
2013 ; PWR9BE-NEXT:    xsadddp f1, f1, f5
2014 ; PWR9BE-NEXT:    xxswapd vs5, v12
2015 ; PWR9BE-NEXT:    xsadddp f1, f1, v12
2016 ; PWR9BE-NEXT:    xsadddp f1, f1, f5
2017 ; PWR9BE-NEXT:    xxswapd vs5, v13
2018 ; PWR9BE-NEXT:    xsadddp f1, f1, v13
2019 ; PWR9BE-NEXT:    xsadddp f1, f1, f5
2020 ; PWR9BE-NEXT:    xsadddp f1, f1, f4
2021 ; PWR9BE-NEXT:    xxswapd vs4, vs4
2022 ; PWR9BE-NEXT:    xsadddp f1, f1, f4
2023 ; PWR9BE-NEXT:    xsadddp f1, f1, f3
2024 ; PWR9BE-NEXT:    xxswapd vs3, vs3
2025 ; PWR9BE-NEXT:    xsadddp f1, f1, f3
2026 ; PWR9BE-NEXT:    xsadddp f1, f1, f2
2027 ; PWR9BE-NEXT:    xxswapd vs2, vs2
2028 ; PWR9BE-NEXT:    xsadddp f1, f1, f2
2029 ; PWR9BE-NEXT:    xsadddp f1, f1, f0
2030 ; PWR9BE-NEXT:    xxswapd vs0, vs0
2031 ; PWR9BE-NEXT:    xsadddp f1, f1, f0
2032 ; PWR9BE-NEXT:    blr
2034 ; PWR10LE-LABEL: v32f64_b:
2035 ; PWR10LE:       # %bb.0: # %entry
2036 ; PWR10LE-NEXT:    xxswapd vs5, v2
2037 ; PWR10LE-NEXT:    lxv vs4, 224(r1)
2038 ; PWR10LE-NEXT:    lxv vs3, 240(r1)
2039 ; PWR10LE-NEXT:    xsadddp f1, f1, f5
2040 ; PWR10LE-NEXT:    xxswapd vs5, v3
2041 ; PWR10LE-NEXT:    lxv vs2, 256(r1)
2042 ; PWR10LE-NEXT:    lxv vs0, 272(r1)
2043 ; PWR10LE-NEXT:    xsadddp f1, f1, v2
2044 ; PWR10LE-NEXT:    xsadddp f1, f1, f5
2045 ; PWR10LE-NEXT:    xxswapd vs5, v4
2046 ; PWR10LE-NEXT:    xsadddp f1, f1, v3
2047 ; PWR10LE-NEXT:    xsadddp f1, f1, f5
2048 ; PWR10LE-NEXT:    xxswapd vs5, v5
2049 ; PWR10LE-NEXT:    xsadddp f1, f1, v4
2050 ; PWR10LE-NEXT:    xsadddp f1, f1, f5
2051 ; PWR10LE-NEXT:    xxswapd vs5, v6
2052 ; PWR10LE-NEXT:    xsadddp f1, f1, v5
2053 ; PWR10LE-NEXT:    xsadddp f1, f1, f5
2054 ; PWR10LE-NEXT:    xxswapd vs5, v7
2055 ; PWR10LE-NEXT:    xsadddp f1, f1, v6
2056 ; PWR10LE-NEXT:    xsadddp f1, f1, f5
2057 ; PWR10LE-NEXT:    xxswapd vs5, v8
2058 ; PWR10LE-NEXT:    xsadddp f1, f1, v7
2059 ; PWR10LE-NEXT:    xsadddp f1, f1, f5
2060 ; PWR10LE-NEXT:    xxswapd vs5, v9
2061 ; PWR10LE-NEXT:    xsadddp f1, f1, v8
2062 ; PWR10LE-NEXT:    xsadddp f1, f1, f5
2063 ; PWR10LE-NEXT:    xxswapd vs5, v10
2064 ; PWR10LE-NEXT:    xsadddp f1, f1, v9
2065 ; PWR10LE-NEXT:    xsadddp f1, f1, f5
2066 ; PWR10LE-NEXT:    xxswapd vs5, v11
2067 ; PWR10LE-NEXT:    xsadddp f1, f1, v10
2068 ; PWR10LE-NEXT:    xsadddp f1, f1, f5
2069 ; PWR10LE-NEXT:    xxswapd vs5, v12
2070 ; PWR10LE-NEXT:    xsadddp f1, f1, v11
2071 ; PWR10LE-NEXT:    xsadddp f1, f1, f5
2072 ; PWR10LE-NEXT:    xxswapd vs5, v13
2073 ; PWR10LE-NEXT:    xsadddp f1, f1, v12
2074 ; PWR10LE-NEXT:    xsadddp f1, f1, f5
2075 ; PWR10LE-NEXT:    xxswapd vs5, vs4
2076 ; PWR10LE-NEXT:    xsadddp f1, f1, v13
2077 ; PWR10LE-NEXT:    xsadddp f1, f1, f5
2078 ; PWR10LE-NEXT:    xsadddp f1, f1, f4
2079 ; PWR10LE-NEXT:    xxswapd vs4, vs3
2080 ; PWR10LE-NEXT:    xsadddp f1, f1, f4
2081 ; PWR10LE-NEXT:    xsadddp f1, f1, f3
2082 ; PWR10LE-NEXT:    xxswapd vs3, vs2
2083 ; PWR10LE-NEXT:    xsadddp f1, f1, f3
2084 ; PWR10LE-NEXT:    xsadddp f1, f1, f2
2085 ; PWR10LE-NEXT:    xxswapd vs2, vs0
2086 ; PWR10LE-NEXT:    xsadddp f1, f1, f2
2087 ; PWR10LE-NEXT:    xsadddp f1, f1, f0
2088 ; PWR10LE-NEXT:    blr
2090 ; PWR10BE-LABEL: v32f64_b:
2091 ; PWR10BE:       # %bb.0: # %entry
2092 ; PWR10BE-NEXT:    xsadddp f1, f1, v2
2093 ; PWR10BE-NEXT:    xxswapd vs5, v2
2094 ; PWR10BE-NEXT:    lxv vs4, 240(r1)
2095 ; PWR10BE-NEXT:    lxv vs3, 256(r1)
2096 ; PWR10BE-NEXT:    xsadddp f1, f1, f5
2097 ; PWR10BE-NEXT:    xxswapd vs5, v3
2098 ; PWR10BE-NEXT:    lxv vs2, 272(r1)
2099 ; PWR10BE-NEXT:    lxv vs0, 288(r1)
2100 ; PWR10BE-NEXT:    xsadddp f1, f1, v3
2101 ; PWR10BE-NEXT:    xsadddp f1, f1, f5
2102 ; PWR10BE-NEXT:    xxswapd vs5, v4
2103 ; PWR10BE-NEXT:    xsadddp f1, f1, v4
2104 ; PWR10BE-NEXT:    xsadddp f1, f1, f5
2105 ; PWR10BE-NEXT:    xxswapd vs5, v5
2106 ; PWR10BE-NEXT:    xsadddp f1, f1, v5
2107 ; PWR10BE-NEXT:    xsadddp f1, f1, f5
2108 ; PWR10BE-NEXT:    xxswapd vs5, v6
2109 ; PWR10BE-NEXT:    xsadddp f1, f1, v6
2110 ; PWR10BE-NEXT:    xsadddp f1, f1, f5
2111 ; PWR10BE-NEXT:    xxswapd vs5, v7
2112 ; PWR10BE-NEXT:    xsadddp f1, f1, v7
2113 ; PWR10BE-NEXT:    xsadddp f1, f1, f5
2114 ; PWR10BE-NEXT:    xxswapd vs5, v8
2115 ; PWR10BE-NEXT:    xsadddp f1, f1, v8
2116 ; PWR10BE-NEXT:    xsadddp f1, f1, f5
2117 ; PWR10BE-NEXT:    xxswapd vs5, v9
2118 ; PWR10BE-NEXT:    xsadddp f1, f1, v9
2119 ; PWR10BE-NEXT:    xsadddp f1, f1, f5
2120 ; PWR10BE-NEXT:    xxswapd vs5, v10
2121 ; PWR10BE-NEXT:    xsadddp f1, f1, v10
2122 ; PWR10BE-NEXT:    xsadddp f1, f1, f5
2123 ; PWR10BE-NEXT:    xxswapd vs5, v11
2124 ; PWR10BE-NEXT:    xsadddp f1, f1, v11
2125 ; PWR10BE-NEXT:    xsadddp f1, f1, f5
2126 ; PWR10BE-NEXT:    xxswapd vs5, v12
2127 ; PWR10BE-NEXT:    xsadddp f1, f1, v12
2128 ; PWR10BE-NEXT:    xsadddp f1, f1, f5
2129 ; PWR10BE-NEXT:    xxswapd vs5, v13
2130 ; PWR10BE-NEXT:    xsadddp f1, f1, v13
2131 ; PWR10BE-NEXT:    xsadddp f1, f1, f5
2132 ; PWR10BE-NEXT:    xsadddp f1, f1, f4
2133 ; PWR10BE-NEXT:    xxswapd vs4, vs4
2134 ; PWR10BE-NEXT:    xsadddp f1, f1, f4
2135 ; PWR10BE-NEXT:    xsadddp f1, f1, f3
2136 ; PWR10BE-NEXT:    xxswapd vs3, vs3
2137 ; PWR10BE-NEXT:    xsadddp f1, f1, f3
2138 ; PWR10BE-NEXT:    xsadddp f1, f1, f2
2139 ; PWR10BE-NEXT:    xxswapd vs2, vs2
2140 ; PWR10BE-NEXT:    xsadddp f1, f1, f2
2141 ; PWR10BE-NEXT:    xsadddp f1, f1, f0
2142 ; PWR10BE-NEXT:    xxswapd vs0, vs0
2143 ; PWR10BE-NEXT:    xsadddp f1, f1, f0
2144 ; PWR10BE-NEXT:    blr
2145 entry:
2146   %0 = call double @llvm.vector.reduce.fadd.v32f64(double %b, <32 x double> %a)
2147   ret double %0
2150 define dso_local double @v32f64_fast(<32 x double> %a) local_unnamed_addr #0 {
2151 ; PWR9LE-LABEL: v32f64_fast:
2152 ; PWR9LE:       # %bb.0: # %entry
2153 ; PWR9LE-NEXT:    lxv vs0, 256(r1)
2154 ; PWR9LE-NEXT:    lxv vs1, 224(r1)
2155 ; PWR9LE-NEXT:    lxv vs2, 272(r1)
2156 ; PWR9LE-NEXT:    lxv vs3, 240(r1)
2157 ; PWR9LE-NEXT:    xvadddp vs4, v3, v11
2158 ; PWR9LE-NEXT:    xvadddp vs5, v5, v13
2159 ; PWR9LE-NEXT:    xvadddp vs6, v2, v10
2160 ; PWR9LE-NEXT:    xvadddp vs7, v4, v12
2161 ; PWR9LE-NEXT:    xvadddp vs3, v7, vs3
2162 ; PWR9LE-NEXT:    xvadddp vs2, v9, vs2
2163 ; PWR9LE-NEXT:    xvadddp vs1, v6, vs1
2164 ; PWR9LE-NEXT:    xvadddp vs0, v8, vs0
2165 ; PWR9LE-NEXT:    xvadddp vs0, vs7, vs0
2166 ; PWR9LE-NEXT:    xvadddp vs1, vs6, vs1
2167 ; PWR9LE-NEXT:    xvadddp vs2, vs5, vs2
2168 ; PWR9LE-NEXT:    xvadddp vs3, vs4, vs3
2169 ; PWR9LE-NEXT:    xvadddp vs2, vs3, vs2
2170 ; PWR9LE-NEXT:    xvadddp vs0, vs1, vs0
2171 ; PWR9LE-NEXT:    xvadddp vs0, vs0, vs2
2172 ; PWR9LE-NEXT:    xxswapd vs1, vs0
2173 ; PWR9LE-NEXT:    xvadddp vs0, vs0, vs1
2174 ; PWR9LE-NEXT:    xxswapd vs1, vs0
2175 ; PWR9LE-NEXT:    blr
2177 ; PWR9BE-LABEL: v32f64_fast:
2178 ; PWR9BE:       # %bb.0: # %entry
2179 ; PWR9BE-NEXT:    lxv vs0, 272(r1)
2180 ; PWR9BE-NEXT:    lxv vs1, 240(r1)
2181 ; PWR9BE-NEXT:    lxv vs2, 288(r1)
2182 ; PWR9BE-NEXT:    lxv vs3, 256(r1)
2183 ; PWR9BE-NEXT:    xvadddp vs4, v3, v11
2184 ; PWR9BE-NEXT:    xvadddp vs5, v5, v13
2185 ; PWR9BE-NEXT:    xvadddp vs6, v2, v10
2186 ; PWR9BE-NEXT:    xvadddp vs7, v4, v12
2187 ; PWR9BE-NEXT:    xvadddp vs3, v7, vs3
2188 ; PWR9BE-NEXT:    xvadddp vs2, v9, vs2
2189 ; PWR9BE-NEXT:    xvadddp vs1, v6, vs1
2190 ; PWR9BE-NEXT:    xvadddp vs0, v8, vs0
2191 ; PWR9BE-NEXT:    xvadddp vs0, vs7, vs0
2192 ; PWR9BE-NEXT:    xvadddp vs1, vs6, vs1
2193 ; PWR9BE-NEXT:    xvadddp vs2, vs5, vs2
2194 ; PWR9BE-NEXT:    xvadddp vs3, vs4, vs3
2195 ; PWR9BE-NEXT:    xvadddp vs2, vs3, vs2
2196 ; PWR9BE-NEXT:    xvadddp vs0, vs1, vs0
2197 ; PWR9BE-NEXT:    xvadddp vs0, vs0, vs2
2198 ; PWR9BE-NEXT:    xxswapd vs1, vs0
2199 ; PWR9BE-NEXT:    xvadddp vs1, vs0, vs1
2200 ; PWR9BE-NEXT:    blr
2202 ; PWR10LE-LABEL: v32f64_fast:
2203 ; PWR10LE:       # %bb.0: # %entry
2204 ; PWR10LE-NEXT:    lxv vs0, 256(r1)
2205 ; PWR10LE-NEXT:    lxv vs1, 224(r1)
2206 ; PWR10LE-NEXT:    xvadddp vs4, v3, v11
2207 ; PWR10LE-NEXT:    xvadddp vs5, v5, v13
2208 ; PWR10LE-NEXT:    xvadddp vs6, v2, v10
2209 ; PWR10LE-NEXT:    xvadddp vs7, v4, v12
2210 ; PWR10LE-NEXT:    xvadddp vs1, v6, vs1
2211 ; PWR10LE-NEXT:    lxv vs2, 272(r1)
2212 ; PWR10LE-NEXT:    lxv vs3, 240(r1)
2213 ; PWR10LE-NEXT:    xvadddp vs3, v7, vs3
2214 ; PWR10LE-NEXT:    xvadddp vs2, v9, vs2
2215 ; PWR10LE-NEXT:    xvadddp vs0, v8, vs0
2216 ; PWR10LE-NEXT:    xvadddp vs0, vs7, vs0
2217 ; PWR10LE-NEXT:    xvadddp vs1, vs6, vs1
2218 ; PWR10LE-NEXT:    xvadddp vs2, vs5, vs2
2219 ; PWR10LE-NEXT:    xvadddp vs3, vs4, vs3
2220 ; PWR10LE-NEXT:    xvadddp vs2, vs3, vs2
2221 ; PWR10LE-NEXT:    xvadddp vs0, vs1, vs0
2222 ; PWR10LE-NEXT:    xvadddp vs0, vs0, vs2
2223 ; PWR10LE-NEXT:    xxswapd vs1, vs0
2224 ; PWR10LE-NEXT:    xvadddp vs0, vs0, vs1
2225 ; PWR10LE-NEXT:    xxswapd vs1, vs0
2226 ; PWR10LE-NEXT:    blr
2228 ; PWR10BE-LABEL: v32f64_fast:
2229 ; PWR10BE:       # %bb.0: # %entry
2230 ; PWR10BE-NEXT:    lxv vs0, 272(r1)
2231 ; PWR10BE-NEXT:    lxv vs1, 240(r1)
2232 ; PWR10BE-NEXT:    xvadddp vs4, v3, v11
2233 ; PWR10BE-NEXT:    xvadddp vs5, v5, v13
2234 ; PWR10BE-NEXT:    xvadddp vs6, v2, v10
2235 ; PWR10BE-NEXT:    xvadddp vs7, v4, v12
2236 ; PWR10BE-NEXT:    xvadddp vs1, v6, vs1
2237 ; PWR10BE-NEXT:    lxv vs2, 288(r1)
2238 ; PWR10BE-NEXT:    lxv vs3, 256(r1)
2239 ; PWR10BE-NEXT:    xvadddp vs3, v7, vs3
2240 ; PWR10BE-NEXT:    xvadddp vs2, v9, vs2
2241 ; PWR10BE-NEXT:    xvadddp vs0, v8, vs0
2242 ; PWR10BE-NEXT:    xvadddp vs0, vs7, vs0
2243 ; PWR10BE-NEXT:    xvadddp vs1, vs6, vs1
2244 ; PWR10BE-NEXT:    xvadddp vs2, vs5, vs2
2245 ; PWR10BE-NEXT:    xvadddp vs3, vs4, vs3
2246 ; PWR10BE-NEXT:    xvadddp vs2, vs3, vs2
2247 ; PWR10BE-NEXT:    xvadddp vs0, vs1, vs0
2248 ; PWR10BE-NEXT:    xvadddp vs0, vs0, vs2
2249 ; PWR10BE-NEXT:    xxswapd vs1, vs0
2250 ; PWR10BE-NEXT:    xvadddp vs1, vs0, vs1
2251 ; PWR10BE-NEXT:    blr
2252 entry:
2253   %0 = call fast double @llvm.vector.reduce.fadd.v32f64(double -0.000000e+00, <32 x double> %a)
2254   ret double %0
2257 define dso_local double @v64f64(<64 x double> %a) local_unnamed_addr #0 {
2258 ; PWR9LE-LABEL: v64f64:
2259 ; PWR9LE:       # %bb.0: # %entry
2260 ; PWR9LE-NEXT:    xxswapd v18, v2
2261 ; PWR9LE-NEXT:    lxv v17, 224(r1)
2262 ; PWR9LE-NEXT:    lxv v16, 240(r1)
2263 ; PWR9LE-NEXT:    lxv v15, 256(r1)
2264 ; PWR9LE-NEXT:    lxv v14, 272(r1)
2265 ; PWR9LE-NEXT:    xsadddp v2, v18, v2
2266 ; PWR9LE-NEXT:    xxswapd v18, v3
2267 ; PWR9LE-NEXT:    lxv v1, 288(r1)
2268 ; PWR9LE-NEXT:    lxv v0, 304(r1)
2269 ; PWR9LE-NEXT:    lxv vs13, 320(r1)
2270 ; PWR9LE-NEXT:    lxv vs12, 336(r1)
2271 ; PWR9LE-NEXT:    lxv vs11, 352(r1)
2272 ; PWR9LE-NEXT:    lxv vs10, 368(r1)
2273 ; PWR9LE-NEXT:    lxv vs9, 384(r1)
2274 ; PWR9LE-NEXT:    lxv vs8, 400(r1)
2275 ; PWR9LE-NEXT:    lxv vs7, 416(r1)
2276 ; PWR9LE-NEXT:    lxv vs6, 432(r1)
2277 ; PWR9LE-NEXT:    lxv vs5, 448(r1)
2278 ; PWR9LE-NEXT:    lxv vs4, 464(r1)
2279 ; PWR9LE-NEXT:    xsadddp v2, v2, v18
2280 ; PWR9LE-NEXT:    lxv vs3, 480(r1)
2281 ; PWR9LE-NEXT:    lxv vs2, 496(r1)
2282 ; PWR9LE-NEXT:    lxv vs1, 512(r1)
2283 ; PWR9LE-NEXT:    lxv vs0, 528(r1)
2284 ; PWR9LE-NEXT:    xsadddp v2, v2, v3
2285 ; PWR9LE-NEXT:    xxswapd v3, v4
2286 ; PWR9LE-NEXT:    xsadddp v2, v2, v3
2287 ; PWR9LE-NEXT:    xxswapd v3, v5
2288 ; PWR9LE-NEXT:    xsadddp v2, v2, v4
2289 ; PWR9LE-NEXT:    xsadddp v2, v2, v3
2290 ; PWR9LE-NEXT:    xxswapd v3, v6
2291 ; PWR9LE-NEXT:    xsadddp v2, v2, v5
2292 ; PWR9LE-NEXT:    xsadddp v2, v2, v3
2293 ; PWR9LE-NEXT:    xxswapd v3, v7
2294 ; PWR9LE-NEXT:    xsadddp v2, v2, v6
2295 ; PWR9LE-NEXT:    xsadddp v2, v2, v3
2296 ; PWR9LE-NEXT:    xxswapd v3, v8
2297 ; PWR9LE-NEXT:    xsadddp v2, v2, v7
2298 ; PWR9LE-NEXT:    xsadddp v2, v2, v3
2299 ; PWR9LE-NEXT:    xxswapd v3, v9
2300 ; PWR9LE-NEXT:    xsadddp v2, v2, v8
2301 ; PWR9LE-NEXT:    xsadddp v2, v2, v3
2302 ; PWR9LE-NEXT:    xxswapd v3, v10
2303 ; PWR9LE-NEXT:    xsadddp v2, v2, v9
2304 ; PWR9LE-NEXT:    xsadddp v2, v2, v3
2305 ; PWR9LE-NEXT:    xxswapd v3, v11
2306 ; PWR9LE-NEXT:    xsadddp v2, v2, v10
2307 ; PWR9LE-NEXT:    xsadddp v2, v2, v3
2308 ; PWR9LE-NEXT:    xxswapd v3, v12
2309 ; PWR9LE-NEXT:    xsadddp v2, v2, v11
2310 ; PWR9LE-NEXT:    xsadddp v2, v2, v3
2311 ; PWR9LE-NEXT:    xxswapd v3, v13
2312 ; PWR9LE-NEXT:    xsadddp v2, v2, v12
2313 ; PWR9LE-NEXT:    xsadddp v2, v2, v3
2314 ; PWR9LE-NEXT:    xxswapd v3, v17
2315 ; PWR9LE-NEXT:    xsadddp v2, v2, v13
2316 ; PWR9LE-NEXT:    xsadddp v2, v2, v3
2317 ; PWR9LE-NEXT:    xxswapd v3, v16
2318 ; PWR9LE-NEXT:    xsadddp v2, v2, v17
2319 ; PWR9LE-NEXT:    xsadddp v2, v2, v3
2320 ; PWR9LE-NEXT:    xxswapd v3, v15
2321 ; PWR9LE-NEXT:    xsadddp v2, v2, v16
2322 ; PWR9LE-NEXT:    xsadddp v2, v2, v3
2323 ; PWR9LE-NEXT:    xxswapd v3, v14
2324 ; PWR9LE-NEXT:    xsadddp v2, v2, v15
2325 ; PWR9LE-NEXT:    xsadddp v2, v2, v3
2326 ; PWR9LE-NEXT:    xxswapd v3, v1
2327 ; PWR9LE-NEXT:    xsadddp v2, v2, v14
2328 ; PWR9LE-NEXT:    xsadddp v2, v2, v3
2329 ; PWR9LE-NEXT:    xxswapd v3, v0
2330 ; PWR9LE-NEXT:    xsadddp v2, v2, v1
2331 ; PWR9LE-NEXT:    xsadddp v2, v2, v3
2332 ; PWR9LE-NEXT:    xxswapd v3, vs13
2333 ; PWR9LE-NEXT:    xsadddp v2, v2, v0
2334 ; PWR9LE-NEXT:    xsadddp v2, v2, v3
2335 ; PWR9LE-NEXT:    xsadddp f13, v2, f13
2336 ; PWR9LE-NEXT:    xxswapd v2, vs12
2337 ; PWR9LE-NEXT:    xsadddp f13, f13, v2
2338 ; PWR9LE-NEXT:    xsadddp f12, f13, f12
2339 ; PWR9LE-NEXT:    xxswapd vs13, vs11
2340 ; PWR9LE-NEXT:    xsadddp f12, f12, f13
2341 ; PWR9LE-NEXT:    xsadddp f11, f12, f11
2342 ; PWR9LE-NEXT:    xxswapd vs12, vs10
2343 ; PWR9LE-NEXT:    xsadddp f11, f11, f12
2344 ; PWR9LE-NEXT:    xsadddp f10, f11, f10
2345 ; PWR9LE-NEXT:    xxswapd vs11, vs9
2346 ; PWR9LE-NEXT:    xsadddp f10, f10, f11
2347 ; PWR9LE-NEXT:    xsadddp f9, f10, f9
2348 ; PWR9LE-NEXT:    xxswapd vs10, vs8
2349 ; PWR9LE-NEXT:    xsadddp f9, f9, f10
2350 ; PWR9LE-NEXT:    xsadddp f8, f9, f8
2351 ; PWR9LE-NEXT:    xxswapd vs9, vs7
2352 ; PWR9LE-NEXT:    xsadddp f8, f8, f9
2353 ; PWR9LE-NEXT:    xsadddp f7, f8, f7
2354 ; PWR9LE-NEXT:    xxswapd vs8, vs6
2355 ; PWR9LE-NEXT:    xsadddp f7, f7, f8
2356 ; PWR9LE-NEXT:    xsadddp f6, f7, f6
2357 ; PWR9LE-NEXT:    xxswapd vs7, vs5
2358 ; PWR9LE-NEXT:    xsadddp f6, f6, f7
2359 ; PWR9LE-NEXT:    xsadddp f5, f6, f5
2360 ; PWR9LE-NEXT:    xxswapd vs6, vs4
2361 ; PWR9LE-NEXT:    xsadddp f5, f5, f6
2362 ; PWR9LE-NEXT:    xsadddp f4, f5, f4
2363 ; PWR9LE-NEXT:    xxswapd vs5, vs3
2364 ; PWR9LE-NEXT:    xsadddp f4, f4, f5
2365 ; PWR9LE-NEXT:    xsadddp f3, f4, f3
2366 ; PWR9LE-NEXT:    xxswapd vs4, vs2
2367 ; PWR9LE-NEXT:    xsadddp f3, f3, f4
2368 ; PWR9LE-NEXT:    xsadddp f2, f3, f2
2369 ; PWR9LE-NEXT:    xxswapd vs3, vs1
2370 ; PWR9LE-NEXT:    xsadddp f2, f2, f3
2371 ; PWR9LE-NEXT:    xsadddp f1, f2, f1
2372 ; PWR9LE-NEXT:    xxswapd vs2, vs0
2373 ; PWR9LE-NEXT:    xsadddp f1, f1, f2
2374 ; PWR9LE-NEXT:    xsadddp f1, f1, f0
2375 ; PWR9LE-NEXT:    blr
2377 ; PWR9BE-LABEL: v64f64:
2378 ; PWR9BE:       # %bb.0: # %entry
2379 ; PWR9BE-NEXT:    xxswapd v18, v2
2380 ; PWR9BE-NEXT:    lxv v17, 240(r1)
2381 ; PWR9BE-NEXT:    lxv v16, 256(r1)
2382 ; PWR9BE-NEXT:    lxv v15, 272(r1)
2383 ; PWR9BE-NEXT:    lxv v14, 288(r1)
2384 ; PWR9BE-NEXT:    xsadddp v2, v2, v18
2385 ; PWR9BE-NEXT:    lxv v1, 304(r1)
2386 ; PWR9BE-NEXT:    lxv v0, 320(r1)
2387 ; PWR9BE-NEXT:    lxv vs13, 336(r1)
2388 ; PWR9BE-NEXT:    lxv vs12, 352(r1)
2389 ; PWR9BE-NEXT:    lxv vs11, 368(r1)
2390 ; PWR9BE-NEXT:    lxv vs10, 384(r1)
2391 ; PWR9BE-NEXT:    lxv vs9, 400(r1)
2392 ; PWR9BE-NEXT:    lxv vs8, 416(r1)
2393 ; PWR9BE-NEXT:    lxv vs7, 432(r1)
2394 ; PWR9BE-NEXT:    lxv vs6, 448(r1)
2395 ; PWR9BE-NEXT:    lxv vs5, 464(r1)
2396 ; PWR9BE-NEXT:    lxv vs4, 480(r1)
2397 ; PWR9BE-NEXT:    xsadddp v2, v2, v3
2398 ; PWR9BE-NEXT:    xxswapd v3, v3
2399 ; PWR9BE-NEXT:    lxv vs3, 496(r1)
2400 ; PWR9BE-NEXT:    lxv vs2, 512(r1)
2401 ; PWR9BE-NEXT:    lxv vs1, 528(r1)
2402 ; PWR9BE-NEXT:    lxv vs0, 544(r1)
2403 ; PWR9BE-NEXT:    xsadddp v2, v2, v3
2404 ; PWR9BE-NEXT:    xxswapd v3, v4
2405 ; PWR9BE-NEXT:    xsadddp v2, v2, v4
2406 ; PWR9BE-NEXT:    xsadddp v2, v2, v3
2407 ; PWR9BE-NEXT:    xxswapd v3, v5
2408 ; PWR9BE-NEXT:    xsadddp v2, v2, v5
2409 ; PWR9BE-NEXT:    xsadddp v2, v2, v3
2410 ; PWR9BE-NEXT:    xxswapd v3, v6
2411 ; PWR9BE-NEXT:    xsadddp v2, v2, v6
2412 ; PWR9BE-NEXT:    xsadddp v2, v2, v3
2413 ; PWR9BE-NEXT:    xxswapd v3, v7
2414 ; PWR9BE-NEXT:    xsadddp v2, v2, v7
2415 ; PWR9BE-NEXT:    xsadddp v2, v2, v3
2416 ; PWR9BE-NEXT:    xxswapd v3, v8
2417 ; PWR9BE-NEXT:    xsadddp v2, v2, v8
2418 ; PWR9BE-NEXT:    xsadddp v2, v2, v3
2419 ; PWR9BE-NEXT:    xxswapd v3, v9
2420 ; PWR9BE-NEXT:    xsadddp v2, v2, v9
2421 ; PWR9BE-NEXT:    xsadddp v2, v2, v3
2422 ; PWR9BE-NEXT:    xxswapd v3, v10
2423 ; PWR9BE-NEXT:    xsadddp v2, v2, v10
2424 ; PWR9BE-NEXT:    xsadddp v2, v2, v3
2425 ; PWR9BE-NEXT:    xxswapd v3, v11
2426 ; PWR9BE-NEXT:    xsadddp v2, v2, v11
2427 ; PWR9BE-NEXT:    xsadddp v2, v2, v3
2428 ; PWR9BE-NEXT:    xxswapd v3, v12
2429 ; PWR9BE-NEXT:    xsadddp v2, v2, v12
2430 ; PWR9BE-NEXT:    xsadddp v2, v2, v3
2431 ; PWR9BE-NEXT:    xxswapd v3, v13
2432 ; PWR9BE-NEXT:    xsadddp v2, v2, v13
2433 ; PWR9BE-NEXT:    xsadddp v2, v2, v3
2434 ; PWR9BE-NEXT:    xxswapd v3, v17
2435 ; PWR9BE-NEXT:    xsadddp v2, v2, v17
2436 ; PWR9BE-NEXT:    xsadddp v2, v2, v3
2437 ; PWR9BE-NEXT:    xxswapd v3, v16
2438 ; PWR9BE-NEXT:    xsadddp v2, v2, v16
2439 ; PWR9BE-NEXT:    xsadddp v2, v2, v3
2440 ; PWR9BE-NEXT:    xxswapd v3, v15
2441 ; PWR9BE-NEXT:    xsadddp v2, v2, v15
2442 ; PWR9BE-NEXT:    xsadddp v2, v2, v3
2443 ; PWR9BE-NEXT:    xxswapd v3, v14
2444 ; PWR9BE-NEXT:    xsadddp v2, v2, v14
2445 ; PWR9BE-NEXT:    xsadddp v2, v2, v3
2446 ; PWR9BE-NEXT:    xxswapd v3, v1
2447 ; PWR9BE-NEXT:    xsadddp v2, v2, v1
2448 ; PWR9BE-NEXT:    xsadddp v2, v2, v3
2449 ; PWR9BE-NEXT:    xxswapd v3, v0
2450 ; PWR9BE-NEXT:    xsadddp v2, v2, v0
2451 ; PWR9BE-NEXT:    xsadddp v2, v2, v3
2452 ; PWR9BE-NEXT:    xsadddp v2, v2, f13
2453 ; PWR9BE-NEXT:    xxswapd vs13, vs13
2454 ; PWR9BE-NEXT:    xsadddp f13, v2, f13
2455 ; PWR9BE-NEXT:    xsadddp f13, f13, f12
2456 ; PWR9BE-NEXT:    xxswapd vs12, vs12
2457 ; PWR9BE-NEXT:    xsadddp f12, f13, f12
2458 ; PWR9BE-NEXT:    xsadddp f12, f12, f11
2459 ; PWR9BE-NEXT:    xxswapd vs11, vs11
2460 ; PWR9BE-NEXT:    xsadddp f11, f12, f11
2461 ; PWR9BE-NEXT:    xsadddp f11, f11, f10
2462 ; PWR9BE-NEXT:    xxswapd vs10, vs10
2463 ; PWR9BE-NEXT:    xsadddp f10, f11, f10
2464 ; PWR9BE-NEXT:    xsadddp f10, f10, f9
2465 ; PWR9BE-NEXT:    xxswapd vs9, vs9
2466 ; PWR9BE-NEXT:    xsadddp f9, f10, f9
2467 ; PWR9BE-NEXT:    xsadddp f9, f9, f8
2468 ; PWR9BE-NEXT:    xxswapd vs8, vs8
2469 ; PWR9BE-NEXT:    xsadddp f8, f9, f8
2470 ; PWR9BE-NEXT:    xsadddp f8, f8, f7
2471 ; PWR9BE-NEXT:    xxswapd vs7, vs7
2472 ; PWR9BE-NEXT:    xsadddp f7, f8, f7
2473 ; PWR9BE-NEXT:    xsadddp f7, f7, f6
2474 ; PWR9BE-NEXT:    xxswapd vs6, vs6
2475 ; PWR9BE-NEXT:    xsadddp f6, f7, f6
2476 ; PWR9BE-NEXT:    xsadddp f6, f6, f5
2477 ; PWR9BE-NEXT:    xxswapd vs5, vs5
2478 ; PWR9BE-NEXT:    xsadddp f5, f6, f5
2479 ; PWR9BE-NEXT:    xsadddp f5, f5, f4
2480 ; PWR9BE-NEXT:    xxswapd vs4, vs4
2481 ; PWR9BE-NEXT:    xsadddp f4, f5, f4
2482 ; PWR9BE-NEXT:    xsadddp f4, f4, f3
2483 ; PWR9BE-NEXT:    xxswapd vs3, vs3
2484 ; PWR9BE-NEXT:    xsadddp f3, f4, f3
2485 ; PWR9BE-NEXT:    xsadddp f3, f3, f2
2486 ; PWR9BE-NEXT:    xxswapd vs2, vs2
2487 ; PWR9BE-NEXT:    xsadddp f2, f3, f2
2488 ; PWR9BE-NEXT:    xsadddp f2, f2, f1
2489 ; PWR9BE-NEXT:    xxswapd vs1, vs1
2490 ; PWR9BE-NEXT:    xsadddp f1, f2, f1
2491 ; PWR9BE-NEXT:    xsadddp f1, f1, f0
2492 ; PWR9BE-NEXT:    xxswapd vs0, vs0
2493 ; PWR9BE-NEXT:    xsadddp f1, f1, f0
2494 ; PWR9BE-NEXT:    blr
2496 ; PWR10LE-LABEL: v64f64:
2497 ; PWR10LE:       # %bb.0: # %entry
2498 ; PWR10LE-NEXT:    xxswapd v18, v2
2499 ; PWR10LE-NEXT:    lxv v17, 224(r1)
2500 ; PWR10LE-NEXT:    lxv v16, 240(r1)
2501 ; PWR10LE-NEXT:    xsadddp v2, v18, v2
2502 ; PWR10LE-NEXT:    xxswapd v18, v3
2503 ; PWR10LE-NEXT:    lxv v15, 256(r1)
2504 ; PWR10LE-NEXT:    lxv v14, 272(r1)
2505 ; PWR10LE-NEXT:    lxv v1, 288(r1)
2506 ; PWR10LE-NEXT:    lxv v0, 304(r1)
2507 ; PWR10LE-NEXT:    lxv vs13, 320(r1)
2508 ; PWR10LE-NEXT:    lxv vs12, 336(r1)
2509 ; PWR10LE-NEXT:    lxv vs11, 352(r1)
2510 ; PWR10LE-NEXT:    lxv vs10, 368(r1)
2511 ; PWR10LE-NEXT:    xsadddp v2, v2, v18
2512 ; PWR10LE-NEXT:    lxv vs9, 384(r1)
2513 ; PWR10LE-NEXT:    lxv vs8, 400(r1)
2514 ; PWR10LE-NEXT:    lxv vs7, 416(r1)
2515 ; PWR10LE-NEXT:    lxv vs6, 432(r1)
2516 ; PWR10LE-NEXT:    lxv vs5, 448(r1)
2517 ; PWR10LE-NEXT:    lxv vs4, 464(r1)
2518 ; PWR10LE-NEXT:    lxv vs3, 480(r1)
2519 ; PWR10LE-NEXT:    lxv vs2, 496(r1)
2520 ; PWR10LE-NEXT:    lxv vs1, 512(r1)
2521 ; PWR10LE-NEXT:    lxv vs0, 528(r1)
2522 ; PWR10LE-NEXT:    xsadddp v2, v2, v3
2523 ; PWR10LE-NEXT:    xxswapd v3, v4
2524 ; PWR10LE-NEXT:    xsadddp v2, v2, v3
2525 ; PWR10LE-NEXT:    xxswapd v3, v5
2526 ; PWR10LE-NEXT:    xsadddp v2, v2, v4
2527 ; PWR10LE-NEXT:    xsadddp v2, v2, v3
2528 ; PWR10LE-NEXT:    xxswapd v3, v6
2529 ; PWR10LE-NEXT:    xsadddp v2, v2, v5
2530 ; PWR10LE-NEXT:    xsadddp v2, v2, v3
2531 ; PWR10LE-NEXT:    xxswapd v3, v7
2532 ; PWR10LE-NEXT:    xsadddp v2, v2, v6
2533 ; PWR10LE-NEXT:    xsadddp v2, v2, v3
2534 ; PWR10LE-NEXT:    xxswapd v3, v8
2535 ; PWR10LE-NEXT:    xsadddp v2, v2, v7
2536 ; PWR10LE-NEXT:    xsadddp v2, v2, v3
2537 ; PWR10LE-NEXT:    xxswapd v3, v9
2538 ; PWR10LE-NEXT:    xsadddp v2, v2, v8
2539 ; PWR10LE-NEXT:    xsadddp v2, v2, v3
2540 ; PWR10LE-NEXT:    xxswapd v3, v10
2541 ; PWR10LE-NEXT:    xsadddp v2, v2, v9
2542 ; PWR10LE-NEXT:    xsadddp v2, v2, v3
2543 ; PWR10LE-NEXT:    xxswapd v3, v11
2544 ; PWR10LE-NEXT:    xsadddp v2, v2, v10
2545 ; PWR10LE-NEXT:    xsadddp v2, v2, v3
2546 ; PWR10LE-NEXT:    xxswapd v3, v12
2547 ; PWR10LE-NEXT:    xsadddp v2, v2, v11
2548 ; PWR10LE-NEXT:    xsadddp v2, v2, v3
2549 ; PWR10LE-NEXT:    xxswapd v3, v13
2550 ; PWR10LE-NEXT:    xsadddp v2, v2, v12
2551 ; PWR10LE-NEXT:    xsadddp v2, v2, v3
2552 ; PWR10LE-NEXT:    xxswapd v3, v17
2553 ; PWR10LE-NEXT:    xsadddp v2, v2, v13
2554 ; PWR10LE-NEXT:    xsadddp v2, v2, v3
2555 ; PWR10LE-NEXT:    xxswapd v3, v16
2556 ; PWR10LE-NEXT:    xsadddp v2, v2, v17
2557 ; PWR10LE-NEXT:    xsadddp v2, v2, v3
2558 ; PWR10LE-NEXT:    xxswapd v3, v15
2559 ; PWR10LE-NEXT:    xsadddp v2, v2, v16
2560 ; PWR10LE-NEXT:    xsadddp v2, v2, v3
2561 ; PWR10LE-NEXT:    xxswapd v3, v14
2562 ; PWR10LE-NEXT:    xsadddp v2, v2, v15
2563 ; PWR10LE-NEXT:    xsadddp v2, v2, v3
2564 ; PWR10LE-NEXT:    xxswapd v3, v1
2565 ; PWR10LE-NEXT:    xsadddp v2, v2, v14
2566 ; PWR10LE-NEXT:    xsadddp v2, v2, v3
2567 ; PWR10LE-NEXT:    xxswapd v3, v0
2568 ; PWR10LE-NEXT:    xsadddp v2, v2, v1
2569 ; PWR10LE-NEXT:    xsadddp v2, v2, v3
2570 ; PWR10LE-NEXT:    xxswapd v3, vs13
2571 ; PWR10LE-NEXT:    xsadddp v2, v2, v0
2572 ; PWR10LE-NEXT:    xsadddp v2, v2, v3
2573 ; PWR10LE-NEXT:    xsadddp f13, v2, f13
2574 ; PWR10LE-NEXT:    xxswapd v2, vs12
2575 ; PWR10LE-NEXT:    xsadddp f13, f13, v2
2576 ; PWR10LE-NEXT:    xsadddp f12, f13, f12
2577 ; PWR10LE-NEXT:    xxswapd vs13, vs11
2578 ; PWR10LE-NEXT:    xsadddp f12, f12, f13
2579 ; PWR10LE-NEXT:    xsadddp f11, f12, f11
2580 ; PWR10LE-NEXT:    xxswapd vs12, vs10
2581 ; PWR10LE-NEXT:    xsadddp f11, f11, f12
2582 ; PWR10LE-NEXT:    xsadddp f10, f11, f10
2583 ; PWR10LE-NEXT:    xxswapd vs11, vs9
2584 ; PWR10LE-NEXT:    xsadddp f10, f10, f11
2585 ; PWR10LE-NEXT:    xsadddp f9, f10, f9
2586 ; PWR10LE-NEXT:    xxswapd vs10, vs8
2587 ; PWR10LE-NEXT:    xsadddp f9, f9, f10
2588 ; PWR10LE-NEXT:    xsadddp f8, f9, f8
2589 ; PWR10LE-NEXT:    xxswapd vs9, vs7
2590 ; PWR10LE-NEXT:    xsadddp f8, f8, f9
2591 ; PWR10LE-NEXT:    xsadddp f7, f8, f7
2592 ; PWR10LE-NEXT:    xxswapd vs8, vs6
2593 ; PWR10LE-NEXT:    xsadddp f7, f7, f8
2594 ; PWR10LE-NEXT:    xsadddp f6, f7, f6
2595 ; PWR10LE-NEXT:    xxswapd vs7, vs5
2596 ; PWR10LE-NEXT:    xsadddp f6, f6, f7
2597 ; PWR10LE-NEXT:    xsadddp f5, f6, f5
2598 ; PWR10LE-NEXT:    xxswapd vs6, vs4
2599 ; PWR10LE-NEXT:    xsadddp f5, f5, f6
2600 ; PWR10LE-NEXT:    xsadddp f4, f5, f4
2601 ; PWR10LE-NEXT:    xxswapd vs5, vs3
2602 ; PWR10LE-NEXT:    xsadddp f4, f4, f5
2603 ; PWR10LE-NEXT:    xsadddp f3, f4, f3
2604 ; PWR10LE-NEXT:    xxswapd vs4, vs2
2605 ; PWR10LE-NEXT:    xsadddp f3, f3, f4
2606 ; PWR10LE-NEXT:    xsadddp f2, f3, f2
2607 ; PWR10LE-NEXT:    xxswapd vs3, vs1
2608 ; PWR10LE-NEXT:    xsadddp f2, f2, f3
2609 ; PWR10LE-NEXT:    xsadddp f1, f2, f1
2610 ; PWR10LE-NEXT:    xxswapd vs2, vs0
2611 ; PWR10LE-NEXT:    xsadddp f1, f1, f2
2612 ; PWR10LE-NEXT:    xsadddp f1, f1, f0
2613 ; PWR10LE-NEXT:    blr
2615 ; PWR10BE-LABEL: v64f64:
2616 ; PWR10BE:       # %bb.0: # %entry
2617 ; PWR10BE-NEXT:    xxswapd v18, v2
2618 ; PWR10BE-NEXT:    lxv v17, 240(r1)
2619 ; PWR10BE-NEXT:    lxv v16, 256(r1)
2620 ; PWR10BE-NEXT:    xsadddp v2, v2, v18
2621 ; PWR10BE-NEXT:    lxv v15, 272(r1)
2622 ; PWR10BE-NEXT:    lxv v14, 288(r1)
2623 ; PWR10BE-NEXT:    lxv v1, 304(r1)
2624 ; PWR10BE-NEXT:    lxv v0, 320(r1)
2625 ; PWR10BE-NEXT:    lxv vs13, 336(r1)
2626 ; PWR10BE-NEXT:    lxv vs12, 352(r1)
2627 ; PWR10BE-NEXT:    lxv vs11, 368(r1)
2628 ; PWR10BE-NEXT:    lxv vs10, 384(r1)
2629 ; PWR10BE-NEXT:    xsadddp v2, v2, v3
2630 ; PWR10BE-NEXT:    xxswapd v3, v3
2631 ; PWR10BE-NEXT:    lxv vs9, 400(r1)
2632 ; PWR10BE-NEXT:    lxv vs8, 416(r1)
2633 ; PWR10BE-NEXT:    lxv vs7, 432(r1)
2634 ; PWR10BE-NEXT:    lxv vs6, 448(r1)
2635 ; PWR10BE-NEXT:    lxv vs5, 464(r1)
2636 ; PWR10BE-NEXT:    lxv vs4, 480(r1)
2637 ; PWR10BE-NEXT:    lxv vs3, 496(r1)
2638 ; PWR10BE-NEXT:    lxv vs2, 512(r1)
2639 ; PWR10BE-NEXT:    lxv vs1, 528(r1)
2640 ; PWR10BE-NEXT:    lxv vs0, 544(r1)
2641 ; PWR10BE-NEXT:    xsadddp v2, v2, v3
2642 ; PWR10BE-NEXT:    xxswapd v3, v4
2643 ; PWR10BE-NEXT:    xsadddp v2, v2, v4
2644 ; PWR10BE-NEXT:    xsadddp v2, v2, v3
2645 ; PWR10BE-NEXT:    xxswapd v3, v5
2646 ; PWR10BE-NEXT:    xsadddp v2, v2, v5
2647 ; PWR10BE-NEXT:    xsadddp v2, v2, v3
2648 ; PWR10BE-NEXT:    xxswapd v3, v6
2649 ; PWR10BE-NEXT:    xsadddp v2, v2, v6
2650 ; PWR10BE-NEXT:    xsadddp v2, v2, v3
2651 ; PWR10BE-NEXT:    xxswapd v3, v7
2652 ; PWR10BE-NEXT:    xsadddp v2, v2, v7
2653 ; PWR10BE-NEXT:    xsadddp v2, v2, v3
2654 ; PWR10BE-NEXT:    xxswapd v3, v8
2655 ; PWR10BE-NEXT:    xsadddp v2, v2, v8
2656 ; PWR10BE-NEXT:    xsadddp v2, v2, v3
2657 ; PWR10BE-NEXT:    xxswapd v3, v9
2658 ; PWR10BE-NEXT:    xsadddp v2, v2, v9
2659 ; PWR10BE-NEXT:    xsadddp v2, v2, v3
2660 ; PWR10BE-NEXT:    xxswapd v3, v10
2661 ; PWR10BE-NEXT:    xsadddp v2, v2, v10
2662 ; PWR10BE-NEXT:    xsadddp v2, v2, v3
2663 ; PWR10BE-NEXT:    xxswapd v3, v11
2664 ; PWR10BE-NEXT:    xsadddp v2, v2, v11
2665 ; PWR10BE-NEXT:    xsadddp v2, v2, v3
2666 ; PWR10BE-NEXT:    xxswapd v3, v12
2667 ; PWR10BE-NEXT:    xsadddp v2, v2, v12
2668 ; PWR10BE-NEXT:    xsadddp v2, v2, v3
2669 ; PWR10BE-NEXT:    xxswapd v3, v13
2670 ; PWR10BE-NEXT:    xsadddp v2, v2, v13
2671 ; PWR10BE-NEXT:    xsadddp v2, v2, v3
2672 ; PWR10BE-NEXT:    xxswapd v3, v17
2673 ; PWR10BE-NEXT:    xsadddp v2, v2, v17
2674 ; PWR10BE-NEXT:    xsadddp v2, v2, v3
2675 ; PWR10BE-NEXT:    xxswapd v3, v16
2676 ; PWR10BE-NEXT:    xsadddp v2, v2, v16
2677 ; PWR10BE-NEXT:    xsadddp v2, v2, v3
2678 ; PWR10BE-NEXT:    xxswapd v3, v15
2679 ; PWR10BE-NEXT:    xsadddp v2, v2, v15
2680 ; PWR10BE-NEXT:    xsadddp v2, v2, v3
2681 ; PWR10BE-NEXT:    xxswapd v3, v14
2682 ; PWR10BE-NEXT:    xsadddp v2, v2, v14
2683 ; PWR10BE-NEXT:    xsadddp v2, v2, v3
2684 ; PWR10BE-NEXT:    xxswapd v3, v1
2685 ; PWR10BE-NEXT:    xsadddp v2, v2, v1
2686 ; PWR10BE-NEXT:    xsadddp v2, v2, v3
2687 ; PWR10BE-NEXT:    xxswapd v3, v0
2688 ; PWR10BE-NEXT:    xsadddp v2, v2, v0
2689 ; PWR10BE-NEXT:    xsadddp v2, v2, v3
2690 ; PWR10BE-NEXT:    xsadddp v2, v2, f13
2691 ; PWR10BE-NEXT:    xxswapd vs13, vs13
2692 ; PWR10BE-NEXT:    xsadddp f13, v2, f13
2693 ; PWR10BE-NEXT:    xsadddp f13, f13, f12
2694 ; PWR10BE-NEXT:    xxswapd vs12, vs12
2695 ; PWR10BE-NEXT:    xsadddp f12, f13, f12
2696 ; PWR10BE-NEXT:    xsadddp f12, f12, f11
2697 ; PWR10BE-NEXT:    xxswapd vs11, vs11
2698 ; PWR10BE-NEXT:    xsadddp f11, f12, f11
2699 ; PWR10BE-NEXT:    xsadddp f11, f11, f10
2700 ; PWR10BE-NEXT:    xxswapd vs10, vs10
2701 ; PWR10BE-NEXT:    xsadddp f10, f11, f10
2702 ; PWR10BE-NEXT:    xsadddp f10, f10, f9
2703 ; PWR10BE-NEXT:    xxswapd vs9, vs9
2704 ; PWR10BE-NEXT:    xsadddp f9, f10, f9
2705 ; PWR10BE-NEXT:    xsadddp f9, f9, f8
2706 ; PWR10BE-NEXT:    xxswapd vs8, vs8
2707 ; PWR10BE-NEXT:    xsadddp f8, f9, f8
2708 ; PWR10BE-NEXT:    xsadddp f8, f8, f7
2709 ; PWR10BE-NEXT:    xxswapd vs7, vs7
2710 ; PWR10BE-NEXT:    xsadddp f7, f8, f7
2711 ; PWR10BE-NEXT:    xsadddp f7, f7, f6
2712 ; PWR10BE-NEXT:    xxswapd vs6, vs6
2713 ; PWR10BE-NEXT:    xsadddp f6, f7, f6
2714 ; PWR10BE-NEXT:    xsadddp f6, f6, f5
2715 ; PWR10BE-NEXT:    xxswapd vs5, vs5
2716 ; PWR10BE-NEXT:    xsadddp f5, f6, f5
2717 ; PWR10BE-NEXT:    xsadddp f5, f5, f4
2718 ; PWR10BE-NEXT:    xxswapd vs4, vs4
2719 ; PWR10BE-NEXT:    xsadddp f4, f5, f4
2720 ; PWR10BE-NEXT:    xsadddp f4, f4, f3
2721 ; PWR10BE-NEXT:    xxswapd vs3, vs3
2722 ; PWR10BE-NEXT:    xsadddp f3, f4, f3
2723 ; PWR10BE-NEXT:    xsadddp f3, f3, f2
2724 ; PWR10BE-NEXT:    xxswapd vs2, vs2
2725 ; PWR10BE-NEXT:    xsadddp f2, f3, f2
2726 ; PWR10BE-NEXT:    xsadddp f2, f2, f1
2727 ; PWR10BE-NEXT:    xxswapd vs1, vs1
2728 ; PWR10BE-NEXT:    xsadddp f1, f2, f1
2729 ; PWR10BE-NEXT:    xsadddp f1, f1, f0
2730 ; PWR10BE-NEXT:    xxswapd vs0, vs0
2731 ; PWR10BE-NEXT:    xsadddp f1, f1, f0
2732 ; PWR10BE-NEXT:    blr
2733 entry:
2734   %0 = call double @llvm.vector.reduce.fadd.v64f64(double -0.000000e+00, <64 x double> %a)
2735   ret double %0
2738 define dso_local double @v64f64_b(<64 x double> %a, double %b) local_unnamed_addr #0 {
2739 ; PWR9LE-LABEL: v64f64_b:
2740 ; PWR9LE:       # %bb.0: # %entry
2741 ; PWR9LE-NEXT:    xxswapd v19, v2
2742 ; PWR9LE-NEXT:    lxv v18, 224(r1)
2743 ; PWR9LE-NEXT:    lxv v17, 240(r1)
2744 ; PWR9LE-NEXT:    lxv v16, 256(r1)
2745 ; PWR9LE-NEXT:    lxv v15, 272(r1)
2746 ; PWR9LE-NEXT:    xsadddp f1, f1, v19
2747 ; PWR9LE-NEXT:    lxv v14, 288(r1)
2748 ; PWR9LE-NEXT:    lxv v1, 304(r1)
2749 ; PWR9LE-NEXT:    lxv v0, 320(r1)
2750 ; PWR9LE-NEXT:    lxv vs13, 336(r1)
2751 ; PWR9LE-NEXT:    lxv vs12, 352(r1)
2752 ; PWR9LE-NEXT:    lxv vs11, 368(r1)
2753 ; PWR9LE-NEXT:    lxv vs10, 384(r1)
2754 ; PWR9LE-NEXT:    lxv vs9, 400(r1)
2755 ; PWR9LE-NEXT:    lxv vs8, 416(r1)
2756 ; PWR9LE-NEXT:    lxv vs7, 432(r1)
2757 ; PWR9LE-NEXT:    lxv vs6, 448(r1)
2758 ; PWR9LE-NEXT:    lxv vs5, 464(r1)
2759 ; PWR9LE-NEXT:    xsadddp f1, f1, v2
2760 ; PWR9LE-NEXT:    xxswapd v2, v3
2761 ; PWR9LE-NEXT:    lxv vs4, 480(r1)
2762 ; PWR9LE-NEXT:    lxv vs3, 496(r1)
2763 ; PWR9LE-NEXT:    lxv vs2, 512(r1)
2764 ; PWR9LE-NEXT:    lxv vs0, 528(r1)
2765 ; PWR9LE-NEXT:    xsadddp f1, f1, v2
2766 ; PWR9LE-NEXT:    xxswapd v2, v4
2767 ; PWR9LE-NEXT:    xsadddp f1, f1, v3
2768 ; PWR9LE-NEXT:    xsadddp f1, f1, v2
2769 ; PWR9LE-NEXT:    xxswapd v2, v5
2770 ; PWR9LE-NEXT:    xsadddp f1, f1, v4
2771 ; PWR9LE-NEXT:    xsadddp f1, f1, v2
2772 ; PWR9LE-NEXT:    xxswapd v2, v6
2773 ; PWR9LE-NEXT:    xsadddp f1, f1, v5
2774 ; PWR9LE-NEXT:    xsadddp f1, f1, v2
2775 ; PWR9LE-NEXT:    xxswapd v2, v7
2776 ; PWR9LE-NEXT:    xsadddp f1, f1, v6
2777 ; PWR9LE-NEXT:    xsadddp f1, f1, v2
2778 ; PWR9LE-NEXT:    xxswapd v2, v8
2779 ; PWR9LE-NEXT:    xsadddp f1, f1, v7
2780 ; PWR9LE-NEXT:    xsadddp f1, f1, v2
2781 ; PWR9LE-NEXT:    xxswapd v2, v9
2782 ; PWR9LE-NEXT:    xsadddp f1, f1, v8
2783 ; PWR9LE-NEXT:    xsadddp f1, f1, v2
2784 ; PWR9LE-NEXT:    xxswapd v2, v10
2785 ; PWR9LE-NEXT:    xsadddp f1, f1, v9
2786 ; PWR9LE-NEXT:    xsadddp f1, f1, v2
2787 ; PWR9LE-NEXT:    xxswapd v2, v11
2788 ; PWR9LE-NEXT:    xsadddp f1, f1, v10
2789 ; PWR9LE-NEXT:    xsadddp f1, f1, v2
2790 ; PWR9LE-NEXT:    xxswapd v2, v12
2791 ; PWR9LE-NEXT:    xsadddp f1, f1, v11
2792 ; PWR9LE-NEXT:    xsadddp f1, f1, v2
2793 ; PWR9LE-NEXT:    xxswapd v2, v13
2794 ; PWR9LE-NEXT:    xsadddp f1, f1, v12
2795 ; PWR9LE-NEXT:    xsadddp f1, f1, v2
2796 ; PWR9LE-NEXT:    xxswapd v2, v18
2797 ; PWR9LE-NEXT:    xsadddp f1, f1, v13
2798 ; PWR9LE-NEXT:    xsadddp f1, f1, v2
2799 ; PWR9LE-NEXT:    xxswapd v2, v17
2800 ; PWR9LE-NEXT:    xsadddp f1, f1, v18
2801 ; PWR9LE-NEXT:    xsadddp f1, f1, v2
2802 ; PWR9LE-NEXT:    xxswapd v2, v16
2803 ; PWR9LE-NEXT:    xsadddp f1, f1, v17
2804 ; PWR9LE-NEXT:    xsadddp f1, f1, v2
2805 ; PWR9LE-NEXT:    xxswapd v2, v15
2806 ; PWR9LE-NEXT:    xsadddp f1, f1, v16
2807 ; PWR9LE-NEXT:    xsadddp f1, f1, v2
2808 ; PWR9LE-NEXT:    xxswapd v2, v14
2809 ; PWR9LE-NEXT:    xsadddp f1, f1, v15
2810 ; PWR9LE-NEXT:    xsadddp f1, f1, v2
2811 ; PWR9LE-NEXT:    xxswapd v2, v1
2812 ; PWR9LE-NEXT:    xsadddp f1, f1, v14
2813 ; PWR9LE-NEXT:    xsadddp f1, f1, v2
2814 ; PWR9LE-NEXT:    xxswapd v2, v0
2815 ; PWR9LE-NEXT:    xsadddp f1, f1, v1
2816 ; PWR9LE-NEXT:    xsadddp f1, f1, v2
2817 ; PWR9LE-NEXT:    xxswapd v2, vs13
2818 ; PWR9LE-NEXT:    xsadddp f1, f1, v0
2819 ; PWR9LE-NEXT:    xsadddp f1, f1, v2
2820 ; PWR9LE-NEXT:    xsadddp f1, f1, f13
2821 ; PWR9LE-NEXT:    xxswapd vs13, vs12
2822 ; PWR9LE-NEXT:    xsadddp f1, f1, f13
2823 ; PWR9LE-NEXT:    xsadddp f1, f1, f12
2824 ; PWR9LE-NEXT:    xxswapd vs12, vs11
2825 ; PWR9LE-NEXT:    xsadddp f1, f1, f12
2826 ; PWR9LE-NEXT:    xsadddp f1, f1, f11
2827 ; PWR9LE-NEXT:    xxswapd vs11, vs10
2828 ; PWR9LE-NEXT:    xsadddp f1, f1, f11
2829 ; PWR9LE-NEXT:    xsadddp f1, f1, f10
2830 ; PWR9LE-NEXT:    xxswapd vs10, vs9
2831 ; PWR9LE-NEXT:    xsadddp f1, f1, f10
2832 ; PWR9LE-NEXT:    xsadddp f1, f1, f9
2833 ; PWR9LE-NEXT:    xxswapd vs9, vs8
2834 ; PWR9LE-NEXT:    xsadddp f1, f1, f9
2835 ; PWR9LE-NEXT:    xsadddp f1, f1, f8
2836 ; PWR9LE-NEXT:    xxswapd vs8, vs7
2837 ; PWR9LE-NEXT:    xsadddp f1, f1, f8
2838 ; PWR9LE-NEXT:    xsadddp f1, f1, f7
2839 ; PWR9LE-NEXT:    xxswapd vs7, vs6
2840 ; PWR9LE-NEXT:    xsadddp f1, f1, f7
2841 ; PWR9LE-NEXT:    xsadddp f1, f1, f6
2842 ; PWR9LE-NEXT:    xxswapd vs6, vs5
2843 ; PWR9LE-NEXT:    xsadddp f1, f1, f6
2844 ; PWR9LE-NEXT:    xsadddp f1, f1, f5
2845 ; PWR9LE-NEXT:    xxswapd vs5, vs4
2846 ; PWR9LE-NEXT:    xsadddp f1, f1, f5
2847 ; PWR9LE-NEXT:    xsadddp f1, f1, f4
2848 ; PWR9LE-NEXT:    xxswapd vs4, vs3
2849 ; PWR9LE-NEXT:    xsadddp f1, f1, f4
2850 ; PWR9LE-NEXT:    xsadddp f1, f1, f3
2851 ; PWR9LE-NEXT:    xxswapd vs3, vs2
2852 ; PWR9LE-NEXT:    xsadddp f1, f1, f3
2853 ; PWR9LE-NEXT:    xsadddp f1, f1, f2
2854 ; PWR9LE-NEXT:    xxswapd vs2, vs0
2855 ; PWR9LE-NEXT:    xsadddp f1, f1, f2
2856 ; PWR9LE-NEXT:    xsadddp f1, f1, f0
2857 ; PWR9LE-NEXT:    blr
2859 ; PWR9BE-LABEL: v64f64_b:
2860 ; PWR9BE:       # %bb.0: # %entry
2861 ; PWR9BE-NEXT:    xsadddp f1, f1, v2
2862 ; PWR9BE-NEXT:    xxswapd v2, v2
2863 ; PWR9BE-NEXT:    lxv v18, 240(r1)
2864 ; PWR9BE-NEXT:    lxv v17, 256(r1)
2865 ; PWR9BE-NEXT:    lxv v16, 272(r1)
2866 ; PWR9BE-NEXT:    lxv v15, 288(r1)
2867 ; PWR9BE-NEXT:    lxv v14, 304(r1)
2868 ; PWR9BE-NEXT:    xsadddp f1, f1, v2
2869 ; PWR9BE-NEXT:    xxswapd v2, v3
2870 ; PWR9BE-NEXT:    lxv v1, 320(r1)
2871 ; PWR9BE-NEXT:    lxv v0, 336(r1)
2872 ; PWR9BE-NEXT:    lxv vs13, 352(r1)
2873 ; PWR9BE-NEXT:    lxv vs12, 368(r1)
2874 ; PWR9BE-NEXT:    lxv vs11, 384(r1)
2875 ; PWR9BE-NEXT:    lxv vs10, 400(r1)
2876 ; PWR9BE-NEXT:    lxv vs9, 416(r1)
2877 ; PWR9BE-NEXT:    lxv vs8, 432(r1)
2878 ; PWR9BE-NEXT:    lxv vs7, 448(r1)
2879 ; PWR9BE-NEXT:    lxv vs6, 464(r1)
2880 ; PWR9BE-NEXT:    lxv vs5, 480(r1)
2881 ; PWR9BE-NEXT:    lxv vs4, 496(r1)
2882 ; PWR9BE-NEXT:    lxv vs3, 512(r1)
2883 ; PWR9BE-NEXT:    lxv vs2, 528(r1)
2884 ; PWR9BE-NEXT:    lxv vs0, 544(r1)
2885 ; PWR9BE-NEXT:    xsadddp f1, f1, v3
2886 ; PWR9BE-NEXT:    xsadddp f1, f1, v2
2887 ; PWR9BE-NEXT:    xxswapd v2, v4
2888 ; PWR9BE-NEXT:    xsadddp f1, f1, v4
2889 ; PWR9BE-NEXT:    xsadddp f1, f1, v2
2890 ; PWR9BE-NEXT:    xxswapd v2, v5
2891 ; PWR9BE-NEXT:    xsadddp f1, f1, v5
2892 ; PWR9BE-NEXT:    xsadddp f1, f1, v2
2893 ; PWR9BE-NEXT:    xxswapd v2, v6
2894 ; PWR9BE-NEXT:    xsadddp f1, f1, v6
2895 ; PWR9BE-NEXT:    xsadddp f1, f1, v2
2896 ; PWR9BE-NEXT:    xxswapd v2, v7
2897 ; PWR9BE-NEXT:    xsadddp f1, f1, v7
2898 ; PWR9BE-NEXT:    xsadddp f1, f1, v2
2899 ; PWR9BE-NEXT:    xxswapd v2, v8
2900 ; PWR9BE-NEXT:    xsadddp f1, f1, v8
2901 ; PWR9BE-NEXT:    xsadddp f1, f1, v2
2902 ; PWR9BE-NEXT:    xxswapd v2, v9
2903 ; PWR9BE-NEXT:    xsadddp f1, f1, v9
2904 ; PWR9BE-NEXT:    xsadddp f1, f1, v2
2905 ; PWR9BE-NEXT:    xxswapd v2, v10
2906 ; PWR9BE-NEXT:    xsadddp f1, f1, v10
2907 ; PWR9BE-NEXT:    xsadddp f1, f1, v2
2908 ; PWR9BE-NEXT:    xxswapd v2, v11
2909 ; PWR9BE-NEXT:    xsadddp f1, f1, v11
2910 ; PWR9BE-NEXT:    xsadddp f1, f1, v2
2911 ; PWR9BE-NEXT:    xxswapd v2, v12
2912 ; PWR9BE-NEXT:    xsadddp f1, f1, v12
2913 ; PWR9BE-NEXT:    xsadddp f1, f1, v2
2914 ; PWR9BE-NEXT:    xxswapd v2, v13
2915 ; PWR9BE-NEXT:    xsadddp f1, f1, v13
2916 ; PWR9BE-NEXT:    xsadddp f1, f1, v2
2917 ; PWR9BE-NEXT:    xxswapd v2, v18
2918 ; PWR9BE-NEXT:    xsadddp f1, f1, v18
2919 ; PWR9BE-NEXT:    xsadddp f1, f1, v2
2920 ; PWR9BE-NEXT:    xxswapd v2, v17
2921 ; PWR9BE-NEXT:    xsadddp f1, f1, v17
2922 ; PWR9BE-NEXT:    xsadddp f1, f1, v2
2923 ; PWR9BE-NEXT:    xxswapd v2, v16
2924 ; PWR9BE-NEXT:    xsadddp f1, f1, v16
2925 ; PWR9BE-NEXT:    xsadddp f1, f1, v2
2926 ; PWR9BE-NEXT:    xxswapd v2, v15
2927 ; PWR9BE-NEXT:    xsadddp f1, f1, v15
2928 ; PWR9BE-NEXT:    xsadddp f1, f1, v2
2929 ; PWR9BE-NEXT:    xxswapd v2, v14
2930 ; PWR9BE-NEXT:    xsadddp f1, f1, v14
2931 ; PWR9BE-NEXT:    xsadddp f1, f1, v2
2932 ; PWR9BE-NEXT:    xxswapd v2, v1
2933 ; PWR9BE-NEXT:    xsadddp f1, f1, v1
2934 ; PWR9BE-NEXT:    xsadddp f1, f1, v2
2935 ; PWR9BE-NEXT:    xxswapd v2, v0
2936 ; PWR9BE-NEXT:    xsadddp f1, f1, v0
2937 ; PWR9BE-NEXT:    xsadddp f1, f1, v2
2938 ; PWR9BE-NEXT:    xsadddp f1, f1, f13
2939 ; PWR9BE-NEXT:    xxswapd vs13, vs13
2940 ; PWR9BE-NEXT:    xsadddp f1, f1, f13
2941 ; PWR9BE-NEXT:    xsadddp f1, f1, f12
2942 ; PWR9BE-NEXT:    xxswapd vs12, vs12
2943 ; PWR9BE-NEXT:    xsadddp f1, f1, f12
2944 ; PWR9BE-NEXT:    xsadddp f1, f1, f11
2945 ; PWR9BE-NEXT:    xxswapd vs11, vs11
2946 ; PWR9BE-NEXT:    xsadddp f1, f1, f11
2947 ; PWR9BE-NEXT:    xsadddp f1, f1, f10
2948 ; PWR9BE-NEXT:    xxswapd vs10, vs10
2949 ; PWR9BE-NEXT:    xsadddp f1, f1, f10
2950 ; PWR9BE-NEXT:    xsadddp f1, f1, f9
2951 ; PWR9BE-NEXT:    xxswapd vs9, vs9
2952 ; PWR9BE-NEXT:    xsadddp f1, f1, f9
2953 ; PWR9BE-NEXT:    xsadddp f1, f1, f8
2954 ; PWR9BE-NEXT:    xxswapd vs8, vs8
2955 ; PWR9BE-NEXT:    xsadddp f1, f1, f8
2956 ; PWR9BE-NEXT:    xsadddp f1, f1, f7
2957 ; PWR9BE-NEXT:    xxswapd vs7, vs7
2958 ; PWR9BE-NEXT:    xsadddp f1, f1, f7
2959 ; PWR9BE-NEXT:    xsadddp f1, f1, f6
2960 ; PWR9BE-NEXT:    xxswapd vs6, vs6
2961 ; PWR9BE-NEXT:    xsadddp f1, f1, f6
2962 ; PWR9BE-NEXT:    xsadddp f1, f1, f5
2963 ; PWR9BE-NEXT:    xxswapd vs5, vs5
2964 ; PWR9BE-NEXT:    xsadddp f1, f1, f5
2965 ; PWR9BE-NEXT:    xsadddp f1, f1, f4
2966 ; PWR9BE-NEXT:    xxswapd vs4, vs4
2967 ; PWR9BE-NEXT:    xsadddp f1, f1, f4
2968 ; PWR9BE-NEXT:    xsadddp f1, f1, f3
2969 ; PWR9BE-NEXT:    xxswapd vs3, vs3
2970 ; PWR9BE-NEXT:    xsadddp f1, f1, f3
2971 ; PWR9BE-NEXT:    xsadddp f1, f1, f2
2972 ; PWR9BE-NEXT:    xxswapd vs2, vs2
2973 ; PWR9BE-NEXT:    xsadddp f1, f1, f2
2974 ; PWR9BE-NEXT:    xsadddp f1, f1, f0
2975 ; PWR9BE-NEXT:    xxswapd vs0, vs0
2976 ; PWR9BE-NEXT:    xsadddp f1, f1, f0
2977 ; PWR9BE-NEXT:    blr
2979 ; PWR10LE-LABEL: v64f64_b:
2980 ; PWR10LE:       # %bb.0: # %entry
2981 ; PWR10LE-NEXT:    xxswapd v19, v2
2982 ; PWR10LE-NEXT:    lxv v18, 224(r1)
2983 ; PWR10LE-NEXT:    lxv v17, 240(r1)
2984 ; PWR10LE-NEXT:    xsadddp f1, f1, v19
2985 ; PWR10LE-NEXT:    lxv v16, 256(r1)
2986 ; PWR10LE-NEXT:    lxv v15, 272(r1)
2987 ; PWR10LE-NEXT:    lxv v14, 288(r1)
2988 ; PWR10LE-NEXT:    lxv v1, 304(r1)
2989 ; PWR10LE-NEXT:    lxv v0, 320(r1)
2990 ; PWR10LE-NEXT:    lxv vs13, 336(r1)
2991 ; PWR10LE-NEXT:    lxv vs12, 352(r1)
2992 ; PWR10LE-NEXT:    lxv vs11, 368(r1)
2993 ; PWR10LE-NEXT:    xsadddp f1, f1, v2
2994 ; PWR10LE-NEXT:    xxswapd v2, v3
2995 ; PWR10LE-NEXT:    lxv vs10, 384(r1)
2996 ; PWR10LE-NEXT:    lxv vs9, 400(r1)
2997 ; PWR10LE-NEXT:    lxv vs8, 416(r1)
2998 ; PWR10LE-NEXT:    lxv vs7, 432(r1)
2999 ; PWR10LE-NEXT:    lxv vs6, 448(r1)
3000 ; PWR10LE-NEXT:    lxv vs5, 464(r1)
3001 ; PWR10LE-NEXT:    lxv vs4, 480(r1)
3002 ; PWR10LE-NEXT:    lxv vs3, 496(r1)
3003 ; PWR10LE-NEXT:    lxv vs2, 512(r1)
3004 ; PWR10LE-NEXT:    lxv vs0, 528(r1)
3005 ; PWR10LE-NEXT:    xsadddp f1, f1, v2
3006 ; PWR10LE-NEXT:    xxswapd v2, v4
3007 ; PWR10LE-NEXT:    xsadddp f1, f1, v3
3008 ; PWR10LE-NEXT:    xsadddp f1, f1, v2
3009 ; PWR10LE-NEXT:    xxswapd v2, v5
3010 ; PWR10LE-NEXT:    xsadddp f1, f1, v4
3011 ; PWR10LE-NEXT:    xsadddp f1, f1, v2
3012 ; PWR10LE-NEXT:    xxswapd v2, v6
3013 ; PWR10LE-NEXT:    xsadddp f1, f1, v5
3014 ; PWR10LE-NEXT:    xsadddp f1, f1, v2
3015 ; PWR10LE-NEXT:    xxswapd v2, v7
3016 ; PWR10LE-NEXT:    xsadddp f1, f1, v6
3017 ; PWR10LE-NEXT:    xsadddp f1, f1, v2
3018 ; PWR10LE-NEXT:    xxswapd v2, v8
3019 ; PWR10LE-NEXT:    xsadddp f1, f1, v7
3020 ; PWR10LE-NEXT:    xsadddp f1, f1, v2
3021 ; PWR10LE-NEXT:    xxswapd v2, v9
3022 ; PWR10LE-NEXT:    xsadddp f1, f1, v8
3023 ; PWR10LE-NEXT:    xsadddp f1, f1, v2
3024 ; PWR10LE-NEXT:    xxswapd v2, v10
3025 ; PWR10LE-NEXT:    xsadddp f1, f1, v9
3026 ; PWR10LE-NEXT:    xsadddp f1, f1, v2
3027 ; PWR10LE-NEXT:    xxswapd v2, v11
3028 ; PWR10LE-NEXT:    xsadddp f1, f1, v10
3029 ; PWR10LE-NEXT:    xsadddp f1, f1, v2
3030 ; PWR10LE-NEXT:    xxswapd v2, v12
3031 ; PWR10LE-NEXT:    xsadddp f1, f1, v11
3032 ; PWR10LE-NEXT:    xsadddp f1, f1, v2
3033 ; PWR10LE-NEXT:    xxswapd v2, v13
3034 ; PWR10LE-NEXT:    xsadddp f1, f1, v12
3035 ; PWR10LE-NEXT:    xsadddp f1, f1, v2
3036 ; PWR10LE-NEXT:    xxswapd v2, v18
3037 ; PWR10LE-NEXT:    xsadddp f1, f1, v13
3038 ; PWR10LE-NEXT:    xsadddp f1, f1, v2
3039 ; PWR10LE-NEXT:    xxswapd v2, v17
3040 ; PWR10LE-NEXT:    xsadddp f1, f1, v18
3041 ; PWR10LE-NEXT:    xsadddp f1, f1, v2
3042 ; PWR10LE-NEXT:    xxswapd v2, v16
3043 ; PWR10LE-NEXT:    xsadddp f1, f1, v17
3044 ; PWR10LE-NEXT:    xsadddp f1, f1, v2
3045 ; PWR10LE-NEXT:    xxswapd v2, v15
3046 ; PWR10LE-NEXT:    xsadddp f1, f1, v16
3047 ; PWR10LE-NEXT:    xsadddp f1, f1, v2
3048 ; PWR10LE-NEXT:    xxswapd v2, v14
3049 ; PWR10LE-NEXT:    xsadddp f1, f1, v15
3050 ; PWR10LE-NEXT:    xsadddp f1, f1, v2
3051 ; PWR10LE-NEXT:    xxswapd v2, v1
3052 ; PWR10LE-NEXT:    xsadddp f1, f1, v14
3053 ; PWR10LE-NEXT:    xsadddp f1, f1, v2
3054 ; PWR10LE-NEXT:    xxswapd v2, v0
3055 ; PWR10LE-NEXT:    xsadddp f1, f1, v1
3056 ; PWR10LE-NEXT:    xsadddp f1, f1, v2
3057 ; PWR10LE-NEXT:    xxswapd v2, vs13
3058 ; PWR10LE-NEXT:    xsadddp f1, f1, v0
3059 ; PWR10LE-NEXT:    xsadddp f1, f1, v2
3060 ; PWR10LE-NEXT:    xsadddp f1, f1, f13
3061 ; PWR10LE-NEXT:    xxswapd vs13, vs12
3062 ; PWR10LE-NEXT:    xsadddp f1, f1, f13
3063 ; PWR10LE-NEXT:    xsadddp f1, f1, f12
3064 ; PWR10LE-NEXT:    xxswapd vs12, vs11
3065 ; PWR10LE-NEXT:    xsadddp f1, f1, f12
3066 ; PWR10LE-NEXT:    xsadddp f1, f1, f11
3067 ; PWR10LE-NEXT:    xxswapd vs11, vs10
3068 ; PWR10LE-NEXT:    xsadddp f1, f1, f11
3069 ; PWR10LE-NEXT:    xsadddp f1, f1, f10
3070 ; PWR10LE-NEXT:    xxswapd vs10, vs9
3071 ; PWR10LE-NEXT:    xsadddp f1, f1, f10
3072 ; PWR10LE-NEXT:    xsadddp f1, f1, f9
3073 ; PWR10LE-NEXT:    xxswapd vs9, vs8
3074 ; PWR10LE-NEXT:    xsadddp f1, f1, f9
3075 ; PWR10LE-NEXT:    xsadddp f1, f1, f8
3076 ; PWR10LE-NEXT:    xxswapd vs8, vs7
3077 ; PWR10LE-NEXT:    xsadddp f1, f1, f8
3078 ; PWR10LE-NEXT:    xsadddp f1, f1, f7
3079 ; PWR10LE-NEXT:    xxswapd vs7, vs6
3080 ; PWR10LE-NEXT:    xsadddp f1, f1, f7
3081 ; PWR10LE-NEXT:    xsadddp f1, f1, f6
3082 ; PWR10LE-NEXT:    xxswapd vs6, vs5
3083 ; PWR10LE-NEXT:    xsadddp f1, f1, f6
3084 ; PWR10LE-NEXT:    xsadddp f1, f1, f5
3085 ; PWR10LE-NEXT:    xxswapd vs5, vs4
3086 ; PWR10LE-NEXT:    xsadddp f1, f1, f5
3087 ; PWR10LE-NEXT:    xsadddp f1, f1, f4
3088 ; PWR10LE-NEXT:    xxswapd vs4, vs3
3089 ; PWR10LE-NEXT:    xsadddp f1, f1, f4
3090 ; PWR10LE-NEXT:    xsadddp f1, f1, f3
3091 ; PWR10LE-NEXT:    xxswapd vs3, vs2
3092 ; PWR10LE-NEXT:    xsadddp f1, f1, f3
3093 ; PWR10LE-NEXT:    xsadddp f1, f1, f2
3094 ; PWR10LE-NEXT:    xxswapd vs2, vs0
3095 ; PWR10LE-NEXT:    xsadddp f1, f1, f2
3096 ; PWR10LE-NEXT:    xsadddp f1, f1, f0
3097 ; PWR10LE-NEXT:    blr
3099 ; PWR10BE-LABEL: v64f64_b:
3100 ; PWR10BE:       # %bb.0: # %entry
3101 ; PWR10BE-NEXT:    xsadddp f1, f1, v2
3102 ; PWR10BE-NEXT:    xxswapd v2, v2
3103 ; PWR10BE-NEXT:    lxv v18, 240(r1)
3104 ; PWR10BE-NEXT:    lxv v17, 256(r1)
3105 ; PWR10BE-NEXT:    xsadddp f1, f1, v2
3106 ; PWR10BE-NEXT:    xxswapd v2, v3
3107 ; PWR10BE-NEXT:    lxv v16, 272(r1)
3108 ; PWR10BE-NEXT:    lxv v15, 288(r1)
3109 ; PWR10BE-NEXT:    lxv v14, 304(r1)
3110 ; PWR10BE-NEXT:    lxv v1, 320(r1)
3111 ; PWR10BE-NEXT:    lxv v0, 336(r1)
3112 ; PWR10BE-NEXT:    lxv vs13, 352(r1)
3113 ; PWR10BE-NEXT:    lxv vs12, 368(r1)
3114 ; PWR10BE-NEXT:    lxv vs11, 384(r1)
3115 ; PWR10BE-NEXT:    lxv vs10, 400(r1)
3116 ; PWR10BE-NEXT:    lxv vs9, 416(r1)
3117 ; PWR10BE-NEXT:    xsadddp f1, f1, v3
3118 ; PWR10BE-NEXT:    lxv vs8, 432(r1)
3119 ; PWR10BE-NEXT:    lxv vs7, 448(r1)
3120 ; PWR10BE-NEXT:    lxv vs6, 464(r1)
3121 ; PWR10BE-NEXT:    lxv vs5, 480(r1)
3122 ; PWR10BE-NEXT:    lxv vs4, 496(r1)
3123 ; PWR10BE-NEXT:    lxv vs3, 512(r1)
3124 ; PWR10BE-NEXT:    lxv vs2, 528(r1)
3125 ; PWR10BE-NEXT:    lxv vs0, 544(r1)
3126 ; PWR10BE-NEXT:    xsadddp f1, f1, v2
3127 ; PWR10BE-NEXT:    xxswapd v2, v4
3128 ; PWR10BE-NEXT:    xsadddp f1, f1, v4
3129 ; PWR10BE-NEXT:    xsadddp f1, f1, v2
3130 ; PWR10BE-NEXT:    xxswapd v2, v5
3131 ; PWR10BE-NEXT:    xsadddp f1, f1, v5
3132 ; PWR10BE-NEXT:    xsadddp f1, f1, v2
3133 ; PWR10BE-NEXT:    xxswapd v2, v6
3134 ; PWR10BE-NEXT:    xsadddp f1, f1, v6
3135 ; PWR10BE-NEXT:    xsadddp f1, f1, v2
3136 ; PWR10BE-NEXT:    xxswapd v2, v7
3137 ; PWR10BE-NEXT:    xsadddp f1, f1, v7
3138 ; PWR10BE-NEXT:    xsadddp f1, f1, v2
3139 ; PWR10BE-NEXT:    xxswapd v2, v8
3140 ; PWR10BE-NEXT:    xsadddp f1, f1, v8
3141 ; PWR10BE-NEXT:    xsadddp f1, f1, v2
3142 ; PWR10BE-NEXT:    xxswapd v2, v9
3143 ; PWR10BE-NEXT:    xsadddp f1, f1, v9
3144 ; PWR10BE-NEXT:    xsadddp f1, f1, v2
3145 ; PWR10BE-NEXT:    xxswapd v2, v10
3146 ; PWR10BE-NEXT:    xsadddp f1, f1, v10
3147 ; PWR10BE-NEXT:    xsadddp f1, f1, v2
3148 ; PWR10BE-NEXT:    xxswapd v2, v11
3149 ; PWR10BE-NEXT:    xsadddp f1, f1, v11
3150 ; PWR10BE-NEXT:    xsadddp f1, f1, v2
3151 ; PWR10BE-NEXT:    xxswapd v2, v12
3152 ; PWR10BE-NEXT:    xsadddp f1, f1, v12
3153 ; PWR10BE-NEXT:    xsadddp f1, f1, v2
3154 ; PWR10BE-NEXT:    xxswapd v2, v13
3155 ; PWR10BE-NEXT:    xsadddp f1, f1, v13
3156 ; PWR10BE-NEXT:    xsadddp f1, f1, v2
3157 ; PWR10BE-NEXT:    xxswapd v2, v18
3158 ; PWR10BE-NEXT:    xsadddp f1, f1, v18
3159 ; PWR10BE-NEXT:    xsadddp f1, f1, v2
3160 ; PWR10BE-NEXT:    xxswapd v2, v17
3161 ; PWR10BE-NEXT:    xsadddp f1, f1, v17
3162 ; PWR10BE-NEXT:    xsadddp f1, f1, v2
3163 ; PWR10BE-NEXT:    xxswapd v2, v16
3164 ; PWR10BE-NEXT:    xsadddp f1, f1, v16
3165 ; PWR10BE-NEXT:    xsadddp f1, f1, v2
3166 ; PWR10BE-NEXT:    xxswapd v2, v15
3167 ; PWR10BE-NEXT:    xsadddp f1, f1, v15
3168 ; PWR10BE-NEXT:    xsadddp f1, f1, v2
3169 ; PWR10BE-NEXT:    xxswapd v2, v14
3170 ; PWR10BE-NEXT:    xsadddp f1, f1, v14
3171 ; PWR10BE-NEXT:    xsadddp f1, f1, v2
3172 ; PWR10BE-NEXT:    xxswapd v2, v1
3173 ; PWR10BE-NEXT:    xsadddp f1, f1, v1
3174 ; PWR10BE-NEXT:    xsadddp f1, f1, v2
3175 ; PWR10BE-NEXT:    xxswapd v2, v0
3176 ; PWR10BE-NEXT:    xsadddp f1, f1, v0
3177 ; PWR10BE-NEXT:    xsadddp f1, f1, v2
3178 ; PWR10BE-NEXT:    xsadddp f1, f1, f13
3179 ; PWR10BE-NEXT:    xxswapd vs13, vs13
3180 ; PWR10BE-NEXT:    xsadddp f1, f1, f13
3181 ; PWR10BE-NEXT:    xsadddp f1, f1, f12
3182 ; PWR10BE-NEXT:    xxswapd vs12, vs12
3183 ; PWR10BE-NEXT:    xsadddp f1, f1, f12
3184 ; PWR10BE-NEXT:    xsadddp f1, f1, f11
3185 ; PWR10BE-NEXT:    xxswapd vs11, vs11
3186 ; PWR10BE-NEXT:    xsadddp f1, f1, f11
3187 ; PWR10BE-NEXT:    xsadddp f1, f1, f10
3188 ; PWR10BE-NEXT:    xxswapd vs10, vs10
3189 ; PWR10BE-NEXT:    xsadddp f1, f1, f10
3190 ; PWR10BE-NEXT:    xsadddp f1, f1, f9
3191 ; PWR10BE-NEXT:    xxswapd vs9, vs9
3192 ; PWR10BE-NEXT:    xsadddp f1, f1, f9
3193 ; PWR10BE-NEXT:    xsadddp f1, f1, f8
3194 ; PWR10BE-NEXT:    xxswapd vs8, vs8
3195 ; PWR10BE-NEXT:    xsadddp f1, f1, f8
3196 ; PWR10BE-NEXT:    xsadddp f1, f1, f7
3197 ; PWR10BE-NEXT:    xxswapd vs7, vs7
3198 ; PWR10BE-NEXT:    xsadddp f1, f1, f7
3199 ; PWR10BE-NEXT:    xsadddp f1, f1, f6
3200 ; PWR10BE-NEXT:    xxswapd vs6, vs6
3201 ; PWR10BE-NEXT:    xsadddp f1, f1, f6
3202 ; PWR10BE-NEXT:    xsadddp f1, f1, f5
3203 ; PWR10BE-NEXT:    xxswapd vs5, vs5
3204 ; PWR10BE-NEXT:    xsadddp f1, f1, f5
3205 ; PWR10BE-NEXT:    xsadddp f1, f1, f4
3206 ; PWR10BE-NEXT:    xxswapd vs4, vs4
3207 ; PWR10BE-NEXT:    xsadddp f1, f1, f4
3208 ; PWR10BE-NEXT:    xsadddp f1, f1, f3
3209 ; PWR10BE-NEXT:    xxswapd vs3, vs3
3210 ; PWR10BE-NEXT:    xsadddp f1, f1, f3
3211 ; PWR10BE-NEXT:    xsadddp f1, f1, f2
3212 ; PWR10BE-NEXT:    xxswapd vs2, vs2
3213 ; PWR10BE-NEXT:    xsadddp f1, f1, f2
3214 ; PWR10BE-NEXT:    xsadddp f1, f1, f0
3215 ; PWR10BE-NEXT:    xxswapd vs0, vs0
3216 ; PWR10BE-NEXT:    xsadddp f1, f1, f0
3217 ; PWR10BE-NEXT:    blr
3218 entry:
3219   %0 = call double @llvm.vector.reduce.fadd.v64f64(double %b, <64 x double> %a)
3220   ret double %0
3223 define dso_local double @v64f64_fast(<64 x double> %a) local_unnamed_addr #0 {
3224 ; PWR9LE-LABEL: v64f64_fast:
3225 ; PWR9LE:       # %bb.0: # %entry
3226 ; PWR9LE-NEXT:    lxv vs0, 368(r1)
3227 ; PWR9LE-NEXT:    lxv vs1, 496(r1)
3228 ; PWR9LE-NEXT:    lxv vs2, 240(r1)
3229 ; PWR9LE-NEXT:    lxv vs3, 304(r1)
3230 ; PWR9LE-NEXT:    xvadddp vs3, v3, vs3
3231 ; PWR9LE-NEXT:    lxv vs4, 432(r1)
3232 ; PWR9LE-NEXT:    lxv vs5, 400(r1)
3233 ; PWR9LE-NEXT:    lxv vs6, 528(r1)
3234 ; PWR9LE-NEXT:    lxv vs7, 272(r1)
3235 ; PWR9LE-NEXT:    lxv vs8, 336(r1)
3236 ; PWR9LE-NEXT:    lxv vs9, 464(r1)
3237 ; PWR9LE-NEXT:    lxv vs10, 352(r1)
3238 ; PWR9LE-NEXT:    lxv vs11, 480(r1)
3239 ; PWR9LE-NEXT:    lxv vs12, 224(r1)
3240 ; PWR9LE-NEXT:    lxv vs13, 288(r1)
3241 ; PWR9LE-NEXT:    lxv v0, 416(r1)
3242 ; PWR9LE-NEXT:    lxv v1, 384(r1)
3243 ; PWR9LE-NEXT:    lxv v14, 512(r1)
3244 ; PWR9LE-NEXT:    lxv v15, 256(r1)
3245 ; PWR9LE-NEXT:    lxv v16, 320(r1)
3246 ; PWR9LE-NEXT:    lxv v17, 448(r1)
3247 ; PWR9LE-NEXT:    xvadddp v12, v12, v17
3248 ; PWR9LE-NEXT:    xvadddp v4, v4, v16
3249 ; PWR9LE-NEXT:    xvadddp v14, v15, v14
3250 ; PWR9LE-NEXT:    xvadddp v1, v8, v1
3251 ; PWR9LE-NEXT:    xvadddp v0, v10, v0
3252 ; PWR9LE-NEXT:    xvadddp vs13, v2, vs13
3253 ; PWR9LE-NEXT:    xvadddp vs11, vs12, vs11
3254 ; PWR9LE-NEXT:    xvadddp vs10, v6, vs10
3255 ; PWR9LE-NEXT:    xvadddp vs9, v13, vs9
3256 ; PWR9LE-NEXT:    xvadddp vs8, v5, vs8
3257 ; PWR9LE-NEXT:    xvadddp vs6, vs7, vs6
3258 ; PWR9LE-NEXT:    xvadddp vs5, v9, vs5
3259 ; PWR9LE-NEXT:    xvadddp vs4, v11, vs4
3260 ; PWR9LE-NEXT:    xvadddp vs1, vs2, vs1
3261 ; PWR9LE-NEXT:    xvadddp vs0, v7, vs0
3262 ; PWR9LE-NEXT:    xvadddp vs0, vs0, vs1
3263 ; PWR9LE-NEXT:    xvadddp vs1, vs3, vs4
3264 ; PWR9LE-NEXT:    xvadddp vs2, vs5, vs6
3265 ; PWR9LE-NEXT:    xvadddp vs3, vs8, vs9
3266 ; PWR9LE-NEXT:    xvadddp vs4, vs10, vs11
3267 ; PWR9LE-NEXT:    xvadddp vs5, vs13, v0
3268 ; PWR9LE-NEXT:    xvadddp vs6, v1, v14
3269 ; PWR9LE-NEXT:    xvadddp vs7, v4, v12
3270 ; PWR9LE-NEXT:    xvadddp vs6, vs7, vs6
3271 ; PWR9LE-NEXT:    xvadddp vs4, vs5, vs4
3272 ; PWR9LE-NEXT:    xvadddp vs2, vs3, vs2
3273 ; PWR9LE-NEXT:    xvadddp vs0, vs1, vs0
3274 ; PWR9LE-NEXT:    xvadddp vs0, vs0, vs2
3275 ; PWR9LE-NEXT:    xvadddp vs1, vs4, vs6
3276 ; PWR9LE-NEXT:    xvadddp vs0, vs1, vs0
3277 ; PWR9LE-NEXT:    xxswapd vs1, vs0
3278 ; PWR9LE-NEXT:    xvadddp vs0, vs0, vs1
3279 ; PWR9LE-NEXT:    xxswapd vs1, vs0
3280 ; PWR9LE-NEXT:    blr
3282 ; PWR9BE-LABEL: v64f64_fast:
3283 ; PWR9BE:       # %bb.0: # %entry
3284 ; PWR9BE-NEXT:    lxv vs0, 384(r1)
3285 ; PWR9BE-NEXT:    lxv vs1, 512(r1)
3286 ; PWR9BE-NEXT:    lxv vs2, 256(r1)
3287 ; PWR9BE-NEXT:    lxv vs3, 320(r1)
3288 ; PWR9BE-NEXT:    xvadddp vs3, v3, vs3
3289 ; PWR9BE-NEXT:    lxv vs4, 448(r1)
3290 ; PWR9BE-NEXT:    lxv vs5, 416(r1)
3291 ; PWR9BE-NEXT:    lxv vs6, 544(r1)
3292 ; PWR9BE-NEXT:    lxv vs7, 288(r1)
3293 ; PWR9BE-NEXT:    lxv vs8, 352(r1)
3294 ; PWR9BE-NEXT:    lxv vs9, 480(r1)
3295 ; PWR9BE-NEXT:    lxv vs10, 368(r1)
3296 ; PWR9BE-NEXT:    lxv vs11, 496(r1)
3297 ; PWR9BE-NEXT:    lxv vs12, 240(r1)
3298 ; PWR9BE-NEXT:    lxv vs13, 304(r1)
3299 ; PWR9BE-NEXT:    lxv v0, 432(r1)
3300 ; PWR9BE-NEXT:    lxv v1, 400(r1)
3301 ; PWR9BE-NEXT:    lxv v14, 528(r1)
3302 ; PWR9BE-NEXT:    lxv v15, 272(r1)
3303 ; PWR9BE-NEXT:    lxv v16, 336(r1)
3304 ; PWR9BE-NEXT:    lxv v17, 464(r1)
3305 ; PWR9BE-NEXT:    xvadddp v12, v12, v17
3306 ; PWR9BE-NEXT:    xvadddp v4, v4, v16
3307 ; PWR9BE-NEXT:    xvadddp v14, v15, v14
3308 ; PWR9BE-NEXT:    xvadddp v1, v8, v1
3309 ; PWR9BE-NEXT:    xvadddp v0, v10, v0
3310 ; PWR9BE-NEXT:    xvadddp vs13, v2, vs13
3311 ; PWR9BE-NEXT:    xvadddp vs11, vs12, vs11
3312 ; PWR9BE-NEXT:    xvadddp vs10, v6, vs10
3313 ; PWR9BE-NEXT:    xvadddp vs9, v13, vs9
3314 ; PWR9BE-NEXT:    xvadddp vs8, v5, vs8
3315 ; PWR9BE-NEXT:    xvadddp vs6, vs7, vs6
3316 ; PWR9BE-NEXT:    xvadddp vs5, v9, vs5
3317 ; PWR9BE-NEXT:    xvadddp vs4, v11, vs4
3318 ; PWR9BE-NEXT:    xvadddp vs1, vs2, vs1
3319 ; PWR9BE-NEXT:    xvadddp vs0, v7, vs0
3320 ; PWR9BE-NEXT:    xvadddp vs0, vs0, vs1
3321 ; PWR9BE-NEXT:    xvadddp vs1, vs3, vs4
3322 ; PWR9BE-NEXT:    xvadddp vs2, vs5, vs6
3323 ; PWR9BE-NEXT:    xvadddp vs3, vs8, vs9
3324 ; PWR9BE-NEXT:    xvadddp vs4, vs10, vs11
3325 ; PWR9BE-NEXT:    xvadddp vs5, vs13, v0
3326 ; PWR9BE-NEXT:    xvadddp vs6, v1, v14
3327 ; PWR9BE-NEXT:    xvadddp vs7, v4, v12
3328 ; PWR9BE-NEXT:    xvadddp vs6, vs7, vs6
3329 ; PWR9BE-NEXT:    xvadddp vs4, vs5, vs4
3330 ; PWR9BE-NEXT:    xvadddp vs2, vs3, vs2
3331 ; PWR9BE-NEXT:    xvadddp vs0, vs1, vs0
3332 ; PWR9BE-NEXT:    xvadddp vs0, vs0, vs2
3333 ; PWR9BE-NEXT:    xvadddp vs1, vs4, vs6
3334 ; PWR9BE-NEXT:    xvadddp vs0, vs1, vs0
3335 ; PWR9BE-NEXT:    xxswapd vs1, vs0
3336 ; PWR9BE-NEXT:    xvadddp vs1, vs0, vs1
3337 ; PWR9BE-NEXT:    blr
3339 ; PWR10LE-LABEL: v64f64_fast:
3340 ; PWR10LE:       # %bb.0: # %entry
3341 ; PWR10LE-NEXT:    lxv vs0, 368(r1)
3342 ; PWR10LE-NEXT:    lxv vs1, 496(r1)
3343 ; PWR10LE-NEXT:    xvadddp vs0, v7, vs0
3344 ; PWR10LE-NEXT:    lxv vs2, 240(r1)
3345 ; PWR10LE-NEXT:    lxv vs3, 304(r1)
3346 ; PWR10LE-NEXT:    lxv vs4, 432(r1)
3347 ; PWR10LE-NEXT:    lxv vs5, 400(r1)
3348 ; PWR10LE-NEXT:    lxv vs6, 528(r1)
3349 ; PWR10LE-NEXT:    lxv vs7, 272(r1)
3350 ; PWR10LE-NEXT:    lxv vs8, 336(r1)
3351 ; PWR10LE-NEXT:    lxv vs9, 464(r1)
3352 ; PWR10LE-NEXT:    lxv vs10, 352(r1)
3353 ; PWR10LE-NEXT:    lxv vs11, 480(r1)
3354 ; PWR10LE-NEXT:    lxv vs12, 224(r1)
3355 ; PWR10LE-NEXT:    lxv vs13, 288(r1)
3356 ; PWR10LE-NEXT:    xvadddp vs13, v2, vs13
3357 ; PWR10LE-NEXT:    xvadddp vs11, vs12, vs11
3358 ; PWR10LE-NEXT:    xvadddp vs10, v6, vs10
3359 ; PWR10LE-NEXT:    xvadddp vs9, v13, vs9
3360 ; PWR10LE-NEXT:    xvadddp vs8, v5, vs8
3361 ; PWR10LE-NEXT:    xvadddp vs6, vs7, vs6
3362 ; PWR10LE-NEXT:    xvadddp vs5, v9, vs5
3363 ; PWR10LE-NEXT:    xvadddp vs4, v11, vs4
3364 ; PWR10LE-NEXT:    xvadddp vs3, v3, vs3
3365 ; PWR10LE-NEXT:    xvadddp vs1, vs2, vs1
3366 ; PWR10LE-NEXT:    xvadddp vs0, vs0, vs1
3367 ; PWR10LE-NEXT:    lxv v0, 416(r1)
3368 ; PWR10LE-NEXT:    lxv v1, 384(r1)
3369 ; PWR10LE-NEXT:    lxv v14, 512(r1)
3370 ; PWR10LE-NEXT:    lxv v15, 256(r1)
3371 ; PWR10LE-NEXT:    lxv v16, 320(r1)
3372 ; PWR10LE-NEXT:    lxv v17, 448(r1)
3373 ; PWR10LE-NEXT:    xvadddp v12, v12, v17
3374 ; PWR10LE-NEXT:    xvadddp v4, v4, v16
3375 ; PWR10LE-NEXT:    xvadddp v14, v15, v14
3376 ; PWR10LE-NEXT:    xvadddp v1, v8, v1
3377 ; PWR10LE-NEXT:    xvadddp v0, v10, v0
3378 ; PWR10LE-NEXT:    xvadddp vs1, vs3, vs4
3379 ; PWR10LE-NEXT:    xvadddp vs2, vs5, vs6
3380 ; PWR10LE-NEXT:    xvadddp vs3, vs8, vs9
3381 ; PWR10LE-NEXT:    xvadddp vs4, vs10, vs11
3382 ; PWR10LE-NEXT:    xvadddp vs5, vs13, v0
3383 ; PWR10LE-NEXT:    xvadddp vs6, v1, v14
3384 ; PWR10LE-NEXT:    xvadddp vs7, v4, v12
3385 ; PWR10LE-NEXT:    xvadddp vs6, vs7, vs6
3386 ; PWR10LE-NEXT:    xvadddp vs4, vs5, vs4
3387 ; PWR10LE-NEXT:    xvadddp vs2, vs3, vs2
3388 ; PWR10LE-NEXT:    xvadddp vs0, vs1, vs0
3389 ; PWR10LE-NEXT:    xvadddp vs0, vs0, vs2
3390 ; PWR10LE-NEXT:    xvadddp vs1, vs4, vs6
3391 ; PWR10LE-NEXT:    xvadddp vs0, vs1, vs0
3392 ; PWR10LE-NEXT:    xxswapd vs1, vs0
3393 ; PWR10LE-NEXT:    xvadddp vs0, vs0, vs1
3394 ; PWR10LE-NEXT:    xxswapd vs1, vs0
3395 ; PWR10LE-NEXT:    blr
3397 ; PWR10BE-LABEL: v64f64_fast:
3398 ; PWR10BE:       # %bb.0: # %entry
3399 ; PWR10BE-NEXT:    lxv vs0, 384(r1)
3400 ; PWR10BE-NEXT:    lxv vs1, 512(r1)
3401 ; PWR10BE-NEXT:    xvadddp vs0, v7, vs0
3402 ; PWR10BE-NEXT:    lxv vs2, 256(r1)
3403 ; PWR10BE-NEXT:    lxv vs3, 320(r1)
3404 ; PWR10BE-NEXT:    lxv vs4, 448(r1)
3405 ; PWR10BE-NEXT:    lxv vs5, 416(r1)
3406 ; PWR10BE-NEXT:    lxv vs6, 544(r1)
3407 ; PWR10BE-NEXT:    lxv vs7, 288(r1)
3408 ; PWR10BE-NEXT:    lxv vs8, 352(r1)
3409 ; PWR10BE-NEXT:    lxv vs9, 480(r1)
3410 ; PWR10BE-NEXT:    lxv vs10, 368(r1)
3411 ; PWR10BE-NEXT:    lxv vs11, 496(r1)
3412 ; PWR10BE-NEXT:    lxv vs12, 240(r1)
3413 ; PWR10BE-NEXT:    lxv vs13, 304(r1)
3414 ; PWR10BE-NEXT:    xvadddp vs13, v2, vs13
3415 ; PWR10BE-NEXT:    xvadddp vs11, vs12, vs11
3416 ; PWR10BE-NEXT:    xvadddp vs10, v6, vs10
3417 ; PWR10BE-NEXT:    xvadddp vs9, v13, vs9
3418 ; PWR10BE-NEXT:    xvadddp vs8, v5, vs8
3419 ; PWR10BE-NEXT:    xvadddp vs6, vs7, vs6
3420 ; PWR10BE-NEXT:    xvadddp vs5, v9, vs5
3421 ; PWR10BE-NEXT:    xvadddp vs4, v11, vs4
3422 ; PWR10BE-NEXT:    xvadddp vs3, v3, vs3
3423 ; PWR10BE-NEXT:    xvadddp vs1, vs2, vs1
3424 ; PWR10BE-NEXT:    xvadddp vs0, vs0, vs1
3425 ; PWR10BE-NEXT:    lxv v0, 432(r1)
3426 ; PWR10BE-NEXT:    lxv v1, 400(r1)
3427 ; PWR10BE-NEXT:    lxv v14, 528(r1)
3428 ; PWR10BE-NEXT:    lxv v15, 272(r1)
3429 ; PWR10BE-NEXT:    lxv v16, 336(r1)
3430 ; PWR10BE-NEXT:    lxv v17, 464(r1)
3431 ; PWR10BE-NEXT:    xvadddp v12, v12, v17
3432 ; PWR10BE-NEXT:    xvadddp v4, v4, v16
3433 ; PWR10BE-NEXT:    xvadddp v14, v15, v14
3434 ; PWR10BE-NEXT:    xvadddp v1, v8, v1
3435 ; PWR10BE-NEXT:    xvadddp v0, v10, v0
3436 ; PWR10BE-NEXT:    xvadddp vs1, vs3, vs4
3437 ; PWR10BE-NEXT:    xvadddp vs2, vs5, vs6
3438 ; PWR10BE-NEXT:    xvadddp vs3, vs8, vs9
3439 ; PWR10BE-NEXT:    xvadddp vs4, vs10, vs11
3440 ; PWR10BE-NEXT:    xvadddp vs5, vs13, v0
3441 ; PWR10BE-NEXT:    xvadddp vs6, v1, v14
3442 ; PWR10BE-NEXT:    xvadddp vs7, v4, v12
3443 ; PWR10BE-NEXT:    xvadddp vs6, vs7, vs6
3444 ; PWR10BE-NEXT:    xvadddp vs4, vs5, vs4
3445 ; PWR10BE-NEXT:    xvadddp vs2, vs3, vs2
3446 ; PWR10BE-NEXT:    xvadddp vs0, vs1, vs0
3447 ; PWR10BE-NEXT:    xvadddp vs0, vs0, vs2
3448 ; PWR10BE-NEXT:    xvadddp vs1, vs4, vs6
3449 ; PWR10BE-NEXT:    xvadddp vs0, vs1, vs0
3450 ; PWR10BE-NEXT:    xxswapd vs1, vs0
3451 ; PWR10BE-NEXT:    xvadddp vs1, vs0, vs1
3452 ; PWR10BE-NEXT:    blr
3453 entry:
3454   %0 = call fast double @llvm.vector.reduce.fadd.v64f64(double -0.000000e+00, <64 x double> %a)
3455   ret double %0
3458 declare double @llvm.vector.reduce.fadd.v2f64(double, <2 x double>) #0
3459 declare double @llvm.vector.reduce.fadd.v4f64(double, <4 x double>) #0
3460 declare double @llvm.vector.reduce.fadd.v8f64(double, <8 x double>) #0
3461 declare double @llvm.vector.reduce.fadd.v16f64(double, <16 x double>) #0
3462 declare double @llvm.vector.reduce.fadd.v32f64(double, <32 x double>) #0
3463 declare double @llvm.vector.reduce.fadd.v64f64(double, <64 x double>) #0
3466 ;; Vectors of ppc_fp128
3468 define dso_local ppc_fp128 @v2ppcf128(<2 x ppc_fp128> %a) local_unnamed_addr #0 {
3469 ; PWR9LE-LABEL: v2ppcf128:
3470 ; PWR9LE:       # %bb.0: # %entry
3471 ; PWR9LE-NEXT:    mflr r0
3472 ; PWR9LE-NEXT:    stdu r1, -32(r1)
3473 ; PWR9LE-NEXT:    std r0, 48(r1)
3474 ; PWR9LE-NEXT:    bl __gcc_qadd
3475 ; PWR9LE-NEXT:    nop
3476 ; PWR9LE-NEXT:    addi r1, r1, 32
3477 ; PWR9LE-NEXT:    ld r0, 16(r1)
3478 ; PWR9LE-NEXT:    mtlr r0
3479 ; PWR9LE-NEXT:    blr
3481 ; PWR9BE-LABEL: v2ppcf128:
3482 ; PWR9BE:       # %bb.0: # %entry
3483 ; PWR9BE-NEXT:    mflr r0
3484 ; PWR9BE-NEXT:    stdu r1, -112(r1)
3485 ; PWR9BE-NEXT:    std r0, 128(r1)
3486 ; PWR9BE-NEXT:    bl __gcc_qadd
3487 ; PWR9BE-NEXT:    nop
3488 ; PWR9BE-NEXT:    addi r1, r1, 112
3489 ; PWR9BE-NEXT:    ld r0, 16(r1)
3490 ; PWR9BE-NEXT:    mtlr r0
3491 ; PWR9BE-NEXT:    blr
3493 ; PWR10LE-LABEL: v2ppcf128:
3494 ; PWR10LE:       # %bb.0: # %entry
3495 ; PWR10LE-NEXT:    mflr r0
3496 ; PWR10LE-NEXT:    std r0, 16(r1)
3497 ; PWR10LE-NEXT:    stdu r1, -32(r1)
3498 ; PWR10LE-NEXT:    bl __gcc_qadd@notoc
3499 ; PWR10LE-NEXT:    addi r1, r1, 32
3500 ; PWR10LE-NEXT:    ld r0, 16(r1)
3501 ; PWR10LE-NEXT:    mtlr r0
3502 ; PWR10LE-NEXT:    blr
3504 ; PWR10BE-LABEL: v2ppcf128:
3505 ; PWR10BE:       # %bb.0: # %entry
3506 ; PWR10BE-NEXT:    mflr r0
3507 ; PWR10BE-NEXT:    std r0, 16(r1)
3508 ; PWR10BE-NEXT:    stdu r1, -112(r1)
3509 ; PWR10BE-NEXT:    bl __gcc_qadd
3510 ; PWR10BE-NEXT:    nop
3511 ; PWR10BE-NEXT:    addi r1, r1, 112
3512 ; PWR10BE-NEXT:    ld r0, 16(r1)
3513 ; PWR10BE-NEXT:    mtlr r0
3514 ; PWR10BE-NEXT:    blr
3515 entry:
3516   %0 = call ppc_fp128 @llvm.vector.reduce.fadd.v2ppcf128(ppc_fp128 0xM80000000000000000000000000000000, <2 x ppc_fp128> %a)
3517   ret ppc_fp128 %0
3520 define dso_local ppc_fp128 @v2ppcf128_b(<2 x ppc_fp128> %a, ppc_fp128 %b) local_unnamed_addr #0 {
3521 ; PWR9LE-LABEL: v2ppcf128_b:
3522 ; PWR9LE:       # %bb.0: # %entry
3523 ; PWR9LE-NEXT:    mflr r0
3524 ; PWR9LE-NEXT:    stfd f30, -16(r1) # 8-byte Folded Spill
3525 ; PWR9LE-NEXT:    stfd f31, -8(r1) # 8-byte Folded Spill
3526 ; PWR9LE-NEXT:    stdu r1, -48(r1)
3527 ; PWR9LE-NEXT:    fmr f31, f4
3528 ; PWR9LE-NEXT:    fmr f30, f3
3529 ; PWR9LE-NEXT:    fmr f4, f2
3530 ; PWR9LE-NEXT:    fmr f3, f1
3531 ; PWR9LE-NEXT:    fmr f1, f5
3532 ; PWR9LE-NEXT:    fmr f2, f6
3533 ; PWR9LE-NEXT:    std r0, 64(r1)
3534 ; PWR9LE-NEXT:    bl __gcc_qadd
3535 ; PWR9LE-NEXT:    nop
3536 ; PWR9LE-NEXT:    fmr f3, f30
3537 ; PWR9LE-NEXT:    fmr f4, f31
3538 ; PWR9LE-NEXT:    bl __gcc_qadd
3539 ; PWR9LE-NEXT:    nop
3540 ; PWR9LE-NEXT:    addi r1, r1, 48
3541 ; PWR9LE-NEXT:    ld r0, 16(r1)
3542 ; PWR9LE-NEXT:    lfd f31, -8(r1) # 8-byte Folded Reload
3543 ; PWR9LE-NEXT:    lfd f30, -16(r1) # 8-byte Folded Reload
3544 ; PWR9LE-NEXT:    mtlr r0
3545 ; PWR9LE-NEXT:    blr
3547 ; PWR9BE-LABEL: v2ppcf128_b:
3548 ; PWR9BE:       # %bb.0: # %entry
3549 ; PWR9BE-NEXT:    mflr r0
3550 ; PWR9BE-NEXT:    stdu r1, -128(r1)
3551 ; PWR9BE-NEXT:    std r0, 144(r1)
3552 ; PWR9BE-NEXT:    stfd f30, 112(r1) # 8-byte Folded Spill
3553 ; PWR9BE-NEXT:    stfd f31, 120(r1) # 8-byte Folded Spill
3554 ; PWR9BE-NEXT:    fmr f31, f4
3555 ; PWR9BE-NEXT:    fmr f30, f3
3556 ; PWR9BE-NEXT:    fmr f4, f2
3557 ; PWR9BE-NEXT:    fmr f3, f1
3558 ; PWR9BE-NEXT:    fmr f1, f5
3559 ; PWR9BE-NEXT:    fmr f2, f6
3560 ; PWR9BE-NEXT:    bl __gcc_qadd
3561 ; PWR9BE-NEXT:    nop
3562 ; PWR9BE-NEXT:    fmr f3, f30
3563 ; PWR9BE-NEXT:    fmr f4, f31
3564 ; PWR9BE-NEXT:    bl __gcc_qadd
3565 ; PWR9BE-NEXT:    nop
3566 ; PWR9BE-NEXT:    lfd f31, 120(r1) # 8-byte Folded Reload
3567 ; PWR9BE-NEXT:    lfd f30, 112(r1) # 8-byte Folded Reload
3568 ; PWR9BE-NEXT:    addi r1, r1, 128
3569 ; PWR9BE-NEXT:    ld r0, 16(r1)
3570 ; PWR9BE-NEXT:    mtlr r0
3571 ; PWR9BE-NEXT:    blr
3573 ; PWR10LE-LABEL: v2ppcf128_b:
3574 ; PWR10LE:       # %bb.0: # %entry
3575 ; PWR10LE-NEXT:    mflr r0
3576 ; PWR10LE-NEXT:    stfd f30, -16(r1) # 8-byte Folded Spill
3577 ; PWR10LE-NEXT:    stfd f31, -8(r1) # 8-byte Folded Spill
3578 ; PWR10LE-NEXT:    std r0, 16(r1)
3579 ; PWR10LE-NEXT:    stdu r1, -48(r1)
3580 ; PWR10LE-NEXT:    fmr f31, f4
3581 ; PWR10LE-NEXT:    fmr f30, f3
3582 ; PWR10LE-NEXT:    fmr f4, f2
3583 ; PWR10LE-NEXT:    fmr f3, f1
3584 ; PWR10LE-NEXT:    fmr f1, f5
3585 ; PWR10LE-NEXT:    fmr f2, f6
3586 ; PWR10LE-NEXT:    bl __gcc_qadd@notoc
3587 ; PWR10LE-NEXT:    fmr f3, f30
3588 ; PWR10LE-NEXT:    fmr f4, f31
3589 ; PWR10LE-NEXT:    bl __gcc_qadd@notoc
3590 ; PWR10LE-NEXT:    addi r1, r1, 48
3591 ; PWR10LE-NEXT:    ld r0, 16(r1)
3592 ; PWR10LE-NEXT:    lfd f31, -8(r1) # 8-byte Folded Reload
3593 ; PWR10LE-NEXT:    mtlr r0
3594 ; PWR10LE-NEXT:    lfd f30, -16(r1) # 8-byte Folded Reload
3595 ; PWR10LE-NEXT:    blr
3597 ; PWR10BE-LABEL: v2ppcf128_b:
3598 ; PWR10BE:       # %bb.0: # %entry
3599 ; PWR10BE-NEXT:    mflr r0
3600 ; PWR10BE-NEXT:    std r0, 16(r1)
3601 ; PWR10BE-NEXT:    stdu r1, -128(r1)
3602 ; PWR10BE-NEXT:    stfd f30, 112(r1) # 8-byte Folded Spill
3603 ; PWR10BE-NEXT:    stfd f31, 120(r1) # 8-byte Folded Spill
3604 ; PWR10BE-NEXT:    fmr f31, f4
3605 ; PWR10BE-NEXT:    fmr f30, f3
3606 ; PWR10BE-NEXT:    fmr f4, f2
3607 ; PWR10BE-NEXT:    fmr f3, f1
3608 ; PWR10BE-NEXT:    fmr f1, f5
3609 ; PWR10BE-NEXT:    fmr f2, f6
3610 ; PWR10BE-NEXT:    bl __gcc_qadd
3611 ; PWR10BE-NEXT:    nop
3612 ; PWR10BE-NEXT:    fmr f3, f30
3613 ; PWR10BE-NEXT:    fmr f4, f31
3614 ; PWR10BE-NEXT:    bl __gcc_qadd
3615 ; PWR10BE-NEXT:    nop
3616 ; PWR10BE-NEXT:    lfd f31, 120(r1) # 8-byte Folded Reload
3617 ; PWR10BE-NEXT:    lfd f30, 112(r1) # 8-byte Folded Reload
3618 ; PWR10BE-NEXT:    addi r1, r1, 128
3619 ; PWR10BE-NEXT:    ld r0, 16(r1)
3620 ; PWR10BE-NEXT:    mtlr r0
3621 ; PWR10BE-NEXT:    blr
3622 entry:
3623   %0 = call ppc_fp128 @llvm.vector.reduce.fadd.v2ppcf128(ppc_fp128 %b, <2 x ppc_fp128> %a)
3624   ret ppc_fp128 %0
3627 define dso_local ppc_fp128 @v2ppcf128_fast(<2 x ppc_fp128> %a) local_unnamed_addr #0 {
3628 ; PWR9LE-LABEL: v2ppcf128_fast:
3629 ; PWR9LE:       # %bb.0: # %entry
3630 ; PWR9LE-NEXT:    mflr r0
3631 ; PWR9LE-NEXT:    stdu r1, -64(r1)
3632 ; PWR9LE-NEXT:    std r0, 80(r1)
3633 ; PWR9LE-NEXT:    bl __gcc_qadd
3634 ; PWR9LE-NEXT:    nop
3635 ; PWR9LE-NEXT:    stfd f2, 40(r1)
3636 ; PWR9LE-NEXT:    stfd f1, 32(r1)
3637 ; PWR9LE-NEXT:    lxv vs1, 32(r1)
3638 ; PWR9LE-NEXT:    xxswapd vs2, vs1
3639 ; PWR9LE-NEXT:    addi r1, r1, 64
3640 ; PWR9LE-NEXT:    ld r0, 16(r1)
3641 ; PWR9LE-NEXT:    mtlr r0
3642 ; PWR9LE-NEXT:    blr
3644 ; PWR9BE-LABEL: v2ppcf128_fast:
3645 ; PWR9BE:       # %bb.0: # %entry
3646 ; PWR9BE-NEXT:    mflr r0
3647 ; PWR9BE-NEXT:    stdu r1, -144(r1)
3648 ; PWR9BE-NEXT:    std r0, 160(r1)
3649 ; PWR9BE-NEXT:    bl __gcc_qadd
3650 ; PWR9BE-NEXT:    nop
3651 ; PWR9BE-NEXT:    stfd f2, 120(r1)
3652 ; PWR9BE-NEXT:    stfd f1, 112(r1)
3653 ; PWR9BE-NEXT:    lxv vs1, 112(r1)
3654 ; PWR9BE-NEXT:    xxswapd vs2, vs1
3655 ; PWR9BE-NEXT:    addi r1, r1, 144
3656 ; PWR9BE-NEXT:    ld r0, 16(r1)
3657 ; PWR9BE-NEXT:    mtlr r0
3658 ; PWR9BE-NEXT:    blr
3660 ; PWR10LE-LABEL: v2ppcf128_fast:
3661 ; PWR10LE:       # %bb.0: # %entry
3662 ; PWR10LE-NEXT:    mflr r0
3663 ; PWR10LE-NEXT:    std r0, 16(r1)
3664 ; PWR10LE-NEXT:    stdu r1, -64(r1)
3665 ; PWR10LE-NEXT:    bl __gcc_qadd@notoc
3666 ; PWR10LE-NEXT:    stfd f2, 40(r1)
3667 ; PWR10LE-NEXT:    stfd f1, 32(r1)
3668 ; PWR10LE-NEXT:    lxv vs1, 32(r1)
3669 ; PWR10LE-NEXT:    xxswapd vs2, vs1
3670 ; PWR10LE-NEXT:    addi r1, r1, 64
3671 ; PWR10LE-NEXT:    ld r0, 16(r1)
3672 ; PWR10LE-NEXT:    mtlr r0
3673 ; PWR10LE-NEXT:    blr
3675 ; PWR10BE-LABEL: v2ppcf128_fast:
3676 ; PWR10BE:       # %bb.0: # %entry
3677 ; PWR10BE-NEXT:    mflr r0
3678 ; PWR10BE-NEXT:    std r0, 16(r1)
3679 ; PWR10BE-NEXT:    stdu r1, -144(r1)
3680 ; PWR10BE-NEXT:    bl __gcc_qadd
3681 ; PWR10BE-NEXT:    nop
3682 ; PWR10BE-NEXT:    stfd f2, 120(r1)
3683 ; PWR10BE-NEXT:    stfd f1, 112(r1)
3684 ; PWR10BE-NEXT:    lxv vs1, 112(r1)
3685 ; PWR10BE-NEXT:    xxswapd vs2, vs1
3686 ; PWR10BE-NEXT:    addi r1, r1, 144
3687 ; PWR10BE-NEXT:    ld r0, 16(r1)
3688 ; PWR10BE-NEXT:    mtlr r0
3689 ; PWR10BE-NEXT:    blr
3690 entry:
3691   %0 = call fast ppc_fp128 @llvm.vector.reduce.fadd.v2ppcf128(ppc_fp128 0xM80000000000000000000000000000000, <2 x ppc_fp128> %a)
3692   ret ppc_fp128 %0
3695 define dso_local ppc_fp128 @v4ppcf128(<4 x ppc_fp128> %a) local_unnamed_addr #0 {
3696 ; PWR9LE-LABEL: v4ppcf128:
3697 ; PWR9LE:       # %bb.0: # %entry
3698 ; PWR9LE-NEXT:    mflr r0
3699 ; PWR9LE-NEXT:    stfd f28, -32(r1) # 8-byte Folded Spill
3700 ; PWR9LE-NEXT:    stfd f29, -24(r1) # 8-byte Folded Spill
3701 ; PWR9LE-NEXT:    stfd f30, -16(r1) # 8-byte Folded Spill
3702 ; PWR9LE-NEXT:    stfd f31, -8(r1) # 8-byte Folded Spill
3703 ; PWR9LE-NEXT:    stdu r1, -64(r1)
3704 ; PWR9LE-NEXT:    std r0, 80(r1)
3705 ; PWR9LE-NEXT:    fmr f31, f8
3706 ; PWR9LE-NEXT:    fmr f30, f7
3707 ; PWR9LE-NEXT:    fmr f29, f6
3708 ; PWR9LE-NEXT:    fmr f28, f5
3709 ; PWR9LE-NEXT:    bl __gcc_qadd
3710 ; PWR9LE-NEXT:    nop
3711 ; PWR9LE-NEXT:    fmr f3, f28
3712 ; PWR9LE-NEXT:    fmr f4, f29
3713 ; PWR9LE-NEXT:    bl __gcc_qadd
3714 ; PWR9LE-NEXT:    nop
3715 ; PWR9LE-NEXT:    fmr f3, f30
3716 ; PWR9LE-NEXT:    fmr f4, f31
3717 ; PWR9LE-NEXT:    bl __gcc_qadd
3718 ; PWR9LE-NEXT:    nop
3719 ; PWR9LE-NEXT:    addi r1, r1, 64
3720 ; PWR9LE-NEXT:    ld r0, 16(r1)
3721 ; PWR9LE-NEXT:    lfd f31, -8(r1) # 8-byte Folded Reload
3722 ; PWR9LE-NEXT:    lfd f30, -16(r1) # 8-byte Folded Reload
3723 ; PWR9LE-NEXT:    mtlr r0
3724 ; PWR9LE-NEXT:    lfd f29, -24(r1) # 8-byte Folded Reload
3725 ; PWR9LE-NEXT:    lfd f28, -32(r1) # 8-byte Folded Reload
3726 ; PWR9LE-NEXT:    blr
3728 ; PWR9BE-LABEL: v4ppcf128:
3729 ; PWR9BE:       # %bb.0: # %entry
3730 ; PWR9BE-NEXT:    mflr r0
3731 ; PWR9BE-NEXT:    stdu r1, -144(r1)
3732 ; PWR9BE-NEXT:    std r0, 160(r1)
3733 ; PWR9BE-NEXT:    stfd f28, 112(r1) # 8-byte Folded Spill
3734 ; PWR9BE-NEXT:    stfd f29, 120(r1) # 8-byte Folded Spill
3735 ; PWR9BE-NEXT:    stfd f30, 128(r1) # 8-byte Folded Spill
3736 ; PWR9BE-NEXT:    stfd f31, 136(r1) # 8-byte Folded Spill
3737 ; PWR9BE-NEXT:    fmr f31, f8
3738 ; PWR9BE-NEXT:    fmr f30, f7
3739 ; PWR9BE-NEXT:    fmr f29, f6
3740 ; PWR9BE-NEXT:    fmr f28, f5
3741 ; PWR9BE-NEXT:    bl __gcc_qadd
3742 ; PWR9BE-NEXT:    nop
3743 ; PWR9BE-NEXT:    fmr f3, f28
3744 ; PWR9BE-NEXT:    fmr f4, f29
3745 ; PWR9BE-NEXT:    bl __gcc_qadd
3746 ; PWR9BE-NEXT:    nop
3747 ; PWR9BE-NEXT:    fmr f3, f30
3748 ; PWR9BE-NEXT:    fmr f4, f31
3749 ; PWR9BE-NEXT:    bl __gcc_qadd
3750 ; PWR9BE-NEXT:    nop
3751 ; PWR9BE-NEXT:    lfd f31, 136(r1) # 8-byte Folded Reload
3752 ; PWR9BE-NEXT:    lfd f30, 128(r1) # 8-byte Folded Reload
3753 ; PWR9BE-NEXT:    lfd f29, 120(r1) # 8-byte Folded Reload
3754 ; PWR9BE-NEXT:    lfd f28, 112(r1) # 8-byte Folded Reload
3755 ; PWR9BE-NEXT:    addi r1, r1, 144
3756 ; PWR9BE-NEXT:    ld r0, 16(r1)
3757 ; PWR9BE-NEXT:    mtlr r0
3758 ; PWR9BE-NEXT:    blr
3760 ; PWR10LE-LABEL: v4ppcf128:
3761 ; PWR10LE:       # %bb.0: # %entry
3762 ; PWR10LE-NEXT:    mflr r0
3763 ; PWR10LE-NEXT:    stfd f28, -32(r1) # 8-byte Folded Spill
3764 ; PWR10LE-NEXT:    stfd f29, -24(r1) # 8-byte Folded Spill
3765 ; PWR10LE-NEXT:    stfd f30, -16(r1) # 8-byte Folded Spill
3766 ; PWR10LE-NEXT:    stfd f31, -8(r1) # 8-byte Folded Spill
3767 ; PWR10LE-NEXT:    std r0, 16(r1)
3768 ; PWR10LE-NEXT:    stdu r1, -64(r1)
3769 ; PWR10LE-NEXT:    fmr f31, f8
3770 ; PWR10LE-NEXT:    fmr f30, f7
3771 ; PWR10LE-NEXT:    fmr f29, f6
3772 ; PWR10LE-NEXT:    fmr f28, f5
3773 ; PWR10LE-NEXT:    bl __gcc_qadd@notoc
3774 ; PWR10LE-NEXT:    fmr f3, f28
3775 ; PWR10LE-NEXT:    fmr f4, f29
3776 ; PWR10LE-NEXT:    bl __gcc_qadd@notoc
3777 ; PWR10LE-NEXT:    fmr f3, f30
3778 ; PWR10LE-NEXT:    fmr f4, f31
3779 ; PWR10LE-NEXT:    bl __gcc_qadd@notoc
3780 ; PWR10LE-NEXT:    addi r1, r1, 64
3781 ; PWR10LE-NEXT:    ld r0, 16(r1)
3782 ; PWR10LE-NEXT:    lfd f31, -8(r1) # 8-byte Folded Reload
3783 ; PWR10LE-NEXT:    mtlr r0
3784 ; PWR10LE-NEXT:    lfd f30, -16(r1) # 8-byte Folded Reload
3785 ; PWR10LE-NEXT:    lfd f29, -24(r1) # 8-byte Folded Reload
3786 ; PWR10LE-NEXT:    lfd f28, -32(r1) # 8-byte Folded Reload
3787 ; PWR10LE-NEXT:    blr
3789 ; PWR10BE-LABEL: v4ppcf128:
3790 ; PWR10BE:       # %bb.0: # %entry
3791 ; PWR10BE-NEXT:    mflr r0
3792 ; PWR10BE-NEXT:    std r0, 16(r1)
3793 ; PWR10BE-NEXT:    stdu r1, -144(r1)
3794 ; PWR10BE-NEXT:    stfd f28, 112(r1) # 8-byte Folded Spill
3795 ; PWR10BE-NEXT:    stfd f29, 120(r1) # 8-byte Folded Spill
3796 ; PWR10BE-NEXT:    fmr f29, f6
3797 ; PWR10BE-NEXT:    fmr f28, f5
3798 ; PWR10BE-NEXT:    stfd f30, 128(r1) # 8-byte Folded Spill
3799 ; PWR10BE-NEXT:    stfd f31, 136(r1) # 8-byte Folded Spill
3800 ; PWR10BE-NEXT:    fmr f31, f8
3801 ; PWR10BE-NEXT:    fmr f30, f7
3802 ; PWR10BE-NEXT:    bl __gcc_qadd
3803 ; PWR10BE-NEXT:    nop
3804 ; PWR10BE-NEXT:    fmr f3, f28
3805 ; PWR10BE-NEXT:    fmr f4, f29
3806 ; PWR10BE-NEXT:    bl __gcc_qadd
3807 ; PWR10BE-NEXT:    nop
3808 ; PWR10BE-NEXT:    fmr f3, f30
3809 ; PWR10BE-NEXT:    fmr f4, f31
3810 ; PWR10BE-NEXT:    bl __gcc_qadd
3811 ; PWR10BE-NEXT:    nop
3812 ; PWR10BE-NEXT:    lfd f31, 136(r1) # 8-byte Folded Reload
3813 ; PWR10BE-NEXT:    lfd f30, 128(r1) # 8-byte Folded Reload
3814 ; PWR10BE-NEXT:    lfd f29, 120(r1) # 8-byte Folded Reload
3815 ; PWR10BE-NEXT:    lfd f28, 112(r1) # 8-byte Folded Reload
3816 ; PWR10BE-NEXT:    addi r1, r1, 144
3817 ; PWR10BE-NEXT:    ld r0, 16(r1)
3818 ; PWR10BE-NEXT:    mtlr r0
3819 ; PWR10BE-NEXT:    blr
3820 entry:
3821   %0 = call ppc_fp128 @llvm.vector.reduce.fadd.v4ppcf128(ppc_fp128 0xM80000000000000000000000000000000, <4 x ppc_fp128> %a)
3822   ret ppc_fp128 %0
3825 define dso_local ppc_fp128 @v4ppcf128_b(<4 x ppc_fp128> %a, ppc_fp128 %b) local_unnamed_addr #0 {
3826 ; PWR9LE-LABEL: v4ppcf128_b:
3827 ; PWR9LE:       # %bb.0: # %entry
3828 ; PWR9LE-NEXT:    mflr r0
3829 ; PWR9LE-NEXT:    stfd f26, -48(r1) # 8-byte Folded Spill
3830 ; PWR9LE-NEXT:    stfd f27, -40(r1) # 8-byte Folded Spill
3831 ; PWR9LE-NEXT:    stfd f28, -32(r1) # 8-byte Folded Spill
3832 ; PWR9LE-NEXT:    stfd f29, -24(r1) # 8-byte Folded Spill
3833 ; PWR9LE-NEXT:    stfd f30, -16(r1) # 8-byte Folded Spill
3834 ; PWR9LE-NEXT:    stfd f31, -8(r1) # 8-byte Folded Spill
3835 ; PWR9LE-NEXT:    stdu r1, -80(r1)
3836 ; PWR9LE-NEXT:    fmr f27, f4
3837 ; PWR9LE-NEXT:    fmr f26, f3
3838 ; PWR9LE-NEXT:    fmr f4, f2
3839 ; PWR9LE-NEXT:    fmr f3, f1
3840 ; PWR9LE-NEXT:    fmr f1, f9
3841 ; PWR9LE-NEXT:    fmr f2, f10
3842 ; PWR9LE-NEXT:    std r0, 96(r1)
3843 ; PWR9LE-NEXT:    fmr f31, f8
3844 ; PWR9LE-NEXT:    fmr f30, f7
3845 ; PWR9LE-NEXT:    fmr f29, f6
3846 ; PWR9LE-NEXT:    fmr f28, f5
3847 ; PWR9LE-NEXT:    bl __gcc_qadd
3848 ; PWR9LE-NEXT:    nop
3849 ; PWR9LE-NEXT:    fmr f3, f26
3850 ; PWR9LE-NEXT:    fmr f4, f27
3851 ; PWR9LE-NEXT:    bl __gcc_qadd
3852 ; PWR9LE-NEXT:    nop
3853 ; PWR9LE-NEXT:    fmr f3, f28
3854 ; PWR9LE-NEXT:    fmr f4, f29
3855 ; PWR9LE-NEXT:    bl __gcc_qadd
3856 ; PWR9LE-NEXT:    nop
3857 ; PWR9LE-NEXT:    fmr f3, f30
3858 ; PWR9LE-NEXT:    fmr f4, f31
3859 ; PWR9LE-NEXT:    bl __gcc_qadd
3860 ; PWR9LE-NEXT:    nop
3861 ; PWR9LE-NEXT:    addi r1, r1, 80
3862 ; PWR9LE-NEXT:    ld r0, 16(r1)
3863 ; PWR9LE-NEXT:    lfd f31, -8(r1) # 8-byte Folded Reload
3864 ; PWR9LE-NEXT:    lfd f30, -16(r1) # 8-byte Folded Reload
3865 ; PWR9LE-NEXT:    mtlr r0
3866 ; PWR9LE-NEXT:    lfd f29, -24(r1) # 8-byte Folded Reload
3867 ; PWR9LE-NEXT:    lfd f28, -32(r1) # 8-byte Folded Reload
3868 ; PWR9LE-NEXT:    lfd f27, -40(r1) # 8-byte Folded Reload
3869 ; PWR9LE-NEXT:    lfd f26, -48(r1) # 8-byte Folded Reload
3870 ; PWR9LE-NEXT:    blr
3872 ; PWR9BE-LABEL: v4ppcf128_b:
3873 ; PWR9BE:       # %bb.0: # %entry
3874 ; PWR9BE-NEXT:    mflr r0
3875 ; PWR9BE-NEXT:    stdu r1, -160(r1)
3876 ; PWR9BE-NEXT:    std r0, 176(r1)
3877 ; PWR9BE-NEXT:    stfd f26, 112(r1) # 8-byte Folded Spill
3878 ; PWR9BE-NEXT:    stfd f27, 120(r1) # 8-byte Folded Spill
3879 ; PWR9BE-NEXT:    fmr f27, f4
3880 ; PWR9BE-NEXT:    fmr f26, f3
3881 ; PWR9BE-NEXT:    fmr f4, f2
3882 ; PWR9BE-NEXT:    fmr f3, f1
3883 ; PWR9BE-NEXT:    fmr f1, f9
3884 ; PWR9BE-NEXT:    fmr f2, f10
3885 ; PWR9BE-NEXT:    stfd f28, 128(r1) # 8-byte Folded Spill
3886 ; PWR9BE-NEXT:    stfd f29, 136(r1) # 8-byte Folded Spill
3887 ; PWR9BE-NEXT:    stfd f30, 144(r1) # 8-byte Folded Spill
3888 ; PWR9BE-NEXT:    stfd f31, 152(r1) # 8-byte Folded Spill
3889 ; PWR9BE-NEXT:    fmr f31, f8
3890 ; PWR9BE-NEXT:    fmr f30, f7
3891 ; PWR9BE-NEXT:    fmr f29, f6
3892 ; PWR9BE-NEXT:    fmr f28, f5
3893 ; PWR9BE-NEXT:    bl __gcc_qadd
3894 ; PWR9BE-NEXT:    nop
3895 ; PWR9BE-NEXT:    fmr f3, f26
3896 ; PWR9BE-NEXT:    fmr f4, f27
3897 ; PWR9BE-NEXT:    bl __gcc_qadd
3898 ; PWR9BE-NEXT:    nop
3899 ; PWR9BE-NEXT:    fmr f3, f28
3900 ; PWR9BE-NEXT:    fmr f4, f29
3901 ; PWR9BE-NEXT:    bl __gcc_qadd
3902 ; PWR9BE-NEXT:    nop
3903 ; PWR9BE-NEXT:    fmr f3, f30
3904 ; PWR9BE-NEXT:    fmr f4, f31
3905 ; PWR9BE-NEXT:    bl __gcc_qadd
3906 ; PWR9BE-NEXT:    nop
3907 ; PWR9BE-NEXT:    lfd f31, 152(r1) # 8-byte Folded Reload
3908 ; PWR9BE-NEXT:    lfd f30, 144(r1) # 8-byte Folded Reload
3909 ; PWR9BE-NEXT:    lfd f29, 136(r1) # 8-byte Folded Reload
3910 ; PWR9BE-NEXT:    lfd f28, 128(r1) # 8-byte Folded Reload
3911 ; PWR9BE-NEXT:    lfd f27, 120(r1) # 8-byte Folded Reload
3912 ; PWR9BE-NEXT:    lfd f26, 112(r1) # 8-byte Folded Reload
3913 ; PWR9BE-NEXT:    addi r1, r1, 160
3914 ; PWR9BE-NEXT:    ld r0, 16(r1)
3915 ; PWR9BE-NEXT:    mtlr r0
3916 ; PWR9BE-NEXT:    blr
3918 ; PWR10LE-LABEL: v4ppcf128_b:
3919 ; PWR10LE:       # %bb.0: # %entry
3920 ; PWR10LE-NEXT:    mflr r0
3921 ; PWR10LE-NEXT:    stfd f26, -48(r1) # 8-byte Folded Spill
3922 ; PWR10LE-NEXT:    stfd f27, -40(r1) # 8-byte Folded Spill
3923 ; PWR10LE-NEXT:    stfd f28, -32(r1) # 8-byte Folded Spill
3924 ; PWR10LE-NEXT:    stfd f29, -24(r1) # 8-byte Folded Spill
3925 ; PWR10LE-NEXT:    stfd f30, -16(r1) # 8-byte Folded Spill
3926 ; PWR10LE-NEXT:    stfd f31, -8(r1) # 8-byte Folded Spill
3927 ; PWR10LE-NEXT:    std r0, 16(r1)
3928 ; PWR10LE-NEXT:    stdu r1, -80(r1)
3929 ; PWR10LE-NEXT:    fmr f27, f4
3930 ; PWR10LE-NEXT:    fmr f26, f3
3931 ; PWR10LE-NEXT:    fmr f4, f2
3932 ; PWR10LE-NEXT:    fmr f3, f1
3933 ; PWR10LE-NEXT:    fmr f1, f9
3934 ; PWR10LE-NEXT:    fmr f2, f10
3935 ; PWR10LE-NEXT:    fmr f31, f8
3936 ; PWR10LE-NEXT:    fmr f30, f7
3937 ; PWR10LE-NEXT:    fmr f29, f6
3938 ; PWR10LE-NEXT:    fmr f28, f5
3939 ; PWR10LE-NEXT:    bl __gcc_qadd@notoc
3940 ; PWR10LE-NEXT:    fmr f3, f26
3941 ; PWR10LE-NEXT:    fmr f4, f27
3942 ; PWR10LE-NEXT:    bl __gcc_qadd@notoc
3943 ; PWR10LE-NEXT:    fmr f3, f28
3944 ; PWR10LE-NEXT:    fmr f4, f29
3945 ; PWR10LE-NEXT:    bl __gcc_qadd@notoc
3946 ; PWR10LE-NEXT:    fmr f3, f30
3947 ; PWR10LE-NEXT:    fmr f4, f31
3948 ; PWR10LE-NEXT:    bl __gcc_qadd@notoc
3949 ; PWR10LE-NEXT:    addi r1, r1, 80
3950 ; PWR10LE-NEXT:    ld r0, 16(r1)
3951 ; PWR10LE-NEXT:    lfd f31, -8(r1) # 8-byte Folded Reload
3952 ; PWR10LE-NEXT:    mtlr r0
3953 ; PWR10LE-NEXT:    lfd f30, -16(r1) # 8-byte Folded Reload
3954 ; PWR10LE-NEXT:    lfd f29, -24(r1) # 8-byte Folded Reload
3955 ; PWR10LE-NEXT:    lfd f28, -32(r1) # 8-byte Folded Reload
3956 ; PWR10LE-NEXT:    lfd f27, -40(r1) # 8-byte Folded Reload
3957 ; PWR10LE-NEXT:    lfd f26, -48(r1) # 8-byte Folded Reload
3958 ; PWR10LE-NEXT:    blr
3960 ; PWR10BE-LABEL: v4ppcf128_b:
3961 ; PWR10BE:       # %bb.0: # %entry
3962 ; PWR10BE-NEXT:    mflr r0
3963 ; PWR10BE-NEXT:    std r0, 16(r1)
3964 ; PWR10BE-NEXT:    stdu r1, -160(r1)
3965 ; PWR10BE-NEXT:    stfd f26, 112(r1) # 8-byte Folded Spill
3966 ; PWR10BE-NEXT:    stfd f27, 120(r1) # 8-byte Folded Spill
3967 ; PWR10BE-NEXT:    fmr f27, f4
3968 ; PWR10BE-NEXT:    fmr f26, f3
3969 ; PWR10BE-NEXT:    fmr f4, f2
3970 ; PWR10BE-NEXT:    fmr f3, f1
3971 ; PWR10BE-NEXT:    fmr f1, f9
3972 ; PWR10BE-NEXT:    stfd f28, 128(r1) # 8-byte Folded Spill
3973 ; PWR10BE-NEXT:    stfd f29, 136(r1) # 8-byte Folded Spill
3974 ; PWR10BE-NEXT:    fmr f2, f10
3975 ; PWR10BE-NEXT:    fmr f29, f6
3976 ; PWR10BE-NEXT:    fmr f28, f5
3977 ; PWR10BE-NEXT:    stfd f30, 144(r1) # 8-byte Folded Spill
3978 ; PWR10BE-NEXT:    stfd f31, 152(r1) # 8-byte Folded Spill
3979 ; PWR10BE-NEXT:    fmr f31, f8
3980 ; PWR10BE-NEXT:    fmr f30, f7
3981 ; PWR10BE-NEXT:    bl __gcc_qadd
3982 ; PWR10BE-NEXT:    nop
3983 ; PWR10BE-NEXT:    fmr f3, f26
3984 ; PWR10BE-NEXT:    fmr f4, f27
3985 ; PWR10BE-NEXT:    bl __gcc_qadd
3986 ; PWR10BE-NEXT:    nop
3987 ; PWR10BE-NEXT:    fmr f3, f28
3988 ; PWR10BE-NEXT:    fmr f4, f29
3989 ; PWR10BE-NEXT:    bl __gcc_qadd
3990 ; PWR10BE-NEXT:    nop
3991 ; PWR10BE-NEXT:    fmr f3, f30
3992 ; PWR10BE-NEXT:    fmr f4, f31
3993 ; PWR10BE-NEXT:    bl __gcc_qadd
3994 ; PWR10BE-NEXT:    nop
3995 ; PWR10BE-NEXT:    lfd f31, 152(r1) # 8-byte Folded Reload
3996 ; PWR10BE-NEXT:    lfd f30, 144(r1) # 8-byte Folded Reload
3997 ; PWR10BE-NEXT:    lfd f29, 136(r1) # 8-byte Folded Reload
3998 ; PWR10BE-NEXT:    lfd f28, 128(r1) # 8-byte Folded Reload
3999 ; PWR10BE-NEXT:    lfd f27, 120(r1) # 8-byte Folded Reload
4000 ; PWR10BE-NEXT:    lfd f26, 112(r1) # 8-byte Folded Reload
4001 ; PWR10BE-NEXT:    addi r1, r1, 160
4002 ; PWR10BE-NEXT:    ld r0, 16(r1)
4003 ; PWR10BE-NEXT:    mtlr r0
4004 ; PWR10BE-NEXT:    blr
4005 entry:
4006   %0 = call ppc_fp128 @llvm.vector.reduce.fadd.v4ppcf128(ppc_fp128 %b, <4 x ppc_fp128> %a)
4007   ret ppc_fp128 %0
4010 define dso_local ppc_fp128 @v4ppcf128_fast(<4 x ppc_fp128> %a) local_unnamed_addr #0 {
4011 ; PWR9LE-LABEL: v4ppcf128_fast:
4012 ; PWR9LE:       # %bb.0: # %entry
4013 ; PWR9LE-NEXT:    mflr r0
4014 ; PWR9LE-NEXT:    stfd f26, -48(r1) # 8-byte Folded Spill
4015 ; PWR9LE-NEXT:    stfd f27, -40(r1) # 8-byte Folded Spill
4016 ; PWR9LE-NEXT:    stfd f28, -32(r1) # 8-byte Folded Spill
4017 ; PWR9LE-NEXT:    stfd f29, -24(r1) # 8-byte Folded Spill
4018 ; PWR9LE-NEXT:    stfd f30, -16(r1) # 8-byte Folded Spill
4019 ; PWR9LE-NEXT:    stfd f31, -8(r1) # 8-byte Folded Spill
4020 ; PWR9LE-NEXT:    stdu r1, -96(r1)
4021 ; PWR9LE-NEXT:    fmr f29, f4
4022 ; PWR9LE-NEXT:    fmr f28, f3
4023 ; PWR9LE-NEXT:    fmr f3, f5
4024 ; PWR9LE-NEXT:    fmr f4, f6
4025 ; PWR9LE-NEXT:    std r0, 112(r1)
4026 ; PWR9LE-NEXT:    fmr f31, f8
4027 ; PWR9LE-NEXT:    fmr f30, f7
4028 ; PWR9LE-NEXT:    bl __gcc_qadd
4029 ; PWR9LE-NEXT:    nop
4030 ; PWR9LE-NEXT:    fmr f27, f1
4031 ; PWR9LE-NEXT:    fmr f26, f2
4032 ; PWR9LE-NEXT:    fmr f1, f28
4033 ; PWR9LE-NEXT:    fmr f2, f29
4034 ; PWR9LE-NEXT:    fmr f3, f30
4035 ; PWR9LE-NEXT:    fmr f4, f31
4036 ; PWR9LE-NEXT:    bl __gcc_qadd
4037 ; PWR9LE-NEXT:    nop
4038 ; PWR9LE-NEXT:    fmr f3, f1
4039 ; PWR9LE-NEXT:    fmr f4, f2
4040 ; PWR9LE-NEXT:    fmr f1, f27
4041 ; PWR9LE-NEXT:    fmr f2, f26
4042 ; PWR9LE-NEXT:    bl __gcc_qadd
4043 ; PWR9LE-NEXT:    nop
4044 ; PWR9LE-NEXT:    stfd f2, 40(r1)
4045 ; PWR9LE-NEXT:    stfd f1, 32(r1)
4046 ; PWR9LE-NEXT:    lxv vs1, 32(r1)
4047 ; PWR9LE-NEXT:    xxswapd vs2, vs1
4048 ; PWR9LE-NEXT:    addi r1, r1, 96
4049 ; PWR9LE-NEXT:    ld r0, 16(r1)
4050 ; PWR9LE-NEXT:    lfd f31, -8(r1) # 8-byte Folded Reload
4051 ; PWR9LE-NEXT:    lfd f30, -16(r1) # 8-byte Folded Reload
4052 ; PWR9LE-NEXT:    mtlr r0
4053 ; PWR9LE-NEXT:    lfd f29, -24(r1) # 8-byte Folded Reload
4054 ; PWR9LE-NEXT:    lfd f28, -32(r1) # 8-byte Folded Reload
4055 ; PWR9LE-NEXT:    lfd f27, -40(r1) # 8-byte Folded Reload
4056 ; PWR9LE-NEXT:    lfd f26, -48(r1) # 8-byte Folded Reload
4057 ; PWR9LE-NEXT:    blr
4059 ; PWR9BE-LABEL: v4ppcf128_fast:
4060 ; PWR9BE:       # %bb.0: # %entry
4061 ; PWR9BE-NEXT:    mflr r0
4062 ; PWR9BE-NEXT:    stdu r1, -176(r1)
4063 ; PWR9BE-NEXT:    std r0, 192(r1)
4064 ; PWR9BE-NEXT:    stfd f28, 144(r1) # 8-byte Folded Spill
4065 ; PWR9BE-NEXT:    stfd f29, 152(r1) # 8-byte Folded Spill
4066 ; PWR9BE-NEXT:    fmr f29, f4
4067 ; PWR9BE-NEXT:    fmr f28, f3
4068 ; PWR9BE-NEXT:    fmr f3, f5
4069 ; PWR9BE-NEXT:    fmr f4, f6
4070 ; PWR9BE-NEXT:    stfd f26, 128(r1) # 8-byte Folded Spill
4071 ; PWR9BE-NEXT:    stfd f27, 136(r1) # 8-byte Folded Spill
4072 ; PWR9BE-NEXT:    stfd f30, 160(r1) # 8-byte Folded Spill
4073 ; PWR9BE-NEXT:    stfd f31, 168(r1) # 8-byte Folded Spill
4074 ; PWR9BE-NEXT:    fmr f31, f8
4075 ; PWR9BE-NEXT:    fmr f30, f7
4076 ; PWR9BE-NEXT:    bl __gcc_qadd
4077 ; PWR9BE-NEXT:    nop
4078 ; PWR9BE-NEXT:    fmr f27, f1
4079 ; PWR9BE-NEXT:    fmr f26, f2
4080 ; PWR9BE-NEXT:    fmr f1, f28
4081 ; PWR9BE-NEXT:    fmr f2, f29
4082 ; PWR9BE-NEXT:    fmr f3, f30
4083 ; PWR9BE-NEXT:    fmr f4, f31
4084 ; PWR9BE-NEXT:    bl __gcc_qadd
4085 ; PWR9BE-NEXT:    nop
4086 ; PWR9BE-NEXT:    fmr f3, f1
4087 ; PWR9BE-NEXT:    fmr f4, f2
4088 ; PWR9BE-NEXT:    fmr f1, f27
4089 ; PWR9BE-NEXT:    fmr f2, f26
4090 ; PWR9BE-NEXT:    bl __gcc_qadd
4091 ; PWR9BE-NEXT:    nop
4092 ; PWR9BE-NEXT:    stfd f2, 120(r1)
4093 ; PWR9BE-NEXT:    stfd f1, 112(r1)
4094 ; PWR9BE-NEXT:    lxv vs1, 112(r1)
4095 ; PWR9BE-NEXT:    lfd f31, 168(r1) # 8-byte Folded Reload
4096 ; PWR9BE-NEXT:    lfd f30, 160(r1) # 8-byte Folded Reload
4097 ; PWR9BE-NEXT:    xxswapd vs2, vs1
4098 ; PWR9BE-NEXT:    lfd f29, 152(r1) # 8-byte Folded Reload
4099 ; PWR9BE-NEXT:    lfd f28, 144(r1) # 8-byte Folded Reload
4100 ; PWR9BE-NEXT:    lfd f27, 136(r1) # 8-byte Folded Reload
4101 ; PWR9BE-NEXT:    lfd f26, 128(r1) # 8-byte Folded Reload
4102 ; PWR9BE-NEXT:    addi r1, r1, 176
4103 ; PWR9BE-NEXT:    ld r0, 16(r1)
4104 ; PWR9BE-NEXT:    mtlr r0
4105 ; PWR9BE-NEXT:    blr
4107 ; PWR10LE-LABEL: v4ppcf128_fast:
4108 ; PWR10LE:       # %bb.0: # %entry
4109 ; PWR10LE-NEXT:    mflr r0
4110 ; PWR10LE-NEXT:    stfd f26, -48(r1) # 8-byte Folded Spill
4111 ; PWR10LE-NEXT:    stfd f27, -40(r1) # 8-byte Folded Spill
4112 ; PWR10LE-NEXT:    stfd f28, -32(r1) # 8-byte Folded Spill
4113 ; PWR10LE-NEXT:    stfd f29, -24(r1) # 8-byte Folded Spill
4114 ; PWR10LE-NEXT:    stfd f30, -16(r1) # 8-byte Folded Spill
4115 ; PWR10LE-NEXT:    stfd f31, -8(r1) # 8-byte Folded Spill
4116 ; PWR10LE-NEXT:    std r0, 16(r1)
4117 ; PWR10LE-NEXT:    stdu r1, -96(r1)
4118 ; PWR10LE-NEXT:    fmr f29, f4
4119 ; PWR10LE-NEXT:    fmr f28, f3
4120 ; PWR10LE-NEXT:    fmr f3, f5
4121 ; PWR10LE-NEXT:    fmr f4, f6
4122 ; PWR10LE-NEXT:    fmr f31, f8
4123 ; PWR10LE-NEXT:    fmr f30, f7
4124 ; PWR10LE-NEXT:    bl __gcc_qadd@notoc
4125 ; PWR10LE-NEXT:    fmr f27, f1
4126 ; PWR10LE-NEXT:    fmr f26, f2
4127 ; PWR10LE-NEXT:    fmr f1, f28
4128 ; PWR10LE-NEXT:    fmr f2, f29
4129 ; PWR10LE-NEXT:    fmr f3, f30
4130 ; PWR10LE-NEXT:    fmr f4, f31
4131 ; PWR10LE-NEXT:    bl __gcc_qadd@notoc
4132 ; PWR10LE-NEXT:    fmr f3, f1
4133 ; PWR10LE-NEXT:    fmr f4, f2
4134 ; PWR10LE-NEXT:    fmr f1, f27
4135 ; PWR10LE-NEXT:    fmr f2, f26
4136 ; PWR10LE-NEXT:    bl __gcc_qadd@notoc
4137 ; PWR10LE-NEXT:    stfd f2, 40(r1)
4138 ; PWR10LE-NEXT:    stfd f1, 32(r1)
4139 ; PWR10LE-NEXT:    lxv vs1, 32(r1)
4140 ; PWR10LE-NEXT:    xxswapd vs2, vs1
4141 ; PWR10LE-NEXT:    addi r1, r1, 96
4142 ; PWR10LE-NEXT:    ld r0, 16(r1)
4143 ; PWR10LE-NEXT:    lfd f31, -8(r1) # 8-byte Folded Reload
4144 ; PWR10LE-NEXT:    mtlr r0
4145 ; PWR10LE-NEXT:    lfd f30, -16(r1) # 8-byte Folded Reload
4146 ; PWR10LE-NEXT:    lfd f29, -24(r1) # 8-byte Folded Reload
4147 ; PWR10LE-NEXT:    lfd f28, -32(r1) # 8-byte Folded Reload
4148 ; PWR10LE-NEXT:    lfd f27, -40(r1) # 8-byte Folded Reload
4149 ; PWR10LE-NEXT:    lfd f26, -48(r1) # 8-byte Folded Reload
4150 ; PWR10LE-NEXT:    blr
4152 ; PWR10BE-LABEL: v4ppcf128_fast:
4153 ; PWR10BE:       # %bb.0: # %entry
4154 ; PWR10BE-NEXT:    mflr r0
4155 ; PWR10BE-NEXT:    std r0, 16(r1)
4156 ; PWR10BE-NEXT:    stdu r1, -176(r1)
4157 ; PWR10BE-NEXT:    stfd f28, 144(r1) # 8-byte Folded Spill
4158 ; PWR10BE-NEXT:    stfd f29, 152(r1) # 8-byte Folded Spill
4159 ; PWR10BE-NEXT:    fmr f29, f4
4160 ; PWR10BE-NEXT:    fmr f28, f3
4161 ; PWR10BE-NEXT:    fmr f3, f5
4162 ; PWR10BE-NEXT:    fmr f4, f6
4163 ; PWR10BE-NEXT:    stfd f26, 128(r1) # 8-byte Folded Spill
4164 ; PWR10BE-NEXT:    stfd f27, 136(r1) # 8-byte Folded Spill
4165 ; PWR10BE-NEXT:    stfd f30, 160(r1) # 8-byte Folded Spill
4166 ; PWR10BE-NEXT:    stfd f31, 168(r1) # 8-byte Folded Spill
4167 ; PWR10BE-NEXT:    fmr f31, f8
4168 ; PWR10BE-NEXT:    fmr f30, f7
4169 ; PWR10BE-NEXT:    bl __gcc_qadd
4170 ; PWR10BE-NEXT:    nop
4171 ; PWR10BE-NEXT:    fmr f27, f1
4172 ; PWR10BE-NEXT:    fmr f26, f2
4173 ; PWR10BE-NEXT:    fmr f1, f28
4174 ; PWR10BE-NEXT:    fmr f2, f29
4175 ; PWR10BE-NEXT:    fmr f3, f30
4176 ; PWR10BE-NEXT:    fmr f4, f31
4177 ; PWR10BE-NEXT:    bl __gcc_qadd
4178 ; PWR10BE-NEXT:    nop
4179 ; PWR10BE-NEXT:    fmr f3, f1
4180 ; PWR10BE-NEXT:    fmr f4, f2
4181 ; PWR10BE-NEXT:    fmr f1, f27
4182 ; PWR10BE-NEXT:    fmr f2, f26
4183 ; PWR10BE-NEXT:    bl __gcc_qadd
4184 ; PWR10BE-NEXT:    nop
4185 ; PWR10BE-NEXT:    stfd f2, 120(r1)
4186 ; PWR10BE-NEXT:    stfd f1, 112(r1)
4187 ; PWR10BE-NEXT:    lfd f31, 168(r1) # 8-byte Folded Reload
4188 ; PWR10BE-NEXT:    lfd f30, 160(r1) # 8-byte Folded Reload
4189 ; PWR10BE-NEXT:    lfd f29, 152(r1) # 8-byte Folded Reload
4190 ; PWR10BE-NEXT:    lfd f28, 144(r1) # 8-byte Folded Reload
4191 ; PWR10BE-NEXT:    lfd f27, 136(r1) # 8-byte Folded Reload
4192 ; PWR10BE-NEXT:    lfd f26, 128(r1) # 8-byte Folded Reload
4193 ; PWR10BE-NEXT:    lxv vs1, 112(r1)
4194 ; PWR10BE-NEXT:    xxswapd vs2, vs1
4195 ; PWR10BE-NEXT:    addi r1, r1, 176
4196 ; PWR10BE-NEXT:    ld r0, 16(r1)
4197 ; PWR10BE-NEXT:    mtlr r0
4198 ; PWR10BE-NEXT:    blr
4199 entry:
4200   %0 = call fast ppc_fp128 @llvm.vector.reduce.fadd.v4ppcf128(ppc_fp128 0xM80000000000000000000000000000000, <4 x ppc_fp128> %a)
4201   ret ppc_fp128 %0
4204 declare ppc_fp128 @llvm.vector.reduce.fadd.v2ppcf128(ppc_fp128, <2 x ppc_fp128>) #0
4205 declare ppc_fp128 @llvm.vector.reduce.fadd.v4ppcf128(ppc_fp128, <4 x ppc_fp128>) #0
4207 attributes #0 = { nounwind }