[ARM] More MVE compare vector splat combines for ANDs
[llvm-complete.git] / test / CodeGen / PowerPC / f128-vecExtractNconv.ll
blobbae676cd09cd34a8fdc2fbaf277a391b6a41eda1
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown -ppc-vsr-nums-as-vr \
3 ; RUN:   -relocation-model=pic -ppc-asm-full-reg-names -verify-machineinstrs \
4 ; RUN:   -enable-ppc-quad-precision < %s | FileCheck %s
5 ; RUN: llc -mcpu=pwr9 -mtriple=powerpc64-unknown-unknown -ppc-vsr-nums-as-vr \
6 ; RUN:   -ppc-asm-full-reg-names -verify-machineinstrs \
7 ; RUN:   -enable-ppc-quad-precision < %s | FileCheck %s -check-prefix=CHECK-BE
9 ; Vector extract DWord and convert to quad precision.
11 @sdwVecMem = global <2 x i64> <i64 88, i64 99>, align 16
12 @udwVecMem = global <2 x i64> <i64 88, i64 99>, align 16
14 ; Function Attrs: norecurse nounwind
15 define void @sdwVecConv2qp(fp128* nocapture %a, <2 x i64> %b) {
16 ; CHECK-LABEL: sdwVecConv2qp:
17 ; CHECK:       # %bb.0: # %entry
18 ; CHECK-NEXT:    xxspltd v2, v2, 1
19 ; CHECK-NEXT:    xscvsdqp v2, v2
20 ; CHECK-NEXT:    stxv v2, 0(r3)
21 ; CHECK-NEXT:    blr
23 ; CHECK-BE-LABEL: sdwVecConv2qp:
24 ; CHECK-BE:    xscvsdqp v2, v2
25 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
26 ; CHECK-BE-NEXT:    blr
27 entry:
28   %vecext = extractelement <2 x i64> %b, i32 0
29   %conv = sitofp i64 %vecext to fp128
30   store fp128 %conv, fp128* %a, align 16
31   ret void
34 ; Function Attrs: norecurse nounwind
35 define void @sdwVecConv2qp1(fp128* nocapture %a, <2 x i64> %b) {
36 ; CHECK-LABEL: sdwVecConv2qp1:
37 ; CHECK:       # %bb.0: # %entry
38 ; CHECK-NEXT:    xscvsdqp v2, v2
39 ; CHECK-NEXT:    stxv v2, 0(r3)
40 ; CHECK-NEXT:    blr
42 ; CHECK-BE-LABEL: sdwVecConv2qp1:
43 ; CHECK-BE:       # %bb.0: # %entry
44 ; CHECK-BE-NEXT:    xxspltd v2, v2, 1
45 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
46 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
47 ; CHECK-BE-NEXT:    blr
48 entry:
49   %vecext = extractelement <2 x i64> %b, i32 1
50   %conv = sitofp i64 %vecext to fp128
51   store fp128 %conv, fp128* %a, align 16
52   ret void
55 ; Function Attrs: norecurse nounwind
56 define void @sdwVecConv2qp_02(fp128* nocapture %a) {
57 ; CHECK-LABEL: sdwVecConv2qp_02:
58 ; CHECK:       # %bb.0: # %entry
59 ; CHECK-NEXT:    addis r4, r2, .LC0@toc@ha
60 ; CHECK-NEXT:    ld r4, .LC0@toc@l(r4)
61 ; CHECK-NEXT:    lxsd v2, 0(r4)
62 ; CHECK-NEXT:    xscvsdqp v2, v2
63 ; CHECK-NEXT:    stxv v2, 0(r3)
64 ; CHECK-NEXT:    blr
65 entry:
66   %0 = load <2 x i64>, <2 x i64>* @sdwVecMem, align 16
67   %vecext = extractelement <2 x i64> %0, i32 0
68   %conv = sitofp i64 %vecext to fp128
69   store fp128 %conv, fp128* %a, align 16
70   ret void
73 ; Function Attrs: norecurse nounwind
74 define void @sdwVecConv2qp1_03(fp128* nocapture %a, <2 x i64>* nocapture readonly %b) {
75 ; CHECK-LABEL: sdwVecConv2qp1_03:
76 ; CHECK:       # %bb.0: # %entry
77 ; CHECK-NEXT:    lxsd v2, 8(r4)
78 ; CHECK-NEXT:    xscvsdqp v2, v2
79 ; CHECK-NEXT:    stxv v2, 0(r3)
80 ; CHECK-NEXT:    blr
81 entry:
82   %0 = load <2 x i64>, <2 x i64>* %b, align 16
83   %vecext = extractelement <2 x i64> %0, i32 1
84   %conv = sitofp i64 %vecext to fp128
85   store fp128 %conv, fp128* %a, align 16
86   ret void
89 ; Function Attrs: norecurse nounwind
90 define void @udwVecConv2qp(fp128* nocapture %a, <2 x i64> %b) {
91 ; CHECK-LABEL: udwVecConv2qp:
92 ; CHECK:       # %bb.0: # %entry
93 ; CHECK-NEXT:    xxspltd v2, v2, 1
94 ; CHECK-NEXT:    xscvudqp v2, v2
95 ; CHECK-NEXT:    stxv v2, 0(r3)
96 ; CHECK-NEXT:    blr
98 ; CHECK-BE-LABEL: udwVecConv2qp:
99 ; CHECK-BE:       # %bb.0: # %entry
100 ; CHECK-BE-NEXT:    xscvudqp v2, v2
101 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
102 ; CHECK-BE-NEXT:    blr
103 entry:
104   %vecext = extractelement <2 x i64> %b, i32 0
105   %conv = uitofp i64 %vecext to fp128
106   store fp128 %conv, fp128* %a, align 16
107   ret void
110 ; Function Attrs: norecurse nounwind
111 define void @udwVecConv2qp1(fp128* nocapture %a, <2 x i64> %b) {
112 ; CHECK-LABEL: udwVecConv2qp1:
113 ; CHECK:       # %bb.0: # %entry
114 ; CHECK-NEXT:    xscvudqp v2, v2
115 ; CHECK-NEXT:    stxv v2, 0(r3)
116 ; CHECK-NEXT:    blr
118 ; CHECK-BE-LABEL: udwVecConv2qp1:
119 ; CHECK-BE:       # %bb.0: # %entry
120 ; CHECK-BE-NEXT:    xxspltd v2, v2, 1
121 ; CHECK-BE-NEXT:    xscvudqp v2, v2
122 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
123 ; CHECK-BE-NEXT:    blr
124 entry:
125   %vecext = extractelement <2 x i64> %b, i32 1
126   %conv = uitofp i64 %vecext to fp128
127   store fp128 %conv, fp128* %a, align 16
128   ret void
131 ; Function Attrs: norecurse nounwind
132 define void @udwVecConv2qp1_02(fp128* nocapture %a) {
133 ; CHECK-LABEL: udwVecConv2qp1_02:
134 ; CHECK:       # %bb.0: # %entry
135 ; CHECK-NEXT:    addis r4, r2, .LC1@toc@ha
136 ; CHECK-NEXT:    ld r4, .LC1@toc@l(r4)
137 ; CHECK-NEXT:    lxsd v2, 8(r4)
138 ; CHECK-NEXT:    xscvudqp v2, v2
139 ; CHECK-NEXT:    stxv v2, 0(r3)
140 ; CHECK-NEXT:    blr
141 entry:
142   %0 = load <2 x i64>, <2 x i64>* @udwVecMem, align 16
143   %vecext = extractelement <2 x i64> %0, i32 1
144   %conv = uitofp i64 %vecext to fp128
145   store fp128 %conv, fp128* %a, align 16
146   ret void
149 ; Function Attrs: norecurse nounwind
150 define void @udwVecConv2qp_03(fp128* nocapture %a, <2 x i64>* nocapture readonly %b) {
151 ; CHECK-LABEL: udwVecConv2qp_03:
152 ; CHECK:       # %bb.0: # %entry
153 ; CHECK-NEXT:    lxsd v2, 0(r4)
154 ; CHECK-NEXT:    xscvudqp v2, v2
155 ; CHECK-NEXT:    stxv v2, 0(r3)
156 ; CHECK-NEXT:    blr
157 entry:
158   %0 = load <2 x i64>, <2 x i64>* %b, align 16
159   %vecext = extractelement <2 x i64> %0, i32 0
160   %conv = uitofp i64 %vecext to fp128
161   store fp128 %conv, fp128* %a, align 16
162   ret void
165 ; Vector extract Word and convert to quad precision.
167 ; Function Attrs: norecurse nounwind
168 define void @swVecConv2qp(fp128* nocapture %a, <4 x i32> %b) {
169 ; CHECK-LABEL: swVecConv2qp:
170 ; CHECK:       # %bb.0: # %entry
171 ; CHECK-NEXT:    vspltw v2, v2, 3
172 ; CHECK-NEXT:    vextsw2d v2, v2
173 ; CHECK-NEXT:    xscvsdqp v2, v2
174 ; CHECK-NEXT:    stxv v2, 0(r3)
175 ; CHECK-NEXT:    blr
177 ; CHECK-BE-LABEL: swVecConv2qp:
178 ; CHECK-BE:    vspltw v2, v2, 0
179 ; CHECK-BE-NEXT:    vextsw2d v2, v2
180 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
181 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
182 ; CHECK-BE-NEXT:    blr
183 entry:
184   %vecext = extractelement <4 x i32> %b, i32 0
185   %conv = sitofp i32 %vecext to fp128
186   store fp128 %conv, fp128* %a, align 16
187   ret void
190 ; Function Attrs: norecurse nounwind
191 define void @swVecConv2qp1(fp128* nocapture %a, <4 x i32> %b) {
192 ; CHECK-LABEL: swVecConv2qp1:
193 ; CHECK:       # %bb.0: # %entry
194 ; CHECK-NEXT:    vspltw v2, v2, 2
195 ; CHECK-NEXT:    vextsw2d v2, v2
196 ; CHECK-NEXT:    xscvsdqp v2, v2
197 ; CHECK-NEXT:    stxv v2, 0(r3)
198 ; CHECK-NEXT:    blr
200 ; CHECK-BE-LABEL: swVecConv2qp1:
201 ; CHECK-BE:    vextsw2d v2, v2
202 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
203 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
204 ; CHECK-BE-NEXT:    blr
205 entry:
206   %vecext = extractelement <4 x i32> %b, i32 1
207   %conv = sitofp i32 %vecext to fp128
208   store fp128 %conv, fp128* %a, align 16
209   ret void
212 ; Function Attrs: norecurse nounwind
213 define void @swVecConv2qp2(fp128* nocapture %a, <4 x i32> %b) {
214 ; CHECK-LABEL: swVecConv2qp2:
215 ; CHECK:       # %bb.0: # %entry
216 ; CHECK-NEXT:    vextsw2d v2, v2
217 ; CHECK-NEXT:    xscvsdqp v2, v2
218 ; CHECK-NEXT:    stxv v2, 0(r3)
219 ; CHECK-NEXT:    blr
221 ; CHECK-BE-LABEL: swVecConv2qp2:
222 ; CHECK-BE:    vspltw v2, v2, 2
223 ; CHECK-BE-NEXT:    vextsw2d v2, v2
224 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
225 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
226 ; CHECK-BE-NEXT:    blr
227 entry:
228   %vecext = extractelement <4 x i32> %b, i32 2
229   %conv = sitofp i32 %vecext to fp128
230   store fp128 %conv, fp128* %a, align 16
231   ret void
234 ; Function Attrs: norecurse nounwind
235 define void @swVecConv2qp3(fp128* nocapture %a, <4 x i32> %b) {
236 ; CHECK-LABEL: swVecConv2qp3:
237 ; CHECK:       # %bb.0: # %entry
238 ; CHECK-NEXT:    vspltw v2, v2, 0
239 ; CHECK-NEXT:    vextsw2d v2, v2
240 ; CHECK-NEXT:    xscvsdqp v2, v2
241 ; CHECK-NEXT:    stxv v2, 0(r3)
242 ; CHECK-NEXT:    blr
244 ; CHECK-BE-LABEL: swVecConv2qp3:
245 ; CHECK-BE:    vspltw v2, v2, 3
246 ; CHECK-BE-NEXT:    vextsw2d v2, v2
247 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
248 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
249 ; CHECK-BE-NEXT:    blr
250 entry:
251   %vecext = extractelement <4 x i32> %b, i32 3
252   %conv = sitofp i32 %vecext to fp128
253   store fp128 %conv, fp128* %a, align 16
254   ret void
257 ; Function Attrs: norecurse nounwind
258 define void @uwVecConv2qp(fp128* nocapture %a, <4 x i32> %b) {
259 ; CHECK-LABEL: uwVecConv2qp:
260 ; CHECK:       # %bb.0: # %entry
261 ; CHECK-NEXT:    xxextractuw v2, v2, 12
262 ; CHECK-NEXT:    xscvudqp v2, v2
263 ; CHECK-NEXT:    stxv v2, 0(r3)
264 ; CHECK-NEXT:    blr
266 ; CHECK-BE-LABEL: uwVecConv2qp:
267 ; CHECK-BE:    xxextractuw v2, v2, 0
268 ; CHECK-BE-NEXT:    xscvudqp v2, v2
269 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
270 ; CHECK-BE-NEXT:    blr
271 entry:
272   %vecext = extractelement <4 x i32> %b, i32 0
273   %conv = uitofp i32 %vecext to fp128
274   store fp128 %conv, fp128* %a, align 16
275   ret void
278 ; Function Attrs: norecurse nounwind
279 define void @uwVecConv2qp1(fp128* nocapture %a, <4 x i32> %b) {
280 ; CHECK-LABEL: uwVecConv2qp1:
281 ; CHECK:       # %bb.0: # %entry
282 ; CHECK-NEXT:    xxextractuw v2, v2, 8
283 ; CHECK-NEXT:    xscvudqp v2, v2
284 ; CHECK-NEXT:    stxv v2, 0(r3)
285 ; CHECK-NEXT:    blr
287 ; CHECK-BE-LABEL: uwVecConv2qp1:
288 ; CHECK-BE:    xxextractuw v2, v2, 4
289 ; CHECK-BE-NEXT:    xscvudqp v2, v2
290 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
291 ; CHECK-BE-NEXT:    blr
292 entry:
293   %vecext = extractelement <4 x i32> %b, i32 1
294   %conv = uitofp i32 %vecext to fp128
295   store fp128 %conv, fp128* %a, align 16
296   ret void
299 ; Function Attrs: norecurse nounwind
300 define void @uwVecConv2qp2(fp128* nocapture %a, <4 x i32> %b) {
301 ; CHECK-LABEL: uwVecConv2qp2:
302 ; CHECK:       # %bb.0: # %entry
303 ; CHECK-NEXT:    xxextractuw v2, v2, 4
304 ; CHECK-NEXT:    xscvudqp v2, v2
305 ; CHECK-NEXT:    stxv v2, 0(r3)
306 ; CHECK-NEXT:    blr
308 ; CHECK-BE-LABEL: uwVecConv2qp2:
309 ; CHECK-BE:    xxextractuw v2, v2, 8
310 ; CHECK-BE-NEXT:    xscvudqp v2, v2
311 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
312 ; CHECK-BE-NEXT:    blr
313 entry:
314   %vecext = extractelement <4 x i32> %b, i32 2
315   %conv = uitofp i32 %vecext to fp128
316   store fp128 %conv, fp128* %a, align 16
317   ret void
320 ; Function Attrs: norecurse nounwind
321 define void @uwVecConv2qp3(fp128* nocapture %a, <4 x i32> %b) {
322 ; CHECK-LABEL: uwVecConv2qp3:
323 ; CHECK:       # %bb.0: # %entry
324 ; CHECK-NEXT:    xxextractuw v2, v2, 0
325 ; CHECK-NEXT:    xscvudqp v2, v2
326 ; CHECK-NEXT:    stxv v2, 0(r3)
327 ; CHECK-NEXT:    blr
329 ; CHECK-BE-LABEL: uwVecConv2qp3:
330 ; CHECK-BE:    xxextractuw v2, v2, 12
331 ; CHECK-BE-NEXT:    xscvudqp v2, v2
332 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
333 ; CHECK-BE-NEXT:    blr
334 entry:
335   %vecext = extractelement <4 x i32> %b, i32 3
336   %conv = uitofp i32 %vecext to fp128
337   store fp128 %conv, fp128* %a, align 16
338   ret void
341 ; Vector extract HWord and convert to quad precision.
343 ; Function Attrs: norecurse nounwind
344 define void @shwVecConv2qp(fp128* nocapture %a, <8 x i16> %b) {
345 ; CHECK-LABEL: shwVecConv2qp:
346 ; CHECK:       # %bb.0: # %entry
347 ; CHECK-NEXT:    vextractuh v2, v2, 14
348 ; CHECK-NEXT:    vextsh2d v2, v2
349 ; CHECK-NEXT:    xscvsdqp v2, v2
350 ; CHECK-NEXT:    stxv v2, 0(r3)
351 ; CHECK-NEXT:    blr
353 ; CHECK-BE-LABEL: shwVecConv2qp:
354 ; CHECK-BE:       # %bb.0: # %entry
355 ; CHECK-BE-NEXT:    vextractuh v2, v2, 0
356 ; CHECK-BE-NEXT:    vextsh2d v2, v2
357 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
358 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
359 ; CHECK-BE-NEXT:    blr
360 entry:
361   %vecext = extractelement <8 x i16> %b, i32 0
362   %conv = sitofp i16 %vecext to fp128
363   store fp128 %conv, fp128* %a, align 16
364   ret void
367 ; Function Attrs: norecurse nounwind
368 define void @shwVecConv2qp1(fp128* nocapture %a, <8 x i16> %b) {
369 ; CHECK-LABEL: shwVecConv2qp1:
370 ; CHECK:       # %bb.0: # %entry
371 ; CHECK-NEXT:    vextractuh v2, v2, 12
372 ; CHECK-NEXT:    vextsh2d v2, v2
373 ; CHECK-NEXT:    xscvsdqp v2, v2
374 ; CHECK-NEXT:    stxv v2, 0(r3)
375 ; CHECK-NEXT:    blr
377 ; CHECK-BE-LABEL: shwVecConv2qp1:
378 ; CHECK-BE:       # %bb.0: # %entry
379 ; CHECK-BE-NEXT:    vextractuh v2, v2, 2
380 ; CHECK-BE-NEXT:    vextsh2d v2, v2
381 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
382 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
383 ; CHECK-BE-NEXT:    blr
384 entry:
385   %vecext = extractelement <8 x i16> %b, i32 1
386   %conv = sitofp i16 %vecext to fp128
387   store fp128 %conv, fp128* %a, align 16
388   ret void
391 ; Function Attrs: norecurse nounwind
392 define void @shwVecConv2qp2(fp128* nocapture %a, <8 x i16> %b) {
393 ; CHECK-LABEL: shwVecConv2qp2:
394 ; CHECK:       # %bb.0: # %entry
395 ; CHECK-NEXT:    vextractuh v2, v2, 10
396 ; CHECK-NEXT:    vextsh2d v2, v2
397 ; CHECK-NEXT:    xscvsdqp v2, v2
398 ; CHECK-NEXT:    stxv v2, 0(r3)
399 ; CHECK-NEXT:    blr
401 ; CHECK-BE-LABEL: shwVecConv2qp2:
402 ; CHECK-BE:       # %bb.0: # %entry
403 ; CHECK-BE-NEXT:    vextractuh v2, v2, 4
404 ; CHECK-BE-NEXT:    vextsh2d v2, v2
405 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
406 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
407 ; CHECK-BE-NEXT:    blr
408 entry:
409   %vecext = extractelement <8 x i16> %b, i32 2
410   %conv = sitofp i16 %vecext to fp128
411   store fp128 %conv, fp128* %a, align 16
412   ret void
415 ; Function Attrs: norecurse nounwind
416 define void @shwVecConv2qp3(fp128* nocapture %a, <8 x i16> %b) {
417 ; CHECK-LABEL: shwVecConv2qp3:
418 ; CHECK:       # %bb.0: # %entry
419 ; CHECK-NEXT:    vextractuh v2, v2, 8
420 ; CHECK-NEXT:    vextsh2d v2, v2
421 ; CHECK-NEXT:    xscvsdqp v2, v2
422 ; CHECK-NEXT:    stxv v2, 0(r3)
423 ; CHECK-NEXT:    blr
425 ; CHECK-BE-LABEL: shwVecConv2qp3:
426 ; CHECK-BE:       # %bb.0: # %entry
427 ; CHECK-BE-NEXT:    vextractuh v2, v2, 6
428 ; CHECK-BE-NEXT:    vextsh2d v2, v2
429 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
430 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
431 ; CHECK-BE-NEXT:    blr
432 entry:
433   %vecext = extractelement <8 x i16> %b, i32 3
434   %conv = sitofp i16 %vecext to fp128
435   store fp128 %conv, fp128* %a, align 16
436   ret void
439 ; Function Attrs: norecurse nounwind
440 define void @shwVecConv2qp4(fp128* nocapture %a, <8 x i16> %b) {
441 ; CHECK-LABEL: shwVecConv2qp4:
442 ; CHECK:       # %bb.0: # %entry
443 ; CHECK-NEXT:    vextractuh v2, v2, 6
444 ; CHECK-NEXT:    vextsh2d v2, v2
445 ; CHECK-NEXT:    xscvsdqp v2, v2
446 ; CHECK-NEXT:    stxv v2, 0(r3)
447 ; CHECK-NEXT:    blr
449 ; CHECK-BE-LABEL: shwVecConv2qp4:
450 ; CHECK-BE:       # %bb.0: # %entry
451 ; CHECK-BE-NEXT:    vextractuh v2, v2, 8
452 ; CHECK-BE-NEXT:    vextsh2d v2, v2
453 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
454 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
455 ; CHECK-BE-NEXT:    blr
456 entry:
457   %vecext = extractelement <8 x i16> %b, i32 4
458   %conv = sitofp i16 %vecext to fp128
459   store fp128 %conv, fp128* %a, align 16
460   ret void
463 ; Function Attrs: norecurse nounwind
464 define void @shwVecConv2qp5(fp128* nocapture %a, <8 x i16> %b) {
465 ; CHECK-LABEL: shwVecConv2qp5:
466 ; CHECK:       # %bb.0: # %entry
467 ; CHECK-NEXT:    vextractuh v2, v2, 4
468 ; CHECK-NEXT:    vextsh2d v2, v2
469 ; CHECK-NEXT:    xscvsdqp v2, v2
470 ; CHECK-NEXT:    stxv v2, 0(r3)
471 ; CHECK-NEXT:    blr
473 ; CHECK-BE-LABEL: shwVecConv2qp5:
474 ; CHECK-BE:       # %bb.0: # %entry
475 ; CHECK-BE-NEXT:    vextractuh v2, v2, 10
476 ; CHECK-BE-NEXT:    vextsh2d v2, v2
477 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
478 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
479 ; CHECK-BE-NEXT:    blr
480 entry:
481   %vecext = extractelement <8 x i16> %b, i32 5
482   %conv = sitofp i16 %vecext to fp128
483   store fp128 %conv, fp128* %a, align 16
484   ret void
487 ; Function Attrs: norecurse nounwind
488 define void @shwVecConv2qp6(fp128* nocapture %a, <8 x i16> %b) {
489 ; CHECK-LABEL: shwVecConv2qp6:
490 ; CHECK:       # %bb.0: # %entry
491 ; CHECK-NEXT:    vextractuh v2, v2, 2
492 ; CHECK-NEXT:    vextsh2d v2, v2
493 ; CHECK-NEXT:    xscvsdqp v2, v2
494 ; CHECK-NEXT:    stxv v2, 0(r3)
495 ; CHECK-NEXT:    blr
497 ; CHECK-BE-LABEL: shwVecConv2qp6:
498 ; CHECK-BE:       # %bb.0: # %entry
499 ; CHECK-BE-NEXT:    vextractuh v2, v2, 12
500 ; CHECK-BE-NEXT:    vextsh2d v2, v2
501 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
502 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
503 ; CHECK-BE-NEXT:    blr
504 entry:
505   %vecext = extractelement <8 x i16> %b, i32 6
506   %conv = sitofp i16 %vecext to fp128
507   store fp128 %conv, fp128* %a, align 16
508   ret void
511 ; Function Attrs: norecurse nounwind
512 define void @shwVecConv2qp7(fp128* nocapture %a, <8 x i16> %b) {
513 ; CHECK-LABEL: shwVecConv2qp7:
514 ; CHECK:       # %bb.0: # %entry
515 ; CHECK-NEXT:    vextractuh v2, v2, 0
516 ; CHECK-NEXT:    vextsh2d v2, v2
517 ; CHECK-NEXT:    xscvsdqp v2, v2
518 ; CHECK-NEXT:    stxv v2, 0(r3)
519 ; CHECK-NEXT:    blr
521 ; CHECK-BE-LABEL: shwVecConv2qp7:
522 ; CHECK-BE:       # %bb.0: # %entry
523 ; CHECK-BE-NEXT:    vextractuh v2, v2, 14
524 ; CHECK-BE-NEXT:    vextsh2d v2, v2
525 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
526 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
527 ; CHECK-BE-NEXT:    blr
528 entry:
529   %vecext = extractelement <8 x i16> %b, i32 7
530   %conv = sitofp i16 %vecext to fp128
531   store fp128 %conv, fp128* %a, align 16
532   ret void
535 ; Function Attrs: norecurse nounwind
536 define void @uhwVecConv2qp(fp128* nocapture %a, <8 x i16> %b) {
537 ; CHECK-LABEL: uhwVecConv2qp:
538 ; CHECK:       # %bb.0: # %entry
539 ; CHECK-NEXT:    vextractuh v2, v2, 14
540 ; CHECK-NEXT:    xscvudqp v2, v2
541 ; CHECK-NEXT:    stxv v2, 0(r3)
542 ; CHECK-NEXT:    blr
544 ; CHECK-BE-LABEL: uhwVecConv2qp:
545 ; CHECK-BE:       # %bb.0: # %entry
546 ; CHECK-BE-NEXT:    vextractuh v2, v2, 0
547 ; CHECK-BE-NEXT:    xscvudqp v2, v2
548 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
549 ; CHECK-BE-NEXT:    blr
550 entry:
551   %vecext = extractelement <8 x i16> %b, i32 0
552   %conv = uitofp i16 %vecext to fp128
553   store fp128 %conv, fp128* %a, align 16
554   ret void
557 ; Function Attrs: norecurse nounwind
558 define void @uhwVecConv2qp1(fp128* nocapture %a, <8 x i16> %b) {
559 ; CHECK-LABEL: uhwVecConv2qp1:
560 ; CHECK:       # %bb.0: # %entry
561 ; CHECK-NEXT:    vextractuh v2, v2, 12
562 ; CHECK-NEXT:    xscvudqp v2, v2
563 ; CHECK-NEXT:    stxv v2, 0(r3)
564 ; CHECK-NEXT:    blr
566 ; CHECK-BE-LABEL: uhwVecConv2qp1:
567 ; CHECK-BE:       # %bb.0: # %entry
568 ; CHECK-BE-NEXT:    vextractuh v2, v2, 2
569 ; CHECK-BE-NEXT:    xscvudqp v2, v2
570 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
571 ; CHECK-BE-NEXT:    blr
572 entry:
573   %vecext = extractelement <8 x i16> %b, i32 1
574   %conv = uitofp i16 %vecext to fp128
575   store fp128 %conv, fp128* %a, align 16
576   ret void
579 ; Function Attrs: norecurse nounwind
580 define void @uhwVecConv2qp2(fp128* nocapture %a, <8 x i16> %b) {
581 ; CHECK-LABEL: uhwVecConv2qp2:
582 ; CHECK:       # %bb.0: # %entry
583 ; CHECK-NEXT:    vextractuh v2, v2, 10
584 ; CHECK-NEXT:    xscvudqp v2, v2
585 ; CHECK-NEXT:    stxv v2, 0(r3)
586 ; CHECK-NEXT:    blr
588 ; CHECK-BE-LABEL: uhwVecConv2qp2:
589 ; CHECK-BE:       # %bb.0: # %entry
590 ; CHECK-BE-NEXT:    vextractuh v2, v2, 4
591 ; CHECK-BE-NEXT:    xscvudqp v2, v2
592 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
593 ; CHECK-BE-NEXT:    blr
594 entry:
595   %vecext = extractelement <8 x i16> %b, i32 2
596   %conv = uitofp i16 %vecext to fp128
597   store fp128 %conv, fp128* %a, align 16
598   ret void
601 ; Function Attrs: norecurse nounwind
602 define void @uhwVecConv2qp3(fp128* nocapture %a, <8 x i16> %b) {
603 ; CHECK-LABEL: uhwVecConv2qp3:
604 ; CHECK:       # %bb.0: # %entry
605 ; CHECK-NEXT:    vextractuh v2, v2, 8
606 ; CHECK-NEXT:    xscvudqp v2, v2
607 ; CHECK-NEXT:    stxv v2, 0(r3)
608 ; CHECK-NEXT:    blr
610 ; CHECK-BE-LABEL: uhwVecConv2qp3:
611 ; CHECK-BE:       # %bb.0: # %entry
612 ; CHECK-BE-NEXT:    vextractuh v2, v2, 6
613 ; CHECK-BE-NEXT:    xscvudqp v2, v2
614 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
615 ; CHECK-BE-NEXT:    blr
616 entry:
617   %vecext = extractelement <8 x i16> %b, i32 3
618   %conv = uitofp i16 %vecext to fp128
619   store fp128 %conv, fp128* %a, align 16
620   ret void
623 ; Function Attrs: norecurse nounwind
624 define void @uhwVecConv2qp4(fp128* nocapture %a, <8 x i16> %b) {
625 ; CHECK-LABEL: uhwVecConv2qp4:
626 ; CHECK:       # %bb.0: # %entry
627 ; CHECK-NEXT:    vextractuh v2, v2, 6
628 ; CHECK-NEXT:    xscvudqp v2, v2
629 ; CHECK-NEXT:    stxv v2, 0(r3)
630 ; CHECK-NEXT:    blr
632 ; CHECK-BE-LABEL: uhwVecConv2qp4:
633 ; CHECK-BE:       # %bb.0: # %entry
634 ; CHECK-BE-NEXT:    vextractuh v2, v2, 8
635 ; CHECK-BE-NEXT:    xscvudqp v2, v2
636 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
637 ; CHECK-BE-NEXT:    blr
638 entry:
639   %vecext = extractelement <8 x i16> %b, i32 4
640   %conv = uitofp i16 %vecext to fp128
641   store fp128 %conv, fp128* %a, align 16
642   ret void
645 ; Function Attrs: norecurse nounwind
646 define void @uhwVecConv2qp5(fp128* nocapture %a, <8 x i16> %b) {
647 ; CHECK-LABEL: uhwVecConv2qp5:
648 ; CHECK:       # %bb.0: # %entry
649 ; CHECK-NEXT:    vextractuh v2, v2, 4
650 ; CHECK-NEXT:    xscvudqp v2, v2
651 ; CHECK-NEXT:    stxv v2, 0(r3)
652 ; CHECK-NEXT:    blr
654 ; CHECK-BE-LABEL: uhwVecConv2qp5:
655 ; CHECK-BE:       # %bb.0: # %entry
656 ; CHECK-BE-NEXT:    vextractuh v2, v2, 10
657 ; CHECK-BE-NEXT:    xscvudqp v2, v2
658 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
659 ; CHECK-BE-NEXT:    blr
660 entry:
661   %vecext = extractelement <8 x i16> %b, i32 5
662   %conv = uitofp i16 %vecext to fp128
663   store fp128 %conv, fp128* %a, align 16
664   ret void
667 ; Function Attrs: norecurse nounwind
668 define void @uhwVecConv2qp6(fp128* nocapture %a, <8 x i16> %b) {
669 ; CHECK-LABEL: uhwVecConv2qp6:
670 ; CHECK:       # %bb.0: # %entry
671 ; CHECK-NEXT:    vextractuh v2, v2, 2
672 ; CHECK-NEXT:    xscvudqp v2, v2
673 ; CHECK-NEXT:    stxv v2, 0(r3)
674 ; CHECK-NEXT:    blr
676 ; CHECK-BE-LABEL: uhwVecConv2qp6:
677 ; CHECK-BE:       # %bb.0: # %entry
678 ; CHECK-BE-NEXT:    vextractuh v2, v2, 12
679 ; CHECK-BE-NEXT:    xscvudqp v2, v2
680 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
681 ; CHECK-BE-NEXT:    blr
682 entry:
683   %vecext = extractelement <8 x i16> %b, i32 6
684   %conv = uitofp i16 %vecext to fp128
685   store fp128 %conv, fp128* %a, align 16
686   ret void
689 ; Function Attrs: norecurse nounwind
690 define void @uhwVecConv2qp7(fp128* nocapture %a, <8 x i16> %b) {
691 ; CHECK-LABEL: uhwVecConv2qp7:
692 ; CHECK:       # %bb.0: # %entry
693 ; CHECK-NEXT:    vextractuh v2, v2, 0
694 ; CHECK-NEXT:    xscvudqp v2, v2
695 ; CHECK-NEXT:    stxv v2, 0(r3)
696 ; CHECK-NEXT:    blr
698 ; CHECK-BE-LABEL: uhwVecConv2qp7:
699 ; CHECK-BE:       # %bb.0: # %entry
700 ; CHECK-BE-NEXT:    vextractuh v2, v2, 14
701 ; CHECK-BE-NEXT:    xscvudqp v2, v2
702 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
703 ; CHECK-BE-NEXT:    blr
704 entry:
705   %vecext = extractelement <8 x i16> %b, i32 7
706   %conv = uitofp i16 %vecext to fp128
707   store fp128 %conv, fp128* %a, align 16
708   ret void
711 ; Vector extract Byte and convert to quad precision.
713 ; Function Attrs: norecurse nounwind
714 define void @sbVecConv2qp(fp128* nocapture %a, <16 x i8> %b) {
715 ; CHECK-LABEL: sbVecConv2qp:
716 ; CHECK:       # %bb.0: # %entry
717 ; CHECK-NEXT:    vextractub v2, v2, 15
718 ; CHECK-NEXT:    vextsb2d v2, v2
719 ; CHECK-NEXT:    xscvsdqp v2, v2
720 ; CHECK-NEXT:    stxv v2, 0(r3)
721 ; CHECK-NEXT:    blr
723 ; CHECK-BE-LABEL: sbVecConv2qp:
724 ; CHECK-BE:       # %bb.0: # %entry
725 ; CHECK-BE-NEXT:    vextractub v2, v2, 0
726 ; CHECK-BE-NEXT:    vextsb2d v2, v2
727 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
728 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
729 ; CHECK-BE-NEXT:    blr
730 entry:
731   %vecext = extractelement <16 x i8> %b, i32 0
732   %conv = sitofp i8 %vecext to fp128
733   store fp128 %conv, fp128* %a, align 16
734   ret void
737 ; Function Attrs: norecurse nounwind
738 define void @sbVecConv2qp1(fp128* nocapture %a, <16 x i8> %b) {
739 ; CHECK-LABEL: sbVecConv2qp1:
740 ; CHECK:       # %bb.0: # %entry
741 ; CHECK-NEXT:    vextractub v2, v2, 14
742 ; CHECK-NEXT:    vextsb2d v2, v2
743 ; CHECK-NEXT:    xscvsdqp v2, v2
744 ; CHECK-NEXT:    stxv v2, 0(r3)
745 ; CHECK-NEXT:    blr
747 ; CHECK-BE-LABEL: sbVecConv2qp1:
748 ; CHECK-BE:       # %bb.0: # %entry
749 ; CHECK-BE-NEXT:    vextractub v2, v2, 1
750 ; CHECK-BE-NEXT:    vextsb2d v2, v2
751 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
752 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
753 ; CHECK-BE-NEXT:    blr
754 entry:
755   %vecext = extractelement <16 x i8> %b, i32 1
756   %conv = sitofp i8 %vecext to fp128
757   store fp128 %conv, fp128* %a, align 16
758   ret void
761 ; Function Attrs: norecurse nounwind
762 define void @sbVecConv2qp2(fp128* nocapture %a, <16 x i8> %b) {
763 ; CHECK-LABEL: sbVecConv2qp2:
764 ; CHECK:       # %bb.0: # %entry
765 ; CHECK-NEXT:    vextractub v2, v2, 13
766 ; CHECK-NEXT:    vextsb2d v2, v2
767 ; CHECK-NEXT:    xscvsdqp v2, v2
768 ; CHECK-NEXT:    stxv v2, 0(r3)
769 ; CHECK-NEXT:    blr
771 ; CHECK-BE-LABEL: sbVecConv2qp2:
772 ; CHECK-BE:       # %bb.0: # %entry
773 ; CHECK-BE-NEXT:    vextractub v2, v2, 2
774 ; CHECK-BE-NEXT:    vextsb2d v2, v2
775 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
776 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
777 ; CHECK-BE-NEXT:    blr
778 entry:
779   %vecext = extractelement <16 x i8> %b, i32 2
780   %conv = sitofp i8 %vecext to fp128
781   store fp128 %conv, fp128* %a, align 16
782   ret void
785 ; Function Attrs: norecurse nounwind
786 define void @sbVecConv2qp3(fp128* nocapture %a, <16 x i8> %b) {
787 ; CHECK-LABEL: sbVecConv2qp3:
788 ; CHECK:       # %bb.0: # %entry
789 ; CHECK-NEXT:    vextractub v2, v2, 12
790 ; CHECK-NEXT:    vextsb2d v2, v2
791 ; CHECK-NEXT:    xscvsdqp v2, v2
792 ; CHECK-NEXT:    stxv v2, 0(r3)
793 ; CHECK-NEXT:    blr
795 ; CHECK-BE-LABEL: sbVecConv2qp3:
796 ; CHECK-BE:       # %bb.0: # %entry
797 ; CHECK-BE-NEXT:    vextractub v2, v2, 3
798 ; CHECK-BE-NEXT:    vextsb2d v2, v2
799 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
800 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
801 ; CHECK-BE-NEXT:    blr
802 entry:
803   %vecext = extractelement <16 x i8> %b, i32 3
804   %conv = sitofp i8 %vecext to fp128
805   store fp128 %conv, fp128* %a, align 16
806   ret void
809 ; Function Attrs: norecurse nounwind
810 define void @sbVecConv2qp4(fp128* nocapture %a, <16 x i8> %b) {
811 ; CHECK-LABEL: sbVecConv2qp4:
812 ; CHECK:       # %bb.0: # %entry
813 ; CHECK-NEXT:    vextractub v2, v2, 11
814 ; CHECK-NEXT:    vextsb2d v2, v2
815 ; CHECK-NEXT:    xscvsdqp v2, v2
816 ; CHECK-NEXT:    stxv v2, 0(r3)
817 ; CHECK-NEXT:    blr
819 ; CHECK-BE-LABEL: sbVecConv2qp4:
820 ; CHECK-BE:       # %bb.0: # %entry
821 ; CHECK-BE-NEXT:    vextractub v2, v2, 4
822 ; CHECK-BE-NEXT:    vextsb2d v2, v2
823 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
824 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
825 ; CHECK-BE-NEXT:    blr
826 entry:
827   %vecext = extractelement <16 x i8> %b, i32 4
828   %conv = sitofp i8 %vecext to fp128
829   store fp128 %conv, fp128* %a, align 16
830   ret void
833 ; Function Attrs: norecurse nounwind
834 define void @sbVecConv2qp5(fp128* nocapture %a, <16 x i8> %b) {
835 ; CHECK-LABEL: sbVecConv2qp5:
836 ; CHECK:       # %bb.0: # %entry
837 ; CHECK-NEXT:    vextractub v2, v2, 10
838 ; CHECK-NEXT:    vextsb2d v2, v2
839 ; CHECK-NEXT:    xscvsdqp v2, v2
840 ; CHECK-NEXT:    stxv v2, 0(r3)
841 ; CHECK-NEXT:    blr
843 ; CHECK-BE-LABEL: sbVecConv2qp5:
844 ; CHECK-BE:       # %bb.0: # %entry
845 ; CHECK-BE-NEXT:    vextractub v2, v2, 5
846 ; CHECK-BE-NEXT:    vextsb2d v2, v2
847 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
848 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
849 ; CHECK-BE-NEXT:    blr
850 entry:
851   %vecext = extractelement <16 x i8> %b, i32 5
852   %conv = sitofp i8 %vecext to fp128
853   store fp128 %conv, fp128* %a, align 16
854   ret void
857 ; Function Attrs: norecurse nounwind
858 define void @sbVecConv2qp6(fp128* nocapture %a, <16 x i8> %b) {
859 ; CHECK-LABEL: sbVecConv2qp6:
860 ; CHECK:       # %bb.0: # %entry
861 ; CHECK-NEXT:    vextractub v2, v2, 9
862 ; CHECK-NEXT:    vextsb2d v2, v2
863 ; CHECK-NEXT:    xscvsdqp v2, v2
864 ; CHECK-NEXT:    stxv v2, 0(r3)
865 ; CHECK-NEXT:    blr
867 ; CHECK-BE-LABEL: sbVecConv2qp6:
868 ; CHECK-BE:       # %bb.0: # %entry
869 ; CHECK-BE-NEXT:    vextractub v2, v2, 6
870 ; CHECK-BE-NEXT:    vextsb2d v2, v2
871 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
872 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
873 ; CHECK-BE-NEXT:    blr
874 entry:
875   %vecext = extractelement <16 x i8> %b, i32 6
876   %conv = sitofp i8 %vecext to fp128
877   store fp128 %conv, fp128* %a, align 16
878   ret void
881 ; Function Attrs: norecurse nounwind
882 define void @sbVecConv2qp7(fp128* nocapture %a, <16 x i8> %b) {
883 ; CHECK-LABEL: sbVecConv2qp7:
884 ; CHECK:       # %bb.0: # %entry
885 ; CHECK-NEXT:    vextractub v2, v2, 8
886 ; CHECK-NEXT:    vextsb2d v2, v2
887 ; CHECK-NEXT:    xscvsdqp v2, v2
888 ; CHECK-NEXT:    stxv v2, 0(r3)
889 ; CHECK-NEXT:    blr
891 ; CHECK-BE-LABEL: sbVecConv2qp7:
892 ; CHECK-BE:       # %bb.0: # %entry
893 ; CHECK-BE-NEXT:    vextractub v2, v2, 7
894 ; CHECK-BE-NEXT:    vextsb2d v2, v2
895 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
896 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
897 ; CHECK-BE-NEXT:    blr
898 entry:
899   %vecext = extractelement <16 x i8> %b, i32 7
900   %conv = sitofp i8 %vecext to fp128
901   store fp128 %conv, fp128* %a, align 16
902   ret void
905 ; Function Attrs: norecurse nounwind
906 define void @sbVecConv2qp8(fp128* nocapture %a, <16 x i8> %b) {
907 ; CHECK-LABEL: sbVecConv2qp8:
908 ; CHECK:       # %bb.0: # %entry
909 ; CHECK-NEXT:    vextractub v2, v2, 7
910 ; CHECK-NEXT:    vextsb2d v2, v2
911 ; CHECK-NEXT:    xscvsdqp v2, v2
912 ; CHECK-NEXT:    stxv v2, 0(r3)
913 ; CHECK-NEXT:    blr
915 ; CHECK-BE-LABEL: sbVecConv2qp8:
916 ; CHECK-BE:       # %bb.0: # %entry
917 ; CHECK-BE-NEXT:    vextractub v2, v2, 8
918 ; CHECK-BE-NEXT:    vextsb2d v2, v2
919 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
920 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
921 ; CHECK-BE-NEXT:    blr
922 entry:
923   %vecext = extractelement <16 x i8> %b, i32 8
924   %conv = sitofp i8 %vecext to fp128
925   store fp128 %conv, fp128* %a, align 16
926   ret void
929 ; Function Attrs: norecurse nounwind
930 define void @sbVecConv2qp9(fp128* nocapture %a, <16 x i8> %b) {
931 ; CHECK-LABEL: sbVecConv2qp9:
932 ; CHECK:       # %bb.0: # %entry
933 ; CHECK-NEXT:    vextractub v2, v2, 6
934 ; CHECK-NEXT:    vextsb2d v2, v2
935 ; CHECK-NEXT:    xscvsdqp v2, v2
936 ; CHECK-NEXT:    stxv v2, 0(r3)
937 ; CHECK-NEXT:    blr
939 ; CHECK-BE-LABEL: sbVecConv2qp9:
940 ; CHECK-BE:       # %bb.0: # %entry
941 ; CHECK-BE-NEXT:    vextractub v2, v2, 9
942 ; CHECK-BE-NEXT:    vextsb2d v2, v2
943 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
944 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
945 ; CHECK-BE-NEXT:    blr
946 entry:
947   %vecext = extractelement <16 x i8> %b, i32 9
948   %conv = sitofp i8 %vecext to fp128
949   store fp128 %conv, fp128* %a, align 16
950   ret void
953 ; Function Attrs: norecurse nounwind
954 define void @sbVecConv2qp10(fp128* nocapture %a, <16 x i8> %b) {
955 ; CHECK-LABEL: sbVecConv2qp10:
956 ; CHECK:       # %bb.0: # %entry
957 ; CHECK-NEXT:    vextractub v2, v2, 5
958 ; CHECK-NEXT:    vextsb2d v2, v2
959 ; CHECK-NEXT:    xscvsdqp v2, v2
960 ; CHECK-NEXT:    stxv v2, 0(r3)
961 ; CHECK-NEXT:    blr
963 ; CHECK-BE-LABEL: sbVecConv2qp10:
964 ; CHECK-BE:       # %bb.0: # %entry
965 ; CHECK-BE-NEXT:    vextractub v2, v2, 10
966 ; CHECK-BE-NEXT:    vextsb2d v2, v2
967 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
968 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
969 ; CHECK-BE-NEXT:    blr
970 entry:
971   %vecext = extractelement <16 x i8> %b, i32 10
972   %conv = sitofp i8 %vecext to fp128
973   store fp128 %conv, fp128* %a, align 16
974   ret void
977 ; Function Attrs: norecurse nounwind
978 define void @sbVecConv2qp11(fp128* nocapture %a, <16 x i8> %b) {
979 ; CHECK-LABEL: sbVecConv2qp11:
980 ; CHECK:       # %bb.0: # %entry
981 ; CHECK-NEXT:    vextractub v2, v2, 4
982 ; CHECK-NEXT:    vextsb2d v2, v2
983 ; CHECK-NEXT:    xscvsdqp v2, v2
984 ; CHECK-NEXT:    stxv v2, 0(r3)
985 ; CHECK-NEXT:    blr
987 ; CHECK-BE-LABEL: sbVecConv2qp11:
988 ; CHECK-BE:       # %bb.0: # %entry
989 ; CHECK-BE-NEXT:    vextractub v2, v2, 11
990 ; CHECK-BE-NEXT:    vextsb2d v2, v2
991 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
992 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
993 ; CHECK-BE-NEXT:    blr
994 entry:
995   %vecext = extractelement <16 x i8> %b, i32 11
996   %conv = sitofp i8 %vecext to fp128
997   store fp128 %conv, fp128* %a, align 16
998   ret void
1001 ; Function Attrs: norecurse nounwind
1002 define void @sbVecConv2qp12(fp128* nocapture %a, <16 x i8> %b) {
1003 ; CHECK-LABEL: sbVecConv2qp12:
1004 ; CHECK:       # %bb.0: # %entry
1005 ; CHECK-NEXT:    vextractub v2, v2, 3
1006 ; CHECK-NEXT:    vextsb2d v2, v2
1007 ; CHECK-NEXT:    xscvsdqp v2, v2
1008 ; CHECK-NEXT:    stxv v2, 0(r3)
1009 ; CHECK-NEXT:    blr
1011 ; CHECK-BE-LABEL: sbVecConv2qp12:
1012 ; CHECK-BE:       # %bb.0: # %entry
1013 ; CHECK-BE-NEXT:    vextractub v2, v2, 12
1014 ; CHECK-BE-NEXT:    vextsb2d v2, v2
1015 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
1016 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
1017 ; CHECK-BE-NEXT:    blr
1018 entry:
1019   %vecext = extractelement <16 x i8> %b, i32 12
1020   %conv = sitofp i8 %vecext to fp128
1021   store fp128 %conv, fp128* %a, align 16
1022   ret void
1025 ; Function Attrs: norecurse nounwind
1026 define void @sbVecConv2qp13(fp128* nocapture %a, <16 x i8> %b) {
1027 ; CHECK-LABEL: sbVecConv2qp13:
1028 ; CHECK:       # %bb.0: # %entry
1029 ; CHECK-NEXT:    vextractub v2, v2, 2
1030 ; CHECK-NEXT:    vextsb2d v2, v2
1031 ; CHECK-NEXT:    xscvsdqp v2, v2
1032 ; CHECK-NEXT:    stxv v2, 0(r3)
1033 ; CHECK-NEXT:    blr
1035 ; CHECK-BE-LABEL: sbVecConv2qp13:
1036 ; CHECK-BE:       # %bb.0: # %entry
1037 ; CHECK-BE-NEXT:    vextractub v2, v2, 13
1038 ; CHECK-BE-NEXT:    vextsb2d v2, v2
1039 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
1040 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
1041 ; CHECK-BE-NEXT:    blr
1042 entry:
1043   %vecext = extractelement <16 x i8> %b, i32 13
1044   %conv = sitofp i8 %vecext to fp128
1045   store fp128 %conv, fp128* %a, align 16
1046   ret void
1049 ; Function Attrs: norecurse nounwind
1050 define void @sbVecConv2qp14(fp128* nocapture %a, <16 x i8> %b) {
1051 ; CHECK-LABEL: sbVecConv2qp14:
1052 ; CHECK:       # %bb.0: # %entry
1053 ; CHECK-NEXT:    vextractub v2, v2, 1
1054 ; CHECK-NEXT:    vextsb2d v2, v2
1055 ; CHECK-NEXT:    xscvsdqp v2, v2
1056 ; CHECK-NEXT:    stxv v2, 0(r3)
1057 ; CHECK-NEXT:    blr
1059 ; CHECK-BE-LABEL: sbVecConv2qp14:
1060 ; CHECK-BE:       # %bb.0: # %entry
1061 ; CHECK-BE-NEXT:    vextractub v2, v2, 14
1062 ; CHECK-BE-NEXT:    vextsb2d v2, v2
1063 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
1064 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
1065 ; CHECK-BE-NEXT:    blr
1066 entry:
1067   %vecext = extractelement <16 x i8> %b, i32 14
1068   %conv = sitofp i8 %vecext to fp128
1069   store fp128 %conv, fp128* %a, align 16
1070   ret void
1073 ; Function Attrs: norecurse nounwind
1074 define void @sbVecConv2qp15(fp128* nocapture %a, <16 x i8> %b) {
1075 ; CHECK-LABEL: sbVecConv2qp15:
1076 ; CHECK:       # %bb.0: # %entry
1077 ; CHECK-NEXT:    vextractub v2, v2, 0
1078 ; CHECK-NEXT:    vextsb2d v2, v2
1079 ; CHECK-NEXT:    xscvsdqp v2, v2
1080 ; CHECK-NEXT:    stxv v2, 0(r3)
1081 ; CHECK-NEXT:    blr
1083 ; CHECK-BE-LABEL: sbVecConv2qp15:
1084 ; CHECK-BE:       # %bb.0: # %entry
1085 ; CHECK-BE-NEXT:    vextractub v2, v2, 15
1086 ; CHECK-BE-NEXT:    vextsb2d v2, v2
1087 ; CHECK-BE-NEXT:    xscvsdqp v2, v2
1088 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
1089 ; CHECK-BE-NEXT:    blr
1090 entry:
1091   %vecext = extractelement <16 x i8> %b, i32 15
1092   %conv = sitofp i8 %vecext to fp128
1093   store fp128 %conv, fp128* %a, align 16
1094   ret void
1097 ; Function Attrs: norecurse nounwind
1098 define void @ubVecConv2qp(fp128* nocapture %a, <16 x i8> %b) {
1099 ; CHECK-LABEL: ubVecConv2qp:
1100 ; CHECK:       # %bb.0: # %entry
1101 ; CHECK-NEXT:    vextractub v2, v2, 15
1102 ; CHECK-NEXT:    xscvudqp v2, v2
1103 ; CHECK-NEXT:    stxv v2, 0(r3)
1104 ; CHECK-NEXT:    blr
1106 ; CHECK-BE-LABEL: ubVecConv2qp:
1107 ; CHECK-BE:       # %bb.0: # %entry
1108 ; CHECK-BE-NEXT:    vextractub v2, v2, 0
1109 ; CHECK-BE-NEXT:    xscvudqp v2, v2
1110 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
1111 ; CHECK-BE-NEXT:    blr
1112 entry:
1113   %vecext = extractelement <16 x i8> %b, i32 0
1114   %conv = uitofp i8 %vecext to fp128
1115   store fp128 %conv, fp128* %a, align 16
1116   ret void
1119 ; Function Attrs: norecurse nounwind
1120 define void @ubVecConv2qp1(fp128* nocapture %a, <16 x i8> %b) {
1121 ; CHECK-LABEL: ubVecConv2qp1:
1122 ; CHECK:       # %bb.0: # %entry
1123 ; CHECK-NEXT:    vextractub v2, v2, 14
1124 ; CHECK-NEXT:    xscvudqp v2, v2
1125 ; CHECK-NEXT:    stxv v2, 0(r3)
1126 ; CHECK-NEXT:    blr
1128 ; CHECK-BE-LABEL: ubVecConv2qp1:
1129 ; CHECK-BE:       # %bb.0: # %entry
1130 ; CHECK-BE-NEXT:    vextractub v2, v2, 1
1131 ; CHECK-BE-NEXT:    xscvudqp v2, v2
1132 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
1133 ; CHECK-BE-NEXT:    blr
1134 entry:
1135   %vecext = extractelement <16 x i8> %b, i32 1
1136   %conv = uitofp i8 %vecext to fp128
1137   store fp128 %conv, fp128* %a, align 16
1138   ret void
1141 ; Function Attrs: norecurse nounwind
1142 define void @ubVecConv2qp2(fp128* nocapture %a, <16 x i8> %b) {
1143 ; CHECK-LABEL: ubVecConv2qp2:
1144 ; CHECK:       # %bb.0: # %entry
1145 ; CHECK-NEXT:    vextractub v2, v2, 13
1146 ; CHECK-NEXT:    xscvudqp v2, v2
1147 ; CHECK-NEXT:    stxv v2, 0(r3)
1148 ; CHECK-NEXT:    blr
1150 ; CHECK-BE-LABEL: ubVecConv2qp2:
1151 ; CHECK-BE:       # %bb.0: # %entry
1152 ; CHECK-BE-NEXT:    vextractub v2, v2, 2
1153 ; CHECK-BE-NEXT:    xscvudqp v2, v2
1154 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
1155 ; CHECK-BE-NEXT:    blr
1156 entry:
1157   %vecext = extractelement <16 x i8> %b, i32 2
1158   %conv = uitofp i8 %vecext to fp128
1159   store fp128 %conv, fp128* %a, align 16
1160   ret void
1163 ; Function Attrs: norecurse nounwind
1164 define void @ubVecConv2qp3(fp128* nocapture %a, <16 x i8> %b) {
1165 ; CHECK-LABEL: ubVecConv2qp3:
1166 ; CHECK:       # %bb.0: # %entry
1167 ; CHECK-NEXT:    vextractub v2, v2, 12
1168 ; CHECK-NEXT:    xscvudqp v2, v2
1169 ; CHECK-NEXT:    stxv v2, 0(r3)
1170 ; CHECK-NEXT:    blr
1172 ; CHECK-BE-LABEL: ubVecConv2qp3:
1173 ; CHECK-BE:       # %bb.0: # %entry
1174 ; CHECK-BE-NEXT:    vextractub v2, v2, 3
1175 ; CHECK-BE-NEXT:    xscvudqp v2, v2
1176 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
1177 ; CHECK-BE-NEXT:    blr
1178 entry:
1179   %vecext = extractelement <16 x i8> %b, i32 3
1180   %conv = uitofp i8 %vecext to fp128
1181   store fp128 %conv, fp128* %a, align 16
1182   ret void
1185 ; Function Attrs: norecurse nounwind
1186 define void @ubVecConv2qp4(fp128* nocapture %a, <16 x i8> %b) {
1187 ; CHECK-LABEL: ubVecConv2qp4:
1188 ; CHECK:       # %bb.0: # %entry
1189 ; CHECK-NEXT:    vextractub v2, v2, 11
1190 ; CHECK-NEXT:    xscvudqp v2, v2
1191 ; CHECK-NEXT:    stxv v2, 0(r3)
1192 ; CHECK-NEXT:    blr
1194 ; CHECK-BE-LABEL: ubVecConv2qp4:
1195 ; CHECK-BE:       # %bb.0: # %entry
1196 ; CHECK-BE-NEXT:    vextractub v2, v2, 4
1197 ; CHECK-BE-NEXT:    xscvudqp v2, v2
1198 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
1199 ; CHECK-BE-NEXT:    blr
1200 entry:
1201   %vecext = extractelement <16 x i8> %b, i32 4
1202   %conv = uitofp i8 %vecext to fp128
1203   store fp128 %conv, fp128* %a, align 16
1204   ret void
1207 ; Function Attrs: norecurse nounwind
1208 define void @ubVecConv2qp5(fp128* nocapture %a, <16 x i8> %b) {
1209 ; CHECK-LABEL: ubVecConv2qp5:
1210 ; CHECK:       # %bb.0: # %entry
1211 ; CHECK-NEXT:    vextractub v2, v2, 10
1212 ; CHECK-NEXT:    xscvudqp v2, v2
1213 ; CHECK-NEXT:    stxv v2, 0(r3)
1214 ; CHECK-NEXT:    blr
1216 ; CHECK-BE-LABEL: ubVecConv2qp5:
1217 ; CHECK-BE:       # %bb.0: # %entry
1218 ; CHECK-BE-NEXT:    vextractub v2, v2, 5
1219 ; CHECK-BE-NEXT:    xscvudqp v2, v2
1220 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
1221 ; CHECK-BE-NEXT:    blr
1222 entry:
1223   %vecext = extractelement <16 x i8> %b, i32 5
1224   %conv = uitofp i8 %vecext to fp128
1225   store fp128 %conv, fp128* %a, align 16
1226   ret void
1229 ; Function Attrs: norecurse nounwind
1230 define void @ubVecConv2qp6(fp128* nocapture %a, <16 x i8> %b) {
1231 ; CHECK-LABEL: ubVecConv2qp6:
1232 ; CHECK:       # %bb.0: # %entry
1233 ; CHECK-NEXT:    vextractub v2, v2, 9
1234 ; CHECK-NEXT:    xscvudqp v2, v2
1235 ; CHECK-NEXT:    stxv v2, 0(r3)
1236 ; CHECK-NEXT:    blr
1238 ; CHECK-BE-LABEL: ubVecConv2qp6:
1239 ; CHECK-BE:       # %bb.0: # %entry
1240 ; CHECK-BE-NEXT:    vextractub v2, v2, 6
1241 ; CHECK-BE-NEXT:    xscvudqp v2, v2
1242 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
1243 ; CHECK-BE-NEXT:    blr
1244 entry:
1245   %vecext = extractelement <16 x i8> %b, i32 6
1246   %conv = uitofp i8 %vecext to fp128
1247   store fp128 %conv, fp128* %a, align 16
1248   ret void
1251 ; Function Attrs: norecurse nounwind
1252 define void @ubVecConv2qp7(fp128* nocapture %a, <16 x i8> %b) {
1253 ; CHECK-LABEL: ubVecConv2qp7:
1254 ; CHECK:       # %bb.0: # %entry
1255 ; CHECK-NEXT:    vextractub v2, v2, 8
1256 ; CHECK-NEXT:    xscvudqp v2, v2
1257 ; CHECK-NEXT:    stxv v2, 0(r3)
1258 ; CHECK-NEXT:    blr
1260 ; CHECK-BE-LABEL: ubVecConv2qp7:
1261 ; CHECK-BE:       # %bb.0: # %entry
1262 ; CHECK-BE-NEXT:    vextractub v2, v2, 7
1263 ; CHECK-BE-NEXT:    xscvudqp v2, v2
1264 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
1265 ; CHECK-BE-NEXT:    blr
1266 entry:
1267   %vecext = extractelement <16 x i8> %b, i32 7
1268   %conv = uitofp i8 %vecext to fp128
1269   store fp128 %conv, fp128* %a, align 16
1270   ret void
1273 ; Function Attrs: norecurse nounwind
1274 define void @ubVecConv2qp8(fp128* nocapture %a, <16 x i8> %b) {
1275 ; CHECK-LABEL: ubVecConv2qp8:
1276 ; CHECK:       # %bb.0: # %entry
1277 ; CHECK-NEXT:    vextractub v2, v2, 7
1278 ; CHECK-NEXT:    xscvudqp v2, v2
1279 ; CHECK-NEXT:    stxv v2, 0(r3)
1280 ; CHECK-NEXT:    blr
1282 ; CHECK-BE-LABEL: ubVecConv2qp8:
1283 ; CHECK-BE:       # %bb.0: # %entry
1284 ; CHECK-BE-NEXT:    vextractub v2, v2, 8
1285 ; CHECK-BE-NEXT:    xscvudqp v2, v2
1286 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
1287 ; CHECK-BE-NEXT:    blr
1288 entry:
1289   %vecext = extractelement <16 x i8> %b, i32 8
1290   %conv = uitofp i8 %vecext to fp128
1291   store fp128 %conv, fp128* %a, align 16
1292   ret void
1295 ; Function Attrs: norecurse nounwind
1296 define void @ubVecConv2qp9(fp128* nocapture %a, <16 x i8> %b) {
1297 ; CHECK-LABEL: ubVecConv2qp9:
1298 ; CHECK:       # %bb.0: # %entry
1299 ; CHECK-NEXT:    vextractub v2, v2, 6
1300 ; CHECK-NEXT:    xscvudqp v2, v2
1301 ; CHECK-NEXT:    stxv v2, 0(r3)
1302 ; CHECK-NEXT:    blr
1304 ; CHECK-BE-LABEL: ubVecConv2qp9:
1305 ; CHECK-BE:       # %bb.0: # %entry
1306 ; CHECK-BE-NEXT:    vextractub v2, v2, 9
1307 ; CHECK-BE-NEXT:    xscvudqp v2, v2
1308 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
1309 ; CHECK-BE-NEXT:    blr
1310 entry:
1311   %vecext = extractelement <16 x i8> %b, i32 9
1312   %conv = uitofp i8 %vecext to fp128
1313   store fp128 %conv, fp128* %a, align 16
1314   ret void
1317 ; Function Attrs: norecurse nounwind
1318 define void @ubVecConv2qp10(fp128* nocapture %a, <16 x i8> %b) {
1319 ; CHECK-LABEL: ubVecConv2qp10:
1320 ; CHECK:       # %bb.0: # %entry
1321 ; CHECK-NEXT:    vextractub v2, v2, 5
1322 ; CHECK-NEXT:    xscvudqp v2, v2
1323 ; CHECK-NEXT:    stxv v2, 0(r3)
1324 ; CHECK-NEXT:    blr
1326 ; CHECK-BE-LABEL: ubVecConv2qp10:
1327 ; CHECK-BE:       # %bb.0: # %entry
1328 ; CHECK-BE-NEXT:    vextractub v2, v2, 10
1329 ; CHECK-BE-NEXT:    xscvudqp v2, v2
1330 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
1331 ; CHECK-BE-NEXT:    blr
1332 entry:
1333   %vecext = extractelement <16 x i8> %b, i32 10
1334   %conv = uitofp i8 %vecext to fp128
1335   store fp128 %conv, fp128* %a, align 16
1336   ret void
1339 ; Function Attrs: norecurse nounwind
1340 define void @ubVecConv2qp11(fp128* nocapture %a, <16 x i8> %b) {
1341 ; CHECK-LABEL: ubVecConv2qp11:
1342 ; CHECK:       # %bb.0: # %entry
1343 ; CHECK-NEXT:    vextractub v2, v2, 4
1344 ; CHECK-NEXT:    xscvudqp v2, v2
1345 ; CHECK-NEXT:    stxv v2, 0(r3)
1346 ; CHECK-NEXT:    blr
1348 ; CHECK-BE-LABEL: ubVecConv2qp11:
1349 ; CHECK-BE:       # %bb.0: # %entry
1350 ; CHECK-BE-NEXT:    vextractub v2, v2, 11
1351 ; CHECK-BE-NEXT:    xscvudqp v2, v2
1352 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
1353 ; CHECK-BE-NEXT:    blr
1354 entry:
1355   %vecext = extractelement <16 x i8> %b, i32 11
1356   %conv = uitofp i8 %vecext to fp128
1357   store fp128 %conv, fp128* %a, align 16
1358   ret void
1361 ; Function Attrs: norecurse nounwind
1362 define void @ubVecConv2qp12(fp128* nocapture %a, <16 x i8> %b) {
1363 ; CHECK-LABEL: ubVecConv2qp12:
1364 ; CHECK:       # %bb.0: # %entry
1365 ; CHECK-NEXT:    vextractub v2, v2, 3
1366 ; CHECK-NEXT:    xscvudqp v2, v2
1367 ; CHECK-NEXT:    stxv v2, 0(r3)
1368 ; CHECK-NEXT:    blr
1370 ; CHECK-BE-LABEL: ubVecConv2qp12:
1371 ; CHECK-BE:       # %bb.0: # %entry
1372 ; CHECK-BE-NEXT:    vextractub v2, v2, 12
1373 ; CHECK-BE-NEXT:    xscvudqp v2, v2
1374 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
1375 ; CHECK-BE-NEXT:    blr
1376 entry:
1377   %vecext = extractelement <16 x i8> %b, i32 12
1378   %conv = uitofp i8 %vecext to fp128
1379   store fp128 %conv, fp128* %a, align 16
1380   ret void
1383 ; Function Attrs: norecurse nounwind
1384 define void @ubVecConv2qp13(fp128* nocapture %a, <16 x i8> %b) {
1385 ; CHECK-LABEL: ubVecConv2qp13:
1386 ; CHECK:       # %bb.0: # %entry
1387 ; CHECK-NEXT:    vextractub v2, v2, 2
1388 ; CHECK-NEXT:    xscvudqp v2, v2
1389 ; CHECK-NEXT:    stxv v2, 0(r3)
1390 ; CHECK-NEXT:    blr
1392 ; CHECK-BE-LABEL: ubVecConv2qp13:
1393 ; CHECK-BE:       # %bb.0: # %entry
1394 ; CHECK-BE-NEXT:    vextractub v2, v2, 13
1395 ; CHECK-BE-NEXT:    xscvudqp v2, v2
1396 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
1397 ; CHECK-BE-NEXT:    blr
1398 entry:
1399   %vecext = extractelement <16 x i8> %b, i32 13
1400   %conv = uitofp i8 %vecext to fp128
1401   store fp128 %conv, fp128* %a, align 16
1402   ret void
1405 ; Function Attrs: norecurse nounwind
1406 define void @ubVecConv2qp14(fp128* nocapture %a, <16 x i8> %b) {
1407 ; CHECK-LABEL: ubVecConv2qp14:
1408 ; CHECK:       # %bb.0: # %entry
1409 ; CHECK-NEXT:    vextractub v2, v2, 1
1410 ; CHECK-NEXT:    xscvudqp v2, v2
1411 ; CHECK-NEXT:    stxv v2, 0(r3)
1412 ; CHECK-NEXT:    blr
1414 ; CHECK-BE-LABEL: ubVecConv2qp14:
1415 ; CHECK-BE:       # %bb.0: # %entry
1416 ; CHECK-BE-NEXT:    vextractub v2, v2, 14
1417 ; CHECK-BE-NEXT:    xscvudqp v2, v2
1418 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
1419 ; CHECK-BE-NEXT:    blr
1420 entry:
1421   %vecext = extractelement <16 x i8> %b, i32 14
1422   %conv = uitofp i8 %vecext to fp128
1423   store fp128 %conv, fp128* %a, align 16
1424   ret void
1427 ; Function Attrs: norecurse nounwind
1428 define void @ubVecConv2qp15(fp128* nocapture %a, <16 x i8> %b) {
1429 ; CHECK-LABEL: ubVecConv2qp15:
1430 ; CHECK:       # %bb.0: # %entry
1431 ; CHECK-NEXT:    vextractub v2, v2, 0
1432 ; CHECK-NEXT:    xscvudqp v2, v2
1433 ; CHECK-NEXT:    stxv v2, 0(r3)
1434 ; CHECK-NEXT:    blr
1436 ; CHECK-BE-LABEL: ubVecConv2qp15:
1437 ; CHECK-BE:       # %bb.0: # %entry
1438 ; CHECK-BE-NEXT:    vextractub v2, v2, 15
1439 ; CHECK-BE-NEXT:    xscvudqp v2, v2
1440 ; CHECK-BE-NEXT:    stxv v2, 0(r3)
1441 ; CHECK-BE-NEXT:    blr
1442 entry:
1443   %vecext = extractelement <16 x i8> %b, i32 15
1444   %conv = uitofp i8 %vecext to fp128
1445   store fp128 %conv, fp128* %a, align 16
1446   ret void