@@ -436,49 +436,47 @@ entry:
436
436
define void @buildvector_v32i8_with_constant (ptr %dst , i8 %a0 , i8 %a1 , i8 %a2 , i8 %a5 , i8 %a8 , i8 %a9 , i8 %a15 , i8 %a17 , i8 %a18 , i8 %a20 , i8 %a22 , i8 %a23 , i8 %a27 , i8 %a28 , i8 %a31 ) nounwind {
437
437
; CHECK-LABEL: buildvector_v32i8_with_constant:
438
438
; CHECK: # %bb.0: # %entry
439
- ; CHECK-NEXT: addi.d $sp, $sp, -96
440
- ; CHECK-NEXT: st.d $ra, $sp, 88 # 8-byte Folded Spill
441
- ; CHECK-NEXT: st.d $fp, $sp, 80 # 8-byte Folded Spill
442
- ; CHECK-NEXT: addi.d $fp, $sp, 96
443
- ; CHECK-NEXT: bstrins.d $sp, $zero, 4, 0
444
- ; CHECK-NEXT: ld.b $t0, $fp, 0
445
- ; CHECK-NEXT: ld.b $t1, $fp, 8
446
- ; CHECK-NEXT: ld.b $t2, $fp, 16
447
- ; CHECK-NEXT: ld.b $t3, $fp, 24
448
- ; CHECK-NEXT: ld.b $t4, $fp, 56
449
- ; CHECK-NEXT: ld.b $t5, $fp, 32
450
- ; CHECK-NEXT: ld.b $t6, $fp, 48
451
- ; CHECK-NEXT: ld.b $t7, $fp, 40
452
- ; CHECK-NEXT: st.b $t4, $sp, 63
453
- ; CHECK-NEXT: st.b $zero, $sp, 61
454
- ; CHECK-NEXT: st.b $t6, $sp, 60
455
- ; CHECK-NEXT: st.b $t7, $sp, 59
456
- ; CHECK-NEXT: st.b $zero, $sp, 56
457
- ; CHECK-NEXT: st.b $t5, $sp, 55
458
- ; CHECK-NEXT: st.b $t3, $sp, 54
459
- ; CHECK-NEXT: st.b $zero, $sp, 53
460
- ; CHECK-NEXT: st.b $t2, $sp, 52
461
- ; CHECK-NEXT: st.b $zero, $sp, 51
462
- ; CHECK-NEXT: st.b $t1, $sp, 50
463
- ; CHECK-NEXT: st.b $t0, $sp, 49
464
- ; CHECK-NEXT: st.b $zero, $sp, 48
465
- ; CHECK-NEXT: st.b $a7, $sp, 47
466
- ; CHECK-NEXT: st.h $zero, $sp, 44
467
- ; CHECK-NEXT: st.b $zero, $sp, 42
468
- ; CHECK-NEXT: st.b $a6, $sp, 41
469
- ; CHECK-NEXT: st.b $a5, $sp, 40
470
- ; CHECK-NEXT: st.b $zero, $sp, 39
471
- ; CHECK-NEXT: st.b $a4, $sp, 37
472
- ; CHECK-NEXT: st.h $zero, $sp, 35
473
- ; CHECK-NEXT: st.b $a3, $sp, 34
474
- ; CHECK-NEXT: st.b $a2, $sp, 33
475
- ; CHECK-NEXT: st.b $a1, $sp, 32
476
- ; CHECK-NEXT: xvld $xr0, $sp, 32
477
- ; CHECK-NEXT: xvst $xr0, $a0, 0
478
- ; CHECK-NEXT: addi.d $sp, $fp, -96
479
- ; CHECK-NEXT: ld.d $fp, $sp, 80 # 8-byte Folded Reload
480
- ; CHECK-NEXT: ld.d $ra, $sp, 88 # 8-byte Folded Reload
481
- ; CHECK-NEXT: addi.d $sp, $sp, 96
439
+ ; CHECK-NEXT: ld.b $t0, $sp, 56
440
+ ; CHECK-NEXT: ld.b $t1, $sp, 48
441
+ ; CHECK-NEXT: ld.b $t2, $sp, 40
442
+ ; CHECK-NEXT: ld.b $t3, $sp, 32
443
+ ; CHECK-NEXT: ld.b $t4, $sp, 24
444
+ ; CHECK-NEXT: ld.b $t5, $sp, 16
445
+ ; CHECK-NEXT: ld.b $t6, $sp, 8
446
+ ; CHECK-NEXT: ld.b $t7, $sp, 0
447
+ ; CHECK-NEXT: xvrepli.b $xr0, 0
448
+ ; CHECK-NEXT: vinsgr2vr.b $vr0, $a1, 0
449
+ ; CHECK-NEXT: vinsgr2vr.b $vr0, $a2, 1
450
+ ; CHECK-NEXT: vinsgr2vr.b $vr0, $a3, 2
451
+ ; CHECK-NEXT: vinsgr2vr.b $vr0, $a4, 5
452
+ ; CHECK-NEXT: vinsgr2vr.b $vr0, $a5, 8
453
+ ; CHECK-NEXT: vinsgr2vr.b $vr0, $a6, 9
454
+ ; CHECK-NEXT: vinsgr2vr.b $vr0, $a7, 15
455
+ ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
456
+ ; CHECK-NEXT: vinsgr2vr.b $vr1, $t7, 1
457
+ ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
458
+ ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
459
+ ; CHECK-NEXT: vinsgr2vr.b $vr1, $t6, 2
460
+ ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
461
+ ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
462
+ ; CHECK-NEXT: vinsgr2vr.b $vr1, $t5, 4
463
+ ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
464
+ ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
465
+ ; CHECK-NEXT: vinsgr2vr.b $vr1, $t4, 6
466
+ ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
467
+ ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
468
+ ; CHECK-NEXT: vinsgr2vr.b $vr1, $t3, 7
469
+ ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
470
+ ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
471
+ ; CHECK-NEXT: vinsgr2vr.b $vr1, $t2, 11
472
+ ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
473
+ ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
474
+ ; CHECK-NEXT: vinsgr2vr.b $vr1, $t1, 12
475
+ ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
476
+ ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
477
+ ; CHECK-NEXT: vinsgr2vr.b $vr1, $t0, 15
478
+ ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
479
+ ; CHECK-NEXT: xvst $xr0, $a0, 0
482
480
; CHECK-NEXT: ret
483
481
entry:
484
482
%ins0 = insertelement <32 x i8 > undef , i8 %a0 , i32 0
@@ -624,32 +622,19 @@ entry:
624
622
define void @buildvector_v16i16_with_constant (ptr %dst , i16 %a2 , i16 %a3 , i16 %a5 , i16 %a6 , i16 %a7 , i16 %a12 , i16 %a13 ) nounwind {
625
623
; CHECK-LABEL: buildvector_v16i16_with_constant:
626
624
; CHECK: # %bb.0: # %entry
627
- ; CHECK-NEXT: addi.d $sp, $sp, -96
628
- ; CHECK-NEXT: st.d $ra, $sp, 88 # 8-byte Folded Spill
629
- ; CHECK-NEXT: st.d $fp, $sp, 80 # 8-byte Folded Spill
630
- ; CHECK-NEXT: addi.d $fp, $sp, 96
631
- ; CHECK-NEXT: bstrins.d $sp, $zero, 4, 0
632
- ; CHECK-NEXT: st.h $a7, $sp, 58
633
- ; CHECK-NEXT: st.h $a6, $sp, 56
634
- ; CHECK-NEXT: st.h $a5, $sp, 46
635
- ; CHECK-NEXT: st.h $a4, $sp, 44
636
- ; CHECK-NEXT: st.h $a3, $sp, 42
637
- ; CHECK-NEXT: ori $a3, $zero, 2
638
- ; CHECK-NEXT: st.h $a3, $sp, 40
639
- ; CHECK-NEXT: st.h $a2, $sp, 38
640
- ; CHECK-NEXT: st.h $a1, $sp, 36
641
- ; CHECK-NEXT: lu12i.w $a1, 32
642
- ; CHECK-NEXT: ori $a1, $a1, 2
643
- ; CHECK-NEXT: st.w $a1, $sp, 60
644
- ; CHECK-NEXT: st.w $a1, $sp, 32
645
- ; CHECK-NEXT: lu32i.d $a1, 131074
646
- ; CHECK-NEXT: st.d $a1, $sp, 48
647
- ; CHECK-NEXT: xvld $xr0, $sp, 32
648
- ; CHECK-NEXT: xvst $xr0, $a0, 0
649
- ; CHECK-NEXT: addi.d $sp, $fp, -96
650
- ; CHECK-NEXT: ld.d $fp, $sp, 80 # 8-byte Folded Reload
651
- ; CHECK-NEXT: ld.d $ra, $sp, 88 # 8-byte Folded Reload
652
- ; CHECK-NEXT: addi.d $sp, $sp, 96
625
+ ; CHECK-NEXT: xvrepli.h $xr0, 2
626
+ ; CHECK-NEXT: vinsgr2vr.h $vr0, $a1, 2
627
+ ; CHECK-NEXT: vinsgr2vr.h $vr0, $a2, 3
628
+ ; CHECK-NEXT: vinsgr2vr.h $vr0, $a3, 5
629
+ ; CHECK-NEXT: vinsgr2vr.h $vr0, $a4, 6
630
+ ; CHECK-NEXT: vinsgr2vr.h $vr0, $a5, 7
631
+ ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
632
+ ; CHECK-NEXT: vinsgr2vr.h $vr1, $a6, 4
633
+ ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
634
+ ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
635
+ ; CHECK-NEXT: vinsgr2vr.h $vr1, $a7, 5
636
+ ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
637
+ ; CHECK-NEXT: xvst $xr0, $a0, 0
653
638
; CHECK-NEXT: ret
654
639
entry:
655
640
%ins0 = insertelement <16 x i16 > undef , i16 2 , i32 0
@@ -724,24 +709,12 @@ entry:
724
709
define void @buildvector_v8i32_with_constant (ptr %dst , i32 %a2 , i32 %a4 , i32 %a5 , i32 %a6 ) nounwind {
725
710
; CHECK-LABEL: buildvector_v8i32_with_constant:
726
711
; CHECK: # %bb.0: # %entry
727
- ; CHECK-NEXT: addi.d $sp, $sp, -96
728
- ; CHECK-NEXT: st.d $ra, $sp, 88 # 8-byte Folded Spill
729
- ; CHECK-NEXT: st.d $fp, $sp, 80 # 8-byte Folded Spill
730
- ; CHECK-NEXT: addi.d $fp, $sp, 96
731
- ; CHECK-NEXT: bstrins.d $sp, $zero, 4, 0
732
- ; CHECK-NEXT: st.w $zero, $sp, 60
733
- ; CHECK-NEXT: st.w $a4, $sp, 56
734
- ; CHECK-NEXT: st.w $a3, $sp, 52
735
- ; CHECK-NEXT: st.w $a2, $sp, 48
736
- ; CHECK-NEXT: st.w $zero, $sp, 44
737
- ; CHECK-NEXT: st.w $a1, $sp, 40
738
- ; CHECK-NEXT: st.d $zero, $sp, 32
739
- ; CHECK-NEXT: xvld $xr0, $sp, 32
740
- ; CHECK-NEXT: xvst $xr0, $a0, 0
741
- ; CHECK-NEXT: addi.d $sp, $fp, -96
742
- ; CHECK-NEXT: ld.d $fp, $sp, 80 # 8-byte Folded Reload
743
- ; CHECK-NEXT: ld.d $ra, $sp, 88 # 8-byte Folded Reload
744
- ; CHECK-NEXT: addi.d $sp, $sp, 96
712
+ ; CHECK-NEXT: xvrepli.b $xr0, 0
713
+ ; CHECK-NEXT: xvinsgr2vr.w $xr0, $a1, 2
714
+ ; CHECK-NEXT: xvinsgr2vr.w $xr0, $a2, 4
715
+ ; CHECK-NEXT: xvinsgr2vr.w $xr0, $a3, 5
716
+ ; CHECK-NEXT: xvinsgr2vr.w $xr0, $a4, 6
717
+ ; CHECK-NEXT: xvst $xr0, $a0, 0
745
718
; CHECK-NEXT: ret
746
719
entry:
747
720
%ins0 = insertelement <8 x i32 > undef , i32 0 , i32 0
@@ -793,21 +766,10 @@ entry:
793
766
define void @buildvector_v4i64_with_constant (ptr %dst , i64 %a0 , i64 %a2 ) nounwind {
794
767
; CHECK-LABEL: buildvector_v4i64_with_constant:
795
768
; CHECK: # %bb.0: # %entry
796
- ; CHECK-NEXT: addi.d $sp, $sp, -96
797
- ; CHECK-NEXT: st.d $ra, $sp, 88 # 8-byte Folded Spill
798
- ; CHECK-NEXT: st.d $fp, $sp, 80 # 8-byte Folded Spill
799
- ; CHECK-NEXT: addi.d $fp, $sp, 96
800
- ; CHECK-NEXT: bstrins.d $sp, $zero, 4, 0
801
- ; CHECK-NEXT: st.d $zero, $sp, 56
802
- ; CHECK-NEXT: st.d $a2, $sp, 48
803
- ; CHECK-NEXT: st.d $zero, $sp, 40
804
- ; CHECK-NEXT: st.d $a1, $sp, 32
805
- ; CHECK-NEXT: xvld $xr0, $sp, 32
769
+ ; CHECK-NEXT: xvrepli.b $xr0, 0
770
+ ; CHECK-NEXT: xvinsgr2vr.d $xr0, $a1, 0
771
+ ; CHECK-NEXT: xvinsgr2vr.d $xr0, $a2, 2
806
772
; CHECK-NEXT: xvst $xr0, $a0, 0
807
- ; CHECK-NEXT: addi.d $sp, $fp, -96
808
- ; CHECK-NEXT: ld.d $fp, $sp, 80 # 8-byte Folded Reload
809
- ; CHECK-NEXT: ld.d $ra, $sp, 88 # 8-byte Folded Reload
810
- ; CHECK-NEXT: addi.d $sp, $sp, 96
811
773
; CHECK-NEXT: ret
812
774
entry:
813
775
%ins0 = insertelement <4 x i64 > undef , i64 %a0 , i32 0
@@ -880,27 +842,17 @@ entry:
880
842
define void @buildvector_v8f32_with_constant (ptr %dst , float %a1 , float %a2 , float %a5 , float %a7 ) nounwind {
881
843
; CHECK-LABEL: buildvector_v8f32_with_constant:
882
844
; CHECK: # %bb.0: # %entry
883
- ; CHECK-NEXT: addi.d $sp, $sp, -96
884
- ; CHECK-NEXT: st.d $ra, $sp, 88 # 8-byte Folded Spill
885
- ; CHECK-NEXT: st.d $fp, $sp, 80 # 8-byte Folded Spill
886
- ; CHECK-NEXT: addi.d $fp, $sp, 96
887
- ; CHECK-NEXT: bstrins.d $sp, $zero, 4, 0
888
- ; CHECK-NEXT: fst.s $fa3, $sp, 60
889
- ; CHECK-NEXT: fst.s $fa2, $sp, 52
890
- ; CHECK-NEXT: fst.s $fa1, $sp, 40
891
- ; CHECK-NEXT: fst.s $fa0, $sp, 36
892
- ; CHECK-NEXT: vldi $vr0, -1280
893
- ; CHECK-NEXT: fst.s $fa0, $sp, 56
845
+ ; CHECK-NEXT: # kill: def $f3 killed $f3 def $xr3
846
+ ; CHECK-NEXT: # kill: def $f2 killed $f2 def $xr2
847
+ ; CHECK-NEXT: # kill: def $f1 killed $f1 def $xr1
848
+ ; CHECK-NEXT: # kill: def $f0 killed $f0 def $xr0
894
849
; CHECK-NEXT: lu12i.w $a1, 262144
895
- ; CHECK-NEXT: lu52i.d $a1, $a1, 1024
896
- ; CHECK-NEXT: st.d $a1, $sp, 44
897
- ; CHECK-NEXT: fst.s $fa0, $sp, 32
898
- ; CHECK-NEXT: xvld $xr0, $sp, 32
899
- ; CHECK-NEXT: xvst $xr0, $a0, 0
900
- ; CHECK-NEXT: addi.d $sp, $fp, -96
901
- ; CHECK-NEXT: ld.d $fp, $sp, 80 # 8-byte Folded Reload
902
- ; CHECK-NEXT: ld.d $ra, $sp, 88 # 8-byte Folded Reload
903
- ; CHECK-NEXT: addi.d $sp, $sp, 96
850
+ ; CHECK-NEXT: xvreplgr2vr.w $xr4, $a1
851
+ ; CHECK-NEXT: xvinsve0.w $xr4, $xr0, 1
852
+ ; CHECK-NEXT: xvinsve0.w $xr4, $xr1, 2
853
+ ; CHECK-NEXT: xvinsve0.w $xr4, $xr2, 5
854
+ ; CHECK-NEXT: xvinsve0.w $xr4, $xr3, 7
855
+ ; CHECK-NEXT: xvst $xr4, $a0, 0
904
856
; CHECK-NEXT: ret
905
857
entry:
906
858
%ins0 = insertelement <8 x float > undef , float 2 .0 , i32 0
@@ -956,21 +908,12 @@ entry:
956
908
define void @buildvector_v4f64_with_constant (ptr %dst , double %a0 , double %a3 ) nounwind {
957
909
; CHECK-LABEL: buildvector_v4f64_with_constant:
958
910
; CHECK: # %bb.0: # %entry
959
- ; CHECK-NEXT: addi.d $sp, $sp, -96
960
- ; CHECK-NEXT: st.d $ra, $sp, 88 # 8-byte Folded Spill
961
- ; CHECK-NEXT: st.d $fp, $sp, 80 # 8-byte Folded Spill
962
- ; CHECK-NEXT: addi.d $fp, $sp, 96
963
- ; CHECK-NEXT: bstrins.d $sp, $zero, 4, 0
964
- ; CHECK-NEXT: fst.d $fa1, $sp, 56
965
- ; CHECK-NEXT: vrepli.b $vr1, 0
966
- ; CHECK-NEXT: vst $vr1, $sp, 40
967
- ; CHECK-NEXT: fst.d $fa0, $sp, 32
968
- ; CHECK-NEXT: xvld $xr0, $sp, 32
969
- ; CHECK-NEXT: xvst $xr0, $a0, 0
970
- ; CHECK-NEXT: addi.d $sp, $fp, -96
971
- ; CHECK-NEXT: ld.d $fp, $sp, 80 # 8-byte Folded Reload
972
- ; CHECK-NEXT: ld.d $ra, $sp, 88 # 8-byte Folded Reload
973
- ; CHECK-NEXT: addi.d $sp, $sp, 96
911
+ ; CHECK-NEXT: # kill: def $f1_64 killed $f1_64 def $xr1
912
+ ; CHECK-NEXT: # kill: def $f0_64 killed $f0_64 def $xr0
913
+ ; CHECK-NEXT: xvrepli.b $xr2, 0
914
+ ; CHECK-NEXT: xvinsve0.d $xr2, $xr0, 0
915
+ ; CHECK-NEXT: xvinsve0.d $xr2, $xr1, 3
916
+ ; CHECK-NEXT: xvst $xr2, $a0, 0
974
917
; CHECK-NEXT: ret
975
918
entry:
976
919
%ins0 = insertelement <4 x double > undef , double %a0 , i32 0
0 commit comments