1/* { dg-skip-if "test is for emulation" { hard_dfp } { "*" } { "" } } */ 2 3/* Touch tests that check for raising appropriate exceptions for binary 4 arithmetic operations on decimal float values. */ 5 6#include "fe-check.h" 7 8volatile _Decimal32 a32, b32, c32; 9volatile _Decimal64 a64, b64, c64; 10volatile _Decimal128 a128, b128, c128; 11_Decimal32 inf32; 12_Decimal64 inf64; 13_Decimal128 inf128; 14 15BINOP (100, /, a32, 2.0df, b32, 0.df, c32, FE_DIVBYZERO) 16BINOP (101, /, a64, 2.0dd, b64, 0.dd, c64, FE_DIVBYZERO) 17BINOP (102, /, a128, 2.0dl, b128, 0.dl, c128, FE_DIVBYZERO) 18 19BINOP (200, /, a32, 0.df, b32, 0.df, c32, FE_INVALID) 20BINOP (201, /, a64, 0.dd, b64, 0.dd, c64, FE_INVALID) 21BINOP (202, /, a128, 0.dl, b128, 0.dl, c128, FE_INVALID) 22BINOP (203, /, a32, inf32, b32, inf32, c32, FE_INVALID) 23BINOP (204, /, a64, inf64, b64, inf64, c64, FE_INVALID) 24BINOP (205, /, a128, inf128, b128, inf128, c128, FE_INVALID) 25BINOP (206, *, a32, 0.df, b32, __builtin_infd32(), c32, FE_INVALID) 26BINOP (207, *, a32, __builtin_infd32(), b32, 0.df, c32, FE_INVALID) 27BINOP (208, *, a64, 0.df, b64, __builtin_infd64(), c64, FE_INVALID) 28BINOP (209, *, a64, __builtin_infd64(), b64, 0.df, c64, FE_INVALID) 29BINOP (210, *, a128, 0.df, b128, __builtin_infd128(), c128, FE_INVALID) 30BINOP (211, *, a128, __builtin_infd128(), b128, 0.df, c128, FE_INVALID) 31BINOP (212, +, a32, inf32, b32, -inf32, c32, FE_INVALID) 32BINOP (213, +, a64, inf64, b64, -inf64, c64, FE_INVALID) 33BINOP (214, +, a128, inf128, b128, -inf128, c128, FE_INVALID) 34BINOP (215, -, a32, inf32, b32, inf32, c32, FE_INVALID) 35BINOP (216, -, a64, inf64, b64, inf64, c64, FE_INVALID) 36BINOP (217, -, a128, inf128, b128, inf128, c128, FE_INVALID) 37 38BINOP (300, /, a32, 9.9e94df, b32, 1.e-3df, c32, FE_OVERFLOW|FE_INEXACT) 39BINOP (301, /, a64, 9.9e382dd, b64, 1.e-3dd, c64, FE_OVERFLOW|FE_INEXACT) 40BINOP (302, /, a128, 9.9e6142dl, b128, 1.e-3dl, c128, FE_OVERFLOW|FE_INEXACT) 41BINOP (303, +, a32, 9.9e96df, b32, 1.e96df, c32, FE_OVERFLOW|FE_INEXACT) 42BINOP (304, +, a64, 9.9e384dd, b64, 1.e384dd, c64, FE_OVERFLOW|FE_INEXACT) 43BINOP (305, +, a128, 9.9e6144dl, b128, 1.e6144dl, c128, FE_OVERFLOW|FE_INEXACT) 44 45BINOP (400, /, a32, 1.e-3df, b32, 9.9e94df, c32, FE_UNDERFLOW|FE_INEXACT) 46BINOP (401, /, a64, 1.e-3dd, b64, 9.9e382dd, c64, FE_UNDERFLOW|FE_INEXACT) 47BINOP (402, /, a128, 1.e-3dl, b128, 9.9e6142dl, c128, FE_UNDERFLOW|FE_INEXACT) 48BINOP (403, *, a32, 1.e-95df, b32, 1.e-7df, c32, FE_UNDERFLOW|FE_INEXACT) 49BINOP (404, *, a64, 1.e-383dd, b64, 1.e-16dd, c64, FE_UNDERFLOW|FE_INEXACT) 50BINOP (405, *, a128, 1.e-6143dl, b128, 1.e-34dl, c128, FE_UNDERFLOW|FE_INEXACT) 51 52BINOP (500, /, a32, 1.df, b32, 3.df, c32, FE_INEXACT) 53BINOP (501, /, a64, 1.dd, b64, 3.dd, c64, FE_INEXACT) 54BINOP (502, /, a128, 1.dl, b128, 3.dl, c128, FE_INEXACT) 55 56int 57main () 58{ 59 inf32 = __builtin_infd32(); 60 inf64 = __builtin_infd64(); 61 inf128 = __builtin_infd128(); 62 63 binop_100 (); 64 binop_101 (); 65 binop_102 (); 66 67 binop_200 (); 68 binop_201 (); 69 binop_202 (); 70 binop_203 (); 71 binop_204 (); 72 binop_205 (); 73 binop_206 (); 74 binop_207 (); 75 binop_208 (); 76 binop_209 (); 77 binop_210 (); 78 binop_211 (); 79 binop_212 (); 80 binop_213 (); 81 binop_214 (); 82 binop_215 (); 83 binop_216 (); 84 binop_217 (); 85 86 binop_300 (); 87 binop_301 (); 88 binop_302 (); 89 binop_303 (); 90 binop_304 (); 91 binop_305 (); 92 93 binop_400 (); 94 binop_401 (); 95 binop_402 (); 96 binop_403 (); 97 binop_404 (); 98 binop_405 (); 99 100 binop_500 (); 101 binop_501 (); 102 binop_502 (); 103 104 FINISH 105} 106