Skip to content

Commit e3b5daf

Browse files
committed
[LoongArch] Pre-commit tests for build_vector with same constant elements. NFC
1 parent 76f2afa commit e3b5daf

File tree

2 files changed

+411
-4
lines changed

2 files changed

+411
-4
lines changed

llvm/test/CodeGen/LoongArch/lasx/build-vector.ll

Lines changed: 264 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,90 @@ entry:
427427
ret void
428428
}
429429

430+
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 {
431+
; CHECK-LABEL: buildvector_v32i8_with_constant:
432+
; CHECK: # %bb.0: # %entry
433+
; CHECK-NEXT: addi.d $sp, $sp, -96
434+
; CHECK-NEXT: st.d $ra, $sp, 88 # 8-byte Folded Spill
435+
; CHECK-NEXT: st.d $fp, $sp, 80 # 8-byte Folded Spill
436+
; CHECK-NEXT: addi.d $fp, $sp, 96
437+
; CHECK-NEXT: bstrins.d $sp, $zero, 4, 0
438+
; CHECK-NEXT: ld.b $t0, $fp, 0
439+
; CHECK-NEXT: ld.b $t1, $fp, 8
440+
; CHECK-NEXT: ld.b $t2, $fp, 16
441+
; CHECK-NEXT: ld.b $t3, $fp, 24
442+
; CHECK-NEXT: ld.b $t4, $fp, 56
443+
; CHECK-NEXT: ld.b $t5, $fp, 32
444+
; CHECK-NEXT: ld.b $t6, $fp, 48
445+
; CHECK-NEXT: ld.b $t7, $fp, 40
446+
; CHECK-NEXT: st.b $t4, $sp, 63
447+
; CHECK-NEXT: st.b $zero, $sp, 61
448+
; CHECK-NEXT: st.b $t6, $sp, 60
449+
; CHECK-NEXT: st.b $t7, $sp, 59
450+
; CHECK-NEXT: st.b $zero, $sp, 56
451+
; CHECK-NEXT: st.b $t5, $sp, 55
452+
; CHECK-NEXT: st.b $t3, $sp, 54
453+
; CHECK-NEXT: st.b $zero, $sp, 53
454+
; CHECK-NEXT: st.b $t2, $sp, 52
455+
; CHECK-NEXT: st.b $zero, $sp, 51
456+
; CHECK-NEXT: st.b $t1, $sp, 50
457+
; CHECK-NEXT: st.b $t0, $sp, 49
458+
; CHECK-NEXT: st.b $zero, $sp, 48
459+
; CHECK-NEXT: st.b $a7, $sp, 47
460+
; CHECK-NEXT: st.h $zero, $sp, 44
461+
; CHECK-NEXT: st.b $zero, $sp, 42
462+
; CHECK-NEXT: st.b $a6, $sp, 41
463+
; CHECK-NEXT: st.b $a5, $sp, 40
464+
; CHECK-NEXT: st.b $zero, $sp, 39
465+
; CHECK-NEXT: st.b $a4, $sp, 37
466+
; CHECK-NEXT: st.h $zero, $sp, 35
467+
; CHECK-NEXT: st.b $a3, $sp, 34
468+
; CHECK-NEXT: st.b $a2, $sp, 33
469+
; CHECK-NEXT: st.b $a1, $sp, 32
470+
; CHECK-NEXT: xvld $xr0, $sp, 32
471+
; CHECK-NEXT: xvst $xr0, $a0, 0
472+
; CHECK-NEXT: addi.d $sp, $fp, -96
473+
; CHECK-NEXT: ld.d $fp, $sp, 80 # 8-byte Folded Reload
474+
; CHECK-NEXT: ld.d $ra, $sp, 88 # 8-byte Folded Reload
475+
; CHECK-NEXT: addi.d $sp, $sp, 96
476+
; CHECK-NEXT: ret
477+
entry:
478+
%ins0 = insertelement <32 x i8> undef, i8 %a0, i32 0
479+
%ins1 = insertelement <32 x i8> %ins0, i8 %a1, i32 1
480+
%ins2 = insertelement <32 x i8> %ins1, i8 %a2, i32 2
481+
%ins3 = insertelement <32 x i8> %ins2, i8 0, i32 3
482+
%ins4 = insertelement <32 x i8> %ins3, i8 0, i32 4
483+
%ins5 = insertelement <32 x i8> %ins4, i8 %a5, i32 5
484+
%ins6 = insertelement <32 x i8> %ins5, i8 undef, i32 6
485+
%ins7 = insertelement <32 x i8> %ins6, i8 0, i32 7
486+
%ins8 = insertelement <32 x i8> %ins7, i8 %a8, i32 8
487+
%ins9 = insertelement <32 x i8> %ins8, i8 %a9, i32 9
488+
%ins10 = insertelement <32 x i8> %ins9, i8 0, i32 10
489+
%ins11 = insertelement <32 x i8> %ins10, i8 undef, i32 11
490+
%ins12 = insertelement <32 x i8> %ins11, i8 0, i32 12
491+
%ins13 = insertelement <32 x i8> %ins12, i8 0, i32 13
492+
%ins14 = insertelement <32 x i8> %ins13, i8 undef, i32 14
493+
%ins15 = insertelement <32 x i8> %ins14, i8 %a15, i32 15
494+
%ins16 = insertelement <32 x i8> %ins15, i8 0, i32 16
495+
%ins17 = insertelement <32 x i8> %ins16, i8 %a17, i32 17
496+
%ins18 = insertelement <32 x i8> %ins17, i8 %a18, i32 18
497+
%ins19 = insertelement <32 x i8> %ins18, i8 0, i32 19
498+
%ins20 = insertelement <32 x i8> %ins19, i8 %a20, i32 20
499+
%ins21 = insertelement <32 x i8> %ins20, i8 0, i32 21
500+
%ins22 = insertelement <32 x i8> %ins21, i8 %a22, i32 22
501+
%ins23 = insertelement <32 x i8> %ins22, i8 %a23, i32 23
502+
%ins24 = insertelement <32 x i8> %ins23, i8 0, i32 24
503+
%ins25 = insertelement <32 x i8> %ins24, i8 undef, i32 25
504+
%ins26 = insertelement <32 x i8> %ins25, i8 undef, i32 26
505+
%ins27 = insertelement <32 x i8> %ins26, i8 %a27, i32 27
506+
%ins28 = insertelement <32 x i8> %ins27, i8 %a28, i32 28
507+
%ins29 = insertelement <32 x i8> %ins28, i8 0, i32 29
508+
%ins30 = insertelement <32 x i8> %ins29, i8 undef, i32 30
509+
%ins31 = insertelement <32 x i8> %ins30, i8 %a31, i32 31
510+
store <32 x i8> %ins31, ptr %dst
511+
ret void
512+
}
513+
430514
define void @buildvector_v16i16(ptr %dst, i16 %a0, i16 %a1, i16 %a2, i16 %a3, i16 %a4, i16 %a5, i16 %a6, i16 %a7, i16 %a8, i16 %a9, i16 %a10, i16 %a11, i16 %a12, i16 %a13, i16 %a14, i16 %a15) nounwind {
431515
; CHECK-LABEL: buildvector_v16i16:
432516
; CHECK: # %bb.0: # %entry
@@ -537,6 +621,57 @@ entry:
537621
ret void
538622
}
539623

624+
define void @buildvector_v16i16_with_constant(ptr %dst, i16 %a2, i16 %a3, i16 %a5, i16 %a6, i16 %a7, i16 %a12, i16 %a13) nounwind {
625+
; CHECK-LABEL: buildvector_v16i16_with_constant:
626+
; 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
653+
; CHECK-NEXT: ret
654+
entry:
655+
%ins0 = insertelement <16 x i16> undef, i16 2, i32 0
656+
%ins1 = insertelement <16 x i16> %ins0, i16 2, i32 1
657+
%ins2 = insertelement <16 x i16> %ins1, i16 %a2, i32 2
658+
%ins3 = insertelement <16 x i16> %ins2, i16 %a3, i32 3
659+
%ins4 = insertelement <16 x i16> %ins3, i16 2, i32 4
660+
%ins5 = insertelement <16 x i16> %ins4, i16 %a5, i32 5
661+
%ins6 = insertelement <16 x i16> %ins5, i16 %a6, i32 6
662+
%ins7 = insertelement <16 x i16> %ins6, i16 %a7, i32 7
663+
%ins8 = insertelement <16 x i16> %ins7, i16 2, i32 8
664+
%ins9 = insertelement <16 x i16> %ins8, i16 2, i32 9
665+
%ins10 = insertelement <16 x i16> %ins9, i16 2, i32 10
666+
%ins11 = insertelement <16 x i16> %ins10, i16 2, i32 11
667+
%ins12 = insertelement <16 x i16> %ins11, i16 %a12, i32 12
668+
%ins13 = insertelement <16 x i16> %ins12, i16 %a13, i32 13
669+
%ins14 = insertelement <16 x i16> %ins13, i16 2, i32 14
670+
%ins15 = insertelement <16 x i16> %ins14, i16 2, i32 15
671+
store <16 x i16> %ins15, ptr %dst
672+
ret void
673+
}
674+
540675
define void @buildvector_v8i32(ptr %dst, i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7) nounwind {
541676
; CHECK-LABEL: buildvector_v8i32:
542677
; CHECK: # %bb.0: # %entry
@@ -596,6 +731,41 @@ entry:
596731
ret void
597732
}
598733

734+
define void @buildvector_v8i32_with_constant(ptr %dst, i32 %a2, i32 %a4, i32 %a5, i32 %a6) nounwind {
735+
; CHECK-LABEL: buildvector_v8i32_with_constant:
736+
; CHECK: # %bb.0: # %entry
737+
; CHECK-NEXT: addi.d $sp, $sp, -96
738+
; CHECK-NEXT: st.d $ra, $sp, 88 # 8-byte Folded Spill
739+
; CHECK-NEXT: st.d $fp, $sp, 80 # 8-byte Folded Spill
740+
; CHECK-NEXT: addi.d $fp, $sp, 96
741+
; CHECK-NEXT: bstrins.d $sp, $zero, 4, 0
742+
; CHECK-NEXT: st.w $zero, $sp, 60
743+
; CHECK-NEXT: st.w $a4, $sp, 56
744+
; CHECK-NEXT: st.w $a3, $sp, 52
745+
; CHECK-NEXT: st.w $a2, $sp, 48
746+
; CHECK-NEXT: st.w $zero, $sp, 44
747+
; CHECK-NEXT: st.w $a1, $sp, 40
748+
; CHECK-NEXT: st.d $zero, $sp, 32
749+
; CHECK-NEXT: xvld $xr0, $sp, 32
750+
; CHECK-NEXT: xvst $xr0, $a0, 0
751+
; CHECK-NEXT: addi.d $sp, $fp, -96
752+
; CHECK-NEXT: ld.d $fp, $sp, 80 # 8-byte Folded Reload
753+
; CHECK-NEXT: ld.d $ra, $sp, 88 # 8-byte Folded Reload
754+
; CHECK-NEXT: addi.d $sp, $sp, 96
755+
; CHECK-NEXT: ret
756+
entry:
757+
%ins0 = insertelement <8 x i32> undef, i32 0, i32 0
758+
%ins1 = insertelement <8 x i32> %ins0, i32 0, i32 1
759+
%ins2 = insertelement <8 x i32> %ins1, i32 %a2, i32 2
760+
%ins3 = insertelement <8 x i32> %ins2, i32 0, i32 3
761+
%ins4 = insertelement <8 x i32> %ins3, i32 %a4, i32 4
762+
%ins5 = insertelement <8 x i32> %ins4, i32 %a5, i32 5
763+
%ins6 = insertelement <8 x i32> %ins5, i32 %a6, i32 6
764+
%ins7 = insertelement <8 x i32> %ins6, i32 0, i32 7
765+
store <8 x i32> %ins7, ptr %dst
766+
ret void
767+
}
768+
599769
define void @buildvector_v4i64(ptr %dst, i64 %a0, i64 %a1, i64 %a2, i64 %a3) nounwind {
600770
; CHECK-LABEL: buildvector_v4i64:
601771
; CHECK: # %bb.0: # %entry
@@ -633,6 +803,34 @@ entry:
633803
ret void
634804
}
635805

806+
define void @buildvector_v4i64_with_constant(ptr %dst, i64 %a0, i64 %a2) nounwind {
807+
; CHECK-LABEL: buildvector_v4i64_with_constant:
808+
; CHECK: # %bb.0: # %entry
809+
; CHECK-NEXT: addi.d $sp, $sp, -96
810+
; CHECK-NEXT: st.d $ra, $sp, 88 # 8-byte Folded Spill
811+
; CHECK-NEXT: st.d $fp, $sp, 80 # 8-byte Folded Spill
812+
; CHECK-NEXT: addi.d $fp, $sp, 96
813+
; CHECK-NEXT: bstrins.d $sp, $zero, 4, 0
814+
; CHECK-NEXT: st.d $zero, $sp, 56
815+
; CHECK-NEXT: st.d $a2, $sp, 48
816+
; CHECK-NEXT: st.d $zero, $sp, 40
817+
; CHECK-NEXT: st.d $a1, $sp, 32
818+
; CHECK-NEXT: xvld $xr0, $sp, 32
819+
; CHECK-NEXT: xvst $xr0, $a0, 0
820+
; CHECK-NEXT: addi.d $sp, $fp, -96
821+
; CHECK-NEXT: ld.d $fp, $sp, 80 # 8-byte Folded Reload
822+
; CHECK-NEXT: ld.d $ra, $sp, 88 # 8-byte Folded Reload
823+
; CHECK-NEXT: addi.d $sp, $sp, 96
824+
; CHECK-NEXT: ret
825+
entry:
826+
%ins0 = insertelement <4 x i64> undef, i64 %a0, i32 0
827+
%ins1 = insertelement <4 x i64> %ins0, i64 0, i32 1
828+
%ins2 = insertelement <4 x i64> %ins1, i64 %a2, i32 2
829+
%ins3 = insertelement <4 x i64> %ins2, i64 0, i32 3
830+
store <4 x i64> %ins3, ptr %dst
831+
ret void
832+
}
833+
636834
define void @buildvector_v8f32(ptr %dst, float %a0, float %a1, float %a2, float %a3, float %a4, float %a5, float %a6, float %a7) nounwind {
637835
; CHECK-LABEL: buildvector_v8f32:
638836
; CHECK: # %bb.0: # %entry
@@ -698,6 +896,44 @@ entry:
698896
ret void
699897
}
700898

899+
define void @buildvector_v8f32_with_constant(ptr %dst, float %a1, float %a2, float %a5, float %a7) nounwind {
900+
; CHECK-LABEL: buildvector_v8f32_with_constant:
901+
; CHECK: # %bb.0: # %entry
902+
; CHECK-NEXT: addi.d $sp, $sp, -96
903+
; CHECK-NEXT: st.d $ra, $sp, 88 # 8-byte Folded Spill
904+
; CHECK-NEXT: st.d $fp, $sp, 80 # 8-byte Folded Spill
905+
; CHECK-NEXT: addi.d $fp, $sp, 96
906+
; CHECK-NEXT: bstrins.d $sp, $zero, 4, 0
907+
; CHECK-NEXT: fst.s $fa3, $sp, 60
908+
; CHECK-NEXT: fst.s $fa2, $sp, 52
909+
; CHECK-NEXT: fst.s $fa1, $sp, 40
910+
; CHECK-NEXT: fst.s $fa0, $sp, 36
911+
; CHECK-NEXT: vldi $vr0, -1280
912+
; CHECK-NEXT: fst.s $fa0, $sp, 56
913+
; CHECK-NEXT: lu12i.w $a1, 262144
914+
; CHECK-NEXT: lu52i.d $a1, $a1, 1024
915+
; CHECK-NEXT: st.d $a1, $sp, 44
916+
; CHECK-NEXT: fst.s $fa0, $sp, 32
917+
; CHECK-NEXT: xvld $xr0, $sp, 32
918+
; CHECK-NEXT: xvst $xr0, $a0, 0
919+
; CHECK-NEXT: addi.d $sp, $fp, -96
920+
; CHECK-NEXT: ld.d $fp, $sp, 80 # 8-byte Folded Reload
921+
; CHECK-NEXT: ld.d $ra, $sp, 88 # 8-byte Folded Reload
922+
; CHECK-NEXT: addi.d $sp, $sp, 96
923+
; CHECK-NEXT: ret
924+
entry:
925+
%ins0 = insertelement <8 x float> undef, float 2.0, i32 0
926+
%ins1 = insertelement <8 x float> %ins0, float %a1, i32 1
927+
%ins2 = insertelement <8 x float> %ins1, float %a2, i32 2
928+
%ins3 = insertelement <8 x float> %ins2, float 2.0, i32 3
929+
%ins4 = insertelement <8 x float> %ins3, float 2.0, i32 4
930+
%ins5 = insertelement <8 x float> %ins4, float %a5, i32 5
931+
%ins6 = insertelement <8 x float> %ins5, float 2.0, i32 6
932+
%ins7 = insertelement <8 x float> %ins6, float %a7, i32 7
933+
store <8 x float> %ins7, ptr %dst
934+
ret void
935+
}
936+
701937
define void @buildvector_v4f64(ptr %dst, double %a0, double %a1, double %a2, double %a3) nounwind {
702938
; CHECK-LABEL: buildvector_v4f64:
703939
; CHECK: # %bb.0: # %entry
@@ -737,3 +973,31 @@ entry:
737973
store <4 x double> %ins3, ptr %dst
738974
ret void
739975
}
976+
977+
define void @buildvector_v4f64_with_constant(ptr %dst, double %a0, double %a3) nounwind {
978+
; CHECK-LABEL: buildvector_v4f64_with_constant:
979+
; CHECK: # %bb.0: # %entry
980+
; CHECK-NEXT: addi.d $sp, $sp, -96
981+
; CHECK-NEXT: st.d $ra, $sp, 88 # 8-byte Folded Spill
982+
; CHECK-NEXT: st.d $fp, $sp, 80 # 8-byte Folded Spill
983+
; CHECK-NEXT: addi.d $fp, $sp, 96
984+
; CHECK-NEXT: bstrins.d $sp, $zero, 4, 0
985+
; CHECK-NEXT: fst.d $fa1, $sp, 56
986+
; CHECK-NEXT: vrepli.b $vr1, 0
987+
; CHECK-NEXT: vst $vr1, $sp, 40
988+
; CHECK-NEXT: fst.d $fa0, $sp, 32
989+
; CHECK-NEXT: xvld $xr0, $sp, 32
990+
; CHECK-NEXT: xvst $xr0, $a0, 0
991+
; CHECK-NEXT: addi.d $sp, $fp, -96
992+
; CHECK-NEXT: ld.d $fp, $sp, 80 # 8-byte Folded Reload
993+
; CHECK-NEXT: ld.d $ra, $sp, 88 # 8-byte Folded Reload
994+
; CHECK-NEXT: addi.d $sp, $sp, 96
995+
; CHECK-NEXT: ret
996+
entry:
997+
%ins0 = insertelement <4 x double> undef, double %a0, i32 0
998+
%ins1 = insertelement <4 x double> %ins0, double 0.0, i32 1
999+
%ins2 = insertelement <4 x double> %ins1, double 0.0, i32 2
1000+
%ins3 = insertelement <4 x double> %ins2, double %a3, i32 3
1001+
store <4 x double> %ins3, ptr %dst
1002+
ret void
1003+
}

0 commit comments

Comments
 (0)