Skip to content

Commit cbc59b5

Browse files
committed
[LoongArch][NFC] Pre-commit tests for [x]vpermi.w
1 parent 1d73b68 commit cbc59b5

File tree

2 files changed

+82
-0
lines changed

2 files changed

+82
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
2+
; RUN: llc --mtriple=loongarch32 --mattr=+32s,+lasx < %s | FileCheck %s
3+
; RUN: llc --mtriple=loongarch64 --mattr=+lasx < %s | FileCheck %s
4+
5+
;; xvpermi.w
6+
define void @shufflevector_xvpermi_v8i32(ptr %res, ptr %a, ptr %b) nounwind {
7+
; CHECK-LABEL: shufflevector_xvpermi_v8i32:
8+
; CHECK: # %bb.0: # %entry
9+
; CHECK-NEXT: xvld $xr0, $a1, 0
10+
; CHECK-NEXT: xvld $xr1, $a2, 0
11+
; CHECK-NEXT: xvbsrl.v $xr0, $xr0, 8
12+
; CHECK-NEXT: xvbsll.v $xr1, $xr1, 8
13+
; CHECK-NEXT: xvor.v $xr0, $xr1, $xr0
14+
; CHECK-NEXT: xvst $xr0, $a0, 0
15+
; CHECK-NEXT: ret
16+
entry:
17+
%va = load <8 x i32>, ptr %a
18+
%vb = load <8 x i32>, ptr %b
19+
%c = shufflevector <8 x i32> %va, <8 x i32> %vb, <8 x i32> <i32 2, i32 3, i32 8, i32 9, i32 6, i32 7, i32 12, i32 13>
20+
store <8 x i32> %c, ptr %res
21+
ret void
22+
}
23+
24+
;; xvpermi.w
25+
define void @shufflevector_xvpermi_v8f32(ptr %res, ptr %a, ptr %b) nounwind {
26+
; CHECK-LABEL: shufflevector_xvpermi_v8f32:
27+
; CHECK: # %bb.0: # %entry
28+
; CHECK-NEXT: xvld $xr0, $a1, 0
29+
; CHECK-NEXT: xvld $xr1, $a2, 0
30+
; CHECK-NEXT: pcalau12i $a1, %pc_hi20(.LCPI1_0)
31+
; CHECK-NEXT: xvld $xr2, $a1, %pc_lo12(.LCPI1_0)
32+
; CHECK-NEXT: xvshuf.w $xr2, $xr1, $xr0
33+
; CHECK-NEXT: xvst $xr2, $a0, 0
34+
; CHECK-NEXT: ret
35+
entry:
36+
%va = load <8 x float>, ptr %a
37+
%vb = load <8 x float>, ptr %b
38+
%c = shufflevector <8 x float> %va, <8 x float> %vb, <8 x i32> <i32 9, i32 11, i32 0, i32 2, i32 13, i32 15, i32 4, i32 6>
39+
store <8 x float> %c, ptr %res
40+
ret void
41+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
2+
; RUN: llc --mtriple=loongarch32 --mattr=+32s,+lsx < %s | FileCheck %s
3+
; RUN: llc --mtriple=loongarch64 --mattr=+lsx < %s | FileCheck %s
4+
5+
;; vpermi.w
6+
define void @shufflevector_vpermi_v4i32(ptr %res, ptr %a, ptr %b) nounwind {
7+
; CHECK-LABEL: shufflevector_vpermi_v4i32:
8+
; CHECK: # %bb.0: # %entry
9+
; CHECK-NEXT: vld $vr0, $a1, 0
10+
; CHECK-NEXT: vld $vr1, $a2, 0
11+
; CHECK-NEXT: vbsrl.v $vr0, $vr0, 8
12+
; CHECK-NEXT: vbsll.v $vr1, $vr1, 8
13+
; CHECK-NEXT: vor.v $vr0, $vr1, $vr0
14+
; CHECK-NEXT: vst $vr0, $a0, 0
15+
; CHECK-NEXT: ret
16+
entry:
17+
%va = load <4 x i32>, ptr %a
18+
%vb = load <4 x i32>, ptr %b
19+
%c = shufflevector <4 x i32> %va, <4 x i32> %vb, <4 x i32> <i32 2, i32 3, i32 4, i32 5>
20+
store <4 x i32> %c, ptr %res
21+
ret void
22+
}
23+
24+
;; vpermi.w
25+
define void @shufflevector_vpermi_v4f32(ptr %res, ptr %a, ptr %b) nounwind {
26+
; CHECK-LABEL: shufflevector_vpermi_v4f32:
27+
; CHECK: # %bb.0: # %entry
28+
; CHECK-NEXT: vld $vr0, $a1, 0
29+
; CHECK-NEXT: vld $vr1, $a2, 0
30+
; CHECK-NEXT: pcalau12i $a1, %pc_hi20(.LCPI1_0)
31+
; CHECK-NEXT: vld $vr2, $a1, %pc_lo12(.LCPI1_0)
32+
; CHECK-NEXT: vshuf.w $vr2, $vr1, $vr0
33+
; CHECK-NEXT: vst $vr2, $a0, 0
34+
; CHECK-NEXT: ret
35+
entry:
36+
%va = load <4 x float>, ptr %a
37+
%vb = load <4 x float>, ptr %b
38+
%c = shufflevector <4 x float> %va, <4 x float> %vb, <4 x i32> <i32 5, i32 7, i32 0, i32 2>
39+
store <4 x float> %c, ptr %res
40+
ret void
41+
}

0 commit comments

Comments
 (0)