@@ -161,19 +161,33 @@ end function ieee_round_ne
161
161
G(1 ) G(2 ) G(4 ) G(8 ) G(16 )
162
162
#define SPECIFICS_L(G) \
163
163
G(1 ) G(2 ) G(4 ) G(8 )
164
+
165
+ #if FLANG_SUPPORT_R16
164
166
#if __x86_64__
165
167
#define SPECIFICS_R(G) \
166
168
G(2 ) G(3 ) G(4 ) G(8 ) G(10 ) G(16 )
167
169
#else
168
170
#define SPECIFICS_R(G) \
169
171
G(2 ) G(3 ) G(4 ) G(8 ) G(16 )
170
172
#endif
173
+ #else
174
+ #if __x86_64__
175
+ #define SPECIFICS_R(G) \
176
+ G(2 ) G(3 ) G(4 ) G(8 ) G(10 )
177
+ #else
178
+ #define SPECIFICS_R(G) \
179
+ G(2 ) G(3 ) G(4 ) G(8 )
180
+ #endif
181
+ #endif
182
+
171
183
#define SPECIFICS_II(G) \
172
184
G(1 ,1 ) G(1 ,2 ) G(1 ,4 ) G(1 ,8 ) G(1 ,16 ) \
173
185
G(2 ,1 ) G(2 ,2 ) G(2 ,4 ) G(2 ,8 ) G(2 ,16 ) \
174
186
G(4 ,1 ) G(4 ,2 ) G(4 ,4 ) G(4 ,8 ) G(4 ,16 ) \
175
187
G(8 ,1 ) G(8 ,2 ) G(8 ,4 ) G(8 ,8 ) G(8 ,16 ) \
176
188
G(16 ,1 ) G(16 ,2 ) G(16 ,4 ) G(16 ,8 ) G(16 ,16 )
189
+
190
+ #if FLANG_SUPPORT_R16
177
191
#if __x86_64__
178
192
#define SPECIFICS_RI(G) \
179
193
G(2 ,1 ) G(2 ,2 ) G(2 ,4 ) G(2 ,8 ) G(2 ,16 ) \
@@ -190,7 +204,24 @@ end function ieee_round_ne
190
204
G(8 ,1 ) G(8 ,2 ) G(8 ,4 ) G(8 ,8 ) G(8 ,16 ) \
191
205
G(16 ,1 ) G(16 ,2 ) G(16 ,4 ) G(16 ,8 ) G(16 ,16 )
192
206
#endif
207
+ #else
208
+ #if __x86_64__
209
+ #define SPECIFICS_RI(G) \
210
+ G(2 ,1 ) G(2 ,2 ) G(2 ,4 ) G(2 ,8 ) \
211
+ G(3 ,1 ) G(3 ,2 ) G(3 ,4 ) G(3 ,8 ) \
212
+ G(4 ,1 ) G(4 ,2 ) G(4 ,4 ) G(4 ,8 ) \
213
+ G(8 ,1 ) G(8 ,2 ) G(8 ,4 ) G(8 ,8 ) \
214
+ G(10 ,1 ) G(10 ,2 ) G(10 ,4 ) G(10 ,8 )
215
+ #else
216
+ #define SPECIFICS_RI(G) \
217
+ G(2 ,1 ) G(2 ,2 ) G(2 ,4 ) G(2 ,8 ) \
218
+ G(3 ,1 ) G(3 ,2 ) G(3 ,4 ) G(3 ,8 ) \
219
+ G(4 ,1 ) G(4 ,2 ) G(4 ,4 ) G(4 ,8 ) \
220
+ G(8 ,1 ) G(8 ,2 ) G(8 ,4 ) G(8 ,8 )
221
+ #endif
222
+ #endif
193
223
224
+ #if FLANG_SUPPORT_R16
194
225
#if __x86_64__
195
226
#define SPECIFICS_RR(G) \
196
227
G(2 ,2 ) G(2 ,3 ) G(2 ,4 ) G(2 ,8 ) G(2 ,10 ) G(2 ,16 ) \
@@ -207,6 +238,22 @@ end function ieee_round_ne
207
238
G(8 ,2 ) G(8 ,3 ) G(8 ,4 ) G(8 ,8 ) G(8 ,16 ) \
208
239
G(16 ,2 ) G(16 ,3 ) G(16 ,4 ) G(16 ,8 ) G(16 ,16 )
209
240
#endif
241
+ #else
242
+ #if __x86_64__
243
+ #define SPECIFICS_RR(G) \
244
+ G(2 ,2 ) G(2 ,3 ) G(2 ,4 ) G(2 ,8 ) G(2 ,10 ) \
245
+ G(3 ,2 ) G(3 ,3 ) G(3 ,4 ) G(3 ,8 ) G(3 ,10 ) \
246
+ G(4 ,2 ) G(4 ,3 ) G(4 ,4 ) G(4 ,8 ) G(4 ,10 ) \
247
+ G(8 ,2 ) G(8 ,3 ) G(8 ,4 ) G(8 ,8 ) G(8 ,10 ) \
248
+ G(10 ,2 ) G(10 ,3 ) G(10 ,4 ) G(10 ,8 ) G(10 ,10 )
249
+ #else
250
+ #define SPECIFICS_RR(G) \
251
+ G(2 ,2 ) G(2 ,3 ) G(2 ,4 ) G(2 ,8 ) \
252
+ G(3 ,2 ) G(3 ,3 ) G(3 ,4 ) G(3 ,8 ) \
253
+ G(4 ,2 ) G(4 ,3 ) G(4 ,4 ) G(4 ,8 ) \
254
+ G(8 ,2 ) G(8 ,3 ) G(8 ,4 ) G(8 ,8 )
255
+ #endif
256
+ #endif
210
257
211
258
#define IEEE_CLASS_R(XKIND) \
212
259
elemental type (ieee_class_type) function ieee_class_a##XKIND(x); \
@@ -462,8 +509,10 @@ end function ieee_real_a##AKIND##_i##KKIND;
462
509
interface ieee_real
463
510
SPECIFICS_I(IEEE_REAL_I)
464
511
SPECIFICS_R(IEEE_REAL_R)
512
+ #if FLANG_SUPPORT_R16
465
513
SPECIFICS_II(IEEE_REAL_II)
466
514
SPECIFICS_RI(IEEE_REAL_RI)
515
+ #endif
467
516
end interface ieee_real
468
517
public :: ieee_real
469
518
#undef IEEE_REAL_I
0 commit comments