00001 float intr_wrap_000 (float p1) { return acosf(p1); }
00002 double intr_wrap_001 (double p1) { return acos(p1); }
00003 long double intr_wrap_002 (long double p1) { return __qacos(p1); }
00004 long double intr_wrap_003 (long double p1) { return __qacos(p1); }
00005 float intr_wrap_004 (float p1) { return __racosd(p1); }
00006 double intr_wrap_005 (double p1) { return __dacosd(p1); }
00007 long double intr_wrap_006 (long double p1) { return __q_acosd(&p1); }
00008 float intr_wrap_007 (float p1) { return asinf(p1); }
00009 double intr_wrap_008 (double p1) { return asin(p1); }
00010 long double intr_wrap_009 (long double p1) { return __qasin(p1); }
00011 long double intr_wrap_010 (long double p1) { return __qasin(p1); }
00012 float intr_wrap_011 (float p1) { return __rasind(p1); }
00013 double intr_wrap_012 (double p1) { return __dasind(p1); }
00014 long double intr_wrap_013 (long double p1) { return __q_asind(&p1); }
00015 float intr_wrap_014 (float p1) { return atanf(p1); }
00016 double intr_wrap_015 (double p1) { return atan(p1); }
00017 long double intr_wrap_016 (long double p1) { return __qatan(p1); }
00018 float intr_wrap_017 (float p1) { return __ratand(p1); }
00019 double intr_wrap_018 (double p1) { return __datand(p1); }
00020 long double intr_wrap_019 (long double p1) { return __q_atand(&p1); }
00021 float intr_wrap_020 (float p1, float p2) { return atan2f(p1, p2); }
00022 double intr_wrap_021 (double p1, double p2) { return atan2(p1, p2); }
00023 long double intr_wrap_022 (long double p1, long double p2) { return __qatan2(p1, p2); }
00024 float intr_wrap_023 (float p1, float p2) { return __ratn2d(p1, p2); }
00025 double intr_wrap_024 (double p1, double p2) { return __datn2d(p1, p2); }
00026 long double intr_wrap_025 (long double p1, long double p2) { return __qatan2d(p1, p2); }
00027 float intr_wrap_026 (float p1) { return cosf(p1); }
00028 double intr_wrap_027 (double p1) { return cos(p1); }
00029 long double intr_wrap_028 (long double p1) { return __qcos(p1); }
00030 struct _cpx_float intr_wrap_029 (struct _cpx_float p1) { return __ccos(p1.real, p1.imag); }
00031 struct _cpx_double intr_wrap_030 (struct _cpx_double p1) { return __zcos(p1.dreal, p1.dimag); }
00032 struct _cpx_double intr_wrap_031 (struct _cpx_double p1) { return __zcos(p1.dreal, p1.dimag); }
00033 struct _cpx_long_double intr_wrap_032 (struct _cpx_long_double p1) { return __cqcos(p1.qreal, p1.qimag); }
00034 float intr_wrap_033 (float p1) { return __rcosd(p1); }
00035 double intr_wrap_034 (double p1) { return __dcosd(p1); }
00036 long double intr_wrap_035 (long double p1) { return __q_cosd(&p1); }
00037 float intr_wrap_036 (float p1) { return coshf(p1); }
00038 double intr_wrap_037 (double p1) { return cosh(p1); }
00039 long double intr_wrap_038 (long double p1) { return __qcosh(p1); }
00040 float intr_wrap_039 (float p1) { return expf(p1); }
00041 double intr_wrap_040 (double p1) { return exp(p1); }
00042 long double intr_wrap_041 (long double p1) { return __qexp(p1); }
00043 struct _cpx_float intr_wrap_042 (struct _cpx_float p1) { return __cexp(p1.real, p1.imag); }
00044 struct _cpx_double intr_wrap_043 (struct _cpx_double p1) { return __zexp(p1.dreal, p1.dimag); }
00045 struct _cpx_double intr_wrap_044 (struct _cpx_double p1) { return __zexp(p1.dreal, p1.dimag); }
00046 struct _cpx_long_double intr_wrap_045 (struct _cpx_long_double p1) { return __cqexp(p1.qreal, p1.qimag); }
00047
00048 float intr_wrap_047 (float p1) { return logf(p1); }
00049 double intr_wrap_048 (double p1) { return log(p1); }
00050 long double intr_wrap_049 (long double p1) { return __qlog(p1); }
00051 struct _cpx_float intr_wrap_050 (struct _cpx_float p1) { return __clog(p1.real, p1.imag); }
00052 struct _cpx_double intr_wrap_051 (struct _cpx_double p1) { return __zlog(p1.dreal, p1.dimag); }
00053 struct _cpx_double intr_wrap_052 (struct _cpx_double p1) { return __zlog(p1.dreal, p1.dimag); }
00054 struct _cpx_long_double intr_wrap_053 (struct _cpx_long_double p1) { return __cqlog(p1.qreal, p1.qimag); }
00055
00056 float intr_wrap_055 (float p1) { return log10f(p1); }
00057 double intr_wrap_056 (double p1) { return log10(p1); }
00058 long double intr_wrap_057 (long double p1) { return log10l(p1); }
00059 float intr_wrap_058 (float p1) { return sinf(p1); }
00060 double intr_wrap_059 (double p1) { return sin(p1); }
00061 long double intr_wrap_060 (long double p1) { return __qsin(p1); }
00062 struct _cpx_float intr_wrap_061 (struct _cpx_float p1) { return __csin(p1.real, p1.imag); }
00063 struct _cpx_double intr_wrap_062 (struct _cpx_double p1) { return __zsin(p1.dreal, p1.dimag); }
00064 struct _cpx_double intr_wrap_063 (struct _cpx_double p1) { return __zsin(p1.dreal, p1.dimag); }
00065 struct _cpx_long_double intr_wrap_064 (struct _cpx_long_double p1) { return __cqsin(p1.qreal, p1.qimag); }
00066 float intr_wrap_065 (float p1) { return __rsind(p1); }
00067 double intr_wrap_066 (double p1) { return __dsind(p1); }
00068 long double intr_wrap_067 (long double p1) { return __q_sind(&p1); }
00069 float intr_wrap_068 (float p1) { return sinhf(p1); }
00070 double intr_wrap_069 (double p1) { return sinh(p1); }
00071 long double intr_wrap_070 (long double p1) { return __qsinh(p1); }
00072 float intr_wrap_071 (float p1) { return sqrtf(p1); }
00073 double intr_wrap_072 (double p1) { return sqrt(p1); }
00074 long double intr_wrap_073 (long double p1) { return __qsqrt(p1); }
00075 struct _cpx_float intr_wrap_074 (struct _cpx_float p1) { return __csqrt(p1.real, p1.imag); }
00076 struct _cpx_double intr_wrap_075 (struct _cpx_double p1) { return __zsqrt(p1.dreal, p1.dimag); }
00077 struct _cpx_double intr_wrap_076 (struct _cpx_double p1) { return __zsqrt(p1.dreal, p1.dimag); }
00078 struct _cpx_long_double intr_wrap_077 (struct _cpx_long_double p1) { return __cqsqrt(p1.qreal, p1.qimag); }
00079 float intr_wrap_078 (float p1) { return tanf(p1); }
00080 double intr_wrap_079 (double p1) { return tan(p1); }
00081 long double intr_wrap_080 (long double p1) { return __qtan(p1); }
00082 float intr_wrap_081 (float p1) { return __rtand(p1); }
00083 double intr_wrap_082 (double p1) { return __dtand(p1); }
00084 long double intr_wrap_083 (long double p1) { return __q_tand(&p1); }
00085 float intr_wrap_084 (float p1) { return tanhf(p1); }
00086 double intr_wrap_085 (double p1) { return tanh(p1); }
00087 long double intr_wrap_086 (long double p1) { return __qtanh(p1); }
00088 float intr_wrap_087 (float p1) { return r_abs(&p1); }
00089 signed char intr_wrap_088 (signed char p1) { return b_abs(&p1); }
00090 short intr_wrap_089 (short p1) { return h_abs(&p1); }
00091 int intr_wrap_090 (int p1) { return i_abs(&p1); }
00092 long long intr_wrap_091 (long long p1) { return l_abs(&p1); }
00093 double intr_wrap_092 (double p1) { return d_abs(&p1); }
00094 long double intr_wrap_093 (long double p1) { return __qabs(p1); }
00095 float intr_wrap_094 (struct _cpx_float p1) { return __c8abs(p1.real, p1.imag); }
00096 double intr_wrap_095 (struct _cpx_double p1) { return __zabs(p1.dreal, p1.dimag); }
00097 double intr_wrap_096 (struct _cpx_double p1) { return __zabs(p1.dreal, p1.dimag); }
00098 long double intr_wrap_097 (struct _cpx_long_double p1) { return __cqabs(p1.qreal, p1.qimag); }
00099 int intr_wrap_098 (int p1) { return i_abs(&p1); }
00100 signed char intr_wrap_099 (signed char p1) { return b_abs(&p1); }
00101 short intr_wrap_100 (short p1) { return h_abs(&p1); }
00102 short intr_wrap_101 (short p1) { return h_abs(&p1); }
00103 int intr_wrap_102 (int p1) { return i_abs(&p1); }
00104 long long intr_wrap_103 (long long p1) { return l_abs(&p1); }
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116 struct _cpx_float intr_wrap_115 (struct _cpx_float p1) { return __rconjg(p1.real, p1.imag); }
00117 struct _cpx_double intr_wrap_116 (struct _cpx_double p1) { return __dconjg(p1.dreal, p1.dimag); }
00118 struct _cpx_long_double intr_wrap_117 (struct _cpx_long_double p1) { return __qconjg(p1.qreal, p1.qimag); }
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163 float intr_wrap_162 (float p1, float p2) { return r_dim(&p1, &p2); }
00164 signed char intr_wrap_163 (signed char p1, signed char p2) { return b_dim(&p1, &p2); }
00165 short intr_wrap_164 (short p1, short p2) { return h_dim(&p1, &p2); }
00166 int intr_wrap_165 (int p1, int p2) { return i_dim(&p1, &p2); }
00167 long long intr_wrap_166 (long long p1, long long p2) { return l_dim(&p1, &p2); }
00168 double intr_wrap_167 (double p1, double p2) { return d_dim(&p1, &p2); }
00169 long double intr_wrap_168 (long double p1, long double p2) { return __qdim(&p1, &p2); }
00170 int intr_wrap_169 (int p1, int p2) { return i_dim(&p1, &p2); }
00171 signed char intr_wrap_170 (signed char p1, signed char p2) { return b_dim(&p1, &p2); }
00172 short intr_wrap_171 (short p1, short p2) { return h_dim(&p1, &p2); }
00173 short intr_wrap_172 (short p1, short p2) { return h_dim(&p1, &p2); }
00174 int intr_wrap_173 (int p1, int p2) { return i_dim(&p1, &p2); }
00175 long long intr_wrap_174 (long long p1, long long p2) { return l_dim(&p1, &p2); }
00176 double intr_wrap_175 (float p1, float p2) { return d_prod(&p1, &p2); }
00177 long double intr_wrap_176 (double p1, double p2) { return __qprod(p1, p2); }
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209 float intr_wrap_208 (struct _cpx_float p1) { return r_imag(&p1); }
00210 double intr_wrap_209 (struct _cpx_float p1) { return d_imagalt(&p1); }
00211
00212 double intr_wrap_211 (struct _cpx_double p1) { return d_imag(&p1); }
00213 long double intr_wrap_212 (struct _cpx_long_double p1) { return __cq_imag(&p1); }
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328 float intr_wrap_327 (float p1) { return truncf(p1); }
00329 double intr_wrap_328 (double p1) { return trunc(p1); }
00330 long double intr_wrap_329 (long double p1) { return __qint(p1); }
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376
00377
00378
00379
00380
00381
00382
00383 int intr_wrap_382 (int p1, int p2) { return i_mod(&p1, &p2); }
00384 signed char intr_wrap_383 (signed char p1, signed char p2) { return b_mod(&p1, &p2); }
00385 short intr_wrap_384 (short p1, short p2) { return h_mod(&p1, &p2); }
00386 short intr_wrap_385 (short p1, short p2) { return h_mod(&p1, &p2); }
00387 int intr_wrap_386 (int p1, int p2) { return i_mod(&p1, &p2); }
00388 long long intr_wrap_387 (long long p1, long long p2) { return l_mod(&p1, &p2); }
00389 float intr_wrap_388 (float p1, float p2) { return __rmod(p1, p2); }
00390 double intr_wrap_389 (double p1, double p2) { return __dmod(p1, p2); }
00391 long double intr_wrap_390 (long double p1, long double p2) { return __qmod(p1, p2); }
00392
00393 short intr_wrap_392 (float p1) { return h_nint(&p1); }
00394 int intr_wrap_393 (float p1) { return i_nint(&p1); }
00395 long long intr_wrap_394 (float p1) { return l_nint(&p1); }
00396
00397 short intr_wrap_396 (double p1) { return h_dnnt(&p1); }
00398 int intr_wrap_397 (double p1) { return i_dnnt(&p1); }
00399 long long intr_wrap_398 (double p1) { return l_dnnt(&p1); }
00400
00401 short intr_wrap_400 (long double p1) { return __iiqnnt(p1); }
00402 int intr_wrap_401 (long double p1) { return __jiqnnt(p1); }
00403 long long intr_wrap_402 (long double p1) { return __kiqnnt(p1); }
00404 float intr_wrap_403 (float p1) { return __rnint(p1); }
00405 double intr_wrap_404 (double p1) { return __dnint(p1); }
00406 long double intr_wrap_405 (long double p1) { return __qnint(p1); }
00407
00408 short intr_wrap_407 (double p1) { return h_dnnt(&p1); }
00409 int intr_wrap_408 (double p1) { return i_dnnt(&p1); }
00410 long long intr_wrap_409 (double p1) { return l_dnnt(&p1); }
00411
00412 short intr_wrap_411 (long double p1) { return __iiqnnt(p1); }
00413 int intr_wrap_412 (long double p1) { return __jiqnnt(p1); }
00414 long long intr_wrap_413 (long double p1) { return __kiqnnt(p1); }
00415
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441
00442
00443
00444
00445
00446
00447
00448
00449
00450
00451
00452
00453
00454
00455
00456
00457
00458
00459 float intr_wrap_458 (float p1, float p2) { return __rsign(p1, p2); }
00460 signed char intr_wrap_459 (signed char p1, signed char p2) { return __bsign(p1, p2); }
00461 short intr_wrap_460 (short p1, short p2) { return __hsign(p1, p2); }
00462 int intr_wrap_461 (int p1, int p2) { return __isign(p1, p2); }
00463 long long intr_wrap_462 (long long p1, long long p2) { return __lsign(p1, p2); }
00464 double intr_wrap_463 (double p1, double p2) { return __dsign(p1, p2); }
00465 long double intr_wrap_464 (long double p1, long double p2) { return __qsign(p1, p2); }
00466 int intr_wrap_465 (int p1, int p2) { return __isign(p1, p2); }
00467 signed char intr_wrap_466 (signed char p1, signed char p2) { return __bsign(p1, p2); }
00468 short intr_wrap_467 (short p1, short p2) { return __hsign(p1, p2); }
00469 short intr_wrap_468 (short p1, short p2) { return __hsign(p1, p2); }
00470 int intr_wrap_469 (int p1, int p2) { return __isign(p1, p2); }
00471 long long intr_wrap_470 (long long p1, long long p2) { return __lsign(p1, p2); }
00472
00473
00474
00475
00476
00477
00478
00479
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501
00502
00503 signed char intr_wrap_502 (signed char p1, signed char p2) { return btest_b(&p1, &p2); }
00504 short intr_wrap_503 (short p1, short p2) { return btest_h(&p1, &p2); }
00505 int intr_wrap_504 (int p1, int p2) { return btest_l(&p1, &p2); }
00506 long long intr_wrap_505 (long long p1, long long p2) { return btest_ll(&p1, &p2); }
00507
00508 signed char intr_wrap_507 (signed char p1, signed char p2) { return and_b(&p1, &p2); }
00509 short intr_wrap_508 (short p1, short p2) { return and_h(&p1, &p2); }
00510 int intr_wrap_509 (int p1, int p2) { return and_l(&p1, &p2); }
00511 long long intr_wrap_510 (long long p1, long long p2) { return and_ll(&p1, &p2); }
00512
00513 signed char intr_wrap_512 (signed char p1, signed char p2) { return and_b(&p1, &p2); }
00514 short intr_wrap_513 (short p1, short p2) { return and_h(&p1, &p2); }
00515 int intr_wrap_514 (int p1, int p2) { return and_l(&p1, &p2); }
00516 long long intr_wrap_515 (long long p1, long long p2) { return and_ll(&p1, &p2); }
00517
00518 signed char intr_wrap_517 (signed char p1, signed char p2) { return bclr_b(&p1, &p2); }
00519 short intr_wrap_518 (short p1, short p2) { return bclr_h(&p1, &p2); }
00520 int intr_wrap_519 (int p1, int p2) { return bclr_l(&p1, &p2); }
00521 long long intr_wrap_520 (long long p1, long long p2) { return bclr_ll(&p1, &p2); }
00522
00523 signed char intr_wrap_522 (signed char p1, signed char p2, signed char p3) { return bext_b(&p1, &p2, &p3); }
00524 short intr_wrap_523 (short p1, short p2, short p3) { return bext_h(&p1, &p2, &p3); }
00525 int intr_wrap_524 (int p1, int p2, int p3) { return bext_l(&p1, &p2, &p3); }
00526 long long intr_wrap_525 (long long p1, long long p2, long long p3) { return bext_ll(&p1, &p2, &p3); }
00527
00528 signed char intr_wrap_527 (signed char p1, signed char p2) { return bset_b(&p1, &p2); }
00529 short intr_wrap_528 (short p1, short p2) { return bset_h(&p1, &p2); }
00530 int intr_wrap_529 (int p1, int p2) { return bset_l(&p1, &p2); }
00531 long long intr_wrap_530 (long long p1, long long p2) { return bset_ll(&p1, &p2); }
00532
00533 signed char intr_wrap_532 (signed char p1, signed char p2) { return xor_b(&p1, &p2); }
00534 short intr_wrap_533 (short p1, short p2) { return xor_h(&p1, &p2); }
00535 int intr_wrap_534 (int p1, int p2) { return xor_l(&p1, &p2); }
00536 long long intr_wrap_535 (long long p1, long long p2) { return xor_ll(&p1, &p2); }
00537
00538 signed char intr_wrap_537 (signed char p1, signed char p2) { return xor_b(&p1, &p2); }
00539 short intr_wrap_538 (short p1, short p2) { return xor_h(&p1, &p2); }
00540 int intr_wrap_539 (int p1, int p2) { return xor_l(&p1, &p2); }
00541 long long intr_wrap_540 (long long p1, long long p2) { return xor_ll(&p1, &p2); }
00542
00543 signed char intr_wrap_542 (signed char p1, signed char p2) { return or_b(&p1, &p2); }
00544 short intr_wrap_543 (short p1, short p2) { return or_h(&p1, &p2); }
00545 int intr_wrap_544 (int p1, int p2) { return or_l(&p1, &p2); }
00546 long long intr_wrap_545 (long long p1, long long p2) { return or_ll(&p1, &p2); }
00547
00548 signed char intr_wrap_547 (signed char p1, signed char p2) { return or_b(&p1, &p2); }
00549 short intr_wrap_548 (short p1, short p2) { return or_h(&p1, &p2); }
00550 int intr_wrap_549 (int p1, int p2) { return or_l(&p1, &p2); }
00551 long long intr_wrap_550 (long long p1, long long p2) { return or_ll(&p1, &p2); }
00552
00553 signed char intr_wrap_552 (signed char p1, signed char p2) { return shft_b(&p1, &p2); }
00554 short intr_wrap_553 (short p1, short p2) { return shft_h(&p1, &p2); }
00555 int intr_wrap_554 (int p1, int p2) { return shft_l(&p1, &p2); }
00556 long long intr_wrap_555 (long long p1, long long p2) { return shft_ll(&p1, &p2); }
00557
00558 signed char intr_wrap_557 (signed char p1, signed char p2) { return shft_b(&p1, &p2); }
00559 short intr_wrap_558 (short p1, short p2) { return shft_h(&p1, &p2); }
00560 int intr_wrap_559 (int p1, int p2) { return shft_l(&p1, &p2); }
00561 long long intr_wrap_560 (long long p1, long long p2) { return shft_ll(&p1, &p2); }
00562
00563 signed char intr_wrap_562 (signed char p1, signed char p2) { return rshft_b(&p1, &p2); }
00564 short intr_wrap_563 (short p1, short p2) { return rshft_h(&p1, &p2); }
00565 int intr_wrap_564 (int p1, int p2) { return rshft_l(&p1, &p2); }
00566 long long intr_wrap_565 (long long p1, long long p2) { return rshft_ll(&p1, &p2); }
00567
00568 signed char intr_wrap_567 (signed char p1, signed char p2, signed char p3) { return shftc_b(&p1, &p2, &p3); }
00569 short intr_wrap_568 (short p1, short p2, short p3) { return shftc_h(&p1, &p2, &p3); }
00570 int intr_wrap_569 (int p1, int p2, int p3) { return shftc_l(&p1, &p2, &p3); }
00571 long long intr_wrap_570 (long long p1, long long p2, long long p3) { return shftc_ll(&p1, &p2, &p3); }
00572
00573
00574
00575
00576
00577
00578 signed char intr_wrap_577 (signed char p1) { return not_b(&p1); }
00579 short intr_wrap_578 (short p1) { return not_h(&p1); }
00580 int intr_wrap_579 (int p1) { return not_l(&p1); }
00581 long long intr_wrap_580 (long long p1) { return not_ll(&p1); }
00582
00583
00584
00585
00586
00587
00588
00589
00590
00591
00592
00593
00594
00595
00596
00597
00598
00599
00600 int intr_wrap_599 (char *s1, char *s2, int l1, int l2) { return i_indx(s1, s2, l1, l2); }
00601
00602 int intr_wrap_601 (char *s1, char *s2, int l1, int l2) { return l_ge(s1, s2, l1, l2); }
00603 int intr_wrap_602 (char *s1, char *s2, int l1, int l2) { return l_gt(s1, s2, l1, l2); }
00604 int intr_wrap_603 (char *s1, char *s2, int l1, int l2) { return l_le(s1, s2, l1, l2); }
00605 int intr_wrap_604 (char *s1, char *s2, int l1, int l2) { return l_lt(s1, s2, l1, l2); }
00606
00607
00608
00609
00610
00611
00612
00613
00614
00615
00616
00617
00618
00619
00620
00621
00622
00623
00624
00625
00626
00627 struct _cpx_float intr_wrap_626 (float p1) { return __rcis(p1); }
00628 struct _cpx_double intr_wrap_627 (double p1) { return __dcis(p1); }
00629 struct _cpx_long_double intr_wrap_628 (long double p1) { return __qcis(p1); }
00630
00631
00632
00633
00634
00635
00636
00637
00638
00639
00640
00641
00642
00643
00644
00645
00646
00647
00648
00649
00650
00651
00652
00653
00654
00655
00656
00657
00658
00659
00660
00661
00662
00663
00664
00665
00666
00667
00668
00669
00670
00671
00672
00673
00674
00675
00676
00677
00678
00679
00680
00681
00682
00683
00684
00685
00686
00687
00688
00689
00690
00691
00692
00693
00694
00695
00696
00697
00698
00699
00700
00701
00702
00703
00704
00705
00706
00707
00708
00709
00710
00711
00712
00713
00714
00715
00716
00717
00718
00719
00720
00721
00722
00723
00724
00725
00726
00727
00728
00729
00730
00731
00732
00733
00734
00735
00736
00737
00738
00739
00740
00741
00742
00743
00744
00745
00746
00747
00748
00749
00750
00751
00752
00753
00754
00755
00756
00757
00758
00759
00760
00761
00762
00763
00764
00765
00766
00767
00768
00769
00770
00771
00772
00773
00774
00775
00776
00777
00778
00779
00780
00781
00782
00783
00784
00785
00786
00787
00788
00789
00790
00791
00792
00793
00794
00795
00796
00797
00798
00799
00800
00801
00802
00803
00804
00805
00806
00807
00808
00809
00810 void *intr_wrap[] = {
00811 intr_wrap_000, intr_wrap_001, intr_wrap_002, intr_wrap_003,
00812 intr_wrap_004, intr_wrap_005, intr_wrap_006, intr_wrap_007,
00813 intr_wrap_008, intr_wrap_009, intr_wrap_010, intr_wrap_011,
00814 intr_wrap_012, intr_wrap_013, intr_wrap_014, intr_wrap_015,
00815 intr_wrap_016, intr_wrap_017, intr_wrap_018, intr_wrap_019,
00816 intr_wrap_020, intr_wrap_021, intr_wrap_022, intr_wrap_023,
00817 intr_wrap_024, intr_wrap_025, intr_wrap_026, intr_wrap_027,
00818 intr_wrap_028, intr_wrap_029, intr_wrap_030, intr_wrap_031,
00819 intr_wrap_032, intr_wrap_033, intr_wrap_034, intr_wrap_035,
00820 intr_wrap_036, intr_wrap_037, intr_wrap_038, intr_wrap_039,
00821 intr_wrap_040, intr_wrap_041, intr_wrap_042, intr_wrap_043,
00822 intr_wrap_044, intr_wrap_045, NULL, intr_wrap_047,
00823 intr_wrap_048, intr_wrap_049, intr_wrap_050, intr_wrap_051,
00824 intr_wrap_052, intr_wrap_053, NULL, intr_wrap_055,
00825 intr_wrap_056, intr_wrap_057, intr_wrap_058, intr_wrap_059,
00826 intr_wrap_060, intr_wrap_061, intr_wrap_062, intr_wrap_063,
00827 intr_wrap_064, intr_wrap_065, intr_wrap_066, intr_wrap_067,
00828 intr_wrap_068, intr_wrap_069, intr_wrap_070, intr_wrap_071,
00829 intr_wrap_072, intr_wrap_073, intr_wrap_074, intr_wrap_075,
00830 intr_wrap_076, intr_wrap_077, intr_wrap_078, intr_wrap_079,
00831 intr_wrap_080, intr_wrap_081, intr_wrap_082, intr_wrap_083,
00832 intr_wrap_084, intr_wrap_085, intr_wrap_086, intr_wrap_087,
00833 intr_wrap_088, intr_wrap_089, intr_wrap_090, intr_wrap_091,
00834 intr_wrap_092, intr_wrap_093, intr_wrap_094, intr_wrap_095,
00835 intr_wrap_096, intr_wrap_097, intr_wrap_098, intr_wrap_099,
00836 intr_wrap_100, intr_wrap_101, intr_wrap_102, intr_wrap_103,
00837 NULL, NULL, NULL, NULL,
00838 NULL, NULL, NULL, NULL,
00839 NULL, NULL, NULL, intr_wrap_115,
00840 intr_wrap_116, intr_wrap_117, NULL, NULL,
00841 NULL, NULL, NULL, NULL,
00842 NULL, NULL, NULL, NULL,
00843 NULL, NULL, NULL, NULL,
00844 NULL, NULL, NULL, NULL,
00845 NULL, NULL, NULL, NULL,
00846 NULL, NULL, NULL, NULL,
00847 NULL, NULL, NULL, NULL,
00848 NULL, NULL, NULL, NULL,
00849 NULL, NULL, NULL, NULL,
00850 NULL, NULL, NULL, NULL,
00851 NULL, NULL, intr_wrap_162, intr_wrap_163,
00852 intr_wrap_164, intr_wrap_165, intr_wrap_166, intr_wrap_167,
00853 intr_wrap_168, intr_wrap_169, intr_wrap_170, intr_wrap_171,
00854 intr_wrap_172, intr_wrap_173, intr_wrap_174, intr_wrap_175,
00855 intr_wrap_176, NULL, NULL, NULL,
00856 NULL, NULL, NULL, NULL,
00857 NULL, NULL, NULL, NULL,
00858 NULL, NULL, NULL, NULL,
00859 NULL, NULL, NULL, NULL,
00860 NULL, NULL, NULL, NULL,
00861 NULL, NULL, NULL, NULL,
00862 NULL, NULL, NULL, NULL,
00863 intr_wrap_208, intr_wrap_209, NULL, intr_wrap_211,
00864 intr_wrap_212, NULL, NULL, NULL,
00865 NULL, NULL, NULL, NULL,
00866 NULL, NULL, NULL, NULL,
00867 NULL, NULL, NULL, NULL,
00868 NULL, NULL, NULL, NULL,
00869 NULL, NULL, NULL, NULL,
00870 NULL, NULL, NULL, NULL,
00871 NULL, NULL, NULL, NULL,
00872 NULL, NULL, NULL, NULL,
00873 NULL, NULL, NULL, NULL,
00874 NULL, NULL, NULL, NULL,
00875 NULL, NULL, NULL, NULL,
00876 NULL, NULL, NULL, NULL,
00877 NULL, NULL, NULL, NULL,
00878 NULL, NULL, NULL, NULL,
00879 NULL, NULL, NULL, NULL,
00880 NULL, NULL, NULL, NULL,
00881 NULL, NULL, NULL, NULL,
00882 NULL, NULL, NULL, NULL,
00883 NULL, NULL, NULL, NULL,
00884 NULL, NULL, NULL, NULL,
00885 NULL, NULL, NULL, NULL,
00886 NULL, NULL, NULL, NULL,
00887 NULL, NULL, NULL, NULL,
00888 NULL, NULL, NULL, NULL,
00889 NULL, NULL, NULL, NULL,
00890 NULL, NULL, NULL, NULL,
00891 NULL, NULL, NULL, NULL,
00892 NULL, NULL, NULL, intr_wrap_327,
00893 intr_wrap_328, intr_wrap_329, NULL, NULL,
00894 NULL, NULL, NULL, NULL,
00895 NULL, NULL, NULL, NULL,
00896 NULL, NULL, NULL, NULL,
00897 NULL, NULL, NULL, NULL,
00898 NULL, NULL, NULL, NULL,
00899 NULL, NULL, NULL, NULL,
00900 NULL, NULL, NULL, NULL,
00901 NULL, NULL, NULL, NULL,
00902 NULL, NULL, NULL, NULL,
00903 NULL, NULL, NULL, NULL,
00904 NULL, NULL, NULL, NULL,
00905 NULL, NULL, NULL, NULL,
00906 NULL, NULL, intr_wrap_382, intr_wrap_383,
00907 intr_wrap_384, intr_wrap_385, intr_wrap_386, intr_wrap_387,
00908 intr_wrap_388, intr_wrap_389, intr_wrap_390, NULL,
00909 intr_wrap_392, intr_wrap_393, intr_wrap_394, NULL,
00910 intr_wrap_396, intr_wrap_397, intr_wrap_398, NULL,
00911 intr_wrap_400, intr_wrap_401, intr_wrap_402, intr_wrap_403,
00912 intr_wrap_404, intr_wrap_405, NULL, intr_wrap_407,
00913 intr_wrap_408, intr_wrap_409, NULL, intr_wrap_411,
00914 intr_wrap_412, intr_wrap_413, NULL, NULL,
00915 NULL, NULL, NULL, NULL,
00916 NULL, NULL, NULL, NULL,
00917 NULL, NULL, NULL, NULL,
00918 NULL, NULL, NULL, NULL,
00919 NULL, NULL, NULL, NULL,
00920 NULL, NULL, NULL, NULL,
00921 NULL, NULL, NULL, NULL,
00922 NULL, NULL, NULL, NULL,
00923 NULL, NULL, NULL, NULL,
00924 NULL, NULL, NULL, NULL,
00925 NULL, NULL, intr_wrap_458, intr_wrap_459,
00926 intr_wrap_460, intr_wrap_461, intr_wrap_462, intr_wrap_463,
00927 intr_wrap_464, intr_wrap_465, intr_wrap_466, intr_wrap_467,
00928 intr_wrap_468, intr_wrap_469, intr_wrap_470, NULL,
00929 NULL, NULL, NULL, NULL,
00930 NULL, NULL, NULL, NULL,
00931 NULL, NULL, NULL, NULL,
00932 NULL, NULL, NULL, NULL,
00933 NULL, NULL, NULL, NULL,
00934 NULL, NULL, NULL, NULL,
00935 NULL, NULL, NULL, NULL,
00936 NULL, NULL, intr_wrap_502, intr_wrap_503,
00937 intr_wrap_504, intr_wrap_505, NULL, intr_wrap_507,
00938 intr_wrap_508, intr_wrap_509, intr_wrap_510, NULL,
00939 intr_wrap_512, intr_wrap_513, intr_wrap_514, intr_wrap_515,
00940 NULL, intr_wrap_517, intr_wrap_518, intr_wrap_519,
00941 intr_wrap_520, NULL, intr_wrap_522, intr_wrap_523,
00942 intr_wrap_524, intr_wrap_525, NULL, intr_wrap_527,
00943 intr_wrap_528, intr_wrap_529, intr_wrap_530, NULL,
00944 intr_wrap_532, intr_wrap_533, intr_wrap_534, intr_wrap_535,
00945 NULL, intr_wrap_537, intr_wrap_538, intr_wrap_539,
00946 intr_wrap_540, NULL, intr_wrap_542, intr_wrap_543,
00947 intr_wrap_544, intr_wrap_545, NULL, intr_wrap_547,
00948 intr_wrap_548, intr_wrap_549, intr_wrap_550, NULL,
00949 intr_wrap_552, intr_wrap_553, intr_wrap_554, intr_wrap_555,
00950 NULL, intr_wrap_557, intr_wrap_558, intr_wrap_559,
00951 intr_wrap_560, NULL, intr_wrap_562, intr_wrap_563,
00952 intr_wrap_564, intr_wrap_565, NULL, intr_wrap_567,
00953 intr_wrap_568, intr_wrap_569, intr_wrap_570, NULL,
00954 NULL, NULL, NULL, NULL,
00955 NULL, intr_wrap_577, intr_wrap_578, intr_wrap_579,
00956 intr_wrap_580, NULL, NULL, NULL,
00957 NULL, NULL, NULL, NULL,
00958 NULL, NULL, NULL, NULL,
00959 NULL, NULL, NULL, NULL,
00960 NULL, NULL, NULL, intr_wrap_599,
00961 NULL, intr_wrap_601, intr_wrap_602, intr_wrap_603,
00962 intr_wrap_604, NULL, NULL, NULL,
00963 NULL, NULL, NULL, NULL,
00964 NULL, NULL, NULL, NULL,
00965 NULL, NULL, NULL, NULL,
00966 NULL, NULL, NULL, NULL,
00967 NULL, NULL, intr_wrap_626, intr_wrap_627,
00968 intr_wrap_628, NULL, NULL, NULL,
00969 NULL, NULL, NULL, NULL,
00970 NULL, NULL, NULL, NULL,
00971 NULL, NULL, NULL, NULL,
00972 NULL, NULL, NULL, NULL,
00973 NULL, NULL, NULL, NULL,
00974 NULL, NULL, NULL, NULL,
00975 NULL, NULL, NULL, NULL,
00976 NULL, NULL, NULL, NULL,
00977 NULL, NULL, NULL, NULL,
00978 NULL, NULL, NULL, NULL,
00979 NULL, NULL, NULL, NULL,
00980 NULL, NULL, NULL, NULL,
00981 NULL, NULL, NULL, NULL,
00982 NULL, NULL, NULL, NULL,
00983 NULL, NULL, NULL, NULL,
00984 NULL, NULL, NULL, NULL,
00985 NULL, NULL, NULL, NULL,
00986 NULL, NULL, NULL, NULL,
00987 NULL, NULL, NULL, NULL,
00988 NULL, NULL, NULL, NULL,
00989 NULL, NULL, NULL, NULL,
00990 NULL, NULL, NULL, NULL,
00991 NULL, NULL, NULL, NULL,
00992 NULL, NULL, NULL, NULL,
00993 NULL, NULL, NULL, NULL,
00994 NULL, NULL, NULL, NULL,
00995 NULL, NULL, NULL, NULL,
00996 NULL, NULL, NULL, NULL,
00997 NULL, NULL, NULL, NULL,
00998 NULL, NULL, NULL, NULL,
00999 NULL, NULL, NULL, NULL,
01000 NULL, NULL, NULL, NULL,
01001 NULL, NULL, NULL, NULL,
01002 NULL, NULL, NULL, NULL,
01003 NULL, NULL, NULL, NULL,
01004 NULL, NULL, NULL, NULL,
01005 NULL, NULL, NULL, NULL,
01006 NULL, NULL, NULL, NULL,
01007 NULL, NULL, NULL, NULL,
01008 NULL, NULL, NULL, NULL,
01009 NULL, NULL, NULL, NULL,
01010 NULL, NULL, NULL, NULL,
01011 NULL, NULL, NULL, NULL,
01012 NULL, NULL, NULL
01013 };
01014
01015
01016 void convert_constant_EDG_to_targ(a_constant_ptr EDG_value,
01017 void *targ_value,
01018 an_intrinsic_type_code tco)
01019 {
01020 #define CONVERT_INT(type) *((type *)targ_value) = (type) EDG_value->variant.integer_value
01021 #define CONVERT_REAL(type) \
01022 (void)memcpy((char *)targ_value, (char *)&EDG_value->variant.float_value.bytes, sizeof(type))
01023 #define CONVERT_COMPLEX(type) \
01024 (void)memcpy((char *)targ_value, (char *)&EDG_value->variant.complex_value->real.bytes, sizeof(type)); \
01025 (void)memcpy(((char *)targ_value)+sizeof(type), (char *)&EDG_value->variant.complex_value->imag.bytes, sizeof(type))
01026
01027 switch (tco) {
01028 case tco_logical1:
01029 case tco_integer1: CONVERT_INT(signed char); break;
01030 case tco_logical2:
01031 case tco_integer2: CONVERT_INT(short); break;
01032 case tco_logical4:
01033 case tco_integer4: CONVERT_INT(int); break;
01034 case tco_logical8:
01035 case tco_integer8: CONVERT_INT(long long); break;
01036 case tco_real4: CONVERT_REAL(float); break;
01037 case tco_real8: CONVERT_REAL(double); break;
01038 case tco_real16: CONVERT_REAL(long double); break;
01039 case tco_complex8: CONVERT_COMPLEX(float); break;
01040 case tco_complex16: CONVERT_COMPLEX(double); break;
01041 case tco_complex32: CONVERT_COMPLEX(long double); break;
01042 #if CHECKING
01043 default:
01044 internal_error("bad case in convert_constant_EDG_to_targ");
01045 break;
01046 #endif
01047 }
01048
01049 #undef CONVERT_INT
01050 #undef CONVERT_REAL
01051 #undef CONVERT_COMPLEX
01052 }
01053
01054
01055 void convert_constant_targ_to_EDG(void *targ_value,
01056 a_constant_ptr EDG_value,
01057 an_intrinsic_type_code tco)
01058 {
01059 #define CONVERT_INT(type) EDG_value->variant.integer_value = (an_integer_value) *((type *)targ_value)
01060 #define CONVERT_REAL(type) \
01061 (void)memcpy((char *)&EDG_value->variant.float_value.bytes, (char *)targ_value, sizeof(type)); \
01062 EDG_value->variant.float_value.float_string = NULL
01063 #define CONVERT_COMPLEX(type) \
01064 (void)memcpy((char *)&EDG_value->variant.complex_value->real, (char *)targ_value, sizeof(type)); \
01065 EDG_value->variant.complex_value->real.float_string = NULL; \
01066 (void)memcpy((char *)&EDG_value->variant.complex_value->imag, ((char *)targ_value)+sizeof(type), sizeof(type)); \
01067 EDG_value->variant.complex_value->imag.float_string = NULL
01068
01069 switch (tco) {
01070 case tco_logical1:
01071 case tco_integer1: CONVERT_INT(signed char); break;
01072 case tco_logical2:
01073 case tco_integer2: CONVERT_INT(short); break;
01074 case tco_logical4:
01075 case tco_integer4: CONVERT_INT(int); break;
01076 case tco_logical8:
01077 case tco_integer8: CONVERT_INT(long long); break;
01078 case tco_real4: CONVERT_REAL(float); break;
01079 case tco_real8: CONVERT_REAL(double); break;
01080 case tco_real16: CONVERT_REAL(long double); break;
01081 case tco_complex8: CONVERT_COMPLEX(float); break;
01082 case tco_complex16: CONVERT_COMPLEX(double); break;
01083 case tco_complex32: CONVERT_COMPLEX(long double); break;
01084 #if CHECKING
01085 default:
01086 internal_error("bad case in convert_constant_targ_to_EDG");
01087 break;
01088 #endif
01089 }
01090
01091 #undef CONVERT_INT
01092 #undef CONVERT_REAL
01093 #undef CONVERT_COMPLEX
01094 }
01095
01096
01097
01098 a_boolean fold_general_exponentiation(an_expr_operator_kind op,
01099 an_fe_constant_ptr constant_1,
01100 an_fe_constant_ptr constant_2,
01101 a_type_ptr result_type,
01102 an_fe_constant_ptr result,
01103 an_error_code *err_code,
01104 an_error_severity *err_severity)
01105 {
01106 a_boolean success = FALSE;
01107
01108 if (is_real4_type(result_type)) {
01109 float targ_arguments[2], targ_result;
01110 convert_constant_EDG_to_targ(&constant_1->constant, (void *)&targ_arguments[0], tco_real4);
01111 convert_constant_EDG_to_targ(&constant_2->constant, (void *)&targ_arguments[1], tco_real4);
01112 targ_result = powf(targ_arguments[0], targ_arguments[1]);
01113 clear_fe_constant(result, (a_constant_repr_kind)ck_float);
01114 convert_constant_targ_to_EDG((void *)&targ_result, &result->constant, tco_real4);
01115 result->constant.type = result_type;
01116 if (strict_f77_mode) {
01117 *err_code = ec_noninteger_exponent_in_constant_expr_nonstandard;
01118 *err_severity = es_warning;
01119 }
01120 success = TRUE;
01121 } else if (is_real8_type(result_type)) {
01122 double targ_arguments[2], targ_result;
01123 convert_constant_EDG_to_targ(&constant_1->constant, (void *)&targ_arguments[0], tco_real8);
01124 convert_constant_EDG_to_targ(&constant_2->constant, (void *)&targ_arguments[1], tco_real8);
01125 targ_result = pow(targ_arguments[0], targ_arguments[1]);
01126 clear_fe_constant(result, (a_constant_repr_kind)ck_float);
01127 convert_constant_targ_to_EDG((void *)&targ_result, &result->constant, tco_real8);
01128 result->constant.type = result_type;
01129 if (strict_f77_mode) {
01130 *err_code = ec_noninteger_exponent_in_constant_expr_nonstandard;
01131 *err_severity = es_warning;
01132 }
01133 success = TRUE;
01134 } else if (is_real16_type(result_type)) {
01135 long double targ_arguments[2], targ_result;
01136 convert_constant_EDG_to_targ(&constant_1->constant, (void *)&targ_arguments[0], tco_real16);
01137 convert_constant_EDG_to_targ(&constant_2->constant, (void *)&targ_arguments[1], tco_real16);
01138 targ_result = qpow(targ_arguments[0], targ_arguments[1]);
01139 clear_fe_constant(result, (a_constant_repr_kind)ck_float);
01140 convert_constant_targ_to_EDG((void *)&targ_result, &result->constant, tco_real16);
01141 result->constant.type = result_type;
01142 if (strict_f77_mode) {
01143 *err_code = ec_noninteger_exponent_in_constant_expr_nonstandard;
01144 *err_severity = es_warning;
01145 }
01146 success = TRUE;
01147 } else if (is_complex8_type(result_type)) {
01148 struct _cpx_float targ_arguments[2], targ_result;
01149 convert_constant_EDG_to_targ(&constant_1->constant, (void *)&targ_arguments[0], tco_complex8);
01150 convert_constant_EDG_to_targ(&constant_2->constant, (void *)&targ_arguments[1], tco_complex8);
01151 targ_result = __powcc(targ_arguments[0].real, targ_arguments[0].imag, targ_arguments[1].real, targ_arguments[1].imag);
01152 clear_fe_constant(result, (a_constant_repr_kind)ck_complex);
01153 convert_constant_targ_to_EDG((void *)&targ_result, &result->constant, tco_complex8);
01154 result->constant.type = result_type;
01155 if (strict_f77_mode) {
01156 *err_code = ec_noninteger_exponent_in_constant_expr_nonstandard;
01157 *err_severity = es_warning;
01158 }
01159 success = TRUE;
01160 } else if (is_complex16_type(result_type)) {
01161 struct _cpx_double targ_arguments[2], targ_result;
01162 convert_constant_EDG_to_targ(&constant_1->constant, (void *)&targ_arguments[0], tco_complex16);
01163 convert_constant_EDG_to_targ(&constant_2->constant, (void *)&targ_arguments[1], tco_complex16);
01164 targ_result = __powzz(targ_arguments[0].dreal, targ_arguments[0].dimag, targ_arguments[1].dreal, targ_arguments[1].dimag);
01165 clear_fe_constant(result, (a_constant_repr_kind)ck_complex);
01166 convert_constant_targ_to_EDG((void *)&targ_result, &result->constant, tco_complex16);
01167 result->constant.type = result_type;
01168 if (strict_f77_mode) {
01169 *err_code = ec_noninteger_exponent_in_constant_expr_nonstandard;
01170 *err_severity = es_warning;
01171 }
01172 success = TRUE;
01173 } else if (is_complex32_type(result_type)) {
01174 struct _cpx_long_double targ_arguments[2], targ_result;
01175 convert_constant_EDG_to_targ(&constant_1->constant, (void *)&targ_arguments[0], tco_complex32);
01176 convert_constant_EDG_to_targ(&constant_2->constant, (void *)&targ_arguments[1], tco_complex32);
01177 targ_result = __cqpow(targ_arguments[0].qreal, targ_arguments[0].qimag, targ_arguments[1].qreal, targ_arguments[1].qimag);
01178 clear_fe_constant(result, (a_constant_repr_kind)ck_complex);
01179 convert_constant_targ_to_EDG((void *)&targ_result, &result->constant, tco_complex32);
01180 result->constant.type = result_type;
01181 if (strict_f77_mode) {
01182 *err_code = ec_noninteger_exponent_in_constant_expr_nonstandard;
01183 *err_severity = es_warning;
01184 }
01185 success = TRUE;
01186 #if CHECKING
01187 } else {
01188 internal_error("bad case in fold_general_exponentiation");
01189 #endif
01190 }
01191
01192 return success;
01193 }
01194
01195
01196
01197 a_boolean perform_constant_intrinsic_call(
01198 an_fe_constant_ptr result_constant,
01199 an_intr_func_description_ptr ifdp,
01200 an_expr_node_ptr arguments)
01201 {
01202 void *wrapper_void_ptr = intr_wrap[ifdp-intr_func_info];
01203 if (wrapper_void_ptr == NULL) {
01204 return FALSE;
01205 }
01206 switch (ifdp->arg_type) {
01207 case tco_integer1: {
01208 switch (ifdp->return_type) {
01209 case tco_integer1: {
01210 int num_args = 0;
01211 an_expr_node_ptr enp = arguments;
01212 signed char targ_arguments[5];
01213 signed char targ_result;
01214 #if INTR_FOLD_DEBUG
01215 fprintf(stderr, "Case for arg=tco_integer1, ret=tco_integer1\n");
01216 #endif
01217 while (enp != NULL) {
01218 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_integer1);
01219 #if INTR_FOLD_DEBUG
01220 fprintf(stderr, "arg %d is %hd\n", num_args, targ_arguments[num_args]);
01221 #endif
01222 num_args++;
01223 enp = enp->next;
01224 }
01225 switch (num_args) {
01226 case 1: {
01227 typedef signed char (*wrapper_type)(signed char);
01228 wrapper_type wrapper_func;
01229 wrapper_func = (wrapper_type) wrapper_void_ptr;
01230 targ_result = (*wrapper_func)(targ_arguments[0]);
01231 break;
01232 }
01233 case 2: {
01234 typedef signed char (*wrapper_type)(signed char, signed char);
01235 wrapper_type wrapper_func;
01236 wrapper_func = (wrapper_type) wrapper_void_ptr;
01237 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1]);
01238 break;
01239 }
01240 case 3: {
01241 typedef signed char (*wrapper_type)(signed char, signed char, signed char);
01242 wrapper_type wrapper_func;
01243 wrapper_func = (wrapper_type) wrapper_void_ptr;
01244 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1], targ_arguments[2]);
01245 break;
01246 }
01247 #if CHECKING
01248 default:
01249 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01250 break;
01251 #endif
01252 }
01253 #if INTR_FOLD_DEBUG
01254 fprintf(stderr, "result is %hd\n", targ_result);
01255 #endif
01256 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
01257 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_integer1);
01258 break;
01259 }
01260 case tco_logical1: {
01261 int num_args = 0;
01262 an_expr_node_ptr enp = arguments;
01263 signed char targ_arguments[5];
01264 signed char targ_result;
01265 #if INTR_FOLD_DEBUG
01266 fprintf(stderr, "Case for arg=tco_integer1, ret=tco_logical1\n");
01267 #endif
01268 while (enp != NULL) {
01269 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_integer1);
01270 #if INTR_FOLD_DEBUG
01271 fprintf(stderr, "arg %d is %hd\n", num_args, targ_arguments[num_args]);
01272 #endif
01273 num_args++;
01274 enp = enp->next;
01275 }
01276 switch (num_args) {
01277 case 2: {
01278 typedef signed char (*wrapper_type)(signed char, signed char);
01279 wrapper_type wrapper_func;
01280 wrapper_func = (wrapper_type) wrapper_void_ptr;
01281 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1]);
01282 break;
01283 }
01284 #if CHECKING
01285 default:
01286 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01287 break;
01288 #endif
01289 }
01290 #if INTR_FOLD_DEBUG
01291 fprintf(stderr, "result is %hd\n", targ_result);
01292 #endif
01293 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
01294 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_logical1);
01295 break;
01296 }
01297 #if CHECKING
01298 default:
01299 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01300 break;
01301 #endif
01302 }
01303 break;
01304 }
01305 case tco_integer2: {
01306 switch (ifdp->return_type) {
01307 case tco_integer2: {
01308 int num_args = 0;
01309 an_expr_node_ptr enp = arguments;
01310 short targ_arguments[5];
01311 short targ_result;
01312 #if INTR_FOLD_DEBUG
01313 fprintf(stderr, "Case for arg=tco_integer2, ret=tco_integer2\n");
01314 #endif
01315 while (enp != NULL) {
01316 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_integer2);
01317 #if INTR_FOLD_DEBUG
01318 fprintf(stderr, "arg %d is %hd\n", num_args, targ_arguments[num_args]);
01319 #endif
01320 num_args++;
01321 enp = enp->next;
01322 }
01323 switch (num_args) {
01324 case 1: {
01325 typedef short (*wrapper_type)(short);
01326 wrapper_type wrapper_func;
01327 wrapper_func = (wrapper_type) wrapper_void_ptr;
01328 targ_result = (*wrapper_func)(targ_arguments[0]);
01329 break;
01330 }
01331 case 2: {
01332 typedef short (*wrapper_type)(short, short);
01333 wrapper_type wrapper_func;
01334 wrapper_func = (wrapper_type) wrapper_void_ptr;
01335 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1]);
01336 break;
01337 }
01338 case 3: {
01339 typedef short (*wrapper_type)(short, short, short);
01340 wrapper_type wrapper_func;
01341 wrapper_func = (wrapper_type) wrapper_void_ptr;
01342 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1], targ_arguments[2]);
01343 break;
01344 }
01345 #if CHECKING
01346 default:
01347 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01348 break;
01349 #endif
01350 }
01351 #if INTR_FOLD_DEBUG
01352 fprintf(stderr, "result is %hd\n", targ_result);
01353 #endif
01354 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
01355 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_integer2);
01356 break;
01357 }
01358 case tco_logical2: {
01359 int num_args = 0;
01360 an_expr_node_ptr enp = arguments;
01361 short targ_arguments[5];
01362 short targ_result;
01363 #if INTR_FOLD_DEBUG
01364 fprintf(stderr, "Case for arg=tco_integer2, ret=tco_logical2\n");
01365 #endif
01366 while (enp != NULL) {
01367 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_integer2);
01368 #if INTR_FOLD_DEBUG
01369 fprintf(stderr, "arg %d is %hd\n", num_args, targ_arguments[num_args]);
01370 #endif
01371 num_args++;
01372 enp = enp->next;
01373 }
01374 switch (num_args) {
01375 case 2: {
01376 typedef short (*wrapper_type)(short, short);
01377 wrapper_type wrapper_func;
01378 wrapper_func = (wrapper_type) wrapper_void_ptr;
01379 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1]);
01380 break;
01381 }
01382 #if CHECKING
01383 default:
01384 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01385 break;
01386 #endif
01387 }
01388 #if INTR_FOLD_DEBUG
01389 fprintf(stderr, "result is %hd\n", targ_result);
01390 #endif
01391 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
01392 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_logical2);
01393 break;
01394 }
01395 #if CHECKING
01396 default:
01397 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01398 break;
01399 #endif
01400 }
01401 break;
01402 }
01403 case tco_integer4: {
01404 switch (ifdp->return_type) {
01405 case tco_integer4: {
01406 int num_args = 0;
01407 an_expr_node_ptr enp = arguments;
01408 int targ_arguments[5];
01409 int targ_result;
01410 #if INTR_FOLD_DEBUG
01411 fprintf(stderr, "Case for arg=tco_integer4, ret=tco_integer4\n");
01412 #endif
01413 while (enp != NULL) {
01414 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_integer4);
01415 #if INTR_FOLD_DEBUG
01416 fprintf(stderr, "arg %d is %d\n", num_args, targ_arguments[num_args]);
01417 #endif
01418 num_args++;
01419 enp = enp->next;
01420 }
01421 switch (num_args) {
01422 case 1: {
01423 typedef int (*wrapper_type)(int);
01424 wrapper_type wrapper_func;
01425 wrapper_func = (wrapper_type) wrapper_void_ptr;
01426 targ_result = (*wrapper_func)(targ_arguments[0]);
01427 break;
01428 }
01429 case 2: {
01430 typedef int (*wrapper_type)(int, int);
01431 wrapper_type wrapper_func;
01432 wrapper_func = (wrapper_type) wrapper_void_ptr;
01433 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1]);
01434 break;
01435 }
01436 case 3: {
01437 typedef int (*wrapper_type)(int, int, int);
01438 wrapper_type wrapper_func;
01439 wrapper_func = (wrapper_type) wrapper_void_ptr;
01440 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1], targ_arguments[2]);
01441 break;
01442 }
01443 #if CHECKING
01444 default:
01445 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01446 break;
01447 #endif
01448 }
01449 #if INTR_FOLD_DEBUG
01450 fprintf(stderr, "result is %d\n", targ_result);
01451 #endif
01452 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
01453 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_integer4);
01454 break;
01455 }
01456 case tco_logical4: {
01457 int num_args = 0;
01458 an_expr_node_ptr enp = arguments;
01459 int targ_arguments[5];
01460 int targ_result;
01461 #if INTR_FOLD_DEBUG
01462 fprintf(stderr, "Case for arg=tco_integer4, ret=tco_logical4\n");
01463 #endif
01464 while (enp != NULL) {
01465 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_integer4);
01466 #if INTR_FOLD_DEBUG
01467 fprintf(stderr, "arg %d is %d\n", num_args, targ_arguments[num_args]);
01468 #endif
01469 num_args++;
01470 enp = enp->next;
01471 }
01472 switch (num_args) {
01473 case 2: {
01474 typedef int (*wrapper_type)(int, int);
01475 wrapper_type wrapper_func;
01476 wrapper_func = (wrapper_type) wrapper_void_ptr;
01477 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1]);
01478 break;
01479 }
01480 #if CHECKING
01481 default:
01482 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01483 break;
01484 #endif
01485 }
01486 #if INTR_FOLD_DEBUG
01487 fprintf(stderr, "result is %d\n", targ_result);
01488 #endif
01489 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
01490 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_logical4);
01491 break;
01492 }
01493 #if CHECKING
01494 default:
01495 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01496 break;
01497 #endif
01498 }
01499 break;
01500 }
01501 case tco_integer8: {
01502 switch (ifdp->return_type) {
01503 case tco_integer8: {
01504 int num_args = 0;
01505 an_expr_node_ptr enp = arguments;
01506 long long targ_arguments[5];
01507 long long targ_result;
01508 #if INTR_FOLD_DEBUG
01509 fprintf(stderr, "Case for arg=tco_integer8, ret=tco_integer8\n");
01510 #endif
01511 while (enp != NULL) {
01512 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_integer8);
01513 #if INTR_FOLD_DEBUG
01514 fprintf(stderr, "arg %d is %lld\n", num_args, targ_arguments[num_args]);
01515 #endif
01516 num_args++;
01517 enp = enp->next;
01518 }
01519 switch (num_args) {
01520 case 1: {
01521 typedef long long (*wrapper_type)(long long);
01522 wrapper_type wrapper_func;
01523 wrapper_func = (wrapper_type) wrapper_void_ptr;
01524 targ_result = (*wrapper_func)(targ_arguments[0]);
01525 break;
01526 }
01527 case 2: {
01528 typedef long long (*wrapper_type)(long long, long long);
01529 wrapper_type wrapper_func;
01530 wrapper_func = (wrapper_type) wrapper_void_ptr;
01531 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1]);
01532 break;
01533 }
01534 case 3: {
01535 typedef long long (*wrapper_type)(long long, long long, long long);
01536 wrapper_type wrapper_func;
01537 wrapper_func = (wrapper_type) wrapper_void_ptr;
01538 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1], targ_arguments[2]);
01539 break;
01540 }
01541 #if CHECKING
01542 default:
01543 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01544 break;
01545 #endif
01546 }
01547 #if INTR_FOLD_DEBUG
01548 fprintf(stderr, "result is %lld\n", targ_result);
01549 #endif
01550 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
01551 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_integer8);
01552 break;
01553 }
01554 case tco_logical8: {
01555 int num_args = 0;
01556 an_expr_node_ptr enp = arguments;
01557 long long targ_arguments[5];
01558 long long targ_result;
01559 #if INTR_FOLD_DEBUG
01560 fprintf(stderr, "Case for arg=tco_integer8, ret=tco_logical8\n");
01561 #endif
01562 while (enp != NULL) {
01563 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_integer8);
01564 #if INTR_FOLD_DEBUG
01565 fprintf(stderr, "arg %d is %lld\n", num_args, targ_arguments[num_args]);
01566 #endif
01567 num_args++;
01568 enp = enp->next;
01569 }
01570 switch (num_args) {
01571 case 2: {
01572 typedef long long (*wrapper_type)(long long, long long);
01573 wrapper_type wrapper_func;
01574 wrapper_func = (wrapper_type) wrapper_void_ptr;
01575 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1]);
01576 break;
01577 }
01578 #if CHECKING
01579 default:
01580 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01581 break;
01582 #endif
01583 }
01584 #if INTR_FOLD_DEBUG
01585 fprintf(stderr, "result is %lld\n", targ_result);
01586 #endif
01587 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
01588 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_logical8);
01589 break;
01590 }
01591 #if CHECKING
01592 default:
01593 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01594 break;
01595 #endif
01596 }
01597 break;
01598 }
01599 case tco_real4: {
01600 switch (ifdp->return_type) {
01601 case tco_integer2: {
01602 int num_args = 0;
01603 an_expr_node_ptr enp = arguments;
01604 float targ_arguments[5];
01605 short targ_result;
01606 #if INTR_FOLD_DEBUG
01607 fprintf(stderr, "Case for arg=tco_real4, ret=tco_integer2\n");
01608 #endif
01609 while (enp != NULL) {
01610 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_real4);
01611 #if INTR_FOLD_DEBUG
01612 fprintf(stderr, "arg %d is %lf\n", num_args, targ_arguments[num_args]);
01613 #endif
01614 num_args++;
01615 enp = enp->next;
01616 }
01617 switch (num_args) {
01618 case 1: {
01619 typedef short (*wrapper_type)(float);
01620 wrapper_type wrapper_func;
01621 wrapper_func = (wrapper_type) wrapper_void_ptr;
01622 targ_result = (*wrapper_func)(targ_arguments[0]);
01623 break;
01624 }
01625 #if CHECKING
01626 default:
01627 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01628 break;
01629 #endif
01630 }
01631 #if INTR_FOLD_DEBUG
01632 fprintf(stderr, "result is %hd\n", targ_result);
01633 #endif
01634 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
01635 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_integer2);
01636 break;
01637 }
01638 case tco_integer4: {
01639 int num_args = 0;
01640 an_expr_node_ptr enp = arguments;
01641 float targ_arguments[5];
01642 int targ_result;
01643 #if INTR_FOLD_DEBUG
01644 fprintf(stderr, "Case for arg=tco_real4, ret=tco_integer4\n");
01645 #endif
01646 while (enp != NULL) {
01647 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_real4);
01648 #if INTR_FOLD_DEBUG
01649 fprintf(stderr, "arg %d is %lf\n", num_args, targ_arguments[num_args]);
01650 #endif
01651 num_args++;
01652 enp = enp->next;
01653 }
01654 switch (num_args) {
01655 case 1: {
01656 typedef int (*wrapper_type)(float);
01657 wrapper_type wrapper_func;
01658 wrapper_func = (wrapper_type) wrapper_void_ptr;
01659 targ_result = (*wrapper_func)(targ_arguments[0]);
01660 break;
01661 }
01662 #if CHECKING
01663 default:
01664 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01665 break;
01666 #endif
01667 }
01668 #if INTR_FOLD_DEBUG
01669 fprintf(stderr, "result is %d\n", targ_result);
01670 #endif
01671 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
01672 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_integer4);
01673 break;
01674 }
01675 case tco_integer8: {
01676 int num_args = 0;
01677 an_expr_node_ptr enp = arguments;
01678 float targ_arguments[5];
01679 long long targ_result;
01680 #if INTR_FOLD_DEBUG
01681 fprintf(stderr, "Case for arg=tco_real4, ret=tco_integer8\n");
01682 #endif
01683 while (enp != NULL) {
01684 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_real4);
01685 #if INTR_FOLD_DEBUG
01686 fprintf(stderr, "arg %d is %lf\n", num_args, targ_arguments[num_args]);
01687 #endif
01688 num_args++;
01689 enp = enp->next;
01690 }
01691 switch (num_args) {
01692 case 1: {
01693 typedef long long (*wrapper_type)(float);
01694 wrapper_type wrapper_func;
01695 wrapper_func = (wrapper_type) wrapper_void_ptr;
01696 targ_result = (*wrapper_func)(targ_arguments[0]);
01697 break;
01698 }
01699 #if CHECKING
01700 default:
01701 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01702 break;
01703 #endif
01704 }
01705 #if INTR_FOLD_DEBUG
01706 fprintf(stderr, "result is %lld\n", targ_result);
01707 #endif
01708 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
01709 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_integer8);
01710 break;
01711 }
01712 case tco_real4: {
01713 int num_args = 0;
01714 an_expr_node_ptr enp = arguments;
01715 float targ_arguments[5];
01716 float targ_result;
01717 #if INTR_FOLD_DEBUG
01718 fprintf(stderr, "Case for arg=tco_real4, ret=tco_real4\n");
01719 #endif
01720 while (enp != NULL) {
01721 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_real4);
01722 #if INTR_FOLD_DEBUG
01723 fprintf(stderr, "arg %d is %lf\n", num_args, targ_arguments[num_args]);
01724 #endif
01725 num_args++;
01726 enp = enp->next;
01727 }
01728 switch (num_args) {
01729 case 1: {
01730 typedef float (*wrapper_type)(float);
01731 wrapper_type wrapper_func;
01732 wrapper_func = (wrapper_type) wrapper_void_ptr;
01733 targ_result = (*wrapper_func)(targ_arguments[0]);
01734 break;
01735 }
01736 case 2: {
01737 typedef float (*wrapper_type)(float, float);
01738 wrapper_type wrapper_func;
01739 wrapper_func = (wrapper_type) wrapper_void_ptr;
01740 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1]);
01741 break;
01742 }
01743 #if CHECKING
01744 default:
01745 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01746 break;
01747 #endif
01748 }
01749 #if INTR_FOLD_DEBUG
01750 fprintf(stderr, "result is %lf\n", targ_result);
01751 #endif
01752 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_float);
01753 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_real4);
01754 break;
01755 }
01756 case tco_real8: {
01757 int num_args = 0;
01758 an_expr_node_ptr enp = arguments;
01759 float targ_arguments[5];
01760 double targ_result;
01761 #if INTR_FOLD_DEBUG
01762 fprintf(stderr, "Case for arg=tco_real4, ret=tco_real8\n");
01763 #endif
01764 while (enp != NULL) {
01765 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_real4);
01766 #if INTR_FOLD_DEBUG
01767 fprintf(stderr, "arg %d is %lf\n", num_args, targ_arguments[num_args]);
01768 #endif
01769 num_args++;
01770 enp = enp->next;
01771 }
01772 switch (num_args) {
01773 case 2: {
01774 typedef double (*wrapper_type)(float, float);
01775 wrapper_type wrapper_func;
01776 wrapper_func = (wrapper_type) wrapper_void_ptr;
01777 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1]);
01778 break;
01779 }
01780 #if CHECKING
01781 default:
01782 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01783 break;
01784 #endif
01785 }
01786 #if INTR_FOLD_DEBUG
01787 fprintf(stderr, "result is %lf\n", targ_result);
01788 #endif
01789 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_float);
01790 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_real8);
01791 break;
01792 }
01793 case tco_complex8: {
01794 int num_args = 0;
01795 an_expr_node_ptr enp = arguments;
01796 float targ_arguments[5];
01797 struct _cpx_float targ_result;
01798 #if INTR_FOLD_DEBUG
01799 fprintf(stderr, "Case for arg=tco_real4, ret=tco_complex8\n");
01800 #endif
01801 while (enp != NULL) {
01802 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_real4);
01803 #if INTR_FOLD_DEBUG
01804 fprintf(stderr, "arg %d is %lf\n", num_args, targ_arguments[num_args]);
01805 #endif
01806 num_args++;
01807 enp = enp->next;
01808 }
01809 switch (num_args) {
01810 case 1: {
01811 typedef struct _cpx_float (*wrapper_type)(float);
01812 wrapper_type wrapper_func;
01813 wrapper_func = (wrapper_type) wrapper_void_ptr;
01814 targ_result = (*wrapper_func)(targ_arguments[0]);
01815 break;
01816 }
01817 #if CHECKING
01818 default:
01819 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01820 break;
01821 #endif
01822 }
01823 #if INTR_FOLD_DEBUG
01824 fprintf(stderr, "result is (%lf,%lf)\n", targ_result.real, targ_result.imag);
01825 #endif
01826 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_complex);
01827 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_complex8);
01828 break;
01829 }
01830 #if CHECKING
01831 default:
01832 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01833 break;
01834 #endif
01835 }
01836 break;
01837 }
01838 case tco_real8: {
01839 switch (ifdp->return_type) {
01840 case tco_integer2: {
01841 int num_args = 0;
01842 an_expr_node_ptr enp = arguments;
01843 double targ_arguments[5];
01844 short targ_result;
01845 #if INTR_FOLD_DEBUG
01846 fprintf(stderr, "Case for arg=tco_real8, ret=tco_integer2\n");
01847 #endif
01848 while (enp != NULL) {
01849 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_real8);
01850 #if INTR_FOLD_DEBUG
01851 fprintf(stderr, "arg %d is %lf\n", num_args, targ_arguments[num_args]);
01852 #endif
01853 num_args++;
01854 enp = enp->next;
01855 }
01856 switch (num_args) {
01857 case 1: {
01858 typedef short (*wrapper_type)(double);
01859 wrapper_type wrapper_func;
01860 wrapper_func = (wrapper_type) wrapper_void_ptr;
01861 targ_result = (*wrapper_func)(targ_arguments[0]);
01862 break;
01863 }
01864 #if CHECKING
01865 default:
01866 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01867 break;
01868 #endif
01869 }
01870 #if INTR_FOLD_DEBUG
01871 fprintf(stderr, "result is %hd\n", targ_result);
01872 #endif
01873 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
01874 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_integer2);
01875 break;
01876 }
01877 case tco_integer4: {
01878 int num_args = 0;
01879 an_expr_node_ptr enp = arguments;
01880 double targ_arguments[5];
01881 int targ_result;
01882 #if INTR_FOLD_DEBUG
01883 fprintf(stderr, "Case for arg=tco_real8, ret=tco_integer4\n");
01884 #endif
01885 while (enp != NULL) {
01886 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_real8);
01887 #if INTR_FOLD_DEBUG
01888 fprintf(stderr, "arg %d is %lf\n", num_args, targ_arguments[num_args]);
01889 #endif
01890 num_args++;
01891 enp = enp->next;
01892 }
01893 switch (num_args) {
01894 case 1: {
01895 typedef int (*wrapper_type)(double);
01896 wrapper_type wrapper_func;
01897 wrapper_func = (wrapper_type) wrapper_void_ptr;
01898 targ_result = (*wrapper_func)(targ_arguments[0]);
01899 break;
01900 }
01901 #if CHECKING
01902 default:
01903 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01904 break;
01905 #endif
01906 }
01907 #if INTR_FOLD_DEBUG
01908 fprintf(stderr, "result is %d\n", targ_result);
01909 #endif
01910 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
01911 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_integer4);
01912 break;
01913 }
01914 case tco_integer8: {
01915 int num_args = 0;
01916 an_expr_node_ptr enp = arguments;
01917 double targ_arguments[5];
01918 long long targ_result;
01919 #if INTR_FOLD_DEBUG
01920 fprintf(stderr, "Case for arg=tco_real8, ret=tco_integer8\n");
01921 #endif
01922 while (enp != NULL) {
01923 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_real8);
01924 #if INTR_FOLD_DEBUG
01925 fprintf(stderr, "arg %d is %lf\n", num_args, targ_arguments[num_args]);
01926 #endif
01927 num_args++;
01928 enp = enp->next;
01929 }
01930 switch (num_args) {
01931 case 1: {
01932 typedef long long (*wrapper_type)(double);
01933 wrapper_type wrapper_func;
01934 wrapper_func = (wrapper_type) wrapper_void_ptr;
01935 targ_result = (*wrapper_func)(targ_arguments[0]);
01936 break;
01937 }
01938 #if CHECKING
01939 default:
01940 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01941 break;
01942 #endif
01943 }
01944 #if INTR_FOLD_DEBUG
01945 fprintf(stderr, "result is %lld\n", targ_result);
01946 #endif
01947 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
01948 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_integer8);
01949 break;
01950 }
01951 case tco_real8: {
01952 int num_args = 0;
01953 an_expr_node_ptr enp = arguments;
01954 double targ_arguments[5];
01955 double targ_result;
01956 #if INTR_FOLD_DEBUG
01957 fprintf(stderr, "Case for arg=tco_real8, ret=tco_real8\n");
01958 #endif
01959 while (enp != NULL) {
01960 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_real8);
01961 #if INTR_FOLD_DEBUG
01962 fprintf(stderr, "arg %d is %lf\n", num_args, targ_arguments[num_args]);
01963 #endif
01964 num_args++;
01965 enp = enp->next;
01966 }
01967 switch (num_args) {
01968 case 1: {
01969 typedef double (*wrapper_type)(double);
01970 wrapper_type wrapper_func;
01971 wrapper_func = (wrapper_type) wrapper_void_ptr;
01972 targ_result = (*wrapper_func)(targ_arguments[0]);
01973 break;
01974 }
01975 case 2: {
01976 typedef double (*wrapper_type)(double, double);
01977 wrapper_type wrapper_func;
01978 wrapper_func = (wrapper_type) wrapper_void_ptr;
01979 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1]);
01980 break;
01981 }
01982 #if CHECKING
01983 default:
01984 internal_error("bad case in do_compile_time_constant_intrinsic_call");
01985 break;
01986 #endif
01987 }
01988 #if INTR_FOLD_DEBUG
01989 fprintf(stderr, "result is %lf\n", targ_result);
01990 #endif
01991 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_float);
01992 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_real8);
01993 break;
01994 }
01995 case tco_real16: {
01996 int num_args = 0;
01997 an_expr_node_ptr enp = arguments;
01998 double targ_arguments[5];
01999 long double targ_result;
02000 #if INTR_FOLD_DEBUG
02001 fprintf(stderr, "Case for arg=tco_real8, ret=tco_real16\n");
02002 #endif
02003 while (enp != NULL) {
02004 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_real8);
02005 #if INTR_FOLD_DEBUG
02006 fprintf(stderr, "arg %d is %lf\n", num_args, targ_arguments[num_args]);
02007 #endif
02008 num_args++;
02009 enp = enp->next;
02010 }
02011 switch (num_args) {
02012 case 2: {
02013 typedef long double (*wrapper_type)(double, double);
02014 wrapper_type wrapper_func;
02015 wrapper_func = (wrapper_type) wrapper_void_ptr;
02016 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1]);
02017 break;
02018 }
02019 #if CHECKING
02020 default:
02021 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02022 break;
02023 #endif
02024 }
02025 #if INTR_FOLD_DEBUG
02026 fprintf(stderr, "result is %llf\n", targ_result);
02027 #endif
02028 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_float);
02029 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_real16);
02030 break;
02031 }
02032 case tco_complex16: {
02033 int num_args = 0;
02034 an_expr_node_ptr enp = arguments;
02035 double targ_arguments[5];
02036 struct _cpx_double targ_result;
02037 #if INTR_FOLD_DEBUG
02038 fprintf(stderr, "Case for arg=tco_real8, ret=tco_complex16\n");
02039 #endif
02040 while (enp != NULL) {
02041 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_real8);
02042 #if INTR_FOLD_DEBUG
02043 fprintf(stderr, "arg %d is %lf\n", num_args, targ_arguments[num_args]);
02044 #endif
02045 num_args++;
02046 enp = enp->next;
02047 }
02048 switch (num_args) {
02049 case 1: {
02050 typedef struct _cpx_double (*wrapper_type)(double);
02051 wrapper_type wrapper_func;
02052 wrapper_func = (wrapper_type) wrapper_void_ptr;
02053 targ_result = (*wrapper_func)(targ_arguments[0]);
02054 break;
02055 }
02056 #if CHECKING
02057 default:
02058 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02059 break;
02060 #endif
02061 }
02062 #if INTR_FOLD_DEBUG
02063 fprintf(stderr, "result is (%lf,%lf)\n", targ_result.dreal, targ_result.dimag);
02064 #endif
02065 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_complex);
02066 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_complex16);
02067 break;
02068 }
02069 #if CHECKING
02070 default:
02071 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02072 break;
02073 #endif
02074 }
02075 break;
02076 }
02077 case tco_real16: {
02078 switch (ifdp->return_type) {
02079 case tco_integer2: {
02080 int num_args = 0;
02081 an_expr_node_ptr enp = arguments;
02082 long double targ_arguments[5];
02083 short targ_result;
02084 #if INTR_FOLD_DEBUG
02085 fprintf(stderr, "Case for arg=tco_real16, ret=tco_integer2\n");
02086 #endif
02087 while (enp != NULL) {
02088 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_real16);
02089 #if INTR_FOLD_DEBUG
02090 fprintf(stderr, "arg %d is %llf\n", num_args, targ_arguments[num_args]);
02091 #endif
02092 num_args++;
02093 enp = enp->next;
02094 }
02095 switch (num_args) {
02096 case 1: {
02097 typedef short (*wrapper_type)(long double);
02098 wrapper_type wrapper_func;
02099 wrapper_func = (wrapper_type) wrapper_void_ptr;
02100 targ_result = (*wrapper_func)(targ_arguments[0]);
02101 break;
02102 }
02103 #if CHECKING
02104 default:
02105 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02106 break;
02107 #endif
02108 }
02109 #if INTR_FOLD_DEBUG
02110 fprintf(stderr, "result is %hd\n", targ_result);
02111 #endif
02112 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
02113 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_integer2);
02114 break;
02115 }
02116 case tco_integer4: {
02117 int num_args = 0;
02118 an_expr_node_ptr enp = arguments;
02119 long double targ_arguments[5];
02120 int targ_result;
02121 #if INTR_FOLD_DEBUG
02122 fprintf(stderr, "Case for arg=tco_real16, ret=tco_integer4\n");
02123 #endif
02124 while (enp != NULL) {
02125 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_real16);
02126 #if INTR_FOLD_DEBUG
02127 fprintf(stderr, "arg %d is %llf\n", num_args, targ_arguments[num_args]);
02128 #endif
02129 num_args++;
02130 enp = enp->next;
02131 }
02132 switch (num_args) {
02133 case 1: {
02134 typedef int (*wrapper_type)(long double);
02135 wrapper_type wrapper_func;
02136 wrapper_func = (wrapper_type) wrapper_void_ptr;
02137 targ_result = (*wrapper_func)(targ_arguments[0]);
02138 break;
02139 }
02140 #if CHECKING
02141 default:
02142 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02143 break;
02144 #endif
02145 }
02146 #if INTR_FOLD_DEBUG
02147 fprintf(stderr, "result is %d\n", targ_result);
02148 #endif
02149 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
02150 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_integer4);
02151 break;
02152 }
02153 case tco_integer8: {
02154 int num_args = 0;
02155 an_expr_node_ptr enp = arguments;
02156 long double targ_arguments[5];
02157 long long targ_result;
02158 #if INTR_FOLD_DEBUG
02159 fprintf(stderr, "Case for arg=tco_real16, ret=tco_integer8\n");
02160 #endif
02161 while (enp != NULL) {
02162 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_real16);
02163 #if INTR_FOLD_DEBUG
02164 fprintf(stderr, "arg %d is %llf\n", num_args, targ_arguments[num_args]);
02165 #endif
02166 num_args++;
02167 enp = enp->next;
02168 }
02169 switch (num_args) {
02170 case 1: {
02171 typedef long long (*wrapper_type)(long double);
02172 wrapper_type wrapper_func;
02173 wrapper_func = (wrapper_type) wrapper_void_ptr;
02174 targ_result = (*wrapper_func)(targ_arguments[0]);
02175 break;
02176 }
02177 #if CHECKING
02178 default:
02179 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02180 break;
02181 #endif
02182 }
02183 #if INTR_FOLD_DEBUG
02184 fprintf(stderr, "result is %lld\n", targ_result);
02185 #endif
02186 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
02187 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_integer8);
02188 break;
02189 }
02190 case tco_real16: {
02191 int num_args = 0;
02192 an_expr_node_ptr enp = arguments;
02193 long double targ_arguments[5];
02194 long double targ_result;
02195 #if INTR_FOLD_DEBUG
02196 fprintf(stderr, "Case for arg=tco_real16, ret=tco_real16\n");
02197 #endif
02198 while (enp != NULL) {
02199 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_real16);
02200 #if INTR_FOLD_DEBUG
02201 fprintf(stderr, "arg %d is %llf\n", num_args, targ_arguments[num_args]);
02202 #endif
02203 num_args++;
02204 enp = enp->next;
02205 }
02206 switch (num_args) {
02207 case 1: {
02208 typedef long double (*wrapper_type)(long double);
02209 wrapper_type wrapper_func;
02210 wrapper_func = (wrapper_type) wrapper_void_ptr;
02211 targ_result = (*wrapper_func)(targ_arguments[0]);
02212 break;
02213 }
02214 case 2: {
02215 typedef long double (*wrapper_type)(long double, long double);
02216 wrapper_type wrapper_func;
02217 wrapper_func = (wrapper_type) wrapper_void_ptr;
02218 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1]);
02219 break;
02220 }
02221 #if CHECKING
02222 default:
02223 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02224 break;
02225 #endif
02226 }
02227 #if INTR_FOLD_DEBUG
02228 fprintf(stderr, "result is %llf\n", targ_result);
02229 #endif
02230 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_float);
02231 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_real16);
02232 break;
02233 }
02234 case tco_complex32: {
02235 int num_args = 0;
02236 an_expr_node_ptr enp = arguments;
02237 long double targ_arguments[5];
02238 struct _cpx_long_double targ_result;
02239 #if INTR_FOLD_DEBUG
02240 fprintf(stderr, "Case for arg=tco_real16, ret=tco_complex32\n");
02241 #endif
02242 while (enp != NULL) {
02243 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_real16);
02244 #if INTR_FOLD_DEBUG
02245 fprintf(stderr, "arg %d is %llf\n", num_args, targ_arguments[num_args]);
02246 #endif
02247 num_args++;
02248 enp = enp->next;
02249 }
02250 switch (num_args) {
02251 case 1: {
02252 typedef struct _cpx_long_double (*wrapper_type)(long double);
02253 wrapper_type wrapper_func;
02254 wrapper_func = (wrapper_type) wrapper_void_ptr;
02255 targ_result = (*wrapper_func)(targ_arguments[0]);
02256 break;
02257 }
02258 #if CHECKING
02259 default:
02260 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02261 break;
02262 #endif
02263 }
02264 #if INTR_FOLD_DEBUG
02265 fprintf(stderr, "result is (%llf,%llf)\n", targ_result.qreal, targ_result.qimag);
02266 #endif
02267 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_complex);
02268 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_complex32);
02269 break;
02270 }
02271 #if CHECKING
02272 default:
02273 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02274 break;
02275 #endif
02276 }
02277 break;
02278 }
02279 case tco_complex8: {
02280 switch (ifdp->return_type) {
02281 case tco_real4: {
02282 int num_args = 0;
02283 an_expr_node_ptr enp = arguments;
02284 struct _cpx_float targ_arguments[5];
02285 float targ_result;
02286 #if INTR_FOLD_DEBUG
02287 fprintf(stderr, "Case for arg=tco_complex8, ret=tco_real4\n");
02288 #endif
02289 while (enp != NULL) {
02290 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_complex8);
02291 #if INTR_FOLD_DEBUG
02292 fprintf(stderr, "arg %d is (%lf,%lf)\n", num_args, targ_arguments[num_args].real, targ_arguments[num_args].imag);
02293 #endif
02294 num_args++;
02295 enp = enp->next;
02296 }
02297 switch (num_args) {
02298 case 1: {
02299 typedef float (*wrapper_type)(struct _cpx_float);
02300 wrapper_type wrapper_func;
02301 wrapper_func = (wrapper_type) wrapper_void_ptr;
02302 targ_result = (*wrapper_func)(targ_arguments[0]);
02303 break;
02304 }
02305 #if CHECKING
02306 default:
02307 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02308 break;
02309 #endif
02310 }
02311 #if INTR_FOLD_DEBUG
02312 fprintf(stderr, "result is %lf\n", targ_result);
02313 #endif
02314 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_float);
02315 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_real4);
02316 break;
02317 }
02318 case tco_real8: {
02319 int num_args = 0;
02320 an_expr_node_ptr enp = arguments;
02321 struct _cpx_float targ_arguments[5];
02322 double targ_result;
02323 #if INTR_FOLD_DEBUG
02324 fprintf(stderr, "Case for arg=tco_complex8, ret=tco_real8\n");
02325 #endif
02326 while (enp != NULL) {
02327 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_complex8);
02328 #if INTR_FOLD_DEBUG
02329 fprintf(stderr, "arg %d is (%lf,%lf)\n", num_args, targ_arguments[num_args].real, targ_arguments[num_args].imag);
02330 #endif
02331 num_args++;
02332 enp = enp->next;
02333 }
02334 switch (num_args) {
02335 case 1: {
02336 typedef double (*wrapper_type)(struct _cpx_float);
02337 wrapper_type wrapper_func;
02338 wrapper_func = (wrapper_type) wrapper_void_ptr;
02339 targ_result = (*wrapper_func)(targ_arguments[0]);
02340 break;
02341 }
02342 #if CHECKING
02343 default:
02344 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02345 break;
02346 #endif
02347 }
02348 #if INTR_FOLD_DEBUG
02349 fprintf(stderr, "result is %lf\n", targ_result);
02350 #endif
02351 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_float);
02352 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_real8);
02353 break;
02354 }
02355 case tco_complex8: {
02356 int num_args = 0;
02357 an_expr_node_ptr enp = arguments;
02358 struct _cpx_float targ_arguments[5];
02359 struct _cpx_float targ_result;
02360 #if INTR_FOLD_DEBUG
02361 fprintf(stderr, "Case for arg=tco_complex8, ret=tco_complex8\n");
02362 #endif
02363 while (enp != NULL) {
02364 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_complex8);
02365 #if INTR_FOLD_DEBUG
02366 fprintf(stderr, "arg %d is (%lf,%lf)\n", num_args, targ_arguments[num_args].real, targ_arguments[num_args].imag);
02367 #endif
02368 num_args++;
02369 enp = enp->next;
02370 }
02371 switch (num_args) {
02372 case 1: {
02373 typedef struct _cpx_float (*wrapper_type)(struct _cpx_float);
02374 wrapper_type wrapper_func;
02375 wrapper_func = (wrapper_type) wrapper_void_ptr;
02376 targ_result = (*wrapper_func)(targ_arguments[0]);
02377 break;
02378 }
02379 #if CHECKING
02380 default:
02381 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02382 break;
02383 #endif
02384 }
02385 #if INTR_FOLD_DEBUG
02386 fprintf(stderr, "result is (%lf,%lf)\n", targ_result.real, targ_result.imag);
02387 #endif
02388 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_complex);
02389 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_complex8);
02390 break;
02391 }
02392 #if CHECKING
02393 default:
02394 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02395 break;
02396 #endif
02397 }
02398 break;
02399 }
02400 case tco_complex16: {
02401 switch (ifdp->return_type) {
02402 case tco_real8: {
02403 int num_args = 0;
02404 an_expr_node_ptr enp = arguments;
02405 struct _cpx_double targ_arguments[5];
02406 double targ_result;
02407 #if INTR_FOLD_DEBUG
02408 fprintf(stderr, "Case for arg=tco_complex16, ret=tco_real8\n");
02409 #endif
02410 while (enp != NULL) {
02411 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_complex16);
02412 #if INTR_FOLD_DEBUG
02413 fprintf(stderr, "arg %d is (%lf,%lf)\n", num_args, targ_arguments[num_args].dreal, targ_arguments[num_args].dimag);
02414 #endif
02415 num_args++;
02416 enp = enp->next;
02417 }
02418 switch (num_args) {
02419 case 1: {
02420 typedef double (*wrapper_type)(struct _cpx_double);
02421 wrapper_type wrapper_func;
02422 wrapper_func = (wrapper_type) wrapper_void_ptr;
02423 targ_result = (*wrapper_func)(targ_arguments[0]);
02424 break;
02425 }
02426 #if CHECKING
02427 default:
02428 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02429 break;
02430 #endif
02431 }
02432 #if INTR_FOLD_DEBUG
02433 fprintf(stderr, "result is %lf\n", targ_result);
02434 #endif
02435 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_float);
02436 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_real8);
02437 break;
02438 }
02439 case tco_complex16: {
02440 int num_args = 0;
02441 an_expr_node_ptr enp = arguments;
02442 struct _cpx_double targ_arguments[5];
02443 struct _cpx_double targ_result;
02444 #if INTR_FOLD_DEBUG
02445 fprintf(stderr, "Case for arg=tco_complex16, ret=tco_complex16\n");
02446 #endif
02447 while (enp != NULL) {
02448 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_complex16);
02449 #if INTR_FOLD_DEBUG
02450 fprintf(stderr, "arg %d is (%lf,%lf)\n", num_args, targ_arguments[num_args].dreal, targ_arguments[num_args].dimag);
02451 #endif
02452 num_args++;
02453 enp = enp->next;
02454 }
02455 switch (num_args) {
02456 case 1: {
02457 typedef struct _cpx_double (*wrapper_type)(struct _cpx_double);
02458 wrapper_type wrapper_func;
02459 wrapper_func = (wrapper_type) wrapper_void_ptr;
02460 targ_result = (*wrapper_func)(targ_arguments[0]);
02461 break;
02462 }
02463 #if CHECKING
02464 default:
02465 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02466 break;
02467 #endif
02468 }
02469 #if INTR_FOLD_DEBUG
02470 fprintf(stderr, "result is (%lf,%lf)\n", targ_result.dreal, targ_result.dimag);
02471 #endif
02472 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_complex);
02473 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_complex16);
02474 break;
02475 }
02476 #if CHECKING
02477 default:
02478 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02479 break;
02480 #endif
02481 }
02482 break;
02483 }
02484 case tco_complex32: {
02485 switch (ifdp->return_type) {
02486 case tco_real16: {
02487 int num_args = 0;
02488 an_expr_node_ptr enp = arguments;
02489 struct _cpx_long_double targ_arguments[5];
02490 long double targ_result;
02491 #if INTR_FOLD_DEBUG
02492 fprintf(stderr, "Case for arg=tco_complex32, ret=tco_real16\n");
02493 #endif
02494 while (enp != NULL) {
02495 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_complex32);
02496 #if INTR_FOLD_DEBUG
02497 fprintf(stderr, "arg %d is (%llf,%llf)\n", num_args, targ_arguments[num_args].qreal, targ_arguments[num_args].qimag);
02498 #endif
02499 num_args++;
02500 enp = enp->next;
02501 }
02502 switch (num_args) {
02503 case 1: {
02504 typedef long double (*wrapper_type)(struct _cpx_long_double);
02505 wrapper_type wrapper_func;
02506 wrapper_func = (wrapper_type) wrapper_void_ptr;
02507 targ_result = (*wrapper_func)(targ_arguments[0]);
02508 break;
02509 }
02510 #if CHECKING
02511 default:
02512 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02513 break;
02514 #endif
02515 }
02516 #if INTR_FOLD_DEBUG
02517 fprintf(stderr, "result is %llf\n", targ_result);
02518 #endif
02519 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_float);
02520 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_real16);
02521 break;
02522 }
02523 case tco_complex32: {
02524 int num_args = 0;
02525 an_expr_node_ptr enp = arguments;
02526 struct _cpx_long_double targ_arguments[5];
02527 struct _cpx_long_double targ_result;
02528 #if INTR_FOLD_DEBUG
02529 fprintf(stderr, "Case for arg=tco_complex32, ret=tco_complex32\n");
02530 #endif
02531 while (enp != NULL) {
02532 convert_constant_EDG_to_targ(enp->variant.constant, (void *)&targ_arguments[num_args], tco_complex32);
02533 #if INTR_FOLD_DEBUG
02534 fprintf(stderr, "arg %d is (%llf,%llf)\n", num_args, targ_arguments[num_args].qreal, targ_arguments[num_args].qimag);
02535 #endif
02536 num_args++;
02537 enp = enp->next;
02538 }
02539 switch (num_args) {
02540 case 1: {
02541 typedef struct _cpx_long_double (*wrapper_type)(struct _cpx_long_double);
02542 wrapper_type wrapper_func;
02543 wrapper_func = (wrapper_type) wrapper_void_ptr;
02544 targ_result = (*wrapper_func)(targ_arguments[0]);
02545 break;
02546 }
02547 #if CHECKING
02548 default:
02549 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02550 break;
02551 #endif
02552 }
02553 #if INTR_FOLD_DEBUG
02554 fprintf(stderr, "result is (%llf,%llf)\n", targ_result.qreal, targ_result.qimag);
02555 #endif
02556 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_complex);
02557 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_complex32);
02558 break;
02559 }
02560 #if CHECKING
02561 default:
02562 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02563 break;
02564 #endif
02565 }
02566 break;
02567 }
02568 case tco_character: {
02569 switch (ifdp->return_type) {
02570 case tco_integer1: {
02571 int num_args = 0;
02572 an_expr_node_ptr enp = arguments;
02573 char *targ_arguments[5];
02574 int targ_lengths[5];
02575 int i;
02576 signed char targ_result;
02577 #if INTR_FOLD_DEBUG
02578 fprintf(stderr, "Case for arg=tco_character, ret=tco_integer1\n");
02579 #endif
02580 while (enp != NULL) {
02581 targ_arguments[num_args] = enp->variant.operation.operands->variant.constant->variant.string.value;
02582 targ_lengths[num_args] = enp->variant.operation.operands->variant.constant->variant.string.length;
02583 #if INTR_FOLD_DEBUG
02584 fprintf(stderr, "arg %d is '", num_args);
02585 for (i=0;i<targ_lengths[num_args];i++) putc(targ_arguments[num_args][i], stderr);
02586 fprintf(stderr, "'\n");
02587 #endif
02588 num_args++;
02589 enp = enp->next;
02590 }
02591 switch (num_args) {
02592 case 2: {
02593 typedef signed char (*wrapper_type)(char *, char *, int, int);
02594 wrapper_type wrapper_func;
02595 wrapper_func = (wrapper_type) wrapper_void_ptr;
02596 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1], targ_lengths[0], targ_lengths[1]);
02597 break;
02598 }
02599 #if CHECKING
02600 default:
02601 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02602 break;
02603 #endif
02604 }
02605 #if INTR_FOLD_DEBUG
02606 fprintf(stderr, "result is %hd\n", targ_result);
02607 #endif
02608 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
02609 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_integer1);
02610 break;
02611 }
02612 case tco_integer2: {
02613 int num_args = 0;
02614 an_expr_node_ptr enp = arguments;
02615 char *targ_arguments[5];
02616 int targ_lengths[5];
02617 int i;
02618 short targ_result;
02619 #if INTR_FOLD_DEBUG
02620 fprintf(stderr, "Case for arg=tco_character, ret=tco_integer2\n");
02621 #endif
02622 while (enp != NULL) {
02623 targ_arguments[num_args] = enp->variant.operation.operands->variant.constant->variant.string.value;
02624 targ_lengths[num_args] = enp->variant.operation.operands->variant.constant->variant.string.length;
02625 #if INTR_FOLD_DEBUG
02626 fprintf(stderr, "arg %d is '", num_args);
02627 for (i=0;i<targ_lengths[num_args];i++) putc(targ_arguments[num_args][i], stderr);
02628 fprintf(stderr, "'\n");
02629 #endif
02630 num_args++;
02631 enp = enp->next;
02632 }
02633 switch (num_args) {
02634 case 2: {
02635 typedef short (*wrapper_type)(char *, char *, int, int);
02636 wrapper_type wrapper_func;
02637 wrapper_func = (wrapper_type) wrapper_void_ptr;
02638 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1], targ_lengths[0], targ_lengths[1]);
02639 break;
02640 }
02641 #if CHECKING
02642 default:
02643 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02644 break;
02645 #endif
02646 }
02647 #if INTR_FOLD_DEBUG
02648 fprintf(stderr, "result is %hd\n", targ_result);
02649 #endif
02650 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
02651 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_integer2);
02652 break;
02653 }
02654 case tco_integer4: {
02655 int num_args = 0;
02656 an_expr_node_ptr enp = arguments;
02657 char *targ_arguments[5];
02658 int targ_lengths[5];
02659 int i;
02660 int targ_result;
02661 #if INTR_FOLD_DEBUG
02662 fprintf(stderr, "Case for arg=tco_character, ret=tco_integer4\n");
02663 #endif
02664 while (enp != NULL) {
02665 targ_arguments[num_args] = enp->variant.operation.operands->variant.constant->variant.string.value;
02666 targ_lengths[num_args] = enp->variant.operation.operands->variant.constant->variant.string.length;
02667 #if INTR_FOLD_DEBUG
02668 fprintf(stderr, "arg %d is '", num_args);
02669 for (i=0;i<targ_lengths[num_args];i++) putc(targ_arguments[num_args][i], stderr);
02670 fprintf(stderr, "'\n");
02671 #endif
02672 num_args++;
02673 enp = enp->next;
02674 }
02675 switch (num_args) {
02676 case 2: {
02677 typedef int (*wrapper_type)(char *, char *, int, int);
02678 wrapper_type wrapper_func;
02679 wrapper_func = (wrapper_type) wrapper_void_ptr;
02680 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1], targ_lengths[0], targ_lengths[1]);
02681 break;
02682 }
02683 #if CHECKING
02684 default:
02685 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02686 break;
02687 #endif
02688 }
02689 #if INTR_FOLD_DEBUG
02690 fprintf(stderr, "result is %d\n", targ_result);
02691 #endif
02692 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
02693 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_integer4);
02694 break;
02695 }
02696 case tco_integer8: {
02697 int num_args = 0;
02698 an_expr_node_ptr enp = arguments;
02699 char *targ_arguments[5];
02700 int targ_lengths[5];
02701 int i;
02702 long long targ_result;
02703 #if INTR_FOLD_DEBUG
02704 fprintf(stderr, "Case for arg=tco_character, ret=tco_integer8\n");
02705 #endif
02706 while (enp != NULL) {
02707 targ_arguments[num_args] = enp->variant.operation.operands->variant.constant->variant.string.value;
02708 targ_lengths[num_args] = enp->variant.operation.operands->variant.constant->variant.string.length;
02709 #if INTR_FOLD_DEBUG
02710 fprintf(stderr, "arg %d is '", num_args);
02711 for (i=0;i<targ_lengths[num_args];i++) putc(targ_arguments[num_args][i], stderr);
02712 fprintf(stderr, "'\n");
02713 #endif
02714 num_args++;
02715 enp = enp->next;
02716 }
02717 switch (num_args) {
02718 case 2: {
02719 typedef long long (*wrapper_type)(char *, char *, int, int);
02720 wrapper_type wrapper_func;
02721 wrapper_func = (wrapper_type) wrapper_void_ptr;
02722 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1], targ_lengths[0], targ_lengths[1]);
02723 break;
02724 }
02725 #if CHECKING
02726 default:
02727 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02728 break;
02729 #endif
02730 }
02731 #if INTR_FOLD_DEBUG
02732 fprintf(stderr, "result is %lld\n", targ_result);
02733 #endif
02734 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
02735 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_integer8);
02736 break;
02737 }
02738 case tco_logical1: {
02739 int num_args = 0;
02740 an_expr_node_ptr enp = arguments;
02741 char *targ_arguments[5];
02742 int targ_lengths[5];
02743 int i;
02744 signed char targ_result;
02745 #if INTR_FOLD_DEBUG
02746 fprintf(stderr, "Case for arg=tco_character, ret=tco_logical1\n");
02747 #endif
02748 while (enp != NULL) {
02749 targ_arguments[num_args] = enp->variant.operation.operands->variant.constant->variant.string.value;
02750 targ_lengths[num_args] = enp->variant.operation.operands->variant.constant->variant.string.length;
02751 #if INTR_FOLD_DEBUG
02752 fprintf(stderr, "arg %d is '", num_args);
02753 for (i=0;i<targ_lengths[num_args];i++) putc(targ_arguments[num_args][i], stderr);
02754 fprintf(stderr, "'\n");
02755 #endif
02756 num_args++;
02757 enp = enp->next;
02758 }
02759 switch (num_args) {
02760 case 2: {
02761 typedef signed char (*wrapper_type)(char *, char *, int, int);
02762 wrapper_type wrapper_func;
02763 wrapper_func = (wrapper_type) wrapper_void_ptr;
02764 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1], targ_lengths[0], targ_lengths[1]);
02765 break;
02766 }
02767 #if CHECKING
02768 default:
02769 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02770 break;
02771 #endif
02772 }
02773 #if INTR_FOLD_DEBUG
02774 fprintf(stderr, "result is %hd\n", targ_result);
02775 #endif
02776 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
02777 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_logical1);
02778 break;
02779 }
02780 case tco_logical2: {
02781 int num_args = 0;
02782 an_expr_node_ptr enp = arguments;
02783 char *targ_arguments[5];
02784 int targ_lengths[5];
02785 int i;
02786 short targ_result;
02787 #if INTR_FOLD_DEBUG
02788 fprintf(stderr, "Case for arg=tco_character, ret=tco_logical2\n");
02789 #endif
02790 while (enp != NULL) {
02791 targ_arguments[num_args] = enp->variant.operation.operands->variant.constant->variant.string.value;
02792 targ_lengths[num_args] = enp->variant.operation.operands->variant.constant->variant.string.length;
02793 #if INTR_FOLD_DEBUG
02794 fprintf(stderr, "arg %d is '", num_args);
02795 for (i=0;i<targ_lengths[num_args];i++) putc(targ_arguments[num_args][i], stderr);
02796 fprintf(stderr, "'\n");
02797 #endif
02798 num_args++;
02799 enp = enp->next;
02800 }
02801 switch (num_args) {
02802 case 2: {
02803 typedef short (*wrapper_type)(char *, char *, int, int);
02804 wrapper_type wrapper_func;
02805 wrapper_func = (wrapper_type) wrapper_void_ptr;
02806 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1], targ_lengths[0], targ_lengths[1]);
02807 break;
02808 }
02809 #if CHECKING
02810 default:
02811 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02812 break;
02813 #endif
02814 }
02815 #if INTR_FOLD_DEBUG
02816 fprintf(stderr, "result is %hd\n", targ_result);
02817 #endif
02818 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
02819 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_logical2);
02820 break;
02821 }
02822 case tco_logical4: {
02823 int num_args = 0;
02824 an_expr_node_ptr enp = arguments;
02825 char *targ_arguments[5];
02826 int targ_lengths[5];
02827 int i;
02828 int targ_result;
02829 #if INTR_FOLD_DEBUG
02830 fprintf(stderr, "Case for arg=tco_character, ret=tco_logical4\n");
02831 #endif
02832 while (enp != NULL) {
02833 targ_arguments[num_args] = enp->variant.operation.operands->variant.constant->variant.string.value;
02834 targ_lengths[num_args] = enp->variant.operation.operands->variant.constant->variant.string.length;
02835 #if INTR_FOLD_DEBUG
02836 fprintf(stderr, "arg %d is '", num_args);
02837 for (i=0;i<targ_lengths[num_args];i++) putc(targ_arguments[num_args][i], stderr);
02838 fprintf(stderr, "'\n");
02839 #endif
02840 num_args++;
02841 enp = enp->next;
02842 }
02843 switch (num_args) {
02844 case 2: {
02845 typedef int (*wrapper_type)(char *, char *, int, int);
02846 wrapper_type wrapper_func;
02847 wrapper_func = (wrapper_type) wrapper_void_ptr;
02848 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1], targ_lengths[0], targ_lengths[1]);
02849 break;
02850 }
02851 #if CHECKING
02852 default:
02853 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02854 break;
02855 #endif
02856 }
02857 #if INTR_FOLD_DEBUG
02858 fprintf(stderr, "result is %d\n", targ_result);
02859 #endif
02860 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
02861 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_logical4);
02862 break;
02863 }
02864 case tco_logical8: {
02865 int num_args = 0;
02866 an_expr_node_ptr enp = arguments;
02867 char *targ_arguments[5];
02868 int targ_lengths[5];
02869 int i;
02870 long long targ_result;
02871 #if INTR_FOLD_DEBUG
02872 fprintf(stderr, "Case for arg=tco_character, ret=tco_logical8\n");
02873 #endif
02874 while (enp != NULL) {
02875 targ_arguments[num_args] = enp->variant.operation.operands->variant.constant->variant.string.value;
02876 targ_lengths[num_args] = enp->variant.operation.operands->variant.constant->variant.string.length;
02877 #if INTR_FOLD_DEBUG
02878 fprintf(stderr, "arg %d is '", num_args);
02879 for (i=0;i<targ_lengths[num_args];i++) putc(targ_arguments[num_args][i], stderr);
02880 fprintf(stderr, "'\n");
02881 #endif
02882 num_args++;
02883 enp = enp->next;
02884 }
02885 switch (num_args) {
02886 case 2: {
02887 typedef long long (*wrapper_type)(char *, char *, int, int);
02888 wrapper_type wrapper_func;
02889 wrapper_func = (wrapper_type) wrapper_void_ptr;
02890 targ_result = (*wrapper_func)(targ_arguments[0], targ_arguments[1], targ_lengths[0], targ_lengths[1]);
02891 break;
02892 }
02893 #if CHECKING
02894 default:
02895 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02896 break;
02897 #endif
02898 }
02899 #if INTR_FOLD_DEBUG
02900 fprintf(stderr, "result is %lld\n", targ_result);
02901 #endif
02902 clear_fe_constant(result_constant, (a_constant_repr_kind)ck_integer);
02903 convert_constant_targ_to_EDG((void *)&targ_result, &result_constant->constant, tco_logical8);
02904 break;
02905 }
02906 #if CHECKING
02907 default:
02908 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02909 break;
02910 #endif
02911 }
02912 break;
02913 }
02914 case tco_logical1: {
02915 switch (ifdp->return_type) {
02916 #if CHECKING
02917 default:
02918 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02919 break;
02920 #endif
02921 }
02922 break;
02923 }
02924 case tco_logical2: {
02925 switch (ifdp->return_type) {
02926 #if CHECKING
02927 default:
02928 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02929 break;
02930 #endif
02931 }
02932 break;
02933 }
02934 case tco_logical4: {
02935 switch (ifdp->return_type) {
02936 #if CHECKING
02937 default:
02938 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02939 break;
02940 #endif
02941 }
02942 break;
02943 }
02944 case tco_logical8: {
02945 switch (ifdp->return_type) {
02946 #if CHECKING
02947 default:
02948 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02949 break;
02950 #endif
02951 }
02952 break;
02953 }
02954 #if CHECKING
02955 default:
02956 internal_error("bad case in do_compile_time_constant_intrinsic_call");
02957 break;
02958 #endif
02959 }
02960 return TRUE;
02961 }
02962