authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-12-01 15:29:05+01:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-12-03 11:57:20+01:00
logdd1d9cce3c068c76e99fbe9028bba4219d5d5792
treebf8bbac03e388075a4465d068ea9b3fb7ad52fc6
parentf29daebd904c8a3bc2792301be218fe7c99dfe8d
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

zig.h: Add a zig_msvc macro to be used instead of _MSC_VER.


1 files changed, 55 insertions(+), 53 deletions(-)

lib/zig.h+55-53
...@@ -1,5 +1,17 @@...@@ -1,5 +1,17 @@
1#undef linux1#undef linux
22
3#if defined(_MSC_VER)
4#define zig_msvc
5#elif defined(__clang__)
6#define zig_clang
7#elif defined(__GNUC__)
8#define zig_gnuc
9#elif defined(__TINYC__)
10#define zig_tinyc
11#elif defined(__slimcc__)
12#define zig_slimcc
13#endif
14
3#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__15#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
4#define __STDC_WANT_IEC_60559_TYPES_EXT__16#define __STDC_WANT_IEC_60559_TYPES_EXT__
5#endif17#endif
...@@ -9,7 +21,7 @@...@@ -9,7 +21,7 @@
9#include <stddef.h>21#include <stddef.h>
10#include <stdint.h>22#include <stdint.h>
1123
12#if _MSC_VER24#if defined(zig_msvc)
13#include <intrin.h>25#include <intrin.h>
14#elif defined(__i386__) || defined(__x86_64__)26#elif defined(__i386__) || defined(__x86_64__)
15#include <cpuid.h>27#include <cpuid.h>
...@@ -25,16 +37,6 @@ typedef char bool;...@@ -25,16 +37,6 @@ typedef char bool;
25#define true 137#define true 1
26#endif38#endif
2739
28#if defined(__clang__)
29#define zig_clang
30#elif defined(__GNUC__)
31#define zig_gnuc
32#elif defined(__TINYC__)
33#define zig_tinyc
34#elif defined(__slimcc__)
35#define zig_slimcc
36#endif
37
38#define zig_concat(lhs, rhs) lhs##rhs40#define zig_concat(lhs, rhs) lhs##rhs
39#define zig_expand_concat(lhs, rhs) zig_concat(lhs, rhs)41#define zig_expand_concat(lhs, rhs) zig_concat(lhs, rhs)
4042
...@@ -51,7 +53,7 @@ typedef char bool;...@@ -51,7 +53,7 @@ typedef char bool;
51#define zig_has_attribute(attribute) 053#define zig_has_attribute(attribute) 0
52#endif54#endif
5355
54#if defined(_MSC_VER) || __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__56#if defined(zig_msvc) || __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
55#define zig_little_endian 157#define zig_little_endian 1
56#define zig_big_endian 058#define zig_big_endian 0
57#else59#else
...@@ -65,7 +67,7 @@ typedef char bool;...@@ -65,7 +67,7 @@ typedef char bool;
65#define zig_threadlocal _Thread_local67#define zig_threadlocal _Thread_local
66#elif defined(__GNUC__) || defined(zig_slimcc)68#elif defined(__GNUC__) || defined(zig_slimcc)
67#define zig_threadlocal __thread69#define zig_threadlocal __thread
68#elif _MSC_VER70#elif defined(zig_msvc)
69#define zig_threadlocal __declspec(thread)71#define zig_threadlocal __declspec(thread)
70#else72#else
71#define zig_threadlocal zig_threadlocal_unavailable73#define zig_threadlocal zig_threadlocal_unavailable
...@@ -77,7 +79,7 @@ typedef char bool;...@@ -77,7 +79,7 @@ typedef char bool;
77#define zig_f128_has_miscompilations 079#define zig_f128_has_miscompilations 0
78#endif80#endif
7981
80#if _MSC_VER82#if defined(zig_msvc)
81#define zig_const_arr83#define zig_const_arr
82#define zig_callconv(c) __##c84#define zig_callconv(c) __##c
83#else85#else
...@@ -88,7 +90,7 @@ typedef char bool;...@@ -88,7 +90,7 @@ typedef char bool;
88#if zig_has_attribute(naked) || defined(zig_gnuc)90#if zig_has_attribute(naked) || defined(zig_gnuc)
89#define zig_naked_decl __attribute__((naked))91#define zig_naked_decl __attribute__((naked))
90#define zig_naked __attribute__((naked))92#define zig_naked __attribute__((naked))
91#elif defined(_MSC_VER)93#elif defined(zig_msvc)
92#define zig_naked_decl94#define zig_naked_decl
93#define zig_naked __declspec(naked)95#define zig_naked __declspec(naked)
94#else96#else
...@@ -110,7 +112,7 @@ typedef char bool;...@@ -110,7 +112,7 @@ typedef char bool;
110112
111#if zig_has_attribute(noinline)113#if zig_has_attribute(noinline)
112#define zig_never_inline __attribute__((noinline)) zig_maybe_flatten114#define zig_never_inline __attribute__((noinline)) zig_maybe_flatten
113#elif defined(_MSC_VER)115#elif defined(zig_msvc)
114#define zig_never_inline __declspec(noinline) zig_maybe_flatten116#define zig_never_inline __declspec(noinline) zig_maybe_flatten
115#else117#else
116#define zig_never_inline zig_never_inline_unavailable118#define zig_never_inline zig_never_inline_unavailable
...@@ -138,7 +140,7 @@ typedef char bool;...@@ -138,7 +140,7 @@ typedef char bool;
138140
139#if zig_has_attribute(aligned) || defined(zig_tinyc)141#if zig_has_attribute(aligned) || defined(zig_tinyc)
140#define zig_under_align(alignment) __attribute__((aligned(alignment)))142#define zig_under_align(alignment) __attribute__((aligned(alignment)))
141#elif _MSC_VER143#elif defined(zig_msvc)
142#define zig_under_align(alignment) __declspec(align(alignment))144#define zig_under_align(alignment) __declspec(align(alignment))
143#else145#else
144#define zig_under_align zig_align_unavailable146#define zig_under_align zig_align_unavailable
...@@ -154,7 +156,7 @@ typedef char bool;...@@ -154,7 +156,7 @@ typedef char bool;
154156
155#if zig_has_attribute(aligned) || defined(zig_tinyc)157#if zig_has_attribute(aligned) || defined(zig_tinyc)
156#define zig_align_fn(alignment) __attribute__((aligned(alignment)))158#define zig_align_fn(alignment) __attribute__((aligned(alignment)))
157#elif _MSC_VER159#elif defined(zig_msvc)
158#define zig_align_fn(alignment)160#define zig_align_fn(alignment)
159#else161#else
160#define zig_align_fn zig_align_fn_unavailable162#define zig_align_fn zig_align_fn_unavailable
...@@ -162,7 +164,7 @@ typedef char bool;...@@ -162,7 +164,7 @@ typedef char bool;
162164
163#if zig_has_attribute(packed) || defined(zig_tinyc)165#if zig_has_attribute(packed) || defined(zig_tinyc)
164#define zig_packed(definition) __attribute__((packed)) definition166#define zig_packed(definition) __attribute__((packed)) definition
165#elif _MSC_VER167#elif defined(zig_msvc)
166#define zig_packed(definition) __pragma(pack(1)) definition __pragma(pack())168#define zig_packed(definition) __pragma(pack(1)) definition __pragma(pack())
167#else169#else
168#define zig_packed(definition) zig_packed_unavailable170#define zig_packed(definition) zig_packed_unavailable
...@@ -171,7 +173,7 @@ typedef char bool;...@@ -171,7 +173,7 @@ typedef char bool;
171#if zig_has_attribute(section) || defined(zig_tinyc)173#if zig_has_attribute(section) || defined(zig_tinyc)
172#define zig_linksection(name) __attribute__((section(name)))174#define zig_linksection(name) __attribute__((section(name)))
173#define zig_linksection_fn zig_linksection175#define zig_linksection_fn zig_linksection
174#elif _MSC_VER176#elif defined(zig_msvc)
175#define zig_linksection(name) __pragma(section(name, read, write)) __declspec(allocate(name))177#define zig_linksection(name) __pragma(section(name, read, write)) __declspec(allocate(name))
176#define zig_linksection_fn(name) __pragma(section(name, read, execute)) __declspec(code_seg(name))178#define zig_linksection_fn(name) __pragma(section(name, read, execute)) __declspec(code_seg(name))
177#else179#else
...@@ -191,23 +193,23 @@ typedef char bool;...@@ -191,23 +193,23 @@ typedef char bool;
191#define zig_extern extern193#define zig_extern extern
192#endif194#endif
193195
194#if _MSC_VER196#if defined(zig_msvc)
195#if _M_X64197#if _M_X64
196#define zig_mangle_c(symbol) symbol198#define zig_mangle_c(symbol) symbol
197#else /*_M_X64 */199#else /*_M_X64 */
198#define zig_mangle_c(symbol) "_" symbol200#define zig_mangle_c(symbol) "_" symbol
199#endif /*_M_X64 */201#endif /*_M_X64 */
200#else /* _MSC_VER */202#else /* zig_msvc */
201#if __APPLE__203#if __APPLE__
202#define zig_mangle_c(symbol) "_" symbol204#define zig_mangle_c(symbol) "_" symbol
203#else /* __APPLE__ */205#else /* __APPLE__ */
204#define zig_mangle_c(symbol) symbol206#define zig_mangle_c(symbol) symbol
205#endif /* __APPLE__ */207#endif /* __APPLE__ */
206#endif /* _MSC_VER */208#endif /* zig_msvc */
207209
208#if (zig_has_attribute(alias) || defined(zig_tinyc)) && !__APPLE__210#if (zig_has_attribute(alias) || defined(zig_tinyc)) && !__APPLE__
209#define zig_export(symbol, name) __attribute__((alias(symbol)))211#define zig_export(symbol, name) __attribute__((alias(symbol)))
210#elif _MSC_VER212#elif defined(zig_msvc)
211#define zig_export(symbol, name) ; \213#define zig_export(symbol, name) ; \
212 __pragma(comment(linker, "/alternatename:" zig_mangle_c(name) "=" zig_mangle_c(symbol)))214 __pragma(comment(linker, "/alternatename:" zig_mangle_c(name) "=" zig_mangle_c(symbol)))
213#else215#else
...@@ -217,24 +219,24 @@ typedef char bool;...@@ -217,24 +219,24 @@ typedef char bool;
217219
218#define zig_mangled_tentative zig_mangled220#define zig_mangled_tentative zig_mangled
219#define zig_mangled_final zig_mangled221#define zig_mangled_final zig_mangled
220#if _MSC_VER222#if defined(zig_msvc)
221#define zig_mangled(mangled, unmangled) ; \223#define zig_mangled(mangled, unmangled) ; \
222 zig_export(#mangled, unmangled)224 zig_export(#mangled, unmangled)
223#define zig_mangled_export(mangled, unmangled, symbol) \225#define zig_mangled_export(mangled, unmangled, symbol) \
224 zig_export(unmangled, #mangled) \226 zig_export(unmangled, #mangled) \
225 zig_export(symbol, unmangled)227 zig_export(symbol, unmangled)
226#else /* _MSC_VER */228#else /* zig_msvc */
227#define zig_mangled(mangled, unmangled) __asm(zig_mangle_c(unmangled))229#define zig_mangled(mangled, unmangled) __asm(zig_mangle_c(unmangled))
228#define zig_mangled_export(mangled, unmangled, symbol) \230#define zig_mangled_export(mangled, unmangled, symbol) \
229 zig_mangled_final(mangled, unmangled) \231 zig_mangled_final(mangled, unmangled) \
230 zig_export(symbol, unmangled)232 zig_export(symbol, unmangled)
231#endif /* _MSC_VER */233#endif /* zig_msvc */
232234
233#if _MSC_VER235#if defined(zig_msvc)
234#define zig_import(Type, fn_name, libc_name, sig_args, call_args) zig_extern Type fn_name sig_args;\236#define zig_import(Type, fn_name, libc_name, sig_args, call_args) zig_extern Type fn_name sig_args;\
235 __pragma(comment(linker, "/alternatename:" zig_mangle_c(#fn_name) "=" zig_mangle_c(#libc_name)));237 __pragma(comment(linker, "/alternatename:" zig_mangle_c(#fn_name) "=" zig_mangle_c(#libc_name)));
236#define zig_import_builtin(Type, fn_name, libc_name, sig_args, call_args) zig_import(Type, fn_name, sig_args, call_args)238#define zig_import_builtin(Type, fn_name, libc_name, sig_args, call_args) zig_import(Type, fn_name, sig_args, call_args)
237#else /* _MSC_VER */239#else /* zig_msvc */
238#define zig_import(Type, fn_name, libc_name, sig_args, call_args) zig_extern Type fn_name sig_args __asm(zig_mangle_c(#libc_name));240#define zig_import(Type, fn_name, libc_name, sig_args, call_args) zig_extern Type fn_name sig_args __asm(zig_mangle_c(#libc_name));
239#define zig_import_builtin(Type, fn_name, libc_name, sig_args, call_args) zig_extern Type libc_name sig_args; \241#define zig_import_builtin(Type, fn_name, libc_name, sig_args, call_args) zig_extern Type libc_name sig_args; \
240 static inline Type fn_name sig_args { return libc_name call_args; }242 static inline Type fn_name sig_args { return libc_name call_args; }
...@@ -246,7 +248,7 @@ typedef char bool;...@@ -246,7 +248,7 @@ typedef char bool;
246#if zig_has_attribute(weak) || defined(zig_gnuc) || defined(zig_tinyc)248#if zig_has_attribute(weak) || defined(zig_gnuc) || defined(zig_tinyc)
247#define zig_weak_linkage __attribute__((weak))249#define zig_weak_linkage __attribute__((weak))
248#define zig_weak_linkage_fn __attribute__((weak))250#define zig_weak_linkage_fn __attribute__((weak))
249#elif _MSC_VER251#elif defined(zig_msvc)
250#define zig_weak_linkage __declspec(selectany)252#define zig_weak_linkage __declspec(selectany)
251#define zig_weak_linkage_fn253#define zig_weak_linkage_fn
252#else254#else
...@@ -256,9 +258,9 @@ typedef char bool;...@@ -256,9 +258,9 @@ typedef char bool;
256258
257#if zig_has_builtin(trap)259#if zig_has_builtin(trap)
258#define zig_trap() __builtin_trap()260#define zig_trap() __builtin_trap()
259#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64))261#elif defined(zig_msvc) && (defined(_M_IX86) || defined(_M_X64))
260#define zig_trap() __ud2()262#define zig_trap() __ud2()
261#elif defined(_MSC_VER)263#elif defined(zig_msvc)
262#define zig_trap() __fastfail(7)264#define zig_trap() __fastfail(7)
263#elif defined(__thumb__)265#elif defined(__thumb__)
264#define zig_trap() __asm__ volatile("udf #0xfe")266#define zig_trap() __asm__ volatile("udf #0xfe")
...@@ -284,7 +286,7 @@ typedef char bool;...@@ -284,7 +286,7 @@ typedef char bool;
284286
285#if zig_has_builtin(debugtrap)287#if zig_has_builtin(debugtrap)
286#define zig_breakpoint() __builtin_debugtrap()288#define zig_breakpoint() __builtin_debugtrap()
287#elif defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__)289#elif defined(zig_msvc) || defined(__MINGW32__) || defined(__MINGW64__)
288#define zig_breakpoint() __debugbreak()290#define zig_breakpoint() __debugbreak()
289#elif defined(__arm__)291#elif defined(__arm__)
290#define zig_breakpoint() __asm__ volatile("bkpt #0x0")292#define zig_breakpoint() __asm__ volatile("bkpt #0x0")
...@@ -312,7 +314,7 @@ typedef char bool;...@@ -312,7 +314,7 @@ typedef char bool;
312314
313#if zig_has_builtin(return_address) || defined(zig_gnuc) || defined(zig_tinyc)315#if zig_has_builtin(return_address) || defined(zig_gnuc) || defined(zig_tinyc)
314#define zig_return_address() __builtin_extract_return_addr(__builtin_return_address(0))316#define zig_return_address() __builtin_extract_return_addr(__builtin_return_address(0))
315#elif defined(_MSC_VER)317#elif defined(zig_msvc)
316#define zig_return_address() _ReturnAddress()318#define zig_return_address() _ReturnAddress()
317#else319#else
318#define zig_return_address() 0320#define zig_return_address() 0
...@@ -344,7 +346,7 @@ typedef char bool;...@@ -344,7 +346,7 @@ typedef char bool;
344#define zig_noreturn _Noreturn346#define zig_noreturn _Noreturn
345#elif zig_has_attribute(noreturn) || defined(zig_gnuc) || defined(zig_tinyc)347#elif zig_has_attribute(noreturn) || defined(zig_gnuc) || defined(zig_tinyc)
346#define zig_noreturn __attribute__((noreturn))348#define zig_noreturn __attribute__((noreturn))
347#elif _MSC_VER349#elif defined(zig_msvc)
348#define zig_noreturn __declspec(noreturn)350#define zig_noreturn __declspec(noreturn)
349#else351#else
350#define zig_noreturn352#define zig_noreturn
...@@ -369,7 +371,7 @@ zig_extern void *memset (void *, int, size_t);...@@ -369,7 +371,7 @@ zig_extern void *memset (void *, int, size_t);
369371
370/* ===================== 8/16/32/64-bit Integer Support ===================== */372/* ===================== 8/16/32/64-bit Integer Support ===================== */
371373
372#if __STDC_VERSION__ >= 199901L || _MSC_VER374#if __STDC_VERSION__ >= 199901L || defined(zig_msvc)
373#include <stdint.h>375#include <stdint.h>
374#else376#else
375377
...@@ -1268,7 +1270,7 @@ typedef struct { zig_align(16) int64_t hi; uint64_t lo; } zig_i128;...@@ -1268,7 +1270,7 @@ typedef struct { zig_align(16) int64_t hi; uint64_t lo; } zig_i128;
1268#define zig_make_u128(hi, lo) ((zig_u128){ .h##i = (hi), .l##o = (lo) })1270#define zig_make_u128(hi, lo) ((zig_u128){ .h##i = (hi), .l##o = (lo) })
1269#define zig_make_i128(hi, lo) ((zig_i128){ .h##i = (hi), .l##o = (lo) })1271#define zig_make_i128(hi, lo) ((zig_i128){ .h##i = (hi), .l##o = (lo) })
12701272
1271#if _MSC_VER /* MSVC doesn't allow struct literals in constant expressions */1273#if defined(zig_msvc) /* MSVC doesn't allow struct literals in constant expressions */
1272#define zig_init_u128(hi, lo) { .h##i = (hi), .l##o = (lo) }1274#define zig_init_u128(hi, lo) { .h##i = (hi), .l##o = (lo) }
1273#define zig_init_i128(hi, lo) { .h##i = (hi), .l##o = (lo) }1275#define zig_init_i128(hi, lo) { .h##i = (hi), .l##o = (lo) }
1274#else /* But non-MSVC doesn't like the unprotected commas */1276#else /* But non-MSVC doesn't like the unprotected commas */
...@@ -3030,7 +3032,7 @@ static inline uint16_t zig_popcount_big(const void *val, bool is_signed, uint16_...@@ -3030,7 +3032,7 @@ static inline uint16_t zig_popcount_big(const void *val, bool is_signed, uint16_
30303032
3031/* ========================= Floating Point Support ========================= */3033/* ========================= Floating Point Support ========================= */
30323034
3033#if _MSC_VER3035#if defined(zig_msvc)
3034float __cdecl nanf(char const* input);3036float __cdecl nanf(char const* input);
3035double __cdecl nan(char const* input);3037double __cdecl nan(char const* input);
3036long double __cdecl nanl(char const* input);3038long double __cdecl nanl(char const* input);
...@@ -3100,7 +3102,7 @@ typedef zig_f16 zig_compiler_rt_f16;...@@ -3100,7 +3102,7 @@ typedef zig_f16 zig_compiler_rt_f16;
31003102
3101#define zig_has_f32 13103#define zig_has_f32 1
3102#define zig_libc_name_f32(name) name##f3104#define zig_libc_name_f32(name) name##f
3103#if _MSC_VER3105#if defined(zig_msvc)
3104#define zig_init_special_f32(sign, name, arg, repr) sign zig_make_f32(zig_msvc_flt_##name, )3106#define zig_init_special_f32(sign, name, arg, repr) sign zig_make_f32(zig_msvc_flt_##name, )
3105#else3107#else
3106#define zig_init_special_f32(sign, name, arg, repr) zig_make_special_f32(sign, name, arg, repr)3108#define zig_init_special_f32(sign, name, arg, repr) zig_make_special_f32(sign, name, arg, repr)
...@@ -3132,7 +3134,7 @@ typedef uint32_t zig_f32;...@@ -3132,7 +3134,7 @@ typedef uint32_t zig_f32;
3132#define zig_has_f64 13134#define zig_has_f64 1
3133#define zig_libc_name_f64(name) name3135#define zig_libc_name_f64(name) name
31343136
3135#if _MSC_VER3137#if defined(zig_msvc)
3136#define zig_init_special_f64(sign, name, arg, repr) sign zig_make_f64(zig_msvc_flt_##name, )3138#define zig_init_special_f64(sign, name, arg, repr) sign zig_make_f64(zig_msvc_flt_##name, )
3137#else3139#else
3138#define zig_init_special_f64(sign, name, arg, repr) zig_make_special_f64(sign, name, arg, repr)3140#define zig_init_special_f64(sign, name, arg, repr) zig_make_special_f64(sign, name, arg, repr)
...@@ -3244,10 +3246,10 @@ typedef zig_u128 zig_f128;...@@ -3244,10 +3246,10 @@ typedef zig_u128 zig_f128;
3244#endif3246#endif
3245#endif3247#endif
32463248
3247#if !_MSC_VER && defined(ZIG_TARGET_ABI_MSVC)3249#if !defined(zig_msvc) && defined(ZIG_TARGET_ABI_MSVC)
3248/* Emulate msvc abi on a gnu compiler */3250/* Emulate msvc abi on a gnu compiler */
3249typedef zig_f64 zig_c_longdouble;3251typedef zig_f64 zig_c_longdouble;
3250#elif _MSC_VER && !defined(ZIG_TARGET_ABI_MSVC)3252#elif defined(zig_msvc) && !defined(ZIG_TARGET_ABI_MSVC)
3251/* Emulate gnu abi on an msvc compiler */3253/* Emulate gnu abi on an msvc compiler */
3252typedef zig_f128 zig_c_longdouble;3254typedef zig_f128 zig_c_longdouble;
3253#else3255#else
...@@ -3647,7 +3649,7 @@ typedef int zig_memory_order;...@@ -3647,7 +3649,7 @@ typedef int zig_memory_order;
3647#define zig_atomic_load(res, obj, order, Type, ReprType) __atomic_load (obj, &(res), order)3649#define zig_atomic_load(res, obj, order, Type, ReprType) __atomic_load (obj, &(res), order)
3648#undef zig_atomicrmw_xchg_float3650#undef zig_atomicrmw_xchg_float
3649#define zig_atomicrmw_xchg_float zig_atomicrmw_xchg3651#define zig_atomicrmw_xchg_float zig_atomicrmw_xchg
3650#elif _MSC_VER && (_M_IX86 || _M_X64)3652#elif defined(zig_msvc) && (_M_IX86 || _M_X64)
3651#define zig_memory_order_relaxed 03653#define zig_memory_order_relaxed 0
3652#define zig_memory_order_acquire 23654#define zig_memory_order_acquire 2
3653#define zig_memory_order_release 33655#define zig_memory_order_release 3
...@@ -3667,7 +3669,7 @@ typedef int zig_memory_order;...@@ -3667,7 +3669,7 @@ typedef int zig_memory_order;
3667#define zig_atomicrmw_max(res, obj, arg, order, Type, ReprType) res = zig_msvc_atomicrmw_max_ ##Type(obj, arg)3669#define zig_atomicrmw_max(res, obj, arg, order, Type, ReprType) res = zig_msvc_atomicrmw_max_ ##Type(obj, arg)
3668#define zig_atomic_store( obj, arg, order, Type, ReprType) zig_msvc_atomic_store_ ##Type(obj, arg)3670#define zig_atomic_store( obj, arg, order, Type, ReprType) zig_msvc_atomic_store_ ##Type(obj, arg)
3669#define zig_atomic_load(res, obj, order, Type, ReprType) res = zig_msvc_atomic_load_ ##order##_##Type(obj)3671#define zig_atomic_load(res, obj, order, Type, ReprType) res = zig_msvc_atomic_load_ ##order##_##Type(obj)
3670/* TODO: _MSC_VER && (_M_ARM || _M_ARM64) */3672/* TODO: zig_msvc && (_M_ARM || _M_ARM64) */
3671#else3673#else
3672#define zig_memory_order_relaxed 03674#define zig_memory_order_relaxed 0
3673#define zig_memory_order_acquire 23675#define zig_memory_order_acquire 2
...@@ -3690,7 +3692,7 @@ typedef int zig_memory_order;...@@ -3690,7 +3692,7 @@ typedef int zig_memory_order;
3690#define zig_atomic_load(res, obj, order, Type, ReprType) zig_atomics_unavailable3692#define zig_atomic_load(res, obj, order, Type, ReprType) zig_atomics_unavailable
3691#endif3693#endif
36923694
3693#if _MSC_VER && (_M_IX86 || _M_X64)3695#if defined(zig_msvc) && (_M_IX86 || _M_X64)
36943696
3695/* TODO: zig_msvc_atomic_load should load 32 bit without interlocked on x86, and load 64 bit without interlocked on x64 */3697/* TODO: zig_msvc_atomic_load should load 32 bit without interlocked on x86, and load 64 bit without interlocked on x64 */
36963698
...@@ -3936,7 +3938,7 @@ static inline void zig_msvc_atomic_store_i128(zig_i128 volatile* obj, zig_i128 a...@@ -3936,7 +3938,7 @@ static inline void zig_msvc_atomic_store_i128(zig_i128 volatile* obj, zig_i128 a
39363938
3937#endif /* _M_IX86 */3939#endif /* _M_IX86 */
39383940
3939#endif /* _MSC_VER && (_M_IX86 || _M_X64) */3941#endif /* zig_msvc && (_M_IX86 || _M_X64) */
39403942
3941/* ======================== Special Case Intrinsics ========================= */3943/* ======================== Special Case Intrinsics ========================= */
39423944
...@@ -3944,7 +3946,7 @@ static inline void zig_msvc_atomic_store_i128(zig_i128 volatile* obj, zig_i128 a...@@ -3944,7 +3946,7 @@ static inline void zig_msvc_atomic_store_i128(zig_i128 volatile* obj, zig_i128 a
39443946
3945static inline void* zig_thumb_windows_teb(void) {3947static inline void* zig_thumb_windows_teb(void) {
3946 void* teb = 0;3948 void* teb = 0;
3947#if defined(_MSC_VER)3949#if defined(zig_msvc)
3948 teb = (void*)_MoveFromCoprocessor(15, 0, 13, 0, 2);3950 teb = (void*)_MoveFromCoprocessor(15, 0, 13, 0, 2);
3949#elif defined(__GNUC__)3951#elif defined(__GNUC__)
3950 __asm__ ("mrc p15, 0, %[ptr], c13, c0, 2" : [ptr] "=r" (teb));3952 __asm__ ("mrc p15, 0, %[ptr], c13, c0, 2" : [ptr] "=r" (teb));
...@@ -3956,7 +3958,7 @@ static inline void* zig_thumb_windows_teb(void) {...@@ -3956,7 +3958,7 @@ static inline void* zig_thumb_windows_teb(void) {
39563958
3957static inline void* zig_aarch64_windows_teb(void) {3959static inline void* zig_aarch64_windows_teb(void) {
3958 void* teb = 0;3960 void* teb = 0;
3959#if defined(_MSC_VER)3961#if defined(zig_msvc)
3960 teb = (void*)__readx18qword(0x0);3962 teb = (void*)__readx18qword(0x0);
3961#elif defined(__GNUC__)3963#elif defined(__GNUC__)
3962 __asm__ ("mov %[ptr], x18" : [ptr] "=r" (teb));3964 __asm__ ("mov %[ptr], x18" : [ptr] "=r" (teb));
...@@ -3968,7 +3970,7 @@ static inline void* zig_aarch64_windows_teb(void) {...@@ -3968,7 +3970,7 @@ static inline void* zig_aarch64_windows_teb(void) {
39683970
3969static inline void* zig_x86_windows_teb(void) {3971static inline void* zig_x86_windows_teb(void) {
3970 void* teb = 0;3972 void* teb = 0;
3971#if defined(_MSC_VER)3973#if defined(zig_msvc)
3972 teb = (void*)__readfsdword(0x18);3974 teb = (void*)__readfsdword(0x18);
3973#elif defined(__GNUC__)3975#elif defined(__GNUC__)
3974 __asm__ ("movl %%fs:0x18, %[ptr]" : [ptr] "=r" (teb));3976 __asm__ ("movl %%fs:0x18, %[ptr]" : [ptr] "=r" (teb));
...@@ -3980,7 +3982,7 @@ static inline void* zig_x86_windows_teb(void) {...@@ -3980,7 +3982,7 @@ static inline void* zig_x86_windows_teb(void) {
39803982
3981static inline void* zig_x86_64_windows_teb(void) {3983static inline void* zig_x86_64_windows_teb(void) {
3982 void* teb = 0;3984 void* teb = 0;
3983#if defined(_MSC_VER)3985#if defined(zig_msvc)
3984 teb = (void*)__readgsqword(0x30);3986 teb = (void*)__readgsqword(0x30);
3985#elif defined(__GNUC__)3987#elif defined(__GNUC__)
3986 __asm__ ("movq %%gs:0x30, %[ptr]" : [ptr] "=r" (teb));3988 __asm__ ("movq %%gs:0x30, %[ptr]" : [ptr] "=r" (teb));
...@@ -3990,10 +3992,10 @@ static inline void* zig_x86_64_windows_teb(void) {...@@ -3990,10 +3992,10 @@ static inline void* zig_x86_64_windows_teb(void) {
39903992
3991#endif3993#endif
39923994
3993#if (_MSC_VER && (_M_IX86 || _M_X64)) || defined(__i386__) || defined(__x86_64__)3995#if (defined(zig_msvc) && (_M_IX86 || _M_X64)) || defined(__i386__) || defined(__x86_64__)
39943996
3995static inline void zig_x86_cpuid(uint32_t leaf_id, uint32_t subid, uint32_t* eax, uint32_t* ebx, uint32_t* ecx, uint32_t* edx) {3997static inline void zig_x86_cpuid(uint32_t leaf_id, uint32_t subid, uint32_t* eax, uint32_t* ebx, uint32_t* ecx, uint32_t* edx) {
3996#if _MSC_VER3998#if defined(zig_msvc)
3997 int cpu_info[4];3999 int cpu_info[4];
3998 __cpuidex(cpu_info, leaf_id, subid);4000 __cpuidex(cpu_info, leaf_id, subid);
3999 *eax = (uint32_t)cpu_info[0];4001 *eax = (uint32_t)cpu_info[0];
...@@ -4006,7 +4008,7 @@ static inline void zig_x86_cpuid(uint32_t leaf_id, uint32_t subid, uint32_t* eax...@@ -4006,7 +4008,7 @@ static inline void zig_x86_cpuid(uint32_t leaf_id, uint32_t subid, uint32_t* eax
4006}4008}
40074009
4008static inline uint32_t zig_x86_get_xcr0(void) {4010static inline uint32_t zig_x86_get_xcr0(void) {
4009#if _MSC_VER4011#if defined(zig_msvc)
4010 return (uint32_t)_xgetbv(0);4012 return (uint32_t)_xgetbv(0);
4011#else4013#else
4012 uint32_t eax;4014 uint32_t eax;