diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/zig.h | 70 |
1 files changed, 42 insertions, 28 deletions
@@ -175,19 +175,33 @@ typedef char bool; #endif #if zig_has_attribute(alias) -#define zig_export(sig, symbol, name) zig_extern sig __attribute__((alias(symbol))) +#define zig_export(sig, symbol, name) zig_extern sig __attribute__((alias(#symbol))) #elif _MSC_VER #if _M_X64 -#define zig_export(sig, symbol, name) sig;\ - __pragma(comment(linker, "/alternatename:" name "=" symbol )) +#define zig_export(sig, symbol, name) zig_extern sig;\ + __pragma(comment(linker, "/alternatename:" name "=" #symbol )) #else /*_M_X64 */ -#define zig_export(sig, symbol, name) sig;\ - __pragma(comment(linker, "/alternatename:_" name "=_" symbol )) +#define zig_export(sig, symbol, name) zig_extern sig;\ + __pragma(comment(linker, "/alternatename:" name "=" #symbol )) #endif /*_M_X64 */ #else -#define zig_export(sig, symbol, name) __asm(name " = " symbol) +#define zig_export(sig, symbol, name) __asm(name " = " #symbol) #endif +#if _MSC_VER +#if _M_X64 +#define zig_import(sig, symbol, name) sig;\ + __pragma(comment(linker, "/alternatename:" #symbol "=" #name )) +#else /*_M_X64 */ +#define zig_import(sig, symbol, name) sig;\ + __pragma(comment(linker, "/alternatename:_" #symbol "=_" #name )) +#endif /*_M_X64 */ +#else +#define zig_import(sig, symbol, name) zig_extern sig asm(#name); +#endif + +#define zig_expand_import(sig, symbol, name) zig_import(sig, symbol, name) + #if zig_has_attribute(weak) || defined(zig_gnuc) #define zig_weak_linkage __attribute__((weak)) #define zig_weak_linkage_fn __attribute__((weak)) @@ -3330,31 +3344,31 @@ zig_float_negate_builtin(128, zig_make_u128, (UINT64_C(1) << 63, UINT64_C(0))) zig_expand_concat(zig_float_binary_builtin_, zig_has_f##w)(f##w, sub, -) \ zig_expand_concat(zig_float_binary_builtin_, zig_has_f##w)(f##w, mul, *) \ zig_expand_concat(zig_float_binary_builtin_, zig_has_f##w)(f##w, div, /) \ - zig_extern zig_f##w zig_libc_name_f##w(sqrt)(zig_f##w); \ - zig_extern zig_f##w zig_libc_name_f##w(sin)(zig_f##w); \ - zig_extern zig_f##w zig_libc_name_f##w(cos)(zig_f##w); \ - zig_extern zig_f##w zig_libc_name_f##w(tan)(zig_f##w); \ - zig_extern zig_f##w zig_libc_name_f##w(exp)(zig_f##w); \ - zig_extern zig_f##w zig_libc_name_f##w(exp2)(zig_f##w); \ - zig_extern zig_f##w zig_libc_name_f##w(log)(zig_f##w); \ - zig_extern zig_f##w zig_libc_name_f##w(log2)(zig_f##w); \ - zig_extern zig_f##w zig_libc_name_f##w(log10)(zig_f##w); \ - zig_extern zig_f##w zig_libc_name_f##w(fabs)(zig_f##w); \ - zig_extern zig_f##w zig_libc_name_f##w(floor)(zig_f##w); \ - zig_extern zig_f##w zig_libc_name_f##w(ceil)(zig_f##w); \ - zig_extern zig_f##w zig_libc_name_f##w(round)(zig_f##w); \ - zig_extern zig_f##w zig_libc_name_f##w(trunc)(zig_f##w); \ - zig_extern zig_f##w zig_libc_name_f##w(fmod)(zig_f##w, zig_f##w); \ - zig_extern zig_f##w zig_libc_name_f##w(fmin)(zig_f##w, zig_f##w); \ - zig_extern zig_f##w zig_libc_name_f##w(fmax)(zig_f##w, zig_f##w); \ - zig_extern zig_f##w zig_libc_name_f##w(fma)(zig_f##w, zig_f##w, zig_f##w); \ + zig_expand_import(zig_extern zig_f##w zig_float_fn_f##w##_sqrt(zig_f##w), zig_float_fn_f##w##_sqrt, zig_libc_name_f##w(sqrt)) \ + zig_expand_import(zig_extern zig_f##w zig_float_fn_f##w##_sin(zig_f##w), zig_float_fn_f##w##_sin, zig_libc_name_f##w(sin)) \ + zig_expand_import(zig_extern zig_f##w zig_float_fn_f##w##_cos(zig_f##w), zig_float_fn_f##w##_cos, zig_libc_name_f##w(cos)) \ + zig_expand_import(zig_extern zig_f##w zig_float_fn_f##w##_tan(zig_f##w), zig_float_fn_f##w##_tan, zig_libc_name_f##w(tan)) \ + zig_expand_import(zig_extern zig_f##w zig_float_fn_f##w##_exp(zig_f##w), zig_float_fn_f##w##_exp, zig_libc_name_f##w(exp)) \ + zig_expand_import(zig_extern zig_f##w zig_float_fn_f##w##_exp2(zig_f##w), zig_float_fn_f##w##_exp2, zig_libc_name_f##w(exp2)) \ + zig_expand_import(zig_extern zig_f##w zig_float_fn_f##w##_log(zig_f##w), zig_float_fn_f##w##_log, zig_libc_name_f##w(log)) \ + zig_expand_import(zig_extern zig_f##w zig_float_fn_f##w##_log2(zig_f##w), zig_float_fn_f##w##_log2, zig_libc_name_f##w(log2)) \ + zig_expand_import(zig_extern zig_f##w zig_float_fn_f##w##_log10(zig_f##w), zig_float_fn_f##w##_log10, zig_libc_name_f##w(log10)) \ + zig_expand_import(zig_extern zig_f##w zig_float_fn_f##w##_fabs(zig_f##w), zig_float_fn_f##w##_fabs, zig_libc_name_f##w(fabs)) \ + zig_expand_import(zig_extern zig_f##w zig_float_fn_f##w##_floor(zig_f##w), zig_float_fn_f##w##_floor, zig_libc_name_f##w(floor)) \ + zig_expand_import(zig_extern zig_f##w zig_float_fn_f##w##_ceil(zig_f##w), zig_float_fn_f##w##_ceil, zig_libc_name_f##w(ceil)) \ + zig_expand_import(zig_extern zig_f##w zig_float_fn_f##w##_round(zig_f##w), zig_float_fn_f##w##_round, zig_libc_name_f##w(round)) \ + zig_expand_import(zig_extern zig_f##w zig_float_fn_f##w##_trunc(zig_f##w), zig_float_fn_f##w##_trunc, zig_libc_name_f##w(trunc)) \ + zig_expand_import(zig_extern zig_f##w zig_float_fn_f##w##_fmod(zig_f##w, zig_f##w), zig_float_fn_f##w##_fmod, zig_libc_name_f##w(fmod)) \ + zig_expand_import(zig_extern zig_f##w zig_float_fn_f##w##_fmin(zig_f##w, zig_f##w), zig_float_fn_f##w##_fmin, zig_libc_name_f##w(fmin)) \ + zig_expand_import(zig_extern zig_f##w zig_float_fn_f##w##_fmax(zig_f##w, zig_f##w), zig_float_fn_f##w##_fmax, zig_libc_name_f##w(fmax)) \ + zig_expand_import(zig_extern zig_f##w zig_float_fn_f##w##_fma(zig_f##w, zig_f##w, zig_f##w), zig_float_fn_f##w##_fma, zig_libc_name_f##w(fma)) \ \ static inline zig_f##w zig_div_trunc_f##w(zig_f##w lhs, zig_f##w rhs) { \ - return zig_libc_name_f##w(trunc)(zig_div_f##w(lhs, rhs)); \ + return zig_float_fn_f##w##_trunc(zig_div_f##w(lhs, rhs)); \ } \ \ static inline zig_f##w zig_div_floor_f##w(zig_f##w lhs, zig_f##w rhs) { \ - return zig_libc_name_f##w(floor)(zig_div_f##w(lhs, rhs)); \ + return zig_float_fn_f##w##_floor(zig_div_f##w(lhs, rhs)); \ } \ \ static inline zig_f##w zig_mod_f##w(zig_f##w lhs, zig_f##w rhs) { \ @@ -3458,7 +3472,7 @@ zig_float_builtins(64) zig_##Type zig_atomicrmw_desired; \ zig_atomic_load(zig_atomicrmw_expected, obj, memory_order_relaxed, Type, ReprType); \ do { \ - zig_atomicrmw_desired = zig_libc_name_##Type(fmin)(zig_atomicrmw_expected, arg); \ + zig_atomicrmw_desired = zig_float_fn_##Type##_fmin(zig_atomicrmw_expected, arg); \ } while (!zig_cmpxchg_weak(obj, zig_atomicrmw_expected, zig_atomicrmw_desired, order, memory_order_relaxed, Type, ReprType)); \ res = zig_atomicrmw_expected; \ } while (0) @@ -3467,7 +3481,7 @@ zig_float_builtins(64) zig_##Type zig_atomicrmw_desired; \ zig_atomic_load(zig_atomicrmw_expected, obj, memory_order_relaxed, Type, ReprType); \ do { \ - zig_atomicrmw_desired = zig_libc_name_##Type(fmax)(zig_atomicrmw_expected, arg); \ + zig_atomicrmw_desired = zig_float_fn_##Type##_fmax(zig_atomicrmw_expected, arg); \ } while (!zig_cmpxchg_weak(obj, zig_atomicrmw_expected, zig_atomicrmw_desired, order, memory_order_relaxed, Type, ReprType)); \ res = zig_atomicrmw_expected; \ } while (0) |
