| ... | @@ -3358,29 +3358,40 @@ zig_float_from_repr(f128) | ... | @@ -3358,29 +3358,40 @@ zig_float_from_repr(f128) |
| 3358 | #define zig_cast_f128 (zig_f128) | 3358 | #define zig_cast_f128 (zig_f128) |
| 3359 | #endif | 3359 | #endif |
| 3360 | | 3360 | |
| 3361 | #define zig_convert_builtin(ResType, operation, ArgType, version) \ | 3361 | #define zig_convert_builtin(ExternResType, ResType, operation, ExternArgType, ArgType, version) \ |
| 3362 | zig_extern ResType zig_expand_concat(zig_expand_concat(zig_expand_concat(__##operation, \ | 3362 | zig_extern ExternResType zig_expand_concat(zig_expand_concat(zig_expand_concat(__##operation, \ |
| 3363 | zig_compiler_rt_abbrev_##ArgType), zig_compiler_rt_abbrev_##ResType), version)(ArgType); | 3363 | zig_compiler_rt_abbrev_##ArgType), zig_compiler_rt_abbrev_##ResType), version)(ExternArgType); \ |
| 3364 | zig_convert_builtin(zig_compiler_rt_f16, trunc, zig_f32, 2) | 3364 | static inline ResType zig_expand_concat(zig_expand_concat(zig_##operation, \ |
| 3365 | zig_convert_builtin(zig_compiler_rt_f16, trunc, zig_f64, 2) | 3365 | zig_compiler_rt_abbrev_##ArgType), zig_compiler_rt_abbrev_##ResType)(ArgType arg) { \ |
| 3366 | zig_convert_builtin(zig_f16, trunc, zig_f80, 2) | 3366 | ResType res; \ |
| 3367 | zig_convert_builtin(zig_f16, trunc, zig_f128, 2) | 3367 | ExternResType extern_res; \ |
| 3368 | zig_convert_builtin(zig_f32, extend, zig_compiler_rt_f16, 2) | 3368 | ExternArgType extern_arg; \ |
| 3369 | zig_convert_builtin(zig_f32, trunc, zig_f64, 2) | 3369 | memcpy(&extern_arg, &arg, sizeof(extern_arg)); \ |
| 3370 | zig_convert_builtin(zig_f32, trunc, zig_f80, 2) | 3370 | extern_res = zig_expand_concat(zig_expand_concat(zig_expand_concat(__##operation, \ |
| 3371 | zig_convert_builtin(zig_f32, trunc, zig_f128, 2) | 3371 | zig_compiler_rt_abbrev_##ArgType), zig_compiler_rt_abbrev_##ResType), version)(extern_arg); \ |
| 3372 | zig_convert_builtin(zig_f64, extend, zig_compiler_rt_f16, 2) | 3372 | memcpy(&res, &extern_res, sizeof(res)); \ |
| 3373 | zig_convert_builtin(zig_f64, extend, zig_f32, 2) | 3373 | return extern_res; \ |
| 3374 | zig_convert_builtin(zig_f64, trunc, zig_f80, 2) | 3374 | } |
| 3375 | zig_convert_builtin(zig_f64, trunc, zig_f128, 2) | 3375 | zig_convert_builtin(zig_compiler_rt_f16, zig_f16, trunc, zig_f32, zig_f32, 2) |
| 3376 | zig_convert_builtin(zig_f80, extend, zig_f16, 2) | 3376 | zig_convert_builtin(zig_compiler_rt_f16, zig_f16, trunc, zig_f64, zig_f64, 2) |
| 3377 | zig_convert_builtin(zig_f80, extend, zig_f32, 2) | 3377 | zig_convert_builtin(zig_f16, zig_f16, trunc, zig_f80, zig_f80, 2) |
| 3378 | zig_convert_builtin(zig_f80, extend, zig_f64, 2) | 3378 | zig_convert_builtin(zig_f16, zig_f16, trunc, zig_f128, zig_f128, 2) |
| 3379 | zig_convert_builtin(zig_f80, trunc, zig_f128, 2) | 3379 | zig_convert_builtin(zig_f32, zig_f32, extend, zig_compiler_rt_f16, zig_f16, 2) |
| 3380 | zig_convert_builtin(zig_f128, extend, zig_f16, 2) | 3380 | zig_convert_builtin(zig_f32, zig_f32, trunc, zig_f64, zig_f64, 2) |
| 3381 | zig_convert_builtin(zig_f128, extend, zig_f32, 2) | 3381 | zig_convert_builtin(zig_f32, zig_f32, trunc, zig_f80, zig_f80, 2) |
| 3382 | zig_convert_builtin(zig_f128, extend, zig_f64, 2) | 3382 | zig_convert_builtin(zig_f32, zig_f32, trunc, zig_f128, zig_f128, 2) |
| 3383 | zig_convert_builtin(zig_f128, extend, zig_f80, 2) | 3383 | zig_convert_builtin(zig_f64, zig_f64, extend, zig_compiler_rt_f16, zig_f16, 2) |
| | 3384 | zig_convert_builtin(zig_f64, zig_f64, extend, zig_f32, zig_f32, 2) |
| | 3385 | zig_convert_builtin(zig_f64, zig_f64, trunc, zig_f80, zig_f80, 2) |
| | 3386 | zig_convert_builtin(zig_f64, zig_f64, trunc, zig_f128, zig_f128, 2) |
| | 3387 | zig_convert_builtin(zig_f80, zig_f80, extend, zig_f16, zig_f16, 2) |
| | 3388 | zig_convert_builtin(zig_f80, zig_f80, extend, zig_f32, zig_f32, 2) |
| | 3389 | zig_convert_builtin(zig_f80, zig_f80, extend, zig_f64, zig_f64, 2) |
| | 3390 | zig_convert_builtin(zig_f80, zig_f80, trunc, zig_f128, zig_f128, 2) |
| | 3391 | zig_convert_builtin(zig_f128, zig_f128, extend, zig_f16, zig_f16, 2) |
| | 3392 | zig_convert_builtin(zig_f128, zig_f128, extend, zig_f32, zig_f32, 2) |
| | 3393 | zig_convert_builtin(zig_f128, zig_f128, extend, zig_f64, zig_f64, 2) |
| | 3394 | zig_convert_builtin(zig_f128, zig_f128, extend, zig_f80, zig_f80, 2) |
| 3384 | | 3395 | |
| 3385 | #define zig_float_negate_builtin_0(w, r, c, sb) zig_xor_u##r(arg, zig_make_f##w(-0x0.0p0, c sb)) | 3396 | #define zig_float_negate_builtin_0(w, r, c, sb) zig_xor_u##r(arg, zig_make_f##w(-0x0.0p0, c sb)) |
| 3386 | #define zig_float_negate_builtin_1(w, r, c, sb) -arg | 3397 | #define zig_float_negate_builtin_1(w, r, c, sb) -arg |
| ... | @@ -3424,19 +3435,18 @@ zig_float_negate_builtin(128, 128, zig_make_u128, (UINT64_C(1) << 63, UINT64_C(0 | ... | @@ -3424,19 +3435,18 @@ zig_float_negate_builtin(128, 128, zig_make_u128, (UINT64_C(1) << 63, UINT64_C(0 |
| 3424 | } | 3435 | } |
| 3425 | | 3436 | |
| 3426 | #define zig_float_builtins(w) \ | 3437 | #define zig_float_builtins(w) \ |
| 3427 | zig_convert_builtin( int32_t, fix, zig_f##w, ) \ | 3438 | zig_convert_builtin( int32_t, int32_t, fix, zig_f##w, zig_f##w, ) \ |
| 3428 | zig_convert_builtin(uint32_t, fixuns, zig_f##w, ) \ | 3439 | zig_convert_builtin(uint32_t, uint32_t, fixuns, zig_f##w, zig_f##w, ) \ |
| 3429 | zig_convert_builtin( int64_t, fix, zig_f##w, ) \ | 3440 | zig_convert_builtin( int64_t, int64_t, fix, zig_f##w, zig_f##w, ) \ |
| 3430 | zig_convert_builtin(uint64_t, fixuns, zig_f##w, ) \ | 3441 | zig_convert_builtin(uint64_t, uint64_t, fixuns, zig_f##w, zig_f##w, ) \ |
| 3431 | zig_convert_builtin(zig_i128, fix, zig_f##w, ) \ | 3442 | zig_convert_builtin(zig_i128, zig_i128, fix, zig_f##w, zig_f##w, ) \ |
| 3432 | zig_convert_builtin(zig_u128, fixuns, zig_f##w, ) \ | 3443 | zig_convert_builtin(zig_u128, zig_u128, fixuns, zig_f##w, zig_f##w, ) \ |
| 3433 | zig_convert_builtin(zig_f##w, float, int32_t, ) \ | 3444 | zig_convert_builtin(zig_f##w, zig_f##w, float, int32_t, int32_t, ) \ |
| 3434 | zig_convert_builtin(zig_f##w, floatun, uint32_t, ) \ | 3445 | zig_convert_builtin(zig_f##w, zig_f##w, floatun, uint32_t, uint32_t, ) \ |
| 3435 | zig_convert_builtin(zig_f##w, float, int64_t, ) \ | 3446 | zig_convert_builtin(zig_f##w, zig_f##w, float, int64_t, int64_t, ) \ |
| 3436 | zig_convert_builtin(zig_f##w, floatun, uint64_t, ) \ | 3447 | zig_convert_builtin(zig_f##w, zig_f##w, floatun, uint64_t, uint64_t, ) \ |
| 3437 | zig_convert_builtin(zig_f##w, float, zig_i128, ) \ | 3448 | zig_convert_builtin(zig_f##w, zig_f##w, float, zig_i128, zig_i128, ) \ |
| 3438 | zig_convert_builtin(zig_f##w, floatun, zig_u128, ) \ | 3449 | zig_convert_builtin(zig_f##w, zig_f##w, floatun, zig_u128, zig_u128, ) \ |
| 3439 | zig_expand_concat(zig_float_negate_builtin_, zig_has_f##w)(w) \ | | |
| 3440 | zig_expand_concat(zig_float_less_builtin_, zig_has_f##w)(f##w, cmp) \ | 3450 | zig_expand_concat(zig_float_less_builtin_, zig_has_f##w)(f##w, cmp) \ |
| 3441 | zig_expand_concat(zig_float_less_builtin_, zig_has_f##w)(f##w, ne) \ | 3451 | zig_expand_concat(zig_float_less_builtin_, zig_has_f##w)(f##w, ne) \ |
| 3442 | zig_expand_concat(zig_float_less_builtin_, zig_has_f##w)(f##w, eq) \ | 3452 | zig_expand_concat(zig_float_less_builtin_, zig_has_f##w)(f##w, eq) \ |