|
73 | 73 | X##_c = FP_CLS_NAN; \
|
74 | 74 | /* Check for signaling NaN */ \
|
75 | 75 | if (!(_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs)) \
|
76 |
| - FP_SET_EXCEPTION(FP_EX_INVALID); \ |
| 76 | + FP_SET_EXCEPTION(FP_EX_INVALID | FP_EX_INVALID_SNAN); \ |
77 | 77 | } \
|
78 | 78 | break; \
|
79 | 79 | } \
|
@@ -324,7 +324,7 @@ do { \
|
324 | 324 | _FP_FRAC_SET_##wc(R, _FP_NANFRAC_##fs); \
|
325 | 325 | R##_s = _FP_NANSIGN_##fs; \
|
326 | 326 | R##_c = FP_CLS_NAN; \
|
327 |
| - FP_SET_EXCEPTION(FP_EX_INVALID); \ |
| 327 | + FP_SET_EXCEPTION(FP_EX_INVALID | FP_EX_INVALID_ISI); \ |
328 | 328 | break; \
|
329 | 329 | } \
|
330 | 330 | /* FALLTHRU */ \
|
@@ -431,7 +431,7 @@ do { \
|
431 | 431 | R##_s = _FP_NANSIGN_##fs; \
|
432 | 432 | R##_c = FP_CLS_NAN; \
|
433 | 433 | _FP_FRAC_SET_##wc(R, _FP_NANFRAC_##fs); \
|
434 |
| - FP_SET_EXCEPTION(FP_EX_INVALID); \ |
| 434 | + FP_SET_EXCEPTION(FP_EX_INVALID | FP_EX_INVALID_IMZ);\ |
435 | 435 | break; \
|
436 | 436 | \
|
437 | 437 | default: \
|
@@ -490,11 +490,15 @@ do { \
|
490 | 490 | break; \
|
491 | 491 | \
|
492 | 492 | case _FP_CLS_COMBINE(FP_CLS_INF,FP_CLS_INF): \
|
| 493 | + R##_s = _FP_NANSIGN_##fs; \ |
| 494 | + R##_c = FP_CLS_NAN; \ |
| 495 | + _FP_FRAC_SET_##wc(R, _FP_NANFRAC_##fs); \ |
| 496 | + FP_SET_EXCEPTION(FP_EX_INVALID | FP_EX_INVALID_IDI);\ |
493 | 497 | case _FP_CLS_COMBINE(FP_CLS_ZERO,FP_CLS_ZERO): \
|
494 | 498 | R##_s = _FP_NANSIGN_##fs; \
|
495 | 499 | R##_c = FP_CLS_NAN; \
|
496 | 500 | _FP_FRAC_SET_##wc(R, _FP_NANFRAC_##fs); \
|
497 |
| - FP_SET_EXCEPTION(FP_EX_INVALID); \ |
| 501 | + FP_SET_EXCEPTION(FP_EX_INVALID | FP_EX_INVALID_ZDZ);\ |
498 | 502 | break; \
|
499 | 503 | \
|
500 | 504 | default: \
|
|
0 commit comments