@@ -355,40 +355,46 @@ entry:
355
355
define void @buildvector_v32i8_partial (ptr %dst , i8 %a0 , i8 %a1 , i8 %a2 , i8 %a5 , i8 %a7 , i8 %a8 , i8 %a15 , i8 %a17 , i8 %a18 , i8 %a20 , i8 %a22 , i8 %a23 , i8 %a27 , i8 %a28 , i8 %a31 ) nounwind {
356
356
; CHECK-LABEL: buildvector_v32i8_partial:
357
357
; CHECK: # %bb.0: # %entry
358
- ; CHECK-NEXT: addi.d $sp, $sp, -96
359
- ; CHECK-NEXT: st.d $ra, $sp, 88 # 8-byte Folded Spill
360
- ; CHECK-NEXT: st.d $fp, $sp, 80 # 8-byte Folded Spill
361
- ; CHECK-NEXT: addi.d $fp, $sp, 96
362
- ; CHECK-NEXT: bstrins.d $sp, $zero, 4, 0
363
- ; CHECK-NEXT: ld.b $t0, $fp, 0
364
- ; CHECK-NEXT: ld.b $t1, $fp, 8
365
- ; CHECK-NEXT: ld.b $t2, $fp, 16
366
- ; CHECK-NEXT: ld.b $t3, $fp, 24
367
- ; CHECK-NEXT: ld.b $t4, $fp, 56
368
- ; CHECK-NEXT: ld.b $t5, $fp, 48
369
- ; CHECK-NEXT: ld.b $t6, $fp, 40
370
- ; CHECK-NEXT: ld.b $t7, $fp, 32
371
- ; CHECK-NEXT: st.b $t4, $sp, 63
372
- ; CHECK-NEXT: st.b $t5, $sp, 60
373
- ; CHECK-NEXT: st.b $t6, $sp, 59
374
- ; CHECK-NEXT: st.b $t7, $sp, 55
375
- ; CHECK-NEXT: st.b $t3, $sp, 54
376
- ; CHECK-NEXT: st.b $t2, $sp, 52
377
- ; CHECK-NEXT: st.b $t1, $sp, 50
378
- ; CHECK-NEXT: st.b $t0, $sp, 49
379
- ; CHECK-NEXT: st.b $a7, $sp, 47
380
- ; CHECK-NEXT: st.b $a6, $sp, 40
381
- ; CHECK-NEXT: st.b $a5, $sp, 39
382
- ; CHECK-NEXT: st.b $a4, $sp, 37
383
- ; CHECK-NEXT: st.b $a3, $sp, 34
384
- ; CHECK-NEXT: st.b $a2, $sp, 33
385
- ; CHECK-NEXT: st.b $a1, $sp, 32
386
- ; CHECK-NEXT: xvld $xr0, $sp, 32
358
+ ; CHECK-NEXT: ld.b $t0, $sp, 56
359
+ ; CHECK-NEXT: ld.b $t1, $sp, 48
360
+ ; CHECK-NEXT: ld.b $t2, $sp, 40
361
+ ; CHECK-NEXT: ld.b $t3, $sp, 32
362
+ ; CHECK-NEXT: ld.b $t4, $sp, 24
363
+ ; CHECK-NEXT: ld.b $t5, $sp, 16
364
+ ; CHECK-NEXT: ld.b $t6, $sp, 8
365
+ ; CHECK-NEXT: ld.b $t7, $sp, 0
366
+ ; CHECK-NEXT: vinsgr2vr.b $vr0, $a1, 0
367
+ ; CHECK-NEXT: vinsgr2vr.b $vr0, $a2, 1
368
+ ; CHECK-NEXT: vinsgr2vr.b $vr0, $a3, 2
369
+ ; CHECK-NEXT: vinsgr2vr.b $vr0, $a4, 5
370
+ ; CHECK-NEXT: vinsgr2vr.b $vr0, $a5, 7
371
+ ; CHECK-NEXT: vinsgr2vr.b $vr0, $a6, 8
372
+ ; CHECK-NEXT: vinsgr2vr.b $vr0, $a7, 15
373
+ ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
374
+ ; CHECK-NEXT: vinsgr2vr.b $vr1, $t7, 1
375
+ ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
376
+ ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
377
+ ; CHECK-NEXT: vinsgr2vr.b $vr1, $t6, 2
378
+ ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
379
+ ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
380
+ ; CHECK-NEXT: vinsgr2vr.b $vr1, $t5, 4
381
+ ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
382
+ ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
383
+ ; CHECK-NEXT: vinsgr2vr.b $vr1, $t4, 6
384
+ ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
385
+ ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
386
+ ; CHECK-NEXT: vinsgr2vr.b $vr1, $t3, 7
387
+ ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
388
+ ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
389
+ ; CHECK-NEXT: vinsgr2vr.b $vr1, $t2, 11
390
+ ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
391
+ ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
392
+ ; CHECK-NEXT: vinsgr2vr.b $vr1, $t1, 12
393
+ ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
394
+ ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
395
+ ; CHECK-NEXT: vinsgr2vr.b $vr1, $t0, 15
396
+ ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
387
397
; CHECK-NEXT: xvst $xr0, $a0, 0
388
- ; CHECK-NEXT: addi.d $sp, $fp, -96
389
- ; CHECK-NEXT: ld.d $fp, $sp, 80 # 8-byte Folded Reload
390
- ; CHECK-NEXT: ld.d $ra, $sp, 88 # 8-byte Folded Reload
391
- ; CHECK-NEXT: addi.d $sp, $sp, 96
392
398
; CHECK-NEXT: ret
393
399
entry:
394
400
%ins0 = insertelement <32 x i8 > undef , i8 %a0 , i32 0
@@ -581,24 +587,18 @@ entry:
581
587
define void @buildvector_v16i16_partial (ptr %dst , i16 %a0 , i16 %a2 , i16 %a5 , i16 %a6 , i16 %a7 , i16 %a12 , i16 %a13 ) nounwind {
582
588
; CHECK-LABEL: buildvector_v16i16_partial:
583
589
; CHECK: # %bb.0: # %entry
584
- ; CHECK-NEXT: addi.d $sp, $sp, -96
585
- ; CHECK-NEXT: st.d $ra, $sp, 88 # 8-byte Folded Spill
586
- ; CHECK-NEXT: st.d $fp, $sp, 80 # 8-byte Folded Spill
587
- ; CHECK-NEXT: addi.d $fp, $sp, 96
588
- ; CHECK-NEXT: bstrins.d $sp, $zero, 4, 0
589
- ; CHECK-NEXT: st.h $a7, $sp, 58
590
- ; CHECK-NEXT: st.h $a6, $sp, 56
591
- ; CHECK-NEXT: st.h $a5, $sp, 46
592
- ; CHECK-NEXT: st.h $a4, $sp, 44
593
- ; CHECK-NEXT: st.h $a3, $sp, 42
594
- ; CHECK-NEXT: st.h $a2, $sp, 36
595
- ; CHECK-NEXT: st.h $a1, $sp, 32
596
- ; CHECK-NEXT: xvld $xr0, $sp, 32
590
+ ; CHECK-NEXT: vinsgr2vr.h $vr0, $a1, 0
591
+ ; CHECK-NEXT: vinsgr2vr.h $vr0, $a2, 2
592
+ ; CHECK-NEXT: vinsgr2vr.h $vr0, $a3, 5
593
+ ; CHECK-NEXT: vinsgr2vr.h $vr0, $a4, 6
594
+ ; CHECK-NEXT: vinsgr2vr.h $vr0, $a5, 7
595
+ ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
596
+ ; CHECK-NEXT: vinsgr2vr.h $vr1, $a6, 4
597
+ ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
598
+ ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
599
+ ; CHECK-NEXT: vinsgr2vr.h $vr1, $a7, 5
600
+ ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
597
601
; CHECK-NEXT: xvst $xr0, $a0, 0
598
- ; CHECK-NEXT: addi.d $sp, $fp, -96
599
- ; CHECK-NEXT: ld.d $fp, $sp, 80 # 8-byte Folded Reload
600
- ; CHECK-NEXT: ld.d $ra, $sp, 88 # 8-byte Folded Reload
601
- ; CHECK-NEXT: addi.d $sp, $sp, 96
602
602
; CHECK-NEXT: ret
603
603
entry:
604
604
%ins0 = insertelement <16 x i16 > undef , i16 %a0 , i32 0
@@ -702,21 +702,11 @@ entry:
702
702
define void @buildvector_v8i32_partial (ptr %dst , i32 %a2 , i32 %a4 , i32 %a5 , i32 %a6 ) nounwind {
703
703
; CHECK-LABEL: buildvector_v8i32_partial:
704
704
; CHECK: # %bb.0: # %entry
705
- ; CHECK-NEXT: addi.d $sp, $sp, -96
706
- ; CHECK-NEXT: st.d $ra, $sp, 88 # 8-byte Folded Spill
707
- ; CHECK-NEXT: st.d $fp, $sp, 80 # 8-byte Folded Spill
708
- ; CHECK-NEXT: addi.d $fp, $sp, 96
709
- ; CHECK-NEXT: bstrins.d $sp, $zero, 4, 0
710
- ; CHECK-NEXT: st.w $a4, $sp, 56
711
- ; CHECK-NEXT: st.w $a3, $sp, 52
712
- ; CHECK-NEXT: st.w $a2, $sp, 48
713
- ; CHECK-NEXT: st.w $a1, $sp, 40
714
- ; CHECK-NEXT: xvld $xr0, $sp, 32
705
+ ; CHECK-NEXT: xvinsgr2vr.w $xr0, $a1, 2
706
+ ; CHECK-NEXT: xvinsgr2vr.w $xr0, $a2, 4
707
+ ; CHECK-NEXT: xvinsgr2vr.w $xr0, $a3, 5
708
+ ; CHECK-NEXT: xvinsgr2vr.w $xr0, $a4, 6
715
709
; CHECK-NEXT: xvst $xr0, $a0, 0
716
- ; CHECK-NEXT: addi.d $sp, $fp, -96
717
- ; CHECK-NEXT: ld.d $fp, $sp, 80 # 8-byte Folded Reload
718
- ; CHECK-NEXT: ld.d $ra, $sp, 88 # 8-byte Folded Reload
719
- ; CHECK-NEXT: addi.d $sp, $sp, 96
720
710
; CHECK-NEXT: ret
721
711
entry:
722
712
%ins0 = insertelement <8 x i32 > undef , i32 undef , i32 0
@@ -787,11 +777,8 @@ entry:
787
777
define void @buildvector_v4i64_partial (ptr %dst , i64 %a1 , i64 %a2 ) nounwind {
788
778
; CHECK-LABEL: buildvector_v4i64_partial:
789
779
; CHECK: # %bb.0: # %entry
790
- ; CHECK-NEXT: xvinsgr2vr.d $xr0, $a2, 0
791
- ; CHECK-NEXT: xvpermi.d $xr0, $xr0, 68
792
- ; CHECK-NEXT: xvinsgr2vr.d $xr1, $a1, 0
793
- ; CHECK-NEXT: xvpermi.d $xr1, $xr1, 68
794
- ; CHECK-NEXT: xvpackev.d $xr0, $xr1, $xr0
780
+ ; CHECK-NEXT: xvinsgr2vr.d $xr0, $a1, 1
781
+ ; CHECK-NEXT: xvinsgr2vr.d $xr0, $a2, 2
795
782
; CHECK-NEXT: xvst $xr0, $a0, 0
796
783
; CHECK-NEXT: ret
797
784
entry:
@@ -867,21 +854,15 @@ entry:
867
854
define void @buildvector_v8f32_partial (ptr %dst , float %a1 , float %a2 , float %a5 , float %a7 ) nounwind {
868
855
; CHECK-LABEL: buildvector_v8f32_partial:
869
856
; CHECK: # %bb.0: # %entry
870
- ; CHECK-NEXT: addi.d $sp, $sp, -96
871
- ; CHECK-NEXT: st.d $ra, $sp, 88 # 8-byte Folded Spill
872
- ; CHECK-NEXT: st.d $fp, $sp, 80 # 8-byte Folded Spill
873
- ; CHECK-NEXT: addi.d $fp, $sp, 96
874
- ; CHECK-NEXT: bstrins.d $sp, $zero, 4, 0
875
- ; CHECK-NEXT: fst.s $fa3, $sp, 60
876
- ; CHECK-NEXT: fst.s $fa2, $sp, 52
877
- ; CHECK-NEXT: fst.s $fa1, $sp, 40
878
- ; CHECK-NEXT: fst.s $fa0, $sp, 36
879
- ; CHECK-NEXT: xvld $xr0, $sp, 32
857
+ ; CHECK-NEXT: # kill: def $f3 killed $f3 def $xr3
858
+ ; CHECK-NEXT: # kill: def $f2 killed $f2 def $xr2
859
+ ; CHECK-NEXT: # kill: def $f1 killed $f1 def $xr1
860
+ ; CHECK-NEXT: # kill: def $f0 killed $f0 def $xr0
861
+ ; CHECK-NEXT: xvinsve0.w $xr0, $xr0, 1
862
+ ; CHECK-NEXT: xvinsve0.w $xr0, $xr1, 2
863
+ ; CHECK-NEXT: xvinsve0.w $xr0, $xr2, 5
864
+ ; CHECK-NEXT: xvinsve0.w $xr0, $xr3, 7
880
865
; CHECK-NEXT: xvst $xr0, $a0, 0
881
- ; CHECK-NEXT: addi.d $sp, $fp, -96
882
- ; CHECK-NEXT: ld.d $fp, $sp, 80 # 8-byte Folded Reload
883
- ; CHECK-NEXT: ld.d $ra, $sp, 88 # 8-byte Folded Reload
884
- ; CHECK-NEXT: addi.d $sp, $sp, 96
885
866
; CHECK-NEXT: ret
886
867
entry:
887
868
%ins0 = insertelement <8 x float > undef , float undef , i32 0
@@ -960,9 +941,7 @@ define void @buildvector_v4f64_partial(ptr %dst, double %a0, double %a3) nounwin
960
941
; CHECK: # %bb.0: # %entry
961
942
; CHECK-NEXT: # kill: def $f1_64 killed $f1_64 def $xr1
962
943
; CHECK-NEXT: # kill: def $f0_64 killed $f0_64 def $xr0
963
- ; CHECK-NEXT: xvpermi.d $xr0, $xr0, 68
964
- ; CHECK-NEXT: xvpermi.d $xr1, $xr1, 68
965
- ; CHECK-NEXT: xvpackev.d $xr0, $xr1, $xr0
944
+ ; CHECK-NEXT: xvinsve0.d $xr0, $xr1, 3
966
945
; CHECK-NEXT: xvst $xr0, $a0, 0
967
946
; CHECK-NEXT: ret
968
947
entry:
0 commit comments