xref: /llvm-project/flang/test/Evaluate/fold-ieee.f90 (revision c28a7c1efd89d3dbee5f7212313f836855dd08fd)
1! RUN: %python %S/test_folding.py %s %flang_fc1
2module m
3  use ieee_arithmetic
4  use ieee_exceptions
5  logical, parameter :: test_dt_all = ieee_support_datatype()
6  logical, parameter :: test_dt_4 = ieee_support_datatype(1.)
7  logical, parameter :: test_dt_8 = ieee_support_datatype(1.d0)
8  logical, parameter :: test_de_all = ieee_support_denormal()
9  logical, parameter :: test_de_4 = ieee_support_denormal(1.)
10  logical, parameter :: test_de_8 = ieee_support_denormal(1.d0)
11  logical, parameter :: test_di_all = ieee_support_divide()
12  logical, parameter :: test_di_4 = ieee_support_divide(1.)
13  logical, parameter :: test_di_8 = ieee_support_divide(1.d0)
14  logical, parameter :: test_fl_in_all = ieee_support_flag(ieee_invalid)
15  logical, parameter :: test_fl_in_4 = ieee_support_flag(ieee_invalid, 1.)
16  logical, parameter :: test_fl_in_8 = ieee_support_flag(ieee_invalid, 1.d0)
17  logical, parameter :: test_fl_ov_all = ieee_support_flag(ieee_overflow)
18  logical, parameter :: test_fl_ov_4 = ieee_support_flag(ieee_overflow, 1.)
19  logical, parameter :: test_fl_ov_8 = ieee_support_flag(ieee_overflow, 1.d0)
20  logical, parameter :: test_fl_d0_all = ieee_support_flag(ieee_divide_by_zero)
21  logical, parameter :: test_fl_d0_4 = ieee_support_flag(ieee_divide_by_zero, 1.)
22  logical, parameter :: test_fl_d0_8 = ieee_support_flag(ieee_divide_by_zero, 1.d0)
23  logical, parameter :: test_fl_un_all = ieee_support_flag(ieee_underflow)
24  logical, parameter :: test_fl_un_4 = ieee_support_flag(ieee_underflow, 1.)
25  logical, parameter :: test_fl_un_8 = ieee_support_flag(ieee_underflow, 1.d0)
26  logical, parameter :: test_fl_ix_all = ieee_support_flag(ieee_inexact)
27  logical, parameter :: test_fl_ix_4 = ieee_support_flag(ieee_inexact, 1.)
28  logical, parameter :: test_fl_ix_8 = ieee_support_flag(ieee_inexact, 1.d0)
29#if __x86_64__
30  logical, parameter :: test_halt_in = ieee_support_halting(ieee_invalid)
31  logical, parameter :: test_halt_ov = ieee_support_halting(ieee_overflow)
32  logical, parameter :: test_halt_d0 = ieee_support_halting(ieee_divide_by_zero)
33  logical, parameter :: test_halt_un = ieee_support_halting(ieee_underflow)
34  logical, parameter :: test_halt_ix = ieee_support_halting(ieee_inexact)
35#endif
36  logical, parameter :: test_inf_all = ieee_support_inf()
37  logical, parameter :: test_inf_4 = ieee_support_inf(1.)
38  logical, parameter :: test_inf_8 = ieee_support_inf(1.d0)
39  logical, parameter :: test_io_all = ieee_support_io()
40  logical, parameter :: test_io_4 = ieee_support_io(1.)
41  logical, parameter :: test_io_8 = ieee_support_io(1.d0)
42  logical, parameter :: test_rd_0_all = ieee_support_rounding(ieee_to_zero)
43  logical, parameter :: test_rd_0_4 = ieee_support_rounding(ieee_to_zero, 1.)
44  logical, parameter :: test_rd_0_8 = ieee_support_rounding(ieee_to_zero, 1.d0)
45  logical, parameter :: test_rd_n_all = ieee_support_rounding(ieee_nearest)
46  logical, parameter :: test_rd_n_4 = ieee_support_rounding(ieee_nearest, 1.)
47  logical, parameter :: test_rd_n_8 = ieee_support_rounding(ieee_nearest, 1.d0)
48  logical, parameter :: test_rd_d_all = ieee_support_rounding(ieee_down)
49  logical, parameter :: test_rd_d_4 = ieee_support_rounding(ieee_down, 1.)
50  logical, parameter :: test_rd_d_8 = ieee_support_rounding(ieee_down, 1.d0)
51  logical, parameter :: test_rd_u_all = ieee_support_rounding(ieee_up)
52  logical, parameter :: test_rd_u_4 = ieee_support_rounding(ieee_up, 1.)
53  logical, parameter :: test_rd_u_8 = ieee_support_rounding(ieee_up, 1.d0)
54  logical, parameter :: test_sq_all = ieee_support_sqrt()
55  logical, parameter :: test_sq_4 = ieee_support_sqrt(1.)
56  logical, parameter :: test_sq_8 = ieee_support_sqrt(1.d0)
57  logical, parameter :: test_std_all = ieee_support_standard()
58  logical, parameter :: test_std_4 = ieee_support_standard(1.)
59  logical, parameter :: test_std_8 = ieee_support_standard(1.d0)
60  logical, parameter :: test_sn_all = ieee_support_subnormal()
61  logical, parameter :: test_sn_4 = ieee_support_subnormal(1.)
62  logical, parameter :: test_sn_8 = ieee_support_subnormal(1.d0)
63#if __x86_64__
64  logical, parameter :: test_uc_all = .not. ieee_support_underflow_control()
65  logical, parameter :: test_uc_4 = ieee_support_underflow_control(1.)
66  logical, parameter :: test_uc_8 = ieee_support_underflow_control(1.d0)
67#endif
68end
69