Skip to content

Commit f3aa441

Browse files
leecheechenwangleiat
authored andcommitted
[LoongArch] Add LSX intrinsic testcases
Depends on D155829 Reviewed By: SixWeining Differential Revision: https://reviews.llvm.org/D155834
1 parent 691f0d0 commit f3aa441

File tree

123 files changed

+8902
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

123 files changed

+8902
-0
lines changed
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2+
; RUN: llc --mtriple=loongarch64 --mattr=+lsx < %s | FileCheck %s
3+
4+
declare <16 x i8> @llvm.loongarch.lsx.vabsd.b(<16 x i8>, <16 x i8>)
5+
6+
define <16 x i8> @lsx_vabsd_b(<16 x i8> %va, <16 x i8> %vb) nounwind {
7+
; CHECK-LABEL: lsx_vabsd_b:
8+
; CHECK: # %bb.0: # %entry
9+
; CHECK-NEXT: vabsd.b $vr0, $vr0, $vr1
10+
; CHECK-NEXT: ret
11+
entry:
12+
%res = call <16 x i8> @llvm.loongarch.lsx.vabsd.b(<16 x i8> %va, <16 x i8> %vb)
13+
ret <16 x i8> %res
14+
}
15+
16+
declare <8 x i16> @llvm.loongarch.lsx.vabsd.h(<8 x i16>, <8 x i16>)
17+
18+
define <8 x i16> @lsx_vabsd_h(<8 x i16> %va, <8 x i16> %vb) nounwind {
19+
; CHECK-LABEL: lsx_vabsd_h:
20+
; CHECK: # %bb.0: # %entry
21+
; CHECK-NEXT: vabsd.h $vr0, $vr0, $vr1
22+
; CHECK-NEXT: ret
23+
entry:
24+
%res = call <8 x i16> @llvm.loongarch.lsx.vabsd.h(<8 x i16> %va, <8 x i16> %vb)
25+
ret <8 x i16> %res
26+
}
27+
28+
declare <4 x i32> @llvm.loongarch.lsx.vabsd.w(<4 x i32>, <4 x i32>)
29+
30+
define <4 x i32> @lsx_vabsd_w(<4 x i32> %va, <4 x i32> %vb) nounwind {
31+
; CHECK-LABEL: lsx_vabsd_w:
32+
; CHECK: # %bb.0: # %entry
33+
; CHECK-NEXT: vabsd.w $vr0, $vr0, $vr1
34+
; CHECK-NEXT: ret
35+
entry:
36+
%res = call <4 x i32> @llvm.loongarch.lsx.vabsd.w(<4 x i32> %va, <4 x i32> %vb)
37+
ret <4 x i32> %res
38+
}
39+
40+
declare <2 x i64> @llvm.loongarch.lsx.vabsd.d(<2 x i64>, <2 x i64>)
41+
42+
define <2 x i64> @lsx_vabsd_d(<2 x i64> %va, <2 x i64> %vb) nounwind {
43+
; CHECK-LABEL: lsx_vabsd_d:
44+
; CHECK: # %bb.0: # %entry
45+
; CHECK-NEXT: vabsd.d $vr0, $vr0, $vr1
46+
; CHECK-NEXT: ret
47+
entry:
48+
%res = call <2 x i64> @llvm.loongarch.lsx.vabsd.d(<2 x i64> %va, <2 x i64> %vb)
49+
ret <2 x i64> %res
50+
}
51+
52+
declare <16 x i8> @llvm.loongarch.lsx.vabsd.bu(<16 x i8>, <16 x i8>)
53+
54+
define <16 x i8> @lsx_vabsd_bu(<16 x i8> %va, <16 x i8> %vb) nounwind {
55+
; CHECK-LABEL: lsx_vabsd_bu:
56+
; CHECK: # %bb.0: # %entry
57+
; CHECK-NEXT: vabsd.bu $vr0, $vr0, $vr1
58+
; CHECK-NEXT: ret
59+
entry:
60+
%res = call <16 x i8> @llvm.loongarch.lsx.vabsd.bu(<16 x i8> %va, <16 x i8> %vb)
61+
ret <16 x i8> %res
62+
}
63+
64+
declare <8 x i16> @llvm.loongarch.lsx.vabsd.hu(<8 x i16>, <8 x i16>)
65+
66+
define <8 x i16> @lsx_vabsd_hu(<8 x i16> %va, <8 x i16> %vb) nounwind {
67+
; CHECK-LABEL: lsx_vabsd_hu:
68+
; CHECK: # %bb.0: # %entry
69+
; CHECK-NEXT: vabsd.hu $vr0, $vr0, $vr1
70+
; CHECK-NEXT: ret
71+
entry:
72+
%res = call <8 x i16> @llvm.loongarch.lsx.vabsd.hu(<8 x i16> %va, <8 x i16> %vb)
73+
ret <8 x i16> %res
74+
}
75+
76+
declare <4 x i32> @llvm.loongarch.lsx.vabsd.wu(<4 x i32>, <4 x i32>)
77+
78+
define <4 x i32> @lsx_vabsd_wu(<4 x i32> %va, <4 x i32> %vb) nounwind {
79+
; CHECK-LABEL: lsx_vabsd_wu:
80+
; CHECK: # %bb.0: # %entry
81+
; CHECK-NEXT: vabsd.wu $vr0, $vr0, $vr1
82+
; CHECK-NEXT: ret
83+
entry:
84+
%res = call <4 x i32> @llvm.loongarch.lsx.vabsd.wu(<4 x i32> %va, <4 x i32> %vb)
85+
ret <4 x i32> %res
86+
}
87+
88+
declare <2 x i64> @llvm.loongarch.lsx.vabsd.du(<2 x i64>, <2 x i64>)
89+
90+
define <2 x i64> @lsx_vabsd_du(<2 x i64> %va, <2 x i64> %vb) nounwind {
91+
; CHECK-LABEL: lsx_vabsd_du:
92+
; CHECK: # %bb.0: # %entry
93+
; CHECK-NEXT: vabsd.du $vr0, $vr0, $vr1
94+
; CHECK-NEXT: ret
95+
entry:
96+
%res = call <2 x i64> @llvm.loongarch.lsx.vabsd.du(<2 x i64> %va, <2 x i64> %vb)
97+
ret <2 x i64> %res
98+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2+
; RUN: llc --mtriple=loongarch64 --mattr=+lsx < %s | FileCheck %s
3+
4+
declare <16 x i8> @llvm.loongarch.lsx.vadd.b(<16 x i8>, <16 x i8>)
5+
6+
define <16 x i8> @lsx_vadd_b(<16 x i8> %va, <16 x i8> %vb) nounwind {
7+
; CHECK-LABEL: lsx_vadd_b:
8+
; CHECK: # %bb.0: # %entry
9+
; CHECK-NEXT: vadd.b $vr0, $vr0, $vr1
10+
; CHECK-NEXT: ret
11+
entry:
12+
%res = call <16 x i8> @llvm.loongarch.lsx.vadd.b(<16 x i8> %va, <16 x i8> %vb)
13+
ret <16 x i8> %res
14+
}
15+
16+
declare <8 x i16> @llvm.loongarch.lsx.vadd.h(<8 x i16>, <8 x i16>)
17+
18+
define <8 x i16> @lsx_vadd_h(<8 x i16> %va, <8 x i16> %vb) nounwind {
19+
; CHECK-LABEL: lsx_vadd_h:
20+
; CHECK: # %bb.0: # %entry
21+
; CHECK-NEXT: vadd.h $vr0, $vr0, $vr1
22+
; CHECK-NEXT: ret
23+
entry:
24+
%res = call <8 x i16> @llvm.loongarch.lsx.vadd.h(<8 x i16> %va, <8 x i16> %vb)
25+
ret <8 x i16> %res
26+
}
27+
28+
declare <4 x i32> @llvm.loongarch.lsx.vadd.w(<4 x i32>, <4 x i32>)
29+
30+
define <4 x i32> @lsx_vadd_w(<4 x i32> %va, <4 x i32> %vb) nounwind {
31+
; CHECK-LABEL: lsx_vadd_w:
32+
; CHECK: # %bb.0: # %entry
33+
; CHECK-NEXT: vadd.w $vr0, $vr0, $vr1
34+
; CHECK-NEXT: ret
35+
entry:
36+
%res = call <4 x i32> @llvm.loongarch.lsx.vadd.w(<4 x i32> %va, <4 x i32> %vb)
37+
ret <4 x i32> %res
38+
}
39+
40+
declare <2 x i64> @llvm.loongarch.lsx.vadd.d(<2 x i64>, <2 x i64>)
41+
42+
define <2 x i64> @lsx_vadd_d(<2 x i64> %va, <2 x i64> %vb) nounwind {
43+
; CHECK-LABEL: lsx_vadd_d:
44+
; CHECK: # %bb.0: # %entry
45+
; CHECK-NEXT: vadd.d $vr0, $vr0, $vr1
46+
; CHECK-NEXT: ret
47+
entry:
48+
%res = call <2 x i64> @llvm.loongarch.lsx.vadd.d(<2 x i64> %va, <2 x i64> %vb)
49+
ret <2 x i64> %res
50+
}
51+
52+
declare <2 x i64> @llvm.loongarch.lsx.vadd.q(<2 x i64>, <2 x i64>)
53+
54+
define <2 x i64> @lsx_vadd_q(<2 x i64> %va, <2 x i64> %vb) nounwind {
55+
; CHECK-LABEL: lsx_vadd_q:
56+
; CHECK: # %bb.0: # %entry
57+
; CHECK-NEXT: vadd.q $vr0, $vr0, $vr1
58+
; CHECK-NEXT: ret
59+
entry:
60+
%res = call <2 x i64> @llvm.loongarch.lsx.vadd.q(<2 x i64> %va, <2 x i64> %vb)
61+
ret <2 x i64> %res
62+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2+
; RUN: llc --mtriple=loongarch64 --mattr=+lsx < %s | FileCheck %s
3+
4+
declare <16 x i8> @llvm.loongarch.lsx.vadda.b(<16 x i8>, <16 x i8>)
5+
6+
define <16 x i8> @lsx_vadda_b(<16 x i8> %va, <16 x i8> %vb) nounwind {
7+
; CHECK-LABEL: lsx_vadda_b:
8+
; CHECK: # %bb.0: # %entry
9+
; CHECK-NEXT: vadda.b $vr0, $vr0, $vr1
10+
; CHECK-NEXT: ret
11+
entry:
12+
%res = call <16 x i8> @llvm.loongarch.lsx.vadda.b(<16 x i8> %va, <16 x i8> %vb)
13+
ret <16 x i8> %res
14+
}
15+
16+
declare <8 x i16> @llvm.loongarch.lsx.vadda.h(<8 x i16>, <8 x i16>)
17+
18+
define <8 x i16> @lsx_vadda_h(<8 x i16> %va, <8 x i16> %vb) nounwind {
19+
; CHECK-LABEL: lsx_vadda_h:
20+
; CHECK: # %bb.0: # %entry
21+
; CHECK-NEXT: vadda.h $vr0, $vr0, $vr1
22+
; CHECK-NEXT: ret
23+
entry:
24+
%res = call <8 x i16> @llvm.loongarch.lsx.vadda.h(<8 x i16> %va, <8 x i16> %vb)
25+
ret <8 x i16> %res
26+
}
27+
28+
declare <4 x i32> @llvm.loongarch.lsx.vadda.w(<4 x i32>, <4 x i32>)
29+
30+
define <4 x i32> @lsx_vadda_w(<4 x i32> %va, <4 x i32> %vb) nounwind {
31+
; CHECK-LABEL: lsx_vadda_w:
32+
; CHECK: # %bb.0: # %entry
33+
; CHECK-NEXT: vadda.w $vr0, $vr0, $vr1
34+
; CHECK-NEXT: ret
35+
entry:
36+
%res = call <4 x i32> @llvm.loongarch.lsx.vadda.w(<4 x i32> %va, <4 x i32> %vb)
37+
ret <4 x i32> %res
38+
}
39+
40+
declare <2 x i64> @llvm.loongarch.lsx.vadda.d(<2 x i64>, <2 x i64>)
41+
42+
define <2 x i64> @lsx_vadda_d(<2 x i64> %va, <2 x i64> %vb) nounwind {
43+
; CHECK-LABEL: lsx_vadda_d:
44+
; CHECK: # %bb.0: # %entry
45+
; CHECK-NEXT: vadda.d $vr0, $vr0, $vr1
46+
; CHECK-NEXT: ret
47+
entry:
48+
%res = call <2 x i64> @llvm.loongarch.lsx.vadda.d(<2 x i64> %va, <2 x i64> %vb)
49+
ret <2 x i64> %res
50+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2+
; RUN: llc --mtriple=loongarch64 --mattr=+lsx < %s | FileCheck %s
3+
4+
declare <16 x i8> @llvm.loongarch.lsx.vaddi.bu(<16 x i8>, i32)
5+
6+
define <16 x i8> @lsx_vaddi_bu(<16 x i8> %va) nounwind {
7+
; CHECK-LABEL: lsx_vaddi_bu:
8+
; CHECK: # %bb.0: # %entry
9+
; CHECK-NEXT: vaddi.bu $vr0, $vr0, 31
10+
; CHECK-NEXT: ret
11+
entry:
12+
%res = call <16 x i8> @llvm.loongarch.lsx.vaddi.bu(<16 x i8> %va, i32 31)
13+
ret <16 x i8> %res
14+
}
15+
16+
declare <8 x i16> @llvm.loongarch.lsx.vaddi.hu(<8 x i16>, i32)
17+
18+
define <8 x i16> @lsx_vaddi_hu(<8 x i16> %va) nounwind {
19+
; CHECK-LABEL: lsx_vaddi_hu:
20+
; CHECK: # %bb.0: # %entry
21+
; CHECK-NEXT: vaddi.hu $vr0, $vr0, 31
22+
; CHECK-NEXT: ret
23+
entry:
24+
%res = call <8 x i16> @llvm.loongarch.lsx.vaddi.hu(<8 x i16> %va, i32 31)
25+
ret <8 x i16> %res
26+
}
27+
28+
declare <4 x i32> @llvm.loongarch.lsx.vaddi.wu(<4 x i32>, i32)
29+
30+
define <4 x i32> @lsx_vaddi_wu(<4 x i32> %va) nounwind {
31+
; CHECK-LABEL: lsx_vaddi_wu:
32+
; CHECK: # %bb.0: # %entry
33+
; CHECK-NEXT: vaddi.wu $vr0, $vr0, 31
34+
; CHECK-NEXT: ret
35+
entry:
36+
%res = call <4 x i32> @llvm.loongarch.lsx.vaddi.wu(<4 x i32> %va, i32 31)
37+
ret <4 x i32> %res
38+
}
39+
40+
declare <2 x i64> @llvm.loongarch.lsx.vaddi.du(<2 x i64>, i32)
41+
42+
define <2 x i64> @lsx_vaddi_du(<2 x i64> %va) nounwind {
43+
; CHECK-LABEL: lsx_vaddi_du:
44+
; CHECK: # %bb.0: # %entry
45+
; CHECK-NEXT: vaddi.du $vr0, $vr0, 31
46+
; CHECK-NEXT: ret
47+
entry:
48+
%res = call <2 x i64> @llvm.loongarch.lsx.vaddi.du(<2 x i64> %va, i32 31)
49+
ret <2 x i64> %res
50+
}

0 commit comments

Comments
 (0)