mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-18 15:36:58 +00:00
[LoongArch] fix vec-trunc.ll test error (#131104)
This commit is contained in:
parent
de895751d2
commit
d77ef140e6
@ -4,11 +4,15 @@
|
||||
define void @load_trunc_2i64_to_2i32(ptr %ptr, ptr %dst) nounwind {
|
||||
; CHECK-LABEL: load_trunc_2i64_to_2i32:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: addi.d $sp, $sp, -16
|
||||
; CHECK-NEXT: vld $vr0, $a0, 0
|
||||
; CHECK-NEXT: vpickve2gr.d $a0, $vr0, 1
|
||||
; CHECK-NEXT: st.w $a0, $a1, 4
|
||||
; CHECK-NEXT: st.w $a0, $sp, 4
|
||||
; CHECK-NEXT: vpickve2gr.d $a0, $vr0, 0
|
||||
; CHECK-NEXT: st.w $a0, $a1, 0
|
||||
; CHECK-NEXT: st.w $a0, $sp, 0
|
||||
; CHECK-NEXT: ld.d $a0, $sp, 0
|
||||
; CHECK-NEXT: st.d $a0, $a1, 0
|
||||
; CHECK-NEXT: addi.d $sp, $sp, 16
|
||||
; CHECK-NEXT: ret
|
||||
%a = load <2 x i64>, ptr %ptr
|
||||
%trunc = trunc <2 x i64> %a to <2 x i32>
|
||||
@ -19,11 +23,16 @@ define void @load_trunc_2i64_to_2i32(ptr %ptr, ptr %dst) nounwind {
|
||||
define void @load_trunc_2i64_to_2i16(ptr %ptr, ptr %dst) nounwind {
|
||||
; CHECK-LABEL: load_trunc_2i64_to_2i16:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: addi.d $sp, $sp, -16
|
||||
; CHECK-NEXT: vld $vr0, $a0, 0
|
||||
; CHECK-NEXT: vpickve2gr.d $a0, $vr0, 1
|
||||
; CHECK-NEXT: st.h $a0, $a1, 2
|
||||
; CHECK-NEXT: st.h $a0, $sp, 2
|
||||
; CHECK-NEXT: vpickve2gr.d $a0, $vr0, 0
|
||||
; CHECK-NEXT: st.h $a0, $a1, 0
|
||||
; CHECK-NEXT: st.h $a0, $sp, 0
|
||||
; CHECK-NEXT: vld $vr0, $sp, 0
|
||||
; CHECK-NEXT: vpickve2gr.w $a0, $vr0, 0
|
||||
; CHECK-NEXT: st.w $a0, $a1, 0
|
||||
; CHECK-NEXT: addi.d $sp, $sp, 16
|
||||
; CHECK-NEXT: ret
|
||||
%a = load <2 x i64>, ptr %ptr
|
||||
%trunc = trunc <2 x i64> %a to <2 x i16>
|
||||
@ -34,11 +43,16 @@ define void @load_trunc_2i64_to_2i16(ptr %ptr, ptr %dst) nounwind {
|
||||
define void @load_trunc_2i64_to_2i8(ptr %ptr, ptr %dst) nounwind {
|
||||
; CHECK-LABEL: load_trunc_2i64_to_2i8:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: addi.d $sp, $sp, -16
|
||||
; CHECK-NEXT: vld $vr0, $a0, 0
|
||||
; CHECK-NEXT: vpickve2gr.d $a0, $vr0, 1
|
||||
; CHECK-NEXT: st.b $a0, $a1, 1
|
||||
; CHECK-NEXT: st.b $a0, $sp, 1
|
||||
; CHECK-NEXT: vpickve2gr.d $a0, $vr0, 0
|
||||
; CHECK-NEXT: st.b $a0, $a1, 0
|
||||
; CHECK-NEXT: st.b $a0, $sp, 0
|
||||
; CHECK-NEXT: vld $vr0, $sp, 0
|
||||
; CHECK-NEXT: vpickve2gr.h $a0, $vr0, 0
|
||||
; CHECK-NEXT: st.h $a0, $a1, 0
|
||||
; CHECK-NEXT: addi.d $sp, $sp, 16
|
||||
; CHECK-NEXT: ret
|
||||
%a = load <2 x i64>, ptr %ptr
|
||||
%trunc = trunc <2 x i64> %a to <2 x i8>
|
||||
@ -49,15 +63,19 @@ define void @load_trunc_2i64_to_2i8(ptr %ptr, ptr %dst) nounwind {
|
||||
define void @load_trunc_4i32_to_4i16(ptr %ptr, ptr %dst) nounwind {
|
||||
; CHECK-LABEL: load_trunc_4i32_to_4i16:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: addi.d $sp, $sp, -16
|
||||
; CHECK-NEXT: vld $vr0, $a0, 0
|
||||
; CHECK-NEXT: vpickve2gr.w $a0, $vr0, 3
|
||||
; CHECK-NEXT: st.h $a0, $a1, 6
|
||||
; CHECK-NEXT: st.h $a0, $sp, 6
|
||||
; CHECK-NEXT: vpickve2gr.w $a0, $vr0, 2
|
||||
; CHECK-NEXT: st.h $a0, $a1, 4
|
||||
; CHECK-NEXT: st.h $a0, $sp, 4
|
||||
; CHECK-NEXT: vpickve2gr.w $a0, $vr0, 1
|
||||
; CHECK-NEXT: st.h $a0, $a1, 2
|
||||
; CHECK-NEXT: st.h $a0, $sp, 2
|
||||
; CHECK-NEXT: vpickve2gr.w $a0, $vr0, 0
|
||||
; CHECK-NEXT: st.h $a0, $a1, 0
|
||||
; CHECK-NEXT: st.h $a0, $sp, 0
|
||||
; CHECK-NEXT: ld.d $a0, $sp, 0
|
||||
; CHECK-NEXT: st.d $a0, $a1, 0
|
||||
; CHECK-NEXT: addi.d $sp, $sp, 16
|
||||
; CHECK-NEXT: ret
|
||||
%a = load <4 x i32>, ptr %ptr
|
||||
%trunc = trunc <4 x i32> %a to <4 x i16>
|
||||
@ -68,15 +86,20 @@ define void @load_trunc_4i32_to_4i16(ptr %ptr, ptr %dst) nounwind {
|
||||
define void @load_trunc_4i32_to_4i8(ptr %ptr, ptr %dst) nounwind {
|
||||
; CHECK-LABEL: load_trunc_4i32_to_4i8:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: addi.d $sp, $sp, -16
|
||||
; CHECK-NEXT: vld $vr0, $a0, 0
|
||||
; CHECK-NEXT: vpickve2gr.w $a0, $vr0, 3
|
||||
; CHECK-NEXT: st.b $a0, $a1, 3
|
||||
; CHECK-NEXT: st.b $a0, $sp, 3
|
||||
; CHECK-NEXT: vpickve2gr.w $a0, $vr0, 2
|
||||
; CHECK-NEXT: st.b $a0, $a1, 2
|
||||
; CHECK-NEXT: st.b $a0, $sp, 2
|
||||
; CHECK-NEXT: vpickve2gr.w $a0, $vr0, 1
|
||||
; CHECK-NEXT: st.b $a0, $a1, 1
|
||||
; CHECK-NEXT: st.b $a0, $sp, 1
|
||||
; CHECK-NEXT: vpickve2gr.w $a0, $vr0, 0
|
||||
; CHECK-NEXT: st.b $a0, $a1, 0
|
||||
; CHECK-NEXT: st.b $a0, $sp, 0
|
||||
; CHECK-NEXT: vld $vr0, $sp, 0
|
||||
; CHECK-NEXT: vpickve2gr.w $a0, $vr0, 0
|
||||
; CHECK-NEXT: st.w $a0, $a1, 0
|
||||
; CHECK-NEXT: addi.d $sp, $sp, 16
|
||||
; CHECK-NEXT: ret
|
||||
%a = load <4 x i32>, ptr %ptr
|
||||
%trunc = trunc <4 x i32> %a to <4 x i8>
|
||||
@ -87,23 +110,27 @@ define void @load_trunc_4i32_to_4i8(ptr %ptr, ptr %dst) nounwind {
|
||||
define void @load_trunc_8i16_to_8i8(ptr %ptr, ptr %dst) nounwind {
|
||||
; CHECK-LABEL: load_trunc_8i16_to_8i8:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: addi.d $sp, $sp, -16
|
||||
; CHECK-NEXT: vld $vr0, $a0, 0
|
||||
; CHECK-NEXT: vpickve2gr.h $a0, $vr0, 7
|
||||
; CHECK-NEXT: st.b $a0, $a1, 7
|
||||
; CHECK-NEXT: st.b $a0, $sp, 7
|
||||
; CHECK-NEXT: vpickve2gr.h $a0, $vr0, 6
|
||||
; CHECK-NEXT: st.b $a0, $a1, 6
|
||||
; CHECK-NEXT: st.b $a0, $sp, 6
|
||||
; CHECK-NEXT: vpickve2gr.h $a0, $vr0, 5
|
||||
; CHECK-NEXT: st.b $a0, $a1, 5
|
||||
; CHECK-NEXT: st.b $a0, $sp, 5
|
||||
; CHECK-NEXT: vpickve2gr.h $a0, $vr0, 4
|
||||
; CHECK-NEXT: st.b $a0, $a1, 4
|
||||
; CHECK-NEXT: st.b $a0, $sp, 4
|
||||
; CHECK-NEXT: vpickve2gr.h $a0, $vr0, 3
|
||||
; CHECK-NEXT: st.b $a0, $a1, 3
|
||||
; CHECK-NEXT: st.b $a0, $sp, 3
|
||||
; CHECK-NEXT: vpickve2gr.h $a0, $vr0, 2
|
||||
; CHECK-NEXT: st.b $a0, $a1, 2
|
||||
; CHECK-NEXT: st.b $a0, $sp, 2
|
||||
; CHECK-NEXT: vpickve2gr.h $a0, $vr0, 1
|
||||
; CHECK-NEXT: st.b $a0, $a1, 1
|
||||
; CHECK-NEXT: st.b $a0, $sp, 1
|
||||
; CHECK-NEXT: vpickve2gr.h $a0, $vr0, 0
|
||||
; CHECK-NEXT: st.b $a0, $a1, 0
|
||||
; CHECK-NEXT: st.b $a0, $sp, 0
|
||||
; CHECK-NEXT: ld.d $a0, $sp, 0
|
||||
; CHECK-NEXT: st.d $a0, $a1, 0
|
||||
; CHECK-NEXT: addi.d $sp, $sp, 16
|
||||
; CHECK-NEXT: ret
|
||||
%a = load <8 x i16>, ptr %ptr
|
||||
%trunc = trunc <8 x i16> %a to <8 x i8>
|
||||
@ -114,10 +141,17 @@ define void @load_trunc_8i16_to_8i8(ptr %ptr, ptr %dst) nounwind {
|
||||
define void @load_trunc_2i32_to_2i16(ptr %ptr, ptr %dst) nounwind {
|
||||
; CHECK-LABEL: load_trunc_2i32_to_2i16:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: ld.w $a2, $a0, 4
|
||||
; CHECK-NEXT: ld.w $a0, $a0, 0
|
||||
; CHECK-NEXT: st.h $a2, $a1, 2
|
||||
; CHECK-NEXT: st.h $a0, $a1, 0
|
||||
; CHECK-NEXT: addi.d $sp, $sp, -16
|
||||
; CHECK-NEXT: ld.d $a0, $a0, 0
|
||||
; CHECK-NEXT: vinsgr2vr.d $vr0, $a0, 0
|
||||
; CHECK-NEXT: vpickve2gr.w $a0, $vr0, 1
|
||||
; CHECK-NEXT: st.h $a0, $sp, 2
|
||||
; CHECK-NEXT: vpickve2gr.w $a0, $vr0, 0
|
||||
; CHECK-NEXT: st.h $a0, $sp, 0
|
||||
; CHECK-NEXT: vld $vr0, $sp, 0
|
||||
; CHECK-NEXT: vpickve2gr.w $a0, $vr0, 0
|
||||
; CHECK-NEXT: st.w $a0, $a1, 0
|
||||
; CHECK-NEXT: addi.d $sp, $sp, 16
|
||||
; CHECK-NEXT: ret
|
||||
%a = load <2 x i32>, ptr %ptr
|
||||
%trunc = trunc <2 x i32> %a to <2 x i16>
|
||||
@ -128,10 +162,17 @@ define void @load_trunc_2i32_to_2i16(ptr %ptr, ptr %dst) nounwind {
|
||||
define void @load_trunc_2i32_to_2i8(ptr %ptr, ptr %dst) nounwind {
|
||||
; CHECK-LABEL: load_trunc_2i32_to_2i8:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: ld.w $a2, $a0, 4
|
||||
; CHECK-NEXT: ld.w $a0, $a0, 0
|
||||
; CHECK-NEXT: st.b $a2, $a1, 1
|
||||
; CHECK-NEXT: st.b $a0, $a1, 0
|
||||
; CHECK-NEXT: addi.d $sp, $sp, -16
|
||||
; CHECK-NEXT: ld.d $a0, $a0, 0
|
||||
; CHECK-NEXT: vinsgr2vr.d $vr0, $a0, 0
|
||||
; CHECK-NEXT: vpickve2gr.w $a0, $vr0, 1
|
||||
; CHECK-NEXT: st.b $a0, $sp, 1
|
||||
; CHECK-NEXT: vpickve2gr.w $a0, $vr0, 0
|
||||
; CHECK-NEXT: st.b $a0, $sp, 0
|
||||
; CHECK-NEXT: vld $vr0, $sp, 0
|
||||
; CHECK-NEXT: vpickve2gr.h $a0, $vr0, 0
|
||||
; CHECK-NEXT: st.h $a0, $a1, 0
|
||||
; CHECK-NEXT: addi.d $sp, $sp, 16
|
||||
; CHECK-NEXT: ret
|
||||
%a = load <2 x i32>, ptr %ptr
|
||||
%trunc = trunc <2 x i32> %a to <2 x i8>
|
||||
@ -142,14 +183,21 @@ define void @load_trunc_2i32_to_2i8(ptr %ptr, ptr %dst) nounwind {
|
||||
define void @load_trunc_4i16_to_4i8(ptr %ptr, ptr %dst) nounwind {
|
||||
; CHECK-LABEL: load_trunc_4i16_to_4i8:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: ld.h $a2, $a0, 6
|
||||
; CHECK-NEXT: ld.h $a3, $a0, 4
|
||||
; CHECK-NEXT: ld.h $a4, $a0, 2
|
||||
; CHECK-NEXT: ld.h $a0, $a0, 0
|
||||
; CHECK-NEXT: st.b $a2, $a1, 3
|
||||
; CHECK-NEXT: st.b $a3, $a1, 2
|
||||
; CHECK-NEXT: st.b $a4, $a1, 1
|
||||
; CHECK-NEXT: st.b $a0, $a1, 0
|
||||
; CHECK-NEXT: addi.d $sp, $sp, -16
|
||||
; CHECK-NEXT: ld.d $a0, $a0, 0
|
||||
; CHECK-NEXT: vinsgr2vr.d $vr0, $a0, 0
|
||||
; CHECK-NEXT: vpickve2gr.h $a0, $vr0, 3
|
||||
; CHECK-NEXT: st.b $a0, $sp, 3
|
||||
; CHECK-NEXT: vpickve2gr.h $a0, $vr0, 2
|
||||
; CHECK-NEXT: st.b $a0, $sp, 2
|
||||
; CHECK-NEXT: vpickve2gr.h $a0, $vr0, 1
|
||||
; CHECK-NEXT: st.b $a0, $sp, 1
|
||||
; CHECK-NEXT: vpickve2gr.h $a0, $vr0, 0
|
||||
; CHECK-NEXT: st.b $a0, $sp, 0
|
||||
; CHECK-NEXT: vld $vr0, $sp, 0
|
||||
; CHECK-NEXT: vpickve2gr.w $a0, $vr0, 0
|
||||
; CHECK-NEXT: st.w $a0, $a1, 0
|
||||
; CHECK-NEXT: addi.d $sp, $sp, 16
|
||||
; CHECK-NEXT: ret
|
||||
%a = load <4 x i16>, ptr %ptr
|
||||
%trunc = trunc <4 x i16> %a to <4 x i8>
|
||||
@ -160,10 +208,17 @@ define void @load_trunc_4i16_to_4i8(ptr %ptr, ptr %dst) nounwind {
|
||||
define void @load_trunc_2i16_to_2i8(ptr %ptr, ptr %dst) nounwind {
|
||||
; CHECK-LABEL: load_trunc_2i16_to_2i8:
|
||||
; CHECK: # %bb.0:
|
||||
; CHECK-NEXT: ld.h $a2, $a0, 2
|
||||
; CHECK-NEXT: ld.h $a0, $a0, 0
|
||||
; CHECK-NEXT: st.b $a2, $a1, 1
|
||||
; CHECK-NEXT: st.b $a0, $a1, 0
|
||||
; CHECK-NEXT: addi.d $sp, $sp, -16
|
||||
; CHECK-NEXT: ld.w $a0, $a0, 0
|
||||
; CHECK-NEXT: vinsgr2vr.w $vr0, $a0, 0
|
||||
; CHECK-NEXT: vpickve2gr.h $a0, $vr0, 1
|
||||
; CHECK-NEXT: st.b $a0, $sp, 1
|
||||
; CHECK-NEXT: vpickve2gr.h $a0, $vr0, 0
|
||||
; CHECK-NEXT: st.b $a0, $sp, 0
|
||||
; CHECK-NEXT: vld $vr0, $sp, 0
|
||||
; CHECK-NEXT: vpickve2gr.h $a0, $vr0, 0
|
||||
; CHECK-NEXT: st.h $a0, $a1, 0
|
||||
; CHECK-NEXT: addi.d $sp, $sp, 16
|
||||
; CHECK-NEXT: ret
|
||||
%a = load <2 x i16>, ptr %ptr
|
||||
%trunc = trunc <2 x i16> %a to <2 x i8>
|
||||
|
Loading…
x
Reference in New Issue
Block a user