@@ -27,20 +27,17 @@ define <2 x i64> @build_v2i64_extload_0(ptr nocapture noundef readonly %p) {
27
27
; PWR7-LE-LABEL: build_v2i64_extload_0:
28
28
; PWR7-LE: # %bb.0: # %entry
29
29
; PWR7-LE-NEXT: li 4, 0
30
- ; PWR7-LE-NEXT: lwz 3, 0(3)
31
30
; PWR7-LE-NEXT: stw 4, -16(1)
32
31
; PWR7-LE-NEXT: addis 4, 2, .LCPI0_0@toc@ha
32
+ ; PWR7-LE-NEXT: lfiwzx 0, 0, 3
33
+ ; PWR7-LE-NEXT: addi 3, 1, -16
33
34
; PWR7-LE-NEXT: addi 4, 4, .LCPI0_0@toc@l
34
- ; PWR7-LE-NEXT: stw 3, -32(1)
35
- ; PWR7-LE-NEXT: addi 3, 1, -32
36
- ; PWR7-LE-NEXT: lxvd2x 0, 0, 4
37
- ; PWR7-LE-NEXT: addi 4, 1, -16
38
35
; PWR7-LE-NEXT: lxvd2x 1, 0, 4
39
- ; PWR7-LE-NEXT: xxswapd 34 , 0
36
+ ; PWR7-LE-NEXT: xxspltw 35 , 0, 1
40
37
; PWR7-LE-NEXT: lxvd2x 0, 0, 3
41
- ; PWR7-LE-NEXT: xxswapd 35 , 1
38
+ ; PWR7-LE-NEXT: xxswapd 34 , 1
42
39
; PWR7-LE-NEXT: xxswapd 36, 0
43
- ; PWR7-LE-NEXT: vperm 2, 3, 4 , 2
40
+ ; PWR7-LE-NEXT: vperm 2, 4, 3 , 2
44
41
; PWR7-LE-NEXT: blr
45
42
;
46
43
; PWR8-LE-LABEL: build_v2i64_extload_0:
@@ -337,17 +334,13 @@ entry:
337
334
define <4 x i32 > @build_v4i32_load_0 (ptr nocapture noundef readonly %p ) {
338
335
; PWR7-BE-LABEL: build_v4i32_load_0:
339
336
; PWR7-BE: # %bb.0: # %entry
340
- ; PWR7-BE-NEXT: lwz 3, 0(3)
341
- ; PWR7-BE-NEXT: xxlxor 36, 36, 36
342
- ; PWR7-BE-NEXT: sldi 3, 3, 32
343
- ; PWR7-BE-NEXT: std 3, -32(1)
344
- ; PWR7-BE-NEXT: std 3, -24(1)
337
+ ; PWR7-BE-NEXT: lfiwzx 0, 0, 3
345
338
; PWR7-BE-NEXT: addis 3, 2, .LCPI8_0@toc@ha
339
+ ; PWR7-BE-NEXT: xxlxor 36, 36, 36
346
340
; PWR7-BE-NEXT: addi 3, 3, .LCPI8_0@toc@l
347
- ; PWR7-BE-NEXT: lxvw4x 34, 0, 3
348
- ; PWR7-BE-NEXT: addi 3, 1, -32
349
341
; PWR7-BE-NEXT: lxvw4x 35, 0, 3
350
- ; PWR7-BE-NEXT: vperm 2, 3, 4, 2
342
+ ; PWR7-BE-NEXT: xxspltw 34, 0, 1
343
+ ; PWR7-BE-NEXT: vperm 2, 2, 4, 3
351
344
; PWR7-BE-NEXT: blr
352
345
;
353
346
; PWR8-BE-LABEL: build_v4i32_load_0:
@@ -365,20 +358,17 @@ define <4 x i32> @build_v4i32_load_0(ptr nocapture noundef readonly %p) {
365
358
; PWR7-LE-LABEL: build_v4i32_load_0:
366
359
; PWR7-LE: # %bb.0: # %entry
367
360
; PWR7-LE-NEXT: li 4, 0
368
- ; PWR7-LE-NEXT: lwz 3, 0(3)
369
361
; PWR7-LE-NEXT: stw 4, -16(1)
370
362
; PWR7-LE-NEXT: addis 4, 2, .LCPI8_0@toc@ha
363
+ ; PWR7-LE-NEXT: lfiwzx 0, 0, 3
364
+ ; PWR7-LE-NEXT: addi 3, 1, -16
371
365
; PWR7-LE-NEXT: addi 4, 4, .LCPI8_0@toc@l
372
- ; PWR7-LE-NEXT: stw 3, -32(1)
373
- ; PWR7-LE-NEXT: addi 3, 1, -32
374
- ; PWR7-LE-NEXT: lxvd2x 0, 0, 4
375
- ; PWR7-LE-NEXT: addi 4, 1, -16
376
366
; PWR7-LE-NEXT: lxvd2x 1, 0, 4
377
- ; PWR7-LE-NEXT: xxswapd 34 , 0
367
+ ; PWR7-LE-NEXT: xxspltw 35 , 0, 1
378
368
; PWR7-LE-NEXT: lxvd2x 0, 0, 3
379
- ; PWR7-LE-NEXT: xxswapd 35 , 1
369
+ ; PWR7-LE-NEXT: xxswapd 34 , 1
380
370
; PWR7-LE-NEXT: xxswapd 36, 0
381
- ; PWR7-LE-NEXT: vperm 2, 3, 4 , 2
371
+ ; PWR7-LE-NEXT: vperm 2, 4, 3 , 2
382
372
; PWR7-LE-NEXT: blr
383
373
;
384
374
; PWR8-LE-LABEL: build_v4i32_load_0:
@@ -400,17 +390,13 @@ entry:
400
390
define <4 x i32 > @build_v4i32_load_1 (ptr nocapture noundef readonly %p ) {
401
391
; PWR7-BE-LABEL: build_v4i32_load_1:
402
392
; PWR7-BE: # %bb.0: # %entry
403
- ; PWR7-BE-NEXT: lwz 3, 0(3)
404
- ; PWR7-BE-NEXT: xxlxor 36, 36, 36
405
- ; PWR7-BE-NEXT: sldi 3, 3, 32
406
- ; PWR7-BE-NEXT: std 3, -16(1)
407
- ; PWR7-BE-NEXT: std 3, -8(1)
393
+ ; PWR7-BE-NEXT: lfiwzx 0, 0, 3
408
394
; PWR7-BE-NEXT: addis 3, 2, .LCPI9_0@toc@ha
395
+ ; PWR7-BE-NEXT: xxlxor 36, 36, 36
409
396
; PWR7-BE-NEXT: addi 3, 3, .LCPI9_0@toc@l
410
- ; PWR7-BE-NEXT: lxvw4x 34, 0, 3
411
- ; PWR7-BE-NEXT: addi 3, 1, -16
412
397
; PWR7-BE-NEXT: lxvw4x 35, 0, 3
413
- ; PWR7-BE-NEXT: vperm 2, 4, 3, 2
398
+ ; PWR7-BE-NEXT: xxspltw 34, 0, 1
399
+ ; PWR7-BE-NEXT: vperm 2, 4, 2, 3
414
400
; PWR7-BE-NEXT: blr
415
401
;
416
402
; PWR8-BE-LABEL: build_v4i32_load_1:
@@ -427,20 +413,17 @@ define <4 x i32> @build_v4i32_load_1(ptr nocapture noundef readonly %p) {
427
413
; PWR7-LE-LABEL: build_v4i32_load_1:
428
414
; PWR7-LE: # %bb.0: # %entry
429
415
; PWR7-LE-NEXT: li 4, 0
430
- ; PWR7-LE-NEXT: lwz 3, 0(3)
431
- ; PWR7-LE-NEXT: stw 4, -32(1)
416
+ ; PWR7-LE-NEXT: stw 4, -16(1)
432
417
; PWR7-LE-NEXT: addis 4, 2, .LCPI9_0@toc@ha
433
- ; PWR7-LE-NEXT: addi 4, 4, .LCPI9_0@toc@l
434
- ; PWR7-LE-NEXT: stw 3, -16(1)
418
+ ; PWR7-LE-NEXT: lfiwzx 0, 0, 3
435
419
; PWR7-LE-NEXT: addi 3, 1, -16
436
- ; PWR7-LE-NEXT: lxvd2x 0, 0, 4
437
- ; PWR7-LE-NEXT: addi 4, 1, -32
420
+ ; PWR7-LE-NEXT: addi 4, 4, .LCPI9_0@toc@l
438
421
; PWR7-LE-NEXT: lxvd2x 1, 0, 4
439
- ; PWR7-LE-NEXT: xxswapd 34 , 0
422
+ ; PWR7-LE-NEXT: xxspltw 35 , 0, 1
440
423
; PWR7-LE-NEXT: lxvd2x 0, 0, 3
441
- ; PWR7-LE-NEXT: xxswapd 35 , 1
424
+ ; PWR7-LE-NEXT: xxswapd 34 , 1
442
425
; PWR7-LE-NEXT: xxswapd 36, 0
443
- ; PWR7-LE-NEXT: vperm 2, 4, 3 , 2
426
+ ; PWR7-LE-NEXT: vperm 2, 3, 4 , 2
444
427
; PWR7-LE-NEXT: blr
445
428
;
446
429
; PWR8-LE-LABEL: build_v4i32_load_1:
@@ -463,17 +446,13 @@ entry:
463
446
define <4 x i32 > @build_v4i32_load_2 (ptr nocapture noundef readonly %p ) {
464
447
; PWR7-BE-LABEL: build_v4i32_load_2:
465
448
; PWR7-BE: # %bb.0: # %entry
466
- ; PWR7-BE-NEXT: lwz 3, 0(3)
467
- ; PWR7-BE-NEXT: xxlxor 36, 36, 36
468
- ; PWR7-BE-NEXT: sldi 3, 3, 32
469
- ; PWR7-BE-NEXT: std 3, -16(1)
470
- ; PWR7-BE-NEXT: std 3, -8(1)
449
+ ; PWR7-BE-NEXT: lfiwzx 0, 0, 3
471
450
; PWR7-BE-NEXT: addis 3, 2, .LCPI10_0@toc@ha
451
+ ; PWR7-BE-NEXT: xxlxor 36, 36, 36
472
452
; PWR7-BE-NEXT: addi 3, 3, .LCPI10_0@toc@l
473
- ; PWR7-BE-NEXT: lxvw4x 34, 0, 3
474
- ; PWR7-BE-NEXT: addi 3, 1, -16
475
453
; PWR7-BE-NEXT: lxvw4x 35, 0, 3
476
- ; PWR7-BE-NEXT: vperm 2, 4, 3, 2
454
+ ; PWR7-BE-NEXT: xxspltw 34, 0, 1
455
+ ; PWR7-BE-NEXT: vperm 2, 4, 2, 3
477
456
; PWR7-BE-NEXT: blr
478
457
;
479
458
; PWR8-BE-LABEL: build_v4i32_load_2:
@@ -491,20 +470,17 @@ define <4 x i32> @build_v4i32_load_2(ptr nocapture noundef readonly %p) {
491
470
; PWR7-LE-LABEL: build_v4i32_load_2:
492
471
; PWR7-LE: # %bb.0: # %entry
493
472
; PWR7-LE-NEXT: li 4, 0
494
- ; PWR7-LE-NEXT: lwz 3, 0(3)
495
- ; PWR7-LE-NEXT: stw 4, -32(1)
473
+ ; PWR7-LE-NEXT: stw 4, -16(1)
496
474
; PWR7-LE-NEXT: addis 4, 2, .LCPI10_0@toc@ha
497
- ; PWR7-LE-NEXT: addi 4, 4, .LCPI10_0@toc@l
498
- ; PWR7-LE-NEXT: stw 3, -16(1)
475
+ ; PWR7-LE-NEXT: lfiwzx 0, 0, 3
499
476
; PWR7-LE-NEXT: addi 3, 1, -16
500
- ; PWR7-LE-NEXT: lxvd2x 0, 0, 4
501
- ; PWR7-LE-NEXT: addi 4, 1, -32
477
+ ; PWR7-LE-NEXT: addi 4, 4, .LCPI10_0@toc@l
502
478
; PWR7-LE-NEXT: lxvd2x 1, 0, 4
503
- ; PWR7-LE-NEXT: xxswapd 34 , 0
479
+ ; PWR7-LE-NEXT: xxspltw 35 , 0, 1
504
480
; PWR7-LE-NEXT: lxvd2x 0, 0, 3
505
- ; PWR7-LE-NEXT: xxswapd 35 , 1
481
+ ; PWR7-LE-NEXT: xxswapd 34 , 1
506
482
; PWR7-LE-NEXT: xxswapd 36, 0
507
- ; PWR7-LE-NEXT: vperm 2, 4, 3 , 2
483
+ ; PWR7-LE-NEXT: vperm 2, 3, 4 , 2
508
484
; PWR7-LE-NEXT: blr
509
485
;
510
486
; PWR8-LE-LABEL: build_v4i32_load_2:
@@ -526,17 +502,13 @@ entry:
526
502
define <4 x i32 > @build_v4i32_load_3 (ptr nocapture noundef readonly %p ) {
527
503
; PWR7-BE-LABEL: build_v4i32_load_3:
528
504
; PWR7-BE: # %bb.0: # %entry
529
- ; PWR7-BE-NEXT: lwz 3, 0(3)
530
- ; PWR7-BE-NEXT: xxlxor 36, 36, 36
531
- ; PWR7-BE-NEXT: sldi 3, 3, 32
532
- ; PWR7-BE-NEXT: std 3, -16(1)
533
- ; PWR7-BE-NEXT: std 3, -8(1)
505
+ ; PWR7-BE-NEXT: lfiwzx 0, 0, 3
534
506
; PWR7-BE-NEXT: addis 3, 2, .LCPI11_0@toc@ha
507
+ ; PWR7-BE-NEXT: xxlxor 36, 36, 36
535
508
; PWR7-BE-NEXT: addi 3, 3, .LCPI11_0@toc@l
536
- ; PWR7-BE-NEXT: lxvw4x 34, 0, 3
537
- ; PWR7-BE-NEXT: addi 3, 1, -16
538
509
; PWR7-BE-NEXT: lxvw4x 35, 0, 3
539
- ; PWR7-BE-NEXT: vperm 2, 4, 3, 2
510
+ ; PWR7-BE-NEXT: xxspltw 34, 0, 1
511
+ ; PWR7-BE-NEXT: vperm 2, 4, 2, 3
540
512
; PWR7-BE-NEXT: blr
541
513
;
542
514
; PWR8-BE-LABEL: build_v4i32_load_3:
@@ -553,20 +525,17 @@ define <4 x i32> @build_v4i32_load_3(ptr nocapture noundef readonly %p) {
553
525
; PWR7-LE-LABEL: build_v4i32_load_3:
554
526
; PWR7-LE: # %bb.0: # %entry
555
527
; PWR7-LE-NEXT: li 4, 0
556
- ; PWR7-LE-NEXT: lwz 3, 0(3)
557
- ; PWR7-LE-NEXT: stw 4, -32(1)
528
+ ; PWR7-LE-NEXT: stw 4, -16(1)
558
529
; PWR7-LE-NEXT: addis 4, 2, .LCPI11_0@toc@ha
559
- ; PWR7-LE-NEXT: addi 4, 4, .LCPI11_0@toc@l
560
- ; PWR7-LE-NEXT: stw 3, -16(1)
530
+ ; PWR7-LE-NEXT: lfiwzx 0, 0, 3
561
531
; PWR7-LE-NEXT: addi 3, 1, -16
562
- ; PWR7-LE-NEXT: lxvd2x 0, 0, 4
563
- ; PWR7-LE-NEXT: addi 4, 1, -32
532
+ ; PWR7-LE-NEXT: addi 4, 4, .LCPI11_0@toc@l
564
533
; PWR7-LE-NEXT: lxvd2x 1, 0, 4
565
- ; PWR7-LE-NEXT: xxswapd 34 , 0
534
+ ; PWR7-LE-NEXT: xxspltw 35 , 0, 1
566
535
; PWR7-LE-NEXT: lxvd2x 0, 0, 3
567
- ; PWR7-LE-NEXT: xxswapd 35 , 1
536
+ ; PWR7-LE-NEXT: xxswapd 34 , 1
568
537
; PWR7-LE-NEXT: xxswapd 36, 0
569
- ; PWR7-LE-NEXT: vperm 2, 4, 3 , 2
538
+ ; PWR7-LE-NEXT: vperm 2, 3, 4 , 2
570
539
; PWR7-LE-NEXT: blr
571
540
;
572
541
; PWR8-LE-LABEL: build_v4i32_load_3:
0 commit comments