|
6 | 6 | ! |
7 | 7 | !===------------------------------------------------------------------------===! |
8 | 8 |
|
| 9 | +include '../include/flang/Runtime/magic-numbers.h' |
| 10 | + |
9 | 11 | ! These naming shenanigans prevent names from Fortran intrinsic modules |
10 | 12 | ! from being usable on INTRINSIC statements, and force the program |
11 | 13 | ! to USE the standard intrinsic modules in order to access the |
|
49 | 51 | integer(kind=int64), private :: __count |
50 | 52 | end type |
51 | 53 |
|
| 54 | + type, public :: __builtin_ieee_flag_type |
| 55 | + integer(kind=1), private :: flag = 0 |
| 56 | + end type |
| 57 | + |
| 58 | + type(__builtin_ieee_flag_type), parameter, public :: & |
| 59 | + __builtin_ieee_invalid = & |
| 60 | + __builtin_ieee_flag_type(_FORTRAN_RUNTIME_IEEE_INVALID), & |
| 61 | + __builtin_ieee_overflow = & |
| 62 | + __builtin_ieee_flag_type(_FORTRAN_RUNTIME_IEEE_OVERFLOW), & |
| 63 | + __builtin_ieee_divide_by_zero = & |
| 64 | + __builtin_ieee_flag_type(_FORTRAN_RUNTIME_IEEE_DIVIDE_BY_ZERO), & |
| 65 | + __builtin_ieee_underflow = & |
| 66 | + __builtin_ieee_flag_type(_FORTRAN_RUNTIME_IEEE_UNDERFLOW), & |
| 67 | + __builtin_ieee_inexact = & |
| 68 | + __builtin_ieee_flag_type(_FORTRAN_RUNTIME_IEEE_INEXACT), & |
| 69 | + __builtin_ieee_denorm = & ! extension |
| 70 | + __builtin_ieee_flag_type(_FORTRAN_RUNTIME_IEEE_DENORM) |
| 71 | + |
| 72 | + type, public :: __builtin_ieee_round_type |
| 73 | + integer(kind=1), private :: mode = 0 |
| 74 | + end type |
| 75 | + |
| 76 | + type(__builtin_ieee_round_type), parameter, public :: & |
| 77 | + __builtin_ieee_to_zero = & |
| 78 | + __builtin_ieee_round_type(_FORTRAN_RUNTIME_IEEE_TO_ZERO), & |
| 79 | + __builtin_ieee_nearest = & |
| 80 | + __builtin_ieee_round_type(_FORTRAN_RUNTIME_IEEE_NEAREST), & |
| 81 | + __builtin_ieee_up = & |
| 82 | + __builtin_ieee_round_type(_FORTRAN_RUNTIME_IEEE_UP), & |
| 83 | + __builtin_ieee_down = & |
| 84 | + __builtin_ieee_round_type(_FORTRAN_RUNTIME_IEEE_DOWN), & |
| 85 | + __builtin_ieee_away = & |
| 86 | + __builtin_ieee_round_type(_FORTRAN_RUNTIME_IEEE_AWAY), & |
| 87 | + __builtin_ieee_other = & |
| 88 | + __builtin_ieee_round_type(_FORTRAN_RUNTIME_IEEE_OTHER) |
| 89 | + |
52 | 90 | type, public :: __builtin_team_type |
53 | 91 | integer(kind=int64), private :: __id |
54 | 92 | end type |
|
74 | 112 | intrinsic :: __builtin_ieee_selected_real_kind |
75 | 113 | intrinsic :: __builtin_ieee_support_datatype, & |
76 | 114 | __builtin_ieee_support_denormal, __builtin_ieee_support_divide, & |
| 115 | + __builtin_ieee_support_flag, __builtin_ieee_support_halting, & |
77 | 116 | __builtin_ieee_support_inf, __builtin_ieee_support_io, & |
78 | | - __builtin_ieee_support_nan, __builtin_ieee_support_sqrt, & |
| 117 | + __builtin_ieee_support_nan, __builtin_ieee_support_rounding, & |
| 118 | + __builtin_ieee_support_sqrt, & |
79 | 119 | __builtin_ieee_support_standard, __builtin_ieee_support_subnormal, & |
80 | 120 | __builtin_ieee_support_underflow_control |
81 | 121 | public :: __builtin_fma |
|
87 | 127 | public :: __builtin_ieee_selected_real_kind |
88 | 128 | public :: __builtin_ieee_support_datatype, & |
89 | 129 | __builtin_ieee_support_denormal, __builtin_ieee_support_divide, & |
| 130 | + __builtin_ieee_support_flag, __builtin_ieee_support_halting, & |
90 | 131 | __builtin_ieee_support_inf, __builtin_ieee_support_io, & |
91 | | - __builtin_ieee_support_nan, __builtin_ieee_support_sqrt, & |
| 132 | + __builtin_ieee_support_nan, __builtin_ieee_support_rounding, & |
| 133 | + __builtin_ieee_support_sqrt, & |
92 | 134 | __builtin_ieee_support_standard, __builtin_ieee_support_subnormal, & |
93 | 135 | __builtin_ieee_support_underflow_control |
94 | 136 |
|
|
0 commit comments