@@ -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)
134138void 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)
181205void 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+ }
0 commit comments