Skip to content

Commit 7b7074a

Browse files
authored
Replace floating magic constant by macro (#623)
* macro: define [sq]NaN[dfh] and [n]Inf[dfh] Signed-off-by: Chih-Min Chao <[email protected]> * apply sNaNf Signed-off-by: Chih-Min Chao <[email protected]> * apply sNaNd Signed-off-by: Chih-Min Chao <[email protected]> * apply qNaNd Signed-off-by: Chih-Min Chao <[email protected]> * apply qNaNf Signed-off-by: Chih-Min Chao <[email protected]> * apply sNaNh Signed-off-by: Chih-Min Chao <[email protected]> * apply Infh Signed-off-by: Chih-Min Chao <[email protected]> * apply nInfh Signed-off-by: Chih-Min Chao <[email protected]> * apply Infd Signed-off-by: Chih-Min Chao <[email protected]> * apply nInfd Signed-off-by: Chih-Min Chao <[email protected]> * apply Inff Signed-off-by: Chih-Min Chao <[email protected]> * apply nInff Signed-off-by: Chih-Min Chao <[email protected]> --------- Signed-off-by: Chih-Min Chao <[email protected]>
2 parents 355f1fb + f5ffcb6 commit 7b7074a

File tree

17 files changed

+61
-43
lines changed

17 files changed

+61
-43
lines changed

isa/macros/scalar/test_macros.h

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

420+
# 16-bit half precision (float16)
421+
#define qNaNh 0x7e00
422+
#define sNaNh 0x7c01
423+
#define Infh 0x7c00
424+
#define nInfh 0xfc00
425+
426+
# 32-bit single precision (float)
427+
#define qNaNf 0x7fc00000
428+
#define sNaNf 0x7f800001
429+
#define Inff 0x7f800000
430+
#define nInff 0xff800000
431+
432+
# 64-bit double precision (double)
433+
#define qNaNd 0x7ff8000000000000
434+
#define sNaNd 0x7ff0000000000001
435+
#define Infd 0x7ff0000000000000
436+
#define nInfd 0xfff0000000000000
437+
420438
#define TEST_FP_OP_H_INTERNAL( testnum, flags, result, val1, val2, val3, code... ) \
421439
test_ ## testnum: \
422440
li TESTNUM, testnum; \

isa/rv64ud/fadd.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ RVTEST_CODE_BEGIN
3838
TEST_FP_OP2_D(10, fmul.d, 1, 3.14159265e-8, 3.14159265, 0.00000001 );
3939

4040
# Is the canonical NaN generated for Inf - Inf?
41-
TEST_FP_OP2_D_HEX(11, fsub.d, 0x10, 0x7ff8000000000000, 0x7ff0000000000000, 0x7ff0000000000000);
41+
TEST_FP_OP2_D_HEX(11, fsub.d, 0x10, qNaNd, Infd, Infd);
4242

4343
TEST_PASSFAIL
4444

isa/rv64ud/fclass.S

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,16 @@ RVTEST_CODE_BEGIN
2323
# Arithmetic tests
2424
#-------------------------------------------------------------
2525

26-
TEST_FCLASS_D( 2, 1 << 0, 0xfff0000000000000 )
26+
TEST_FCLASS_D( 2, 1 << 0, nInfd )
2727
TEST_FCLASS_D( 3, 1 << 1, 0xbff0000000000000 )
2828
TEST_FCLASS_D( 4, 1 << 2, 0x800fffffffffffff )
2929
TEST_FCLASS_D( 5, 1 << 3, 0x8000000000000000 )
3030
TEST_FCLASS_D( 6, 1 << 4, 0x0000000000000000 )
3131
TEST_FCLASS_D( 7, 1 << 5, 0x000fffffffffffff )
3232
TEST_FCLASS_D( 8, 1 << 6, 0x3ff0000000000000 )
33-
TEST_FCLASS_D( 9, 1 << 7, 0x7ff0000000000000 )
34-
TEST_FCLASS_D(10, 1 << 8, 0x7ff0000000000001 )
35-
TEST_FCLASS_D(11, 1 << 9, 0x7ff8000000000000 )
33+
TEST_FCLASS_D( 9, 1 << 7, Infd )
34+
TEST_FCLASS_D(10, 1 << 8, sNaNd )
35+
TEST_FCLASS_D(11, 1 << 9, qNaNd )
3636

3737
TEST_PASSFAIL
3838

isa/rv64ud/fcmp.S

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,15 @@ RVTEST_CODE_BEGIN
3636
# Only sNaN should signal invalid for feq.
3737
TEST_FP_CMP_OP_D( 8, feq.d, 0x00, 0, NaN, 0)
3838
TEST_FP_CMP_OP_D( 9, feq.d, 0x00, 0, NaN, NaN)
39-
TEST_FP_CMP_OP_D_HEX(10, feq.d, 0x10, 0, 0x7ff0000000000001, 0)
39+
TEST_FP_CMP_OP_D_HEX(10, feq.d, 0x10, 0, sNaNd, 0)
4040

4141
# qNaN should signal invalid for fle/flt.
4242
TEST_FP_CMP_OP_D(11, flt.d, 0x10, 0, NaN, 0)
4343
TEST_FP_CMP_OP_D(12, flt.d, 0x10, 0, NaN, NaN)
44-
TEST_FP_CMP_OP_D_HEX(13, flt.d, 0x10, 0, 0x7ff0000000000001, 0)
44+
TEST_FP_CMP_OP_D_HEX(13, flt.d, 0x10, 0, sNaNd, 0)
4545
TEST_FP_CMP_OP_D(14, fle.d, 0x10, 0, NaN, 0)
4646
TEST_FP_CMP_OP_D(15, fle.d, 0x10, 0, NaN, NaN)
47-
TEST_FP_CMP_OP_D_HEX(16, fle.d, 0x10, 0, 0x7ff0000000000001, 0)
47+
TEST_FP_CMP_OP_D_HEX(16, fle.d, 0x10, 0, sNaNd, 0)
4848

4949
TEST_PASSFAIL
5050

isa/rv64ud/fcvt.S

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ RVTEST_CODE_BEGIN
4444
TEST_FCVT_D_S(11, -1.5, -1.5)
4545

4646
#if __riscv_xlen >= 64
47-
TEST_CASE(12, a0, 0x7ff8000000000000,
47+
TEST_CASE(12, a0, qNaNd,
4848
la a1, test_data_22;
4949
ld a2, 0(a1);
5050
fmv.d.x f2, a2;
@@ -53,7 +53,7 @@ RVTEST_CODE_BEGIN
5353
fmv.x.d a0, f2;
5454
)
5555
#else
56-
TEST_CASE_D32(12, a0, a1, 0x7ff8000000000000,
56+
TEST_CASE_D32(12, a0, a1, qNaNd,
5757
la a1, test_data_22;
5858
fld f2, 0(a1);
5959
fcvt.s.d f2, f2;

isa/rv64ud/fcvt_w.S

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,13 @@ RVTEST_DATA_BEGIN
102102
tdat:
103103
.word 0xffffffff
104104
.word 0x7fffffff
105-
.word 0xff800000
106-
.word 0x7f800000
105+
.word nInff
106+
.word Inff
107107

108108
tdat_d:
109109
.dword 0xffffffffffffffff
110110
.dword 0x7fffffffffffffff
111-
.dword 0xfff0000000000000
112-
.dword 0x7ff0000000000000
111+
.dword nInfd
112+
.dword Infd
113113

114114
RVTEST_DATA_END

isa/rv64ud/fmin.S

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ RVTEST_CODE_BEGIN
4040
TEST_FP_OP2_D(17, fmax.d, 0, -1.0, -1.0, -2.0 );
4141

4242
# FMAX(sNaN, x) = x
43-
TEST_FP_OP2_D_HEX(20, fmax.d, 0x10, 0x3ff0000000000000, 0x7ff0000000000001, 0x3ff0000000000000);
43+
TEST_FP_OP2_D_HEX(20, fmax.d, 0x10, 0x3ff0000000000000, sNaNd, 0x3ff0000000000000);
4444
# FMAX(qNaN, qNaN) = canonical NaN
45-
TEST_FP_OP2_D_HEX(21, fmax.d, 0x00, 0x7ff8000000000000, 0x7fffffffffffffff, 0x7fffffffffffffff);
45+
TEST_FP_OP2_D_HEX(21, fmax.d, 0x00, qNaNd, 0x7fffffffffffffff, 0x7fffffffffffffff);
4646

4747
# -0.0 < +0.0
4848
TEST_FP_OP2_D(30, fmin.d, 0, -0.0, -0.0, 0.0 );

isa/rv64ud/move.S

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,14 @@ RVTEST_CODE_BEGIN
5555
fsgnj.s f0, f1, f2; \
5656
fmv.x.d a0, f0)
5757

58-
TEST_FSGNJS(40, 0x7fc00000, 0x7ffffffe12345678, 0)
59-
TEST_FSGNJS(41, 0x7fc00000, 0xfffffffe12345678, 0)
60-
TEST_FSGNJS(42, 0x7fc00000, 0x7fffffff12345678, 0)
58+
TEST_FSGNJS(40, qNaNf, 0x7ffffffe12345678, 0)
59+
TEST_FSGNJS(41, qNaNf, 0xfffffffe12345678, 0)
60+
TEST_FSGNJS(42, qNaNf, 0x7fffffff12345678, 0)
6161
TEST_FSGNJS(43, 0x12345678, 0xffffffff12345678, 0)
6262

63-
TEST_FSGNJS(50, 0x7fc00000, 0x7ffffffe12345678, 0x80000000)
64-
TEST_FSGNJS(51, 0x7fc00000, 0xfffffffe12345678, 0x80000000)
65-
TEST_FSGNJS(52, 0x7fc00000, 0x7fffffff12345678, 0x80000000)
63+
TEST_FSGNJS(50, qNaNf, 0x7ffffffe12345678, 0x80000000)
64+
TEST_FSGNJS(51, qNaNf, 0xfffffffe12345678, 0x80000000)
65+
TEST_FSGNJS(52, qNaNf, 0x7fffffff12345678, 0x80000000)
6666
TEST_FSGNJS(53, 0x12345678, 0xffffffff12345678, 0x80000000)
6767

6868
TEST_FSGNJS(60, 0xffc00000, 0x7ffffffe12345678, 0xffffffff80000000)

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_HEX(11, fsub.s, 0x10, 0x7fc00000, 0x7f800000, 0x7f800000);
33+
TEST_FP_OP2_S_HEX(11, fsub.s, 0x10, qNaNf, Inff, Inff);
3434

3535
TEST_PASSFAIL
3636

isa/rv64uf/fclass.S

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,16 @@ RVTEST_CODE_BEGIN
1717
# Arithmetic tests
1818
#-------------------------------------------------------------
1919

20-
TEST_FCLASS_S( 2, 1 << 0, 0xff800000 )
20+
TEST_FCLASS_S( 2, 1 << 0, nInff )
2121
TEST_FCLASS_S( 3, 1 << 1, 0xbf800000 )
2222
TEST_FCLASS_S( 4, 1 << 2, 0x807fffff )
2323
TEST_FCLASS_S( 5, 1 << 3, 0x80000000 )
2424
TEST_FCLASS_S( 6, 1 << 4, 0x00000000 )
2525
TEST_FCLASS_S( 7, 1 << 5, 0x007fffff )
2626
TEST_FCLASS_S( 8, 1 << 6, 0x3f800000 )
27-
TEST_FCLASS_S( 9, 1 << 7, 0x7f800000 )
28-
TEST_FCLASS_S(10, 1 << 8, 0x7f800001 )
29-
TEST_FCLASS_S(11, 1 << 9, 0x7fc00000 )
27+
TEST_FCLASS_S( 9, 1 << 7, Inff )
28+
TEST_FCLASS_S(10, 1 << 8, sNaNf )
29+
TEST_FCLASS_S(11, 1 << 9, qNaNf )
3030

3131
TEST_PASSFAIL
3232

0 commit comments

Comments
 (0)