Skip to content

Commit 1f07d3c

Browse files
committed
[FIX/SW] add macros for 32b config
1 parent ad1da43 commit 1f07d3c

6 files changed

Lines changed: 284 additions & 19 deletions

File tree

sw/riscvTests/isa/rv64uv/vmfeq.c

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ void TEST_CASE1(void) {
4848
VSET(1, e16, m1);
4949
VCMP_U16(2, v1, 0x1);
5050

51+
#if ELEN == 64
5152
VSET(8, e64, m1);
5253
// 0.8643613633211786, 0.4842301798024149, 0.9229840140784857,
5354
// -0.9479687162489723, -0.1308855743137316,
@@ -65,6 +66,7 @@ void TEST_CASE1(void) {
6566
asm volatile("vmfeq.vv v1, v2, v3");
6667
VSET(1, e8, m1);
6768
VCMP_U8(3, v1, 0x4);
69+
#endif
6870
};
6971

7072
// Simple random test with similar values + 1 subnormal (masked)
@@ -109,6 +111,7 @@ void TEST_CASE2(void) {
109111
VSET(1, e16, m1);
110112
VCMP_U16(5, v1, 0x8000);
111113

114+
#if ELEN == 64
112115
VSET(8, e64, m1);
113116
// 0.8643613633211786, 0.4842301798024149, 0.9229840140784857,
114117
// -0.9479687162489723, -0.1308855743137316,
@@ -128,27 +131,42 @@ void TEST_CASE2(void) {
128131
asm volatile("vmfeq.vv v1, v2, v3, v0.t");
129132
VSET(1, e8, m1);
130133
VCMP_U8(6, v1, 0x0a);
134+
#endif
131135
};
132136

133137
// Simple random test with similar values (vector-scalar)
134138
void TEST_CASE3(void) {
135139
VSET(16, e16, m1);
140+
#if ELEN == 64
136141
double dscalar_16;
137142
// -0.2649
138143
BOX_HALF_IN_DOUBLE(dscalar_16, 0xb43d);
144+
#else
145+
float fscalar_16;
146+
BOX_HALF_IN_FLOAT(fscalar_16, 0xb43d);
147+
#endif
139148
// -0.0651, 0.5806, 0.2563, -0.4783, 0.7393, -0.2649, -0.4590,
140149
// 0.5469, -0.9082, 0.6235, -0.8276, -0.7939, -0.0236, -0.1166,
141150
// 0.4026, 0.0022
142151
VLOAD_16(v2, 0xac2a, 0x38a5, 0x341a, 0xb7a7, 0x39ea, 0xb43d, 0xb758, 0x3860,
143152
0xbb44, 0x38fd, 0xba9f, 0xba5a, 0xa60b, 0xaf76, 0x3671, 0x1896);
153+
#if ELEN == 64
144154
asm volatile("vmfeq.vf v1, v2, %[A]" ::[A] "f"(dscalar_16));
155+
#else
156+
asm volatile("vmfeq.vf v1, v2, %[A]" ::[A] "f"(fscalar_16));
157+
#endif
145158
VSET(1, e16, m1);
146159
VCMP_U16(7, v1, 0x0020);
147160

148161
VSET(16, e32, m1);
162+
#if ELEN == 64
149163
double dscalar_32;
150164
// 0.80517912
151165
BOX_FLOAT_IN_DOUBLE(dscalar_32, 0x3f4e2038);
166+
#else
167+
float fscalar_32;
168+
memcpy(&fscalar_32, &(uint32_t){0x3f4e2038}, sizeof(float));
169+
#endif
152170
// -0.15601152, -0.92020410, -0.29387674, 0.98594254,
153171
// 0.88163614, -0.44641387, 0.88191622, 0.15161350,
154172
// -0.79952192, -0.03668820, -0.38464722, -0.54745716,
@@ -157,10 +175,15 @@ void TEST_CASE3(void) {
157175
0x3f4e2038, 0x3f4e2038, 0x3f4e2038, 0x3f4e2038, 0x3f4e2038,
158176
0x3f4e2038, 0x3f4e2038, 0x3f4e2038, 0x3f4e2038, 0x3f4e2038,
159177
0xbf4b1daf);
178+
#if ELEN == 64
160179
asm volatile("vmfeq.vf v1, v2, %[A]" ::[A] "f"(dscalar_32));
180+
#else
181+
asm volatile("vmfeq.vf v1, v2, %[A]" ::[A] "f"(fscalar_32));
182+
#endif
161183
VSET(1, e16, m1);
162184
VCMP_U16(8, v1, 0x7ffe);
163185

186+
#if ELEN == 64
164187
VSET(8, e64, m1);
165188
double dscalar_64;
166189
// -0.3394093097660049
@@ -175,29 +198,44 @@ void TEST_CASE3(void) {
175198
asm volatile("vmfeq.vf v1, v2, %[A]" ::[A] "f"(dscalar_64));
176199
VSET(1, e8, m1);
177200
VCMP_U8(9, v1, 0x08);
201+
#endif
178202
};
179203

180204
// Simple random test with similar values (vector-scalar) (masked)
181205
void TEST_CASE4(void) {
182206
VSET(16, e16, m1);
207+
#if ELEN == 64
183208
double dscalar_16;
184209
// -0.2649
185210
BOX_HALF_IN_DOUBLE(dscalar_16, 0xb43d);
211+
#else
212+
float fscalar_16;
213+
BOX_HALF_IN_FLOAT(fscalar_16, 0xb43d);
214+
#endif
186215
// -0.2649, 0.5806, -0.2649, -0.4783, -0.2649, -0.2649,
187216
// -0.2649, -0.2649, -0.2649, -0.2649, -0.2649, -0.2649,
188217
// -0.2649, -0.2649, -0.2649, -0.2649,
189218
VLOAD_16(v2, 0xb43d, 0x7653, 0xad3d, 0x033d, 0xb43d, 0xb43d, 0xb43d, 0xb43d,
190219
0xb43d, 0xb43d, 0xb43d, 0xb43d, 0xb43d, 0xb43d, 0xb43d, 0xb43d);
191220
VLOAD_8(v0, 0xAA, 0xAA);
192221
VCLEAR(v1);
222+
#if ELEN == 64
193223
asm volatile("vmfeq.vf v1, v2, %[A], v0.t" ::[A] "f"(dscalar_16));
224+
#else
225+
asm volatile("vmfeq.vf v1, v2, %[A], v0.t" ::[A] "f"(fscalar_16));
226+
#endif
194227
VSET(1, e16, m1);
195228
VCMP_U16(10, v1, 0xaaa0);
196229

197230
VSET(16, e32, m1);
231+
#if ELEN == 64
198232
double dscalar_32;
199233
// 0.80517912
200234
BOX_FLOAT_IN_DOUBLE(dscalar_32, 0x3f4e2038);
235+
#else
236+
float fscalar_32;
237+
memcpy(&fscalar_32, &(uint32_t){0x3f4e2038}, sizeof(float));
238+
#endif
201239
// 0.80517912, 0.80517912, -0.29387674, 0.98594254,
202240
// 0.88163614, -0.44641387, 0.88191622, 0.15161350,
203241
// -0.79952192, -0.03668820, -0.38464722, -0.54745716,
@@ -208,10 +246,15 @@ void TEST_CASE4(void) {
208246
0xbf4b1daf);
209247
VLOAD_8(v0, 0xAA, 0xAA);
210248
VCLEAR(v1);
249+
#if ELEN == 64
211250
asm volatile("vmfeq.vf v1, v2, %[A], v0.t" ::[A] "f"(dscalar_32));
251+
#else
252+
asm volatile("vmfeq.vf v1, v2, %[A], v0.t" ::[A] "f"(fscalar_32));
253+
#endif
212254
VSET(1, e16, m1);
213255
VCMP_U16(11, v1, 0x0002);
214256

257+
#if ELEN == 64
215258
VSET(8, e64, m1);
216259
double dscalar_64;
217260
// -0.3394093097660049
@@ -228,6 +271,7 @@ void TEST_CASE4(void) {
228271
asm volatile("vmfeq.vf v1, v2, %[A], v0.t" ::[A] "f"(dscalar_64));
229272
VSET(1, e8, m1);
230273
VCMP_U8(12, v1, 0x08);
274+
#endif
231275
};
232276

233277
// Check if only the correct destination bits are written
@@ -339,6 +383,7 @@ void TEST_CASE6(void) {
339383
VSET(1, e16, m1);
340384
VCMP_U16(17, v0, 0x2222);
341385

386+
#if ELEN == 64
342387
VSET(8, e64, m1);
343388
// 0.8643613633211786, 0.4842301798024149, 0.9229840140784857,
344389
// -0.8792039527057112, -0.1308855743137316,
@@ -358,6 +403,7 @@ void TEST_CASE6(void) {
358403
asm volatile("vmfeq.vv v0, v2, v3, v0.t");
359404
VSET(1, e8, m1);
360405
VCMP_U8(18, v0, 0x22);
406+
#endif
361407
};
362408

363409
// Test sNaN/qNaN behaviour
@@ -389,6 +435,7 @@ void TEST_CASE7(void) {
389435
VSET(1, e16, m1);
390436
VCMP_U16(20, v0, 0x0331);
391437

438+
#if ELEN == 64
392439
VSET(8, e64, m1);
393440
VLOAD_64(v2, qNaNd, qNaNd, 0x3fed8915c5665532, 0xbfec227053ec5198,
394441
0xbfc0c0dbc6990b38, 0xbfd84eacd38c6ca4, 0x3fc41b3c98507fe0,
@@ -402,6 +449,7 @@ void TEST_CASE7(void) {
402449
VSET(1, e8, m1);
403450
VCMP_U8(21, v0, 0x30);
404451
CHECK_FFLAGS(0);
452+
#endif
405453

406454
// Give sNaN (Invalid operation)
407455
VSET(16, e32, m1);
@@ -429,9 +477,11 @@ int main(void) {
429477
TEST_CASE3();
430478
//TEST_CASE4();
431479

480+
#if ELEN == 64
432481
TEST_CASE5();
482+
#endif
433483
//TEST_CASE6();
434484
TEST_CASE7();
435485

436486
EXIT_CHECK();
437-
}
487+
}

sw/riscvTests/isa/rv64uv/vmfge.c

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,36 @@
1212
// Simple random test with similar values (vector-scalar)
1313
void TEST_CASE1(void) {
1414
VSET(16, e16, m1);
15+
#if ELEN == 64
1516
double dscalar_16;
1617
// -0.2649
1718
BOX_HALF_IN_DOUBLE(dscalar_16, 0xb43d);
19+
#else
20+
float fscalar_16;
21+
BOX_HALF_IN_FLOAT(fscalar_16, 0xb43d);
22+
#endif
1823
// -0.0651, 0.5806, 0.2563, -0.4783, 0.7393, -0.2649, -0.4590,
1924
// 0.5469, -0.9082, 0.6235, -0.8276, -0.7939, -0.0236, -0.1166,
2025
// 0.4026, 0.0022
2126
VLOAD_16(v2, 0xac2a, 0x38a5, 0x341a, 0xb7a7, 0x39ea, 0xb43d, 0xb758, 0x3860,
2227
0xbb44, 0x38fd, 0xba9f, 0xba5a, 0xa60b, 0xaf76, 0x3671, 0x1896);
28+
#if ELEN == 64
2329
asm volatile("vmfge.vf v1, v2, %[A]" ::[A] "f"(dscalar_16));
30+
#else
31+
asm volatile("vmfge.vf v1, v2, %[A]" ::[A] "f"(fscalar_16));
32+
#endif
2433
VSET(1, e16, m1);
2534
VCMP_U16(1, v1, 0xf2b7);
2635

2736
VSET(16, e32, m1);
37+
#if ELEN == 64
2838
double dscalar_32;
2939
// 0.80517912
3040
BOX_FLOAT_IN_DOUBLE(dscalar_32, 0x3f4e2038);
41+
#else
42+
float fscalar_32;
43+
memcpy(&fscalar_32, &(uint32_t){0x3f4e2038}, sizeof(float));
44+
#endif
3145
// -0.15601152, -0.92020410, -0.29387674, 0.98594254,
3246
// 0.88163614, -0.44641387, 0.88191622, 0.15161350,
3347
// -0.79952192, -0.03668820, -0.38464722, -0.54745716,
@@ -36,10 +50,15 @@ void TEST_CASE1(void) {
3650
0x3f4e2038, 0x3f4e2038, 0x3f4e2038, 0x3f4e2038, 0x3f4e2038,
3751
0x3f4e2038, 0x3f4e2038, 0x3f4e2038, 0x3f4e2038, 0x3f4e2038,
3852
0xbf4b1daf);
53+
#if ELEN == 64
3954
asm volatile("vmfge.vf v1, v2, %[A]" ::[A] "f"(dscalar_32));
55+
#else
56+
asm volatile("vmfge.vf v1, v2, %[A]" ::[A] "f"(fscalar_32));
57+
#endif;
4058
VSET(1, e16, m1);
4159
VCMP_U16(2, v1, 0x7ffe);
4260

61+
#if ELEN == 64
4362
VSET(8, e64, m1);
4463
double dscalar_64;
4564
// -0.3394093097660049
@@ -54,29 +73,44 @@ void TEST_CASE1(void) {
5473
asm volatile("vmfge.vf v1, v2, %[A]" ::[A] "f"(dscalar_64));
5574
VSET(1, e8, m1);
5675
VCMP_U8(3, v1, 0x7b);
76+
#endif
5777
};
5878

5979
// Simple random test with similar values (vector-scalar) (masked)
6080
void TEST_CASE2(void) {
6181
VSET(16, e16, m1);
82+
#if ELEN == 64
6283
double dscalar_16;
6384
// -0.2649
6485
BOX_HALF_IN_DOUBLE(dscalar_16, 0xb43d);
86+
#else
87+
float fscalar_16;
88+
BOX_HALF_IN_FLOAT(fscalar_16, 0xb43d);
89+
#endif
6590
// -0.2649, 0.5806, -0.2649, -0.4783, -0.2649, -0.2649,
6691
// -0.2649, -0.2649, -0.2649, -0.2649, -0.2649, -0.2649,
6792
// -0.2649, -0.2649, -0.2649, -0.2649,
6893
VLOAD_16(v2, 0xb43d, 0x7653, 0xad3d, 0x033d, 0xb43d, 0xb43d, 0xb43d, 0xb43d,
6994
0xb43d, 0xb43d, 0xb43d, 0xb43d, 0xb43d, 0xb43d, 0xb43d, 0xb43d);
7095
VLOAD_8(v0, 0xAA, 0xAA);
7196
VCLEAR(v1);
97+
#if ELEN == 64
7298
asm volatile("vmfge.vf v1, v2, %[A], v0.t" ::[A] "f"(dscalar_16));
99+
#else
100+
asm volatile("vmfge.vf v1, v2, %[A], v0.t" ::[A] "f"(fscalar_16));
101+
#endif
73102
VSET(1, e16, m1);
74103
VCMP_U16(4, v1, 0xaaaa);
75104

76105
VSET(16, e32, m1);
106+
#if ELEN == 64
77107
double dscalar_32;
78108
// 0.80517912
79109
BOX_FLOAT_IN_DOUBLE(dscalar_32, 0x3f4e2038);
110+
#else
111+
float fscalar_32;
112+
memcpy(&fscalar_32, &(uint32_t){0x3f4e2038}, sizeof(float));
113+
#endif
80114
// 0.80517912, 0.80517912, -0.29387674, 0.98594254,
81115
// 0.88163614, -0.44641387, 0.88191622, 0.15161350,
82116
// -0.79952192, -0.03668820, -0.38464722, -0.54745716,
@@ -87,10 +121,14 @@ void TEST_CASE2(void) {
87121
0xbf4b1daf);
88122
VLOAD_8(v0, 0xAA, 0xAA);
89123
VCLEAR(v1);
124+
#if ELEN == 64
90125
asm volatile("vmfge.vf v1, v2, %[A], v0.t" ::[A] "f"(dscalar_32));
126+
#else
127+
asm volatile("vmfge.vf v1, v2, %[A], v0.t" ::[A] "f"(fscalar_32));
128+
#endif
91129
VSET(1, e16, m1);
92130
VCMP_U16(5, v1, 0x000a);
93-
131+
#if ELEN == 64
94132
VSET(8, e64, m1);
95133
double dscalar_64;
96134
// -0.3394093097660049
@@ -107,6 +145,7 @@ void TEST_CASE2(void) {
107145
asm volatile("vmfge.vf v1, v2, %[A], v0.t" ::[A] "f"(dscalar_64));
108146
VSET(1, e8, m1);
109147
VCMP_U8(6, v1, 0x2a);
148+
#endif
110149
};
111150

112151
int main(void) {

0 commit comments

Comments
 (0)