1 /* { dg-skip-if "test is for emulation" { hard_dfp } } */
3 /* Touch tests that check for raising appropriate exceptions for binary
4 arithmetic operations on decimal float values. */
8 volatile _Decimal32 a32
, b32
, c32
;
9 volatile _Decimal64 a64
, b64
, c64
;
10 volatile _Decimal128 a128
, b128
, c128
;
15 BINOP (100, /, a32
, 2.0df
, b32
, 0.df
, c32
, FE_DIVBYZERO
)
16 BINOP (101, /, a64
, 2.0dd
, b64
, 0.dd
, c64
, FE_DIVBYZERO
)
17 BINOP (102, /, a128
, 2.0dl
, b128
, 0.dl
, c128
, FE_DIVBYZERO
)
19 BINOP (200, /, a32
, 0.df
, b32
, 0.df
, c32
, FE_INVALID
)
20 BINOP (201, /, a64
, 0.dd
, b64
, 0.dd
, c64
, FE_INVALID
)
21 BINOP (202, /, a128
, 0.dl
, b128
, 0.dl
, c128
, FE_INVALID
)
22 BINOP (203, /, a32
, inf32
, b32
, inf32
, c32
, FE_INVALID
)
23 BINOP (204, /, a64
, inf64
, b64
, inf64
, c64
, FE_INVALID
)
24 BINOP (205, /, a128
, inf128
, b128
, inf128
, c128
, FE_INVALID
)
25 BINOP (206, *, a32
, 0.df
, b32
, __builtin_infd32(), c32
, FE_INVALID
)
26 BINOP (207, *, a32
, __builtin_infd32(), b32
, 0.df
, c32
, FE_INVALID
)
27 BINOP (208, *, a64
, 0.df
, b64
, __builtin_infd64(), c64
, FE_INVALID
)
28 BINOP (209, *, a64
, __builtin_infd64(), b64
, 0.df
, c64
, FE_INVALID
)
29 BINOP (210, *, a128
, 0.df
, b128
, __builtin_infd128(), c128
, FE_INVALID
)
30 BINOP (211, *, a128
, __builtin_infd128(), b128
, 0.df
, c128
, FE_INVALID
)
31 BINOP (212, +, a32
, inf32
, b32
, -inf32
, c32
, FE_INVALID
)
32 BINOP (213, +, a64
, inf64
, b64
, -inf64
, c64
, FE_INVALID
)
33 BINOP (214, +, a128
, inf128
, b128
, -inf128
, c128
, FE_INVALID
)
34 BINOP (215, -, a32
, inf32
, b32
, inf32
, c32
, FE_INVALID
)
35 BINOP (216, -, a64
, inf64
, b64
, inf64
, c64
, FE_INVALID
)
36 BINOP (217, -, a128
, inf128
, b128
, inf128
, c128
, FE_INVALID
)
38 BINOP (300, /, a32
, 9.9e94df
, b32
, 1.e
-3df
, c32
, FE_OVERFLOW
|FE_INEXACT
)
39 BINOP (301, /, a64
, 9.9e382dd
, b64
, 1.e
-3dd
, c64
, FE_OVERFLOW
|FE_INEXACT
)
40 BINOP (302, /, a128
, 9.9e6142dl
, b128
, 1.e
-3dl
, c128
, FE_OVERFLOW
|FE_INEXACT
)
41 BINOP (303, +, a32
, 9.9e96df
, b32
, 1.e96df
, c32
, FE_OVERFLOW
|FE_INEXACT
)
42 BINOP (304, +, a64
, 9.9e384dd
, b64
, 1.e384dd
, c64
, FE_OVERFLOW
|FE_INEXACT
)
43 BINOP (305, +, a128
, 9.9e6144dl
, b128
, 1.e6144dl
, c128
, FE_OVERFLOW
|FE_INEXACT
)
45 BINOP (400, /, a32
, 1.e
-3df
, b32
, 9.9e94df
, c32
, FE_UNDERFLOW
|FE_INEXACT
)
46 BINOP (401, /, a64
, 1.e
-3dd
, b64
, 9.9e382dd
, c64
, FE_UNDERFLOW
|FE_INEXACT
)
47 BINOP (402, /, a128
, 1.e
-3dl
, b128
, 9.9e6142dl
, c128
, FE_UNDERFLOW
|FE_INEXACT
)
48 BINOP (403, *, a32
, 1.e
-95df
, b32
, 1.e
-7df
, c32
, FE_UNDERFLOW
|FE_INEXACT
)
49 BINOP (404, *, a64
, 1.e
-383dd
, b64
, 1.e
-16dd
, c64
, FE_UNDERFLOW
|FE_INEXACT
)
50 BINOP (405, *, a128
, 1.e
-6143dl
, b128
, 1.e
-34dl
, c128
, FE_UNDERFLOW
|FE_INEXACT
)
52 BINOP (500, /, a32
, 1.df
, b32
, 3.df
, c32
, FE_INEXACT
)
53 BINOP (501, /, a64
, 1.dd
, b64
, 3.dd
, c64
, FE_INEXACT
)
54 BINOP (502, /, a128
, 1.dl
, b128
, 3.dl
, c128
, FE_INEXACT
)
59 inf32
= __builtin_infd32();
60 inf64
= __builtin_infd64();
61 inf128
= __builtin_infd128();