| ... | @@ -1,5 +1,17 @@ | ... | @@ -1,5 +1,17 @@ |
| 1 | #undef linux | 1 | #undef linux |
| 2 | | 2 | |
| | 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 | #endif | 17 | #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> |
| 11 | | 23 | |
| 12 | #if _MSC_VER | 24 | #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 1 | 37 | #define true 1 |
| 26 | #endif | 38 | #endif |
| 27 | | 39 | |
| 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##rhs | 40 | #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) |
| 40 | | 42 | |
| ... | @@ -51,7 +53,7 @@ typedef char bool; | ... | @@ -51,7 +53,7 @@ typedef char bool; |
| 51 | #define zig_has_attribute(attribute) 0 | 53 | #define zig_has_attribute(attribute) 0 |
| 52 | #endif | 54 | #endif |
| 53 | | 55 | |
| 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 1 | 57 | #define zig_little_endian 1 |
| 56 | #define zig_big_endian 0 | 58 | #define zig_big_endian 0 |
| 57 | #else | 59 | #else |
| ... | @@ -65,7 +67,7 @@ typedef char bool; | ... | @@ -65,7 +67,7 @@ typedef char bool; |
| 65 | #define zig_threadlocal _Thread_local | 67 | #define zig_threadlocal _Thread_local |
| 66 | #elif defined(__GNUC__) || defined(zig_slimcc) | 68 | #elif defined(__GNUC__) || defined(zig_slimcc) |
| 67 | #define zig_threadlocal __thread | 69 | #define zig_threadlocal __thread |
| 68 | #elif _MSC_VER | 70 | #elif defined(zig_msvc) |
| 69 | #define zig_threadlocal __declspec(thread) | 71 | #define zig_threadlocal __declspec(thread) |
| 70 | #else | 72 | #else |
| 71 | #define zig_threadlocal zig_threadlocal_unavailable | 73 | #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 0 | 79 | #define zig_f128_has_miscompilations 0 |
| 78 | #endif | 80 | #endif |
| 79 | | 81 | |
| 80 | #if _MSC_VER | 82 | #if defined(zig_msvc) |
| 81 | #define zig_const_arr | 83 | #define zig_const_arr |
| 82 | #define zig_callconv(c) __##c | 84 | #define zig_callconv(c) __##c |
| 83 | #else | 85 | #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_decl | 94 | #define zig_naked_decl |
| 93 | #define zig_naked __declspec(naked) | 95 | #define zig_naked __declspec(naked) |
| 94 | #else | 96 | #else |
| ... | @@ -110,7 +112,7 @@ typedef char bool; | ... | @@ -110,7 +112,7 @@ typedef char bool; |
| 110 | | 112 | |
| 111 | #if zig_has_attribute(noinline) | 113 | #if zig_has_attribute(noinline) |
| 112 | #define zig_never_inline __attribute__((noinline)) zig_maybe_flatten | 114 | #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_flatten | 116 | #define zig_never_inline __declspec(noinline) zig_maybe_flatten |
| 115 | #else | 117 | #else |
| 116 | #define zig_never_inline zig_never_inline_unavailable | 118 | #define zig_never_inline zig_never_inline_unavailable |
| ... | @@ -138,7 +140,7 @@ typedef char bool; | ... | @@ -138,7 +140,7 @@ typedef char bool; |
| 138 | | 140 | |
| 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_VER | 143 | #elif defined(zig_msvc) |
| 142 | #define zig_under_align(alignment) __declspec(align(alignment)) | 144 | #define zig_under_align(alignment) __declspec(align(alignment)) |
| 143 | #else | 145 | #else |
| 144 | #define zig_under_align zig_align_unavailable | 146 | #define zig_under_align zig_align_unavailable |
| ... | @@ -154,7 +156,7 @@ typedef char bool; | ... | @@ -154,7 +156,7 @@ typedef char bool; |
| 154 | | 156 | |
| 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_VER | 159 | #elif defined(zig_msvc) |
| 158 | #define zig_align_fn(alignment) | 160 | #define zig_align_fn(alignment) |
| 159 | #else | 161 | #else |
| 160 | #define zig_align_fn zig_align_fn_unavailable | 162 | #define zig_align_fn zig_align_fn_unavailable |
| ... | @@ -162,7 +164,7 @@ typedef char bool; | ... | @@ -162,7 +164,7 @@ typedef char bool; |
| 162 | | 164 | |
| 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)) definition | 166 | #define zig_packed(definition) __attribute__((packed)) definition |
| 165 | #elif _MSC_VER | 167 | #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 | #else | 169 | #else |
| 168 | #define zig_packed(definition) zig_packed_unavailable | 170 | #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_linksection | 175 | #define zig_linksection_fn zig_linksection |
| 174 | #elif _MSC_VER | 176 | #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 | #else | 179 | #else |
| ... | @@ -191,23 +193,23 @@ typedef char bool; | ... | @@ -191,23 +193,23 @@ typedef char bool; |
| 191 | #define zig_extern extern | 193 | #define zig_extern extern |
| 192 | #endif | 194 | #endif |
| 193 | | 195 | |
| 194 | #if _MSC_VER | 196 | #if defined(zig_msvc) |
| 195 | #if _M_X64 | 197 | #if _M_X64 |
| 196 | #define zig_mangle_c(symbol) symbol | 198 | #define zig_mangle_c(symbol) symbol |
| 197 | #else /*_M_X64 */ | 199 | #else /*_M_X64 */ |
| 198 | #define zig_mangle_c(symbol) "_" symbol | 200 | #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) "_" symbol | 204 | #define zig_mangle_c(symbol) "_" symbol |
| 203 | #else /* __APPLE__ */ | 205 | #else /* __APPLE__ */ |
| 204 | #define zig_mangle_c(symbol) symbol | 206 | #define zig_mangle_c(symbol) symbol |
| 205 | #endif /* __APPLE__ */ | 207 | #endif /* __APPLE__ */ |
| 206 | #endif /* _MSC_VER */ | 208 | #endif /* zig_msvc */ |
| 207 | | 209 | |
| 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_VER | 212 | #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 | #else | 215 | #else |
| ... | @@ -217,24 +219,24 @@ typedef char bool; | ... | @@ -217,24 +219,24 @@ typedef char bool; |
| 217 | | 219 | |
| 218 | #define zig_mangled_tentative zig_mangled | 220 | #define zig_mangled_tentative zig_mangled |
| 219 | #define zig_mangled_final zig_mangled | 221 | #define zig_mangled_final zig_mangled |
| 220 | #if _MSC_VER | 222 | #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 */ |
| 232 | | 234 | |
| 233 | #if _MSC_VER | 235 | #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_VER | 251 | #elif defined(zig_msvc) |
| 250 | #define zig_weak_linkage __declspec(selectany) | 252 | #define zig_weak_linkage __declspec(selectany) |
| 251 | #define zig_weak_linkage_fn | 253 | #define zig_weak_linkage_fn |
| 252 | #else | 254 | #else |
| ... | @@ -256,9 +258,9 @@ typedef char bool; | ... | @@ -256,9 +258,9 @@ typedef char bool; |
| 256 | | 258 | |
| 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; |
| 284 | | 286 | |
| 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; |
| 312 | | 314 | |
| 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 | #else | 319 | #else |
| 318 | #define zig_return_address() 0 | 320 | #define zig_return_address() 0 |
| ... | @@ -344,7 +346,7 @@ typedef char bool; | ... | @@ -344,7 +346,7 @@ typedef char bool; |
| 344 | #define zig_noreturn _Noreturn | 346 | #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_VER | 349 | #elif defined(zig_msvc) |
| 348 | #define zig_noreturn __declspec(noreturn) | 350 | #define zig_noreturn __declspec(noreturn) |
| 349 | #else | 351 | #else |
| 350 | #define zig_noreturn | 352 | #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); |
| 369 | | 371 | |
| 370 | /* ===================== 8/16/32/64-bit Integer Support ===================== */ | 372 | /* ===================== 8/16/32/64-bit Integer Support ===================== */ |
| 371 | | 373 | |
| 372 | #if __STDC_VERSION__ >= 199901L || _MSC_VER | 374 | #if __STDC_VERSION__ >= 199901L || defined(zig_msvc) |
| 373 | #include <stdint.h> | 375 | #include <stdint.h> |
| 374 | #else | 376 | #else |
| 375 | | 377 | |
| ... | @@ -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) }) |
| 1270 | | 1272 | |
| 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_ |
| 3030 | | 3032 | |
| 3031 | /* ========================= Floating Point Support ========================= */ | 3033 | /* ========================= Floating Point Support ========================= */ |
| 3032 | | 3034 | |
| 3033 | #if _MSC_VER | 3035 | #if defined(zig_msvc) |
| 3034 | float __cdecl nanf(char const* input); | 3036 | float __cdecl nanf(char const* input); |
| 3035 | double __cdecl nan(char const* input); | 3037 | double __cdecl nan(char const* input); |
| 3036 | long double __cdecl nanl(char const* input); | 3038 | long 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; |
| 3100 | | 3102 | |
| 3101 | #define zig_has_f32 1 | 3103 | #define zig_has_f32 1 |
| 3102 | #define zig_libc_name_f32(name) name##f | 3104 | #define zig_libc_name_f32(name) name##f |
| 3103 | #if _MSC_VER | 3105 | #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 | #else | 3107 | #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 1 | 3134 | #define zig_has_f64 1 |
| 3133 | #define zig_libc_name_f64(name) name | 3135 | #define zig_libc_name_f64(name) name |
| 3134 | | 3136 | |
| 3135 | #if _MSC_VER | 3137 | #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 | #else | 3139 | #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 | #endif | 3246 | #endif |
| 3245 | #endif | 3247 | #endif |
| 3246 | | 3248 | |
| 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 */ |
| 3249 | typedef zig_f64 zig_c_longdouble; | 3251 | typedef 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 */ |
| 3252 | typedef zig_f128 zig_c_longdouble; | 3254 | typedef zig_f128 zig_c_longdouble; |
| 3253 | #else | 3255 | #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_float | 3650 | #undef zig_atomicrmw_xchg_float |
| 3649 | #define zig_atomicrmw_xchg_float zig_atomicrmw_xchg | 3651 | #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 0 | 3653 | #define zig_memory_order_relaxed 0 |
| 3652 | #define zig_memory_order_acquire 2 | 3654 | #define zig_memory_order_acquire 2 |
| 3653 | #define zig_memory_order_release 3 | 3655 | #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 | #else | 3673 | #else |
| 3672 | #define zig_memory_order_relaxed 0 | 3674 | #define zig_memory_order_relaxed 0 |
| 3673 | #define zig_memory_order_acquire 2 | 3675 | #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_unavailable | 3692 | #define zig_atomic_load(res, obj, order, Type, ReprType) zig_atomics_unavailable |
| 3691 | #endif | 3693 | #endif |
| 3692 | | 3694 | |
| 3693 | #if _MSC_VER && (_M_IX86 || _M_X64) | 3695 | #if defined(zig_msvc) && (_M_IX86 || _M_X64) |
| 3694 | | 3696 | |
| 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 */ |
| 3696 | | 3698 | |
| ... | @@ -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 |
| 3936 | | 3938 | |
| 3937 | #endif /* _M_IX86 */ | 3939 | #endif /* _M_IX86 */ |
| 3938 | | 3940 | |
| 3939 | #endif /* _MSC_VER && (_M_IX86 || _M_X64) */ | 3941 | #endif /* zig_msvc && (_M_IX86 || _M_X64) */ |
| 3940 | | 3942 | |
| 3941 | /* ======================== Special Case Intrinsics ========================= */ | 3943 | /* ======================== Special Case Intrinsics ========================= */ |
| 3942 | | 3944 | |
| ... | @@ -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 |
| 3944 | | 3946 | |
| 3945 | static inline void* zig_thumb_windows_teb(void) { | 3947 | static 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) { |
| 3956 | | 3958 | |
| 3957 | static inline void* zig_aarch64_windows_teb(void) { | 3959 | static 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) { |
| 3968 | | 3970 | |
| 3969 | static inline void* zig_x86_windows_teb(void) { | 3971 | static 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) { |
| 3980 | | 3982 | |
| 3981 | static inline void* zig_x86_64_windows_teb(void) { | 3983 | static 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) { |
| 3990 | | 3992 | |
| 3991 | #endif | 3993 | #endif |
| 3992 | | 3994 | |
| 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__) |
| 3994 | | 3996 | |
| 3995 | static inline void zig_x86_cpuid(uint32_t leaf_id, uint32_t subid, uint32_t* eax, uint32_t* ebx, uint32_t* ecx, uint32_t* edx) { | 3997 | static 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_VER | 3998 | #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 | } |
| 4007 | | 4009 | |
| 4008 | static inline uint32_t zig_x86_get_xcr0(void) { | 4010 | static inline uint32_t zig_x86_get_xcr0(void) { |
| 4009 | #if _MSC_VER | 4011 | #if defined(zig_msvc) |
| 4010 | return (uint32_t)_xgetbv(0); | 4012 | return (uint32_t)_xgetbv(0); |
| 4011 | #else | 4013 | #else |
| 4012 | uint32_t eax; | 4014 | uint32_t eax; |