| ... | ... | @@ -502,6 +502,15 @@ typedef ptrdiff_t intptr_t; |
| 502 | 502 | |
| 503 | 503 | #endif |
| 504 | 504 | |
| 505 | #define zig_make_small_i8(val) INT8_C(val) |
| 506 | #define zig_make_small_u8(val) UINT8_C(val) |
| 507 | #define zig_make_small_i16(val) INT16_C(val) |
| 508 | #define zig_make_small_u16(val) UINT16_C(val) |
| 509 | #define zig_make_small_i32(val) INT32_C(val) |
| 510 | #define zig_make_small_u32(val) UINT32_C(val) |
| 511 | #define zig_make_small_i64(val) INT64_C(val) |
| 512 | #define zig_make_small_u64(val) UINT64_C(val) |
| 513 | |
| 505 | 514 | #define zig_minInt_i8 INT8_MIN |
| 506 | 515 | #define zig_maxInt_i8 INT8_MAX |
| 507 | 516 | #define zig_minInt_u8 UINT8_C(0) |
| ... | ... | @@ -585,7 +594,7 @@ typedef ptrdiff_t intptr_t; |
| 585 | 594 | } \ |
| 586 | 595 | \ |
| 587 | 596 | static inline int##w##_t zig_shlw_i##w(int##w##_t lhs, uint8_t rhs, uint8_t bits) { \ |
| 588 | | return zig_wrap_i##w((int##w##_t)zig_shl_u##w((uint##w##_t)lhs, (uint##w##_t)rhs), bits); \ |
| 597 | return zig_wrap_i##w((int##w##_t)zig_shl_u##w((uint##w##_t)lhs, rhs), bits); \ |
| 589 | 598 | } \ |
| 590 | 599 | \ |
| 591 | 600 | static inline uint##w##_t zig_addw_u##w(uint##w##_t lhs, uint##w##_t rhs, uint8_t bits) { \ |
| ... | ... | @@ -1294,6 +1303,9 @@ typedef struct { zig_align(16) int64_t hi; uint64_t lo; } zig_i128; |
| 1294 | 1303 | |
| 1295 | 1304 | #endif /* zig_has_int128 */ |
| 1296 | 1305 | |
| 1306 | #define zig_make_small_u128(val) zig_make_u128(0, val) |
| 1307 | #define zig_make_small_i128(val) zig_make_i128((val) < 0 ? -INT64_C(1) : INT64_C(0), val) |
| 1308 | |
| 1297 | 1309 | #define zig_minInt_u128 zig_make_u128(zig_minInt_u64, zig_minInt_u64) |
| 1298 | 1310 | #define zig_maxInt_u128 zig_make_u128(zig_maxInt_u64, zig_maxInt_u64) |
| 1299 | 1311 | #define zig_minInt_i128 zig_make_i128(zig_minInt_i64, zig_minInt_u64) |
| ... | ... | @@ -2828,7 +2840,7 @@ static inline uint16_t zig_popcount_big(const void *val, bool is_signed, uint16_ |
| 2828 | 2840 | |
| 2829 | 2841 | #define zig_has_f16 1 |
| 2830 | 2842 | #define zig_bitSizeOf_f16 16 |
| 2831 | | typedef int16_t zig_repr_f16; |
| 2843 | typedef uint16_t zig_repr_f16; |
| 2832 | 2844 | #define zig_libc_name_f16(name) __##name##h |
| 2833 | 2845 | #define zig_init_special_f16(sign, name, arg, repr) zig_make_special_f16(sign, name, arg, repr) |
| 2834 | 2846 | #if FLT_MANT_DIG == 11 |
| ... | ... | @@ -2854,7 +2866,7 @@ typedef __fp16 zig_f16; |
| 2854 | 2866 | #undef zig_has_f16 |
| 2855 | 2867 | #define zig_has_f16 0 |
| 2856 | 2868 | #define zig_bitSizeOf_repr_f16 16 |
| 2857 | | typedef int16_t zig_f16; |
| 2869 | typedef zig_repr_f16 zig_f16; |
| 2858 | 2870 | #define zig_make_f16(fp, repr) repr |
| 2859 | 2871 | #undef zig_make_special_f16 |
| 2860 | 2872 | #define zig_make_special_f16(sign, name, arg, repr) repr |
| ... | ... | @@ -2864,7 +2876,7 @@ typedef int16_t zig_f16; |
| 2864 | 2876 | |
| 2865 | 2877 | #define zig_has_f32 1 |
| 2866 | 2878 | #define zig_bitSizeOf_f32 32 |
| 2867 | | typedef int32_t zig_repr_f32; |
| 2879 | typedef uint32_t zig_repr_f32; |
| 2868 | 2880 | #define zig_libc_name_f32(name) name##f |
| 2869 | 2881 | #if _MSC_VER |
| 2870 | 2882 | #define zig_init_special_f32(sign, name, arg, repr) sign zig_make_f32(zig_msvc_flt_##name, ) |
| ... | ... | @@ -2891,7 +2903,7 @@ typedef _Float32 zig_f32; |
| 2891 | 2903 | #undef zig_has_f32 |
| 2892 | 2904 | #define zig_has_f32 0 |
| 2893 | 2905 | #define zig_bitSizeOf_repr_f32 32 |
| 2894 | | typedef int32_t zig_f32; |
| 2906 | typedef zig_repr_f32 zig_f32; |
| 2895 | 2907 | #define zig_make_f32(fp, repr) repr |
| 2896 | 2908 | #undef zig_make_special_f32 |
| 2897 | 2909 | #define zig_make_special_f32(sign, name, arg, repr) repr |
| ... | ... | @@ -2901,7 +2913,7 @@ typedef int32_t zig_f32; |
| 2901 | 2913 | |
| 2902 | 2914 | #define zig_has_f64 1 |
| 2903 | 2915 | #define zig_bitSizeOf_f64 64 |
| 2904 | | typedef int64_t zig_repr_f64; |
| 2916 | typedef uint64_t zig_repr_f64; |
| 2905 | 2917 | #define zig_libc_name_f64(name) name |
| 2906 | 2918 | #if _MSC_VER |
| 2907 | 2919 | #ifdef ZIG_TARGET_ABI_MSVC |
| ... | ... | @@ -2937,7 +2949,7 @@ typedef _Float32x zig_f64; |
| 2937 | 2949 | #undef zig_has_f64 |
| 2938 | 2950 | #define zig_has_f64 0 |
| 2939 | 2951 | #define zig_bitSizeOf_repr_f64 64 |
| 2940 | | typedef int64_t zig_f64; |
| 2952 | typedef zig_repr_f64 zig_f64; |
| 2941 | 2953 | #define zig_make_f64(fp, repr) repr |
| 2942 | 2954 | #undef zig_make_special_f64 |
| 2943 | 2955 | #define zig_make_special_f64(sign, name, arg, repr) repr |
| ... | ... | @@ -2947,7 +2959,7 @@ typedef int64_t zig_f64; |
| 2947 | 2959 | |
| 2948 | 2960 | #define zig_has_f80 1 |
| 2949 | 2961 | #define zig_bitSizeOf_f80 80 |
| 2950 | | typedef zig_i128 zig_repr_f80; |
| 2962 | typedef zig_u128 zig_repr_f80; |
| 2951 | 2963 | #define zig_libc_name_f80(name) __##name##x |
| 2952 | 2964 | #define zig_init_special_f80(sign, name, arg, repr) zig_make_special_f80(sign, name, arg, repr) |
| 2953 | 2965 | #if FLT_MANT_DIG == 64 |
| ... | ... | @@ -2976,7 +2988,7 @@ typedef __float80 zig_f80; |
| 2976 | 2988 | #undef zig_has_f80 |
| 2977 | 2989 | #define zig_has_f80 0 |
| 2978 | 2990 | #define zig_bitSizeOf_repr_f80 128 |
| 2979 | | typedef zig_i128 zig_f80; |
| 2991 | typedef zig_repr_f80 zig_f80; |
| 2980 | 2992 | #define zig_make_f80(fp, repr) repr |
| 2981 | 2993 | #undef zig_make_special_f80 |
| 2982 | 2994 | #define zig_make_special_f80(sign, name, arg, repr) repr |
| ... | ... | @@ -2986,7 +2998,7 @@ typedef zig_i128 zig_f80; |
| 2986 | 2998 | |
| 2987 | 2999 | #define zig_has_f128 1 |
| 2988 | 3000 | #define zig_bitSizeOf_f128 128 |
| 2989 | | typedef zig_i128 zig_repr_f128; |
| 3001 | typedef zig_u128 zig_repr_f128; |
| 2990 | 3002 | #define zig_libc_name_f128(name) name##q |
| 2991 | 3003 | #define zig_init_special_f128(sign, name, arg, repr) zig_make_special_f128(sign, name, arg, repr) |
| 2992 | 3004 | #if FLT_MANT_DIG == 113 |
| ... | ... | @@ -3017,7 +3029,7 @@ typedef __float128 zig_f128; |
| 3017 | 3029 | #undef zig_has_f128 |
| 3018 | 3030 | #define zig_has_f128 0 |
| 3019 | 3031 | #define zig_bitSizeOf_repr_f128 128 |
| 3020 | | typedef zig_i128 zig_f128; |
| 3032 | typedef zig_repr_f128 zig_f128; |
| 3021 | 3033 | #define zig_make_f128(fp, repr) repr |
| 3022 | 3034 | #undef zig_make_special_f128 |
| 3023 | 3035 | #define zig_make_special_f128(sign, name, arg, repr) repr |
| ... | ... | @@ -3097,15 +3109,18 @@ zig_convert_builtin(zig_f128, extend, zig_f32, 2) |
| 3097 | 3109 | zig_convert_builtin(zig_f128, extend, zig_f64, 2) |
| 3098 | 3110 | zig_convert_builtin(zig_f128, extend, zig_f80, 2) |
| 3099 | 3111 | |
| 3100 | | #define zig_float_negate_builtin_0(Type) \ |
| 3101 | | static inline zig_##Type zig_neg_##Type(zig_##Type arg) { \ |
| 3102 | | return zig_expand_concat(zig_xor_i, zig_bitSizeOf_repr_##Type)( \ |
| 3112 | #define zig_float_negate_builtin_0(w) \ |
| 3113 | static inline zig_f##w zig_neg_f##w(zig_f##w arg) { \ |
| 3114 | return zig_expand_concat(zig_xor_u, zig_bitSizeOf_repr_f##w)( \ |
| 3103 | 3115 | arg, \ |
| 3104 | | zig_minInt_i(zig_bitSizeOf_repr_##Type, zig_bitSizeOf_##Type) \ |
| 3116 | zig_expand_concat(zig_shl_u, zig_bitSizeOf_repr_f##w)( \ |
| 3117 | zig_expand_concat(zig_make_small_u, zig_bitSizeOf_repr_f##w)(1), \ |
| 3118 | UINT8_C(w - 1) \ |
| 3119 | ) \ |
| 3105 | 3120 | ); \ |
| 3106 | 3121 | } |
| 3107 | | #define zig_float_negate_builtin_1(Type) \ |
| 3108 | | static inline zig_##Type zig_neg_##Type(zig_##Type arg) { \ |
| 3122 | #define zig_float_negate_builtin_1(w) \ |
| 3123 | static inline zig_f##w zig_neg_f##w(zig_f##w arg) { \ |
| 3109 | 3124 | return -arg; \ |
| 3110 | 3125 | } |
| 3111 | 3126 | |
| ... | ... | @@ -3138,66 +3153,66 @@ zig_convert_builtin(zig_f128, extend, zig_f80, 2) |
| 3138 | 3153 | return lhs operator rhs; \ |
| 3139 | 3154 | } |
| 3140 | 3155 | |
| 3141 | | #define zig_float_builtins(Type) \ |
| 3142 | | zig_convert_builtin( int32_t, fix, zig_##Type, ) \ |
| 3143 | | zig_convert_builtin(uint32_t, fixuns, zig_##Type, ) \ |
| 3144 | | zig_convert_builtin( int64_t, fix, zig_##Type, ) \ |
| 3145 | | zig_convert_builtin(uint64_t, fixuns, zig_##Type, ) \ |
| 3146 | | zig_convert_builtin(zig_i128, fix, zig_##Type, ) \ |
| 3147 | | zig_convert_builtin(zig_u128, fixuns, zig_##Type, ) \ |
| 3148 | | zig_convert_builtin(zig_##Type, float, int32_t, ) \ |
| 3149 | | zig_convert_builtin(zig_##Type, floatun, uint32_t, ) \ |
| 3150 | | zig_convert_builtin(zig_##Type, float, int64_t, ) \ |
| 3151 | | zig_convert_builtin(zig_##Type, floatun, uint64_t, ) \ |
| 3152 | | zig_convert_builtin(zig_##Type, float, zig_i128, ) \ |
| 3153 | | zig_convert_builtin(zig_##Type, floatun, zig_u128, ) \ |
| 3154 | | zig_expand_concat(zig_float_negate_builtin_, zig_has_##Type)(Type) \ |
| 3155 | | zig_expand_concat(zig_float_less_builtin_, zig_has_##Type)(Type, cmp) \ |
| 3156 | | zig_expand_concat(zig_float_less_builtin_, zig_has_##Type)(Type, ne) \ |
| 3157 | | zig_expand_concat(zig_float_less_builtin_, zig_has_##Type)(Type, eq) \ |
| 3158 | | zig_expand_concat(zig_float_less_builtin_, zig_has_##Type)(Type, lt) \ |
| 3159 | | zig_expand_concat(zig_float_less_builtin_, zig_has_##Type)(Type, le) \ |
| 3160 | | zig_expand_concat(zig_float_greater_builtin_, zig_has_##Type)(Type, gt) \ |
| 3161 | | zig_expand_concat(zig_float_greater_builtin_, zig_has_##Type)(Type, ge) \ |
| 3162 | | zig_expand_concat(zig_float_binary_builtin_, zig_has_##Type)(Type, add, +) \ |
| 3163 | | zig_expand_concat(zig_float_binary_builtin_, zig_has_##Type)(Type, sub, -) \ |
| 3164 | | zig_expand_concat(zig_float_binary_builtin_, zig_has_##Type)(Type, mul, *) \ |
| 3165 | | zig_expand_concat(zig_float_binary_builtin_, zig_has_##Type)(Type, div, /) \ |
| 3166 | | zig_extern zig_##Type zig_libc_name_##Type(sqrt)(zig_##Type); \ |
| 3167 | | zig_extern zig_##Type zig_libc_name_##Type(sin)(zig_##Type); \ |
| 3168 | | zig_extern zig_##Type zig_libc_name_##Type(cos)(zig_##Type); \ |
| 3169 | | zig_extern zig_##Type zig_libc_name_##Type(tan)(zig_##Type); \ |
| 3170 | | zig_extern zig_##Type zig_libc_name_##Type(exp)(zig_##Type); \ |
| 3171 | | zig_extern zig_##Type zig_libc_name_##Type(exp2)(zig_##Type); \ |
| 3172 | | zig_extern zig_##Type zig_libc_name_##Type(log)(zig_##Type); \ |
| 3173 | | zig_extern zig_##Type zig_libc_name_##Type(log2)(zig_##Type); \ |
| 3174 | | zig_extern zig_##Type zig_libc_name_##Type(log10)(zig_##Type); \ |
| 3175 | | zig_extern zig_##Type zig_libc_name_##Type(fabs)(zig_##Type); \ |
| 3176 | | zig_extern zig_##Type zig_libc_name_##Type(floor)(zig_##Type); \ |
| 3177 | | zig_extern zig_##Type zig_libc_name_##Type(ceil)(zig_##Type); \ |
| 3178 | | zig_extern zig_##Type zig_libc_name_##Type(round)(zig_##Type); \ |
| 3179 | | zig_extern zig_##Type zig_libc_name_##Type(trunc)(zig_##Type); \ |
| 3180 | | zig_extern zig_##Type zig_libc_name_##Type(fmod)(zig_##Type, zig_##Type); \ |
| 3181 | | zig_extern zig_##Type zig_libc_name_##Type(fmin)(zig_##Type, zig_##Type); \ |
| 3182 | | zig_extern zig_##Type zig_libc_name_##Type(fmax)(zig_##Type, zig_##Type); \ |
| 3183 | | zig_extern zig_##Type zig_libc_name_##Type(fma)(zig_##Type, zig_##Type, zig_##Type); \ |
| 3156 | #define zig_float_builtins(w) \ |
| 3157 | zig_convert_builtin( int32_t, fix, zig_f##w, ) \ |
| 3158 | zig_convert_builtin(uint32_t, fixuns, zig_f##w, ) \ |
| 3159 | zig_convert_builtin( int64_t, fix, zig_f##w, ) \ |
| 3160 | zig_convert_builtin(uint64_t, fixuns, zig_f##w, ) \ |
| 3161 | zig_convert_builtin(zig_i128, fix, zig_f##w, ) \ |
| 3162 | zig_convert_builtin(zig_u128, fixuns, zig_f##w, ) \ |
| 3163 | zig_convert_builtin(zig_f##w, float, int32_t, ) \ |
| 3164 | zig_convert_builtin(zig_f##w, floatun, uint32_t, ) \ |
| 3165 | zig_convert_builtin(zig_f##w, float, int64_t, ) \ |
| 3166 | zig_convert_builtin(zig_f##w, floatun, uint64_t, ) \ |
| 3167 | zig_convert_builtin(zig_f##w, float, zig_i128, ) \ |
| 3168 | zig_convert_builtin(zig_f##w, floatun, zig_u128, ) \ |
| 3169 | zig_expand_concat(zig_float_negate_builtin_, zig_has_f##w)(w) \ |
| 3170 | zig_expand_concat(zig_float_less_builtin_, zig_has_f##w)(f##w, cmp) \ |
| 3171 | zig_expand_concat(zig_float_less_builtin_, zig_has_f##w)(f##w, ne) \ |
| 3172 | zig_expand_concat(zig_float_less_builtin_, zig_has_f##w)(f##w, eq) \ |
| 3173 | zig_expand_concat(zig_float_less_builtin_, zig_has_f##w)(f##w, lt) \ |
| 3174 | zig_expand_concat(zig_float_less_builtin_, zig_has_f##w)(f##w, le) \ |
| 3175 | zig_expand_concat(zig_float_greater_builtin_, zig_has_f##w)(f##w, gt) \ |
| 3176 | zig_expand_concat(zig_float_greater_builtin_, zig_has_f##w)(f##w, ge) \ |
| 3177 | zig_expand_concat(zig_float_binary_builtin_, zig_has_f##w)(f##w, add, +) \ |
| 3178 | zig_expand_concat(zig_float_binary_builtin_, zig_has_f##w)(f##w, sub, -) \ |
| 3179 | zig_expand_concat(zig_float_binary_builtin_, zig_has_f##w)(f##w, mul, *) \ |
| 3180 | zig_expand_concat(zig_float_binary_builtin_, zig_has_f##w)(f##w, div, /) \ |
| 3181 | zig_extern zig_f##w zig_libc_name_f##w(sqrt)(zig_f##w); \ |
| 3182 | zig_extern zig_f##w zig_libc_name_f##w(sin)(zig_f##w); \ |
| 3183 | zig_extern zig_f##w zig_libc_name_f##w(cos)(zig_f##w); \ |
| 3184 | zig_extern zig_f##w zig_libc_name_f##w(tan)(zig_f##w); \ |
| 3185 | zig_extern zig_f##w zig_libc_name_f##w(exp)(zig_f##w); \ |
| 3186 | zig_extern zig_f##w zig_libc_name_f##w(exp2)(zig_f##w); \ |
| 3187 | zig_extern zig_f##w zig_libc_name_f##w(log)(zig_f##w); \ |
| 3188 | zig_extern zig_f##w zig_libc_name_f##w(log2)(zig_f##w); \ |
| 3189 | zig_extern zig_f##w zig_libc_name_f##w(log10)(zig_f##w); \ |
| 3190 | zig_extern zig_f##w zig_libc_name_f##w(fabs)(zig_f##w); \ |
| 3191 | zig_extern zig_f##w zig_libc_name_f##w(floor)(zig_f##w); \ |
| 3192 | zig_extern zig_f##w zig_libc_name_f##w(ceil)(zig_f##w); \ |
| 3193 | zig_extern zig_f##w zig_libc_name_f##w(round)(zig_f##w); \ |
| 3194 | zig_extern zig_f##w zig_libc_name_f##w(trunc)(zig_f##w); \ |
| 3195 | zig_extern zig_f##w zig_libc_name_f##w(fmod)(zig_f##w, zig_f##w); \ |
| 3196 | zig_extern zig_f##w zig_libc_name_f##w(fmin)(zig_f##w, zig_f##w); \ |
| 3197 | zig_extern zig_f##w zig_libc_name_f##w(fmax)(zig_f##w, zig_f##w); \ |
| 3198 | zig_extern zig_f##w zig_libc_name_f##w(fma)(zig_f##w, zig_f##w, zig_f##w); \ |
| 3184 | 3199 | \ |
| 3185 | | static inline zig_##Type zig_div_trunc_##Type(zig_##Type lhs, zig_##Type rhs) { \ |
| 3186 | | return zig_libc_name_##Type(trunc)(zig_div_##Type(lhs, rhs)); \ |
| 3200 | static inline zig_f##w zig_div_trunc_f##w(zig_f##w lhs, zig_f##w rhs) { \ |
| 3201 | return zig_libc_name_f##w(trunc)(zig_div_f##w(lhs, rhs)); \ |
| 3187 | 3202 | } \ |
| 3188 | 3203 | \ |
| 3189 | | static inline zig_##Type zig_div_floor_##Type(zig_##Type lhs, zig_##Type rhs) { \ |
| 3190 | | return zig_libc_name_##Type(floor)(zig_div_##Type(lhs, rhs)); \ |
| 3204 | static inline zig_f##w zig_div_floor_f##w(zig_f##w lhs, zig_f##w rhs) { \ |
| 3205 | return zig_libc_name_f##w(floor)(zig_div_f##w(lhs, rhs)); \ |
| 3191 | 3206 | } \ |
| 3192 | 3207 | \ |
| 3193 | | static inline zig_##Type zig_mod_##Type(zig_##Type lhs, zig_##Type rhs) { \ |
| 3194 | | return zig_sub_##Type(lhs, zig_mul_##Type(zig_div_floor_##Type(lhs, rhs), rhs)); \ |
| 3208 | static inline zig_f##w zig_mod_f##w(zig_f##w lhs, zig_f##w rhs) { \ |
| 3209 | return zig_sub_f##w(lhs, zig_mul_f##w(zig_div_floor_f##w(lhs, rhs), rhs)); \ |
| 3195 | 3210 | } |
| 3196 | | zig_float_builtins(f16) |
| 3197 | | zig_float_builtins(f32) |
| 3198 | | zig_float_builtins(f64) |
| 3199 | | zig_float_builtins(f80) |
| 3200 | | zig_float_builtins(f128) |
| 3211 | zig_float_builtins(16) |
| 3212 | zig_float_builtins(32) |
| 3213 | zig_float_builtins(64) |
| 3214 | zig_float_builtins(80) |
| 3215 | zig_float_builtins(128) |
| 3201 | 3216 | |
| 3202 | 3217 | #if _MSC_VER && (_M_IX86 || _M_X64) |
| 3203 | 3218 | |