Skip to content

Commit 8b9bd7b

Browse files
authored
Remove use of qNaN/sNaN to fix LLVM build (#612)
* Remove use of qNaN to fix LLVM build * Remove use of sNaN to fix LLVM build
1 parent 7785754 commit 8b9bd7b

File tree

9 files changed

+35
-22
lines changed

9 files changed

+35
-22
lines changed

isa/macros/scalar/test_macros.h

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -417,13 +417,6 @@ test_ ## testnum: \
417417
# Tests floating-point instructions
418418
#-----------------------------------------------------------------------
419419

420-
#define qNaNh 0h:7e00
421-
#define sNaNh 0h:7c01
422-
#define qNaNf 0f:7fc00000
423-
#define sNaNf 0f:7f800001
424-
#define qNaN 0d:7ff8000000000000
425-
#define sNaN 0d:7ff0000000000001
426-
427420
#define TEST_FP_OP_H_INTERNAL( testnum, flags, result, val1, val2, val3, code... ) \
428421
test_ ## testnum: \
429422
li TESTNUM, testnum; \
@@ -574,19 +567,35 @@ test_ ## testnum: \
574567
TEST_FP_OP_S_INTERNAL( testnum, flags, float result, val1, val2, 0.0, \
575568
inst f13, f10, f11; fmv.x.s a0, f13)
576569

570+
#define TEST_FP_OP2_S_CNAN( testnum, inst, flags, val1, val2 ) \
571+
TEST_FP_OP_S_INTERNAL( testnum, flags, word 0x7fc00000, val1, val2, 0.0, \
572+
inst f13, f10, f11; fmv.x.s a0, f13)
573+
577574
#define TEST_FP_OP2_H( testnum, inst, flags, result, val1, val2 ) \
578575
TEST_FP_OP_H_INTERNAL( testnum, flags, float16 result, val1, val2, 0.0, \
579576
inst f13, f10, f11; fmv.x.h a0, f13)
580577

578+
#define TEST_FP_OP2_H_CNAN( testnum, inst, flags, val1, val2 ) \
579+
TEST_FP_OP_H_INTERNAL( testnum, flags, half 0x7e00, val1, val2, 0.0, \
580+
inst f13, f10, f11; fmv.x.h a0, f13)
581+
581582
#define TEST_FP_OP2_D32( testnum, inst, flags, result, val1, val2 ) \
582583
TEST_FP_OP_D32_INTERNAL( testnum, flags, double result, val1, val2, 0.0, \
583584
inst f13, f10, f11; fsd f13, 0(a0); lw t2, 4(a0); lw a0, 0(a0))
584585
// ^: store computation result in address from a0, load high-word into t2
585586

587+
#define TEST_FP_OP2_D32_CNAN( testnum, inst, flags, val1, val2 ) \
588+
TEST_FP_OP_D32_INTERNAL( testnum, flags, dword 0x7ff8000000000000, val1, val2, 0.0, \
589+
inst f13, f10, f11; fsd f13, 0(a0); lw t2, 4(a0); lw a0, 0(a0))
590+
586591
#define TEST_FP_OP2_D( testnum, inst, flags, result, val1, val2 ) \
587592
TEST_FP_OP_D_INTERNAL( testnum, flags, double result, val1, val2, 0.0, \
588593
inst f13, f10, f11; fmv.x.d a0, f13)
589594

595+
#define TEST_FP_OP2_D_CNAN( testnum, inst, flags, val1, val2 ) \
596+
TEST_FP_OP_D_INTERNAL( testnum, flags, dword 0x7ff8000000000000, val1, val2, 0.0, \
597+
inst f13, f10, f11; fmv.x.d a0, f13)
598+
590599
#define TEST_FP_OP3_S( testnum, inst, flags, result, val1, val2, val3 ) \
591600
TEST_FP_OP_S_INTERNAL( testnum, flags, float result, val1, val2, val3, \
592601
inst f13, f10, f11, f12; fmv.x.s a0, f13)

isa/rv64ud/fadd.S

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ RVTEST_CODE_BEGIN
1717
# Replace the function with the 32-bit variant defined in test_macros.h
1818
#undef TEST_FP_OP2_D
1919
#define TEST_FP_OP2_D TEST_FP_OP2_D32
20+
#undef TEST_FP_OP2_D_CNAN
21+
#define TEST_FP_OP2_D_CNAN TEST_FP_OP2_D32_CNAN
2022
#endif
2123

2224
#-------------------------------------------------------------
@@ -36,7 +38,7 @@ RVTEST_CODE_BEGIN
3638
TEST_FP_OP2_D(10, fmul.d, 1, 3.14159265e-8, 3.14159265, 0.00000001 );
3739

3840
# Is the canonical NaN generated for Inf - Inf?
39-
TEST_FP_OP2_D(11, fsub.d, 0x10, qNaN, Inf, Inf);
41+
TEST_FP_OP2_D_CNAN(11, fsub.d, 0x10, Inf, Inf);
4042

4143
TEST_PASSFAIL
4244

isa/rv64ud/fcmp.S

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,15 @@ RVTEST_CODE_BEGIN
3434
# Only sNaN should signal invalid for feq.
3535
TEST_FP_CMP_OP_D( 8, feq.d, 0x00, 0, NaN, 0)
3636
TEST_FP_CMP_OP_D( 9, feq.d, 0x00, 0, NaN, NaN)
37-
TEST_FP_CMP_OP_D(10, feq.d, 0x10, 0, sNaN, 0)
37+
TEST_FP_CMP_OP_D(10, feq.d, 0x10, 0, SNaN, 0)
3838

3939
# qNaN should signal invalid for fle/flt.
4040
TEST_FP_CMP_OP_D(11, flt.d, 0x10, 0, NaN, 0)
4141
TEST_FP_CMP_OP_D(12, flt.d, 0x10, 0, NaN, NaN)
42-
TEST_FP_CMP_OP_D(13, flt.d, 0x10, 0, sNaN, 0)
42+
TEST_FP_CMP_OP_D(13, flt.d, 0x10, 0, SNaN, 0)
4343
TEST_FP_CMP_OP_D(14, fle.d, 0x10, 0, NaN, 0)
4444
TEST_FP_CMP_OP_D(15, fle.d, 0x10, 0, NaN, NaN)
45-
TEST_FP_CMP_OP_D(16, fle.d, 0x10, 0, sNaN, 0)
45+
TEST_FP_CMP_OP_D(16, fle.d, 0x10, 0, SNaN, 0)
4646

4747
TEST_PASSFAIL
4848

isa/rv64ud/fmin.S

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ RVTEST_CODE_BEGIN
1717
# Replace the function with the 32-bit variant defined in test_macros.h
1818
#undef TEST_FP_OP2_D
1919
#define TEST_FP_OP2_D TEST_FP_OP2_D32
20+
#undef TEST_FP_OP2_D_CNAN
21+
#define TEST_FP_OP2_D_CNAN TEST_FP_OP2_D32_CNAN
2022
#endif
2123

2224
#-------------------------------------------------------------
@@ -38,9 +40,9 @@ RVTEST_CODE_BEGIN
3840
TEST_FP_OP2_D(17, fmax.d, 0, -1.0, -1.0, -2.0 );
3941

4042
# FMAX(sNaN, x) = x
41-
TEST_FP_OP2_D(20, fmax.d, 0x10, 1.0, sNaN, 1.0);
43+
TEST_FP_OP2_D(20, fmax.d, 0x10, 1.0, SNaN, 1.0);
4244
# FMAX(qNaN, qNaN) = canonical NaN
43-
TEST_FP_OP2_D(21, fmax.d, 0x00, qNaN, NaN, NaN);
45+
TEST_FP_OP2_D_CNAN(21, fmax.d, 0x00, NaN, NaN);
4446

4547
# -0.0 < +0.0
4648
TEST_FP_OP2_D(30, fmin.d, 0, -0.0, -0.0, 0.0 );

isa/rv64uf/fadd.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ RVTEST_CODE_BEGIN
3030
TEST_FP_OP2_S(10, fmul.s, 1, 3.14159265e-8, 3.14159265, 0.00000001 );
3131

3232
# Is the canonical NaN generated for Inf - Inf?
33-
TEST_FP_OP2_S(11, fsub.s, 0x10, qNaNf, Inf, Inf);
33+
TEST_FP_OP2_S_CNAN(11, fsub.s, 0x10, Inf, Inf);
3434

3535
TEST_PASSFAIL
3636

isa/rv64uf/fcmp.S

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,15 @@ RVTEST_CODE_BEGIN
2828
# Only sNaN should signal invalid for feq.
2929
TEST_FP_CMP_OP_S( 8, feq.s, 0x00, 0, NaN, 0)
3030
TEST_FP_CMP_OP_S( 9, feq.s, 0x00, 0, NaN, NaN)
31-
TEST_FP_CMP_OP_S(10, feq.s, 0x10, 0, sNaNf, 0)
31+
TEST_FP_CMP_OP_S(10, feq.s, 0x10, 0, SNaN, 0)
3232

3333
# qNaN should signal invalid for fle/flt.
3434
TEST_FP_CMP_OP_S(11, flt.s, 0x10, 0, NaN, 0)
3535
TEST_FP_CMP_OP_S(12, flt.s, 0x10, 0, NaN, NaN)
36-
TEST_FP_CMP_OP_S(13, flt.s, 0x10, 0, sNaNf, 0)
36+
TEST_FP_CMP_OP_S(13, flt.s, 0x10, 0, SNaN, 0)
3737
TEST_FP_CMP_OP_S(14, fle.s, 0x10, 0, NaN, 0)
3838
TEST_FP_CMP_OP_S(15, fle.s, 0x10, 0, NaN, NaN)
39-
TEST_FP_CMP_OP_S(16, fle.s, 0x10, 0, sNaNf, 0)
39+
TEST_FP_CMP_OP_S(16, fle.s, 0x10, 0, SNaN, 0)
4040

4141
TEST_PASSFAIL
4242

isa/rv64uf/fmin.S

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ RVTEST_CODE_BEGIN
3232
TEST_FP_OP2_S(17, fmax.s, 0, -1.0, -1.0, -2.0 );
3333

3434
# FMAX(sNaN, x) = x
35-
TEST_FP_OP2_S(20, fmax.s, 0x10, 1.0, sNaNf, 1.0);
35+
TEST_FP_OP2_S(20, fmax.s, 0x10, 1.0, SNaN, 1.0);
3636
# FMAX(qNaN, qNaN) = canonical NaN
37-
TEST_FP_OP2_S(21, fmax.s, 0x00, qNaNf, NaN, NaN);
37+
TEST_FP_OP2_S_CNAN(21, fmax.s, 0x00, NaN, NaN);
3838

3939
# -0.0 < +0.0
4040
TEST_FP_OP2_S(30, fmin.s, 0, -0.0, -0.0, 0.0 );

isa/rv64uzfh/fadd.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ RVTEST_CODE_BEGIN
3030
TEST_FP_OP2_H(10, fmul.h, 1, 1.1, 11.0, 0.1 );
3131

3232
# Is the canonical NaN generated for Inf - Inf?
33-
TEST_FP_OP2_H(11, fsub.h, 0x10, qNaNh, Inf, Inf);
33+
TEST_FP_OP2_H_CNAN(11, fsub.h, 0x10, Inf, Inf);
3434

3535
TEST_PASSFAIL
3636

isa/rv64uzfh/fmin.S

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ RVTEST_CODE_BEGIN
3232
TEST_FP_OP2_H(17, fmax.h, 0, -1.0, -1.0, -2.0 );
3333

3434
# FMIN(hNaN, x) = x
35-
TEST_FP_OP2_H(20, fmax.h, 0x10, 1.0, sNaNh, 1.0);
35+
TEST_FP_OP2_H(20, fmax.h, 0x10, 1.0, SNaN, 1.0);
3636
# FMIN(hNaN, hNaN) = canonical NaN
37-
TEST_FP_OP2_H(21, fmax.h, 0x00, qNaNh, NaN, NaN);
37+
TEST_FP_OP2_H_CNAN(21, fmax.h, 0x00, NaN, NaN);
3838

3939
# -0.0 < +0.0
4040
TEST_FP_OP2_H(30, fmin.h, 0, -0.0, -0.0, 0.0 );

0 commit comments

Comments
 (0)