Skip to content

Commit 568763b

Browse files
authored
[LoongArch] Add test cases for LSX builtin functions #80
1 parent 65c48dd commit 568763b

File tree

384 files changed

+41428
-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.

384 files changed

+41428
-0
lines changed
Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
#include "lsx_test_util.h"
2+
#include <lsxintrin.h>
3+
4+
int
5+
main ()
6+
{
7+
__m128i __m128i_out, __m128i_result;
8+
__m128 __m128_out, __m128_result;
9+
__m128d __m128d_out, __m128d_result;
10+
v2u64 v2u64_op0, v2u64_op1, v2u64_op2;
11+
v4i32 v4i32_op0, v4i32_op1, v4i32_op2;
12+
13+
int int_op0, int_op1, i = 1, fail;
14+
long int long_op0, long_op1;
15+
long int long_int_out, long_int_result;
16+
unsigned int unsigned_int_out, unsigned_int_result;
17+
unsigned long int unsigned_long_int_out, unsigned_long_int_result;
18+
19+
v2u64_op0 = (v2u64){0x0000000000000000, 0x0000000000000000};
20+
v2u64_op1 = (v2u64){0x0000000000000000, 0x0000000000000000};
21+
__m128i_result = (__m128i){0x0000000000000000, 0x0000000000000000};
22+
__m128i_out = __lsx_vabsd_b((__m128)v2u64_op0, (__m128)v2u64_op1);
23+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
24+
25+
v2u64_op0 = (v2u64){0x0000000000000000, 0x0000000000000000};
26+
v2u64_op1 = (v2u64){0x00000000ffff0000, 0xfda9b23a624082fd};
27+
__m128i_result = (__m128i){0x0000000001010000, 0x03574e3a62407e03};
28+
__m128i_out = __lsx_vabsd_b((__m128)v2u64_op0, (__m128)v2u64_op1);
29+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
30+
31+
v2u64_op0 = (v2u64){0x7fffffff7fffffff, 0x8000000080000000};
32+
v2u64_op1 = (v2u64){0x0014fff500000000, 0xfffd000700000000};
33+
__m128i_result = (__m128i){0x7f15000a7f010101, 0x7f03000780000000};
34+
__m128i_out = __lsx_vabsd_b((__m128)v2u64_op0, (__m128)v2u64_op1);
35+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
36+
37+
v2u64_op0 = (v2u64){0x0000000000000000, 0x0000000000000000};
38+
v2u64_op1 = (v2u64){0x0000000000000000, 0x0000000000000000};
39+
__m128i_result = (__m128i){0x0000000000000000, 0x0000000000000000};
40+
__m128i_out = __lsx_vabsd_b((__m128)v2u64_op0, (__m128)v2u64_op1);
41+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
42+
43+
v2u64_op0 = (v2u64){0x0000000000000000, 0x7fffffffffffffff};
44+
v2u64_op1 = (v2u64){0x000000127fffffea, 0x000000060000000e};
45+
__m128i_result = (__m128i){0x000000127f010116, 0x7f0101070101010f};
46+
__m128i_out = __lsx_vabsd_b((__m128)v2u64_op0, (__m128)v2u64_op1);
47+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
48+
49+
v2u64_op0 = (v2u64){0x000000000000000b, 0x000000000000000b};
50+
v2u64_op1 = (v2u64){0x0000000000000000, 0x0000000000000000};
51+
__m128i_result = (__m128i){0x000000000000000b, 0x000000000000000b};
52+
__m128i_out = __lsx_vabsd_b((__m128)v2u64_op0, (__m128)v2u64_op1);
53+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
54+
55+
v2u64_op0 = (v2u64){0x0000000000000000, 0x0000000000000000};
56+
v2u64_op1 = (v2u64){0xc8847ef6ed3f2000, 0x67eb85af0000b000};
57+
__m128i_result = (__m128i){0x387c7e0a133f2000, 0x67157b5100005000};
58+
__m128i_out = __lsx_vabsd_b((__m128)v2u64_op0, (__m128)v2u64_op1);
59+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
60+
61+
v2u64_op0 = (v2u64){0xfffbfffefffe01ff, 0xfff7fffefffa01ff};
62+
v2u64_op1 = (v2u64){0xfcfcfcfcfcfcfcfd, 0xfcfcfcfcfcfcfcfd};
63+
__m128i_result = (__m128i){0x0301030203020502, 0x0305030203020502};
64+
__m128i_out = __lsx_vabsd_b((__m128)v2u64_op0, (__m128)v2u64_op1);
65+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
66+
67+
v2u64_op0 = (v2u64){0x5728dcc85ac760d2, 0x4ee376188658d85f};
68+
v2u64_op1 = (v2u64){0x0000000000000000, 0x0000000000000000};
69+
__m128i_result = (__m128i){0x572824385a39602e, 0x4e1d76187a58285f};
70+
__m128i_out = __lsx_vabsd_b((__m128)v2u64_op0, (__m128)v2u64_op1);
71+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
72+
73+
v2u64_op0 = (v2u64){0x0000000000000000, 0x0000000000000000};
74+
v2u64_op1 = (v2u64){0x0000000000000000, 0x0000000000000000};
75+
__m128i_result = (__m128i){0x0000000000000000, 0x0000000000000000};
76+
__m128i_out = __lsx_vabsd_b((__m128)v2u64_op0, (__m128)v2u64_op1);
77+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
78+
79+
v2u64_op0 = (v2u64){0x0000000000000000, 0x0000000000000000};
80+
v2u64_op1 = (v2u64){0x27b1b106b8145f50, 0xf654ad7447e59090};
81+
__m128i_result = (__m128i){0x274f4f0648145f50, 0x0a545374471b7070};
82+
__m128i_out = __lsx_vabsd_b((__m128)v2u64_op0, (__m128)v2u64_op1);
83+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
84+
85+
v2u64_op0 = (v2u64){0x0000000000000000, 0x0000000000000000};
86+
v2u64_op1 = (v2u64){0x0000000000000000, 0x0000000000000000};
87+
__m128i_result = (__m128i){0x0000000000000000, 0x0000000000000000};
88+
__m128i_out = __lsx_vabsd_h((__m128)v2u64_op0, (__m128)v2u64_op1);
89+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
90+
91+
v2u64_op0 = (v2u64){0x407c2ca3d3430357, 0x21f32eafa486fd38};
92+
v2u64_op1 = (v2u64){0x0000000000000000, 0x0000000000000000};
93+
__m128i_result = (__m128i){0x407c2ca32cbd0357, 0x21f32eaf5b7a02c8};
94+
__m128i_out = __lsx_vabsd_h((__m128)v2u64_op0, (__m128)v2u64_op1);
95+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
96+
97+
v2u64_op0 = (v2u64){0x0000000000000000, 0x0000000000000000};
98+
v2u64_op1 = (v2u64){0x0000000000000000, 0x0000000000000000};
99+
__m128i_result = (__m128i){0x0000000000000000, 0x0000000000000000};
100+
__m128i_out = __lsx_vabsd_h((__m128)v2u64_op0, (__m128)v2u64_op1);
101+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
102+
103+
v2u64_op0 = (v2u64){0x000000003bfb4000, 0x0000000000000000};
104+
v2u64_op1 = (v2u64){0x0000000000000000, 0x0000000000000000};
105+
__m128i_result = (__m128i){0x000000003bfb4000, 0x0000000000000000};
106+
__m128i_out = __lsx_vabsd_h((__m128)v2u64_op0, (__m128)v2u64_op1);
107+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
108+
109+
v2u64_op0 = (v2u64){0x0000000000000000, 0x0000000000000000};
110+
v2u64_op1 = (v2u64){0x0000ffffffffffff, 0x0000ffffffffffff};
111+
__m128i_result = (__m128i){0x0000000100010001, 0x0000000100010001};
112+
__m128i_out = __lsx_vabsd_h((__m128)v2u64_op0, (__m128)v2u64_op1);
113+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
114+
115+
v2u64_op0 = (v2u64){0xffffffffffffffdf, 0xffffffffffffffff};
116+
v2u64_op1 = (v2u64){0xffff0000ffff0000, 0xffff0000ffff0000};
117+
__m128i_result = (__m128i){0x0000000100000021, 0x0000000100000001};
118+
__m128i_out = __lsx_vabsd_h((__m128)v2u64_op0, (__m128)v2u64_op1);
119+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
120+
121+
v2u64_op0 = (v2u64){0x0000000000000000, 0x0000000000000000};
122+
v2u64_op1 = (v2u64){0x0000000000000000, 0x0000000000000000};
123+
__m128i_result = (__m128i){0x0000000000000000, 0x0000000000000000};
124+
__m128i_out = __lsx_vabsd_h((__m128)v2u64_op0, (__m128)v2u64_op1);
125+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
126+
127+
v2u64_op0 = (v2u64){0x003f0000ffffffff, 0x003f0000ffffffff};
128+
v2u64_op1 = (v2u64){0x0003000000012020, 0x000700000004e000};
129+
__m128i_result = (__m128i){0x003c000000022021, 0x0038000000051fff};
130+
__m128i_out = __lsx_vabsd_h((__m128)v2u64_op0, (__m128)v2u64_op1);
131+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
132+
133+
v2u64_op0 = (v2u64){0x0000000000000000, 0x0000000000000000};
134+
v2u64_op1 = (v2u64){0x0000000000000000, 0x0000000000000000};
135+
__m128i_result = (__m128i){0x0000000000000000, 0x0000000000000000};
136+
__m128i_out = __lsx_vabsd_w((__m128)v2u64_op0, (__m128)v2u64_op1);
137+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
138+
139+
v2u64_op0 = (v2u64){0x0000000000000000, 0x0000000000000000};
140+
v2u64_op1 = (v2u64){0x0000000000000000, 0x0000000000000000};
141+
__m128i_result = (__m128i){0x0000000000000000, 0x0000000000000000};
142+
__m128i_out = __lsx_vabsd_w((__m128)v2u64_op0, (__m128)v2u64_op1);
143+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
144+
145+
v2u64_op0 = (v2u64){0xbe081c963e6fee68, 0x9c9d9b9bbfaa20e9};
146+
v2u64_op1 = (v2u64){0x0000fd1654860000, 0x0000feff23560000};
147+
__m128i_result = (__m128i){0x41f8e08016161198, 0x6363636463abdf17};
148+
__m128i_out = __lsx_vabsd_w((__m128)v2u64_op0, (__m128)v2u64_op1);
149+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
150+
151+
v2u64_op0 = (v2u64){0xffffffffffffffff, 0xffffffffffffffff};
152+
v2u64_op1 = (v2u64){0x0000000000000000, 0x0000000000000000};
153+
__m128i_result = (__m128i){0x0000000000000001, 0x0000000000000001};
154+
__m128i_out = __lsx_vabsd_d((__m128)v2u64_op0, (__m128)v2u64_op1);
155+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
156+
157+
v2u64_op0 = (v2u64){0xff01fe0400000006, 0x0000000800000000};
158+
v2u64_op1 = (v2u64){0x000000000005fffa, 0x0000000000000000};
159+
__m128i_result = (__m128i){0x00fe01fc0005fff4, 0x0000000800000000};
160+
__m128i_out = __lsx_vabsd_d((__m128)v2u64_op0, (__m128)v2u64_op1);
161+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
162+
163+
v2u64_op0 = (v2u64){0xffffffffffffffff, 0xffffffffffffffff};
164+
v2u64_op1 = (v2u64){0xfffffffffffffffa, 0xfffffffffffffffa};
165+
__m128i_result = (__m128i){0x0000000000000005, 0x0000000000000005};
166+
__m128i_out = __lsx_vabsd_d((__m128)v2u64_op0, (__m128)v2u64_op1);
167+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
168+
169+
v2u64_op0 = (v2u64){0x017f03000000ff00, 0x010003f00000ff00};
170+
v2u64_op1 = (v2u64){0x017f03000000ff00, 0x010003f00000ff00};
171+
__m128i_result = (__m128i){0x0000000000000000, 0x0000000000000000};
172+
__m128i_out = __lsx_vabsd_d((__m128)v2u64_op0, (__m128)v2u64_op1);
173+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
174+
175+
v2u64_op0 = (v2u64){0x0000000000000001, 0x0000000000000001};
176+
v2u64_op1 = (v2u64){0x0000000000000000, 0x000000001fffffff};
177+
__m128i_result = (__m128i){0x0000000000000001, 0x000000001ffffffe};
178+
__m128i_out = __lsx_vabsd_d((__m128)v2u64_op0, (__m128)v2u64_op1);
179+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
180+
181+
v2u64_op0 = (v2u64){0x0000ffac0a000000, 0x0000000000000000};
182+
v2u64_op1 = (v2u64){0x0000000000000000, 0x0000000000000000};
183+
__m128i_result = (__m128i){0x0000ffac0a000000, 0x0000000000000000};
184+
__m128i_out = __lsx_vabsd_d((__m128)v2u64_op0, (__m128)v2u64_op1);
185+
check_lsx_out(&__m128i_result, &__m128i_out, sizeof(__m128i_out), __FILE__, __LINE__);
186+
187+
return 0;
188+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
exit 0

0 commit comments

Comments
 (0)