@@ -433,9 +433,9 @@ test_ ## testnum: \
433433 .pushsection .data; \
434434 .align 1; \
435435 test_ ## testnum ## _data: \
436- .float16 val1; \
437- .float16 val2; \
438- .float16 val3; \
436+ .val1; \
437+ .val2; \
438+ .val3; \
439439 .result; \
440440 .popsection
441441
@@ -455,9 +455,9 @@ test_ ## testnum: \
455455 .pushsection .data; \
456456 .align 2; \
457457 test_ ## testnum ## _data: \
458- .float val1; \
459- .float val2; \
460- .float val3; \
458+ .val1; \
459+ .val2; \
460+ .val3; \
461461 .result; \
462462 .popsection
463463
@@ -477,9 +477,9 @@ test_ ## testnum: \
477477 .pushsection .data; \
478478 .align 3; \
479479 test_ ## testnum ## _data: \
480- .double val1; \
481- .double val2; \
482- .double val3; \
480+ .val1; \
481+ .val2; \
482+ .val3; \
483483 .result; \
484484 .popsection
485485
@@ -502,147 +502,163 @@ test_ ## testnum: \
502502 .pushsection .data; \
503503 .align 3; \
504504 test_ ## testnum ## _data: \
505- .double val1; \
506- .double val2; \
507- .double val3; \
505+ .val1; \
506+ .val2; \
507+ .val3; \
508508 .result; \
509509 .popsection
510510
511511#define TEST_FCVT_S_D32 ( testnum , result , val1 ) \
512- TEST_FP_OP_D32_INTERNAL( testnum, 0, double result, val1, 0.0, 0. 0, \
512+ TEST_FP_OP_D32_INTERNAL( testnum, 0, double result, double val1, double 0, double 0, \
513513 fcvt.s.d f13, f10; fcvt.d.s f13, f13; fsd f13, 0(a0); lw t2, 4(a0); lw a0, 0(a0))
514514
515515#define TEST_FCVT_S_D ( testnum , result , val1 ) \
516- TEST_FP_OP_D_INTERNAL( testnum, 0, double result, val1, 0.0, 0. 0, \
516+ TEST_FP_OP_D_INTERNAL( testnum, 0, double result, double val1, double 0, double 0, \
517517 fcvt.s.d f13, f10; fcvt.d.s f13, f13; fmv.x.d a0, f13)
518518
519519#define TEST_FCVT_D_S ( testnum , result , val1 ) \
520- TEST_FP_OP_S_INTERNAL( testnum, 0, float result, val1, 0.0, 0. 0, \
520+ TEST_FP_OP_S_INTERNAL( testnum, 0, float result, float val1, float 0, float 0, \
521521 fcvt.d.s f13, f10; fcvt.s.d f13, f13; fmv.x.s a0, f13)
522522
523523#define TEST_FCVT_H_S ( testnum , result , val1 ) \
524- TEST_FP_OP_H_INTERNAL( testnum, 0, float16 result, val1, 0.0, 0. 0, \
524+ TEST_FP_OP_H_INTERNAL( testnum, 0, float16 result, float16 val1, float16 0, float16 0, \
525525 fcvt.s.h f13, f10; fcvt.h.s f13, f13; fmv.x.h a0, f13)
526526
527527#define TEST_FCVT_H_D ( testnum , result , val1 ) \
528- TEST_FP_OP_H_INTERNAL( testnum, 0, float16 result, val1, 0.0, 0. 0, \
528+ TEST_FP_OP_H_INTERNAL( testnum, 0, float16 result, float16 val1, float16 0, float16 0, \
529529 fcvt.d.h f13, f10; fcvt.h.d f13, f13; fmv.x.h a0, f13)
530530
531531
532532#define TEST_FP_OP1_H ( testnum , inst , flags , result , val1 ) \
533- TEST_FP_OP_H_INTERNAL( testnum, flags, float16 result, val1, 0.0, 0. 0, \
533+ TEST_FP_OP_H_INTERNAL( testnum, flags, float16 result, float16 val1, float16 0, float16 0, \
534534 inst f13, f10; fmv.x.h a0, f13;)
535535
536536#define TEST_FP_OP1_S ( testnum , inst , flags , result , val1 ) \
537- TEST_FP_OP_S_INTERNAL( testnum, flags, float result, val1, 0.0, 0. 0, \
537+ TEST_FP_OP_S_INTERNAL( testnum, flags, float result, float val1, float 0, float 0, \
538538 inst f13, f10; fmv.x.s a0, f13)
539539
540540#define TEST_FP_OP1_D32 ( testnum , inst , flags , result , val1 ) \
541- TEST_FP_OP_D32_INTERNAL( testnum, flags, double result, val1, 0.0, 0. 0, \
541+ TEST_FP_OP_D32_INTERNAL( testnum, flags, double result, double val1, double 0, double 0, \
542542 inst f13, f10; fsd f13, 0(a0); lw t2, 4(a0); lw a0, 0(a0))
543543// ^: store computation result in address from a0, load high-word into t2
544544
545545#define TEST_FP_OP1_D ( testnum , inst , flags , result , val1 ) \
546- TEST_FP_OP_D_INTERNAL( testnum, flags, double result, val1, 0.0, 0. 0, \
546+ TEST_FP_OP_D_INTERNAL( testnum, flags, double result, double val1, double 0, double 0, \
547547 inst f13, f10; fmv.x.d a0, f13)
548548
549549#define TEST_FP_OP1_S_DWORD_RESULT ( testnum , inst , flags , result , val1 ) \
550- TEST_FP_OP_S_INTERNAL( testnum, flags, dword result, val1, 0.0, 0. 0, \
550+ TEST_FP_OP_S_INTERNAL( testnum, flags, dword result, float val1, float 0, float 0, \
551551 inst f13, f10; fmv.x.s a0, f13)
552552
553553#define TEST_FP_OP1_H_DWORD_RESULT ( testnum , inst , flags , result , val1 ) \
554- TEST_FP_OP_H_INTERNAL( testnum, flags, word result, val1, 0.0, 0. 0, \
554+ TEST_FP_OP_H_INTERNAL( testnum, flags, word result, float16 val1, float16 0, float16 0, \
555555 inst f13, f10; fmv.x.h a0, f13)
556556
557557#define TEST_FP_OP1_D32_DWORD_RESULT ( testnum , inst , flags , result , val1 ) \
558- TEST_FP_OP_D32_INTERNAL( testnum, flags, dword result, val1, 0.0, 0. 0, \
558+ TEST_FP_OP_D32_INTERNAL( testnum, flags, dword result, double val1, double 0, double 0, \
559559 inst f13, f10; fsd f13, 0(a0); lw t2, 4(a0); lw a0, 0(a0))
560560// ^: store computation result in address from a0, load high-word into t2
561561
562562#define TEST_FP_OP1_D_DWORD_RESULT ( testnum , inst , flags , result , val1 ) \
563- TEST_FP_OP_D_INTERNAL( testnum, flags, dword result, val1, 0.0, 0. 0, \
563+ TEST_FP_OP_D_INTERNAL( testnum, flags, dword result, double val1, double 0, double 0, \
564564 inst f13, f10; fmv.x.d a0, f13)
565565
566566#define TEST_FP_OP2_S ( testnum , inst , flags , result , val1 , val2 ) \
567- TEST_FP_OP_S_INTERNAL( testnum, flags, float result, val1, val2, 0. 0, \
567+ TEST_FP_OP_S_INTERNAL( testnum, flags, float result, float val1, float val2, float 0, \
568568 inst f13, f10, f11; fmv.x.s a0, f13)
569569
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, \
570+ #define TEST_FP_OP2_S_HEX ( testnum , inst , flags , result , val1 , val2 ) \
571+ TEST_FP_OP_S_INTERNAL( testnum, flags, word result, word val1, word val2, float 0, \
572572 inst f13, f10, f11; fmv.x.s a0, f13)
573573
574574#define TEST_FP_OP2_H ( testnum , inst , flags , result , val1 , val2 ) \
575- TEST_FP_OP_H_INTERNAL( testnum, flags, float16 result, val1, val2, 0. 0, \
575+ TEST_FP_OP_H_INTERNAL( testnum, flags, float16 result, float16 val1, float16 val2, float16 0, \
576576 inst f13, f10, f11; fmv.x.h a0, f13)
577577
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, \
578+ #define TEST_FP_OP2_H_HEX ( testnum , inst , flags , result , val1 , val2 ) \
579+ TEST_FP_OP_H_INTERNAL( testnum, flags, half result, half val1, half val2, float16 0, \
580580 inst f13, f10, f11; fmv.x.h a0, f13)
581581
582582#define TEST_FP_OP2_D32 ( testnum , inst , flags , result , val1 , val2 ) \
583- TEST_FP_OP_D32_INTERNAL( testnum, flags, double result, val1, val2, 0. 0, \
583+ TEST_FP_OP_D32_INTERNAL( testnum, flags, double result, double val1, double val2, double 0, \
584584 inst f13, f10, f11; fsd f13, 0(a0); lw t2, 4(a0); lw a0, 0(a0))
585585// ^: store computation result in address from a0, load high-word into t2
586586
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, \
587+ #define TEST_FP_OP2_D32_HEX ( testnum , inst , flags , result , val1 , val2 ) \
588+ TEST_FP_OP_D32_INTERNAL( testnum, flags, dword result, dword val1, dword val2, double 0, \
589589 inst f13, f10, f11; fsd f13, 0(a0); lw t2, 4(a0); lw a0, 0(a0))
590590
591591#define TEST_FP_OP2_D ( testnum , inst , flags , result , val1 , val2 ) \
592- TEST_FP_OP_D_INTERNAL( testnum, flags, double result, val1, val2, 0. 0, \
592+ TEST_FP_OP_D_INTERNAL( testnum, flags, double result, double val1, double val2, double 0, \
593593 inst f13, f10, f11; fmv.x.d a0, f13)
594594
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, \
595+ #define TEST_FP_OP2_D_HEX ( testnum , inst , flags , result , val1 , val2 ) \
596+ TEST_FP_OP_D_INTERNAL( testnum, flags, dword result, dword val1, dword val2, double 0, \
597597 inst f13, f10, f11; fmv.x.d a0, f13)
598598
599599#define TEST_FP_OP3_S ( testnum , inst , flags , result , val1 , val2 , val3 ) \
600- TEST_FP_OP_S_INTERNAL( testnum, flags, float result, val1, val2, val3, \
600+ TEST_FP_OP_S_INTERNAL( testnum, flags, float result, float val1, float val2, float val3, \
601601 inst f13, f10, f11, f12; fmv.x.s a0, f13)
602602
603603#define TEST_FP_OP3_H ( testnum , inst , flags , result , val1 , val2 , val3 ) \
604- TEST_FP_OP_H_INTERNAL( testnum, flags, float16 result, val1, val2, val3, \
604+ TEST_FP_OP_H_INTERNAL( testnum, flags, float16 result, float16 val1, float16 val2, float16 val3, \
605605 inst f13, f10, f11, f12; fmv.x.h a0, f13)
606606
607607#define TEST_FP_OP3_D32 ( testnum , inst , flags , result , val1 , val2 , val3 ) \
608- TEST_FP_OP_D32_INTERNAL( testnum, flags, double result, val1, val2, val3, \
608+ TEST_FP_OP_D32_INTERNAL( testnum, flags, double result, double val1, double val2, double val3, \
609609 inst f13, f10, f11, f12; fsd f13, 0(a0); lw t2, 4(a0); lw a0, 0(a0))
610610// ^: store computation result in address from a0, load high-word into t2
611611
612612#define TEST_FP_OP3_D ( testnum , inst , flags , result , val1 , val2 , val3 ) \
613- TEST_FP_OP_D_INTERNAL( testnum, flags, double result, val1, val2, val3, \
613+ TEST_FP_OP_D_INTERNAL( testnum, flags, double result, double val1, double val2, double val3, \
614614 inst f13, f10, f11, f12; fmv.x.d a0, f13)
615615
616616#define TEST_FP_INT_OP_S ( testnum , inst , flags , result , val1 , rm ) \
617- TEST_FP_OP_S_INTERNAL( testnum, flags, word result, val1, 0.0, 0. 0, \
617+ TEST_FP_OP_S_INTERNAL( testnum, flags, word result, float val1, float 0, float 0, \
618618 inst a0, f10, rm)
619619
620620#define TEST_FP_INT_OP_H ( testnum , inst , flags , result , val1 , rm ) \
621- TEST_FP_OP_H_INTERNAL( testnum, flags, word result, val1, 0.0, 0. 0, \
621+ TEST_FP_OP_H_INTERNAL( testnum, flags, word result, float16 val1, float16 0, float16 0, \
622622 inst a0, f10, rm)
623623
624624#define TEST_FP_INT_OP_D32 ( testnum , inst , flags , result , val1 , rm ) \
625- TEST_FP_OP_D32_INTERNAL( testnum, flags, dword result, val1, 0.0, 0. 0, \
625+ TEST_FP_OP_D32_INTERNAL( testnum, flags, dword result, double val1, double 0, double 0, \
626626 inst a0, f10, f11; li t2, 0)
627627
628628#define TEST_FP_INT_OP_D ( testnum , inst , flags , result , val1 , rm ) \
629- TEST_FP_OP_D_INTERNAL( testnum, flags, dword result, val1, 0.0, 0. 0, \
629+ TEST_FP_OP_D_INTERNAL( testnum, flags, dword result, double val1, double 0, double 0, \
630630 inst a0, f10, rm)
631631
632632#define TEST_FP_CMP_OP_S ( testnum , inst , flags , result , val1 , val2 ) \
633- TEST_FP_OP_S_INTERNAL( testnum, flags, word result, val1, val2, 0.0, \
633+ TEST_FP_OP_S_INTERNAL( testnum, flags, word result, float val1, float val2, float 0, \
634+ inst a0, f10, f11)
635+
636+ #define TEST_FP_CMP_OP_S_HEX ( testnum , inst , flags , result , val1 , val2 ) \
637+ TEST_FP_OP_S_INTERNAL( testnum, flags, word result, word val1, word val2, float 0, \
634638 inst a0, f10, f11)
635639
636640#define TEST_FP_CMP_OP_H ( testnum , inst , flags , result , val1 , val2 ) \
637- TEST_FP_OP_H_INTERNAL( testnum, flags, hword result, val1, val2, 0.0, \
641+ TEST_FP_OP_H_INTERNAL( testnum, flags, hword result, float16 val1, float16 val2, float16 0, \
642+ inst a0, f10, f11)
643+
644+ #define TEST_FP_CMP_OP_H_HEX ( testnum , inst , flags , result , val1 , val2 ) \
645+ TEST_FP_OP_H_INTERNAL( testnum, flags, hword result, half val1, half val2, float16 0, \
638646 inst a0, f10, f11)
639647
640648#define TEST_FP_CMP_OP_D32 ( testnum , inst , flags , result , val1 , val2 ) \
641- TEST_FP_OP_D32_INTERNAL( testnum, flags, dword result, val1, val2, 0.0, \
649+ TEST_FP_OP_D32_INTERNAL( testnum, flags, dword result, double val1, double val2, double 0, \
650+ inst a0, f10, f11; li t2, 0)
651+
652+ #define TEST_FP_CMP_OP_D32_HEX ( testnum , inst , flags , result , val1 , val2 ) \
653+ TEST_FP_OP_D32_INTERNAL( testnum, flags, dword result, dword val1, dword val2, double 0, \
642654 inst a0, f10, f11; li t2, 0)
643655
644656#define TEST_FP_CMP_OP_D ( testnum , inst , flags , result , val1 , val2 ) \
645- TEST_FP_OP_D_INTERNAL( testnum, flags, dword result, val1, val2, 0.0, \
657+ TEST_FP_OP_D_INTERNAL( testnum, flags, dword result, double val1, double val2, double 0, \
658+ inst a0, f10, f11)
659+
660+ #define TEST_FP_CMP_OP_D_HEX ( testnum , inst , flags , result , val1 , val2 ) \
661+ TEST_FP_OP_D_INTERNAL( testnum, flags, dword result, dword val1, dword val2, double 0, \
646662 inst a0, f10, f11)
647663
648664#define TEST_FCLASS_S (testnum , correct , input ) \
0 commit comments