authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-02-16 16:47:35+01:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-02-17 19:18:20+01:00
logf90f8f59a5f98ae3264bc00dbff4d56a0e4ef65e
tree712ad4874062a917bbc8d4ac6591a9827683382c
parent481b7bf3f095488a89e20d88ada092529bc6e6f8
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

stage1: Update zig1.wasm.

Signed-off-by: Alex Rønne Petersen <alex@alexrp.com>

2 files changed, 94 insertions(+), 57 deletions(-)

stage1/zig.h+94-57
......@@ -9,6 +9,7 @@
99#define zig_clang
1010#define zig_gnuc
1111#elif defined(__GNUC__)
12#define zig_gcc
1213#define zig_gnuc
1314#elif defined(__IBMC__)
1415#define zig_xlc
......@@ -171,7 +172,7 @@
171172#define zig_callconv(c) __attribute__((c))
172173#endif
173174
174#if zig_has_attribute(naked) || defined(zig_gnuc)
175#if zig_has_attribute(naked) || defined(zig_gcc)
175176#define zig_naked_decl __attribute__((naked))
176177#define zig_naked __attribute__((naked))
177178#elif defined(zig_msvc)
......@@ -265,7 +266,7 @@
265266#define zig_linksection_fn zig_linksection
266267#endif
267268
268#if zig_has_builtin(unreachable) || defined(zig_gnuc) || defined(zig_tinyc)
269#if zig_has_builtin(unreachable) || defined(zig_gcc) || defined(zig_tinyc)
269270#define zig_unreachable() __builtin_unreachable()
270271#elif defined(zig_msvc)
271272#define zig_unreachable() __assume(0)
......@@ -293,11 +294,11 @@
293294#endif /* zig_macho */
294295#endif /* zig_msvc */
295296
296#if (zig_has_attribute(alias) || defined(zig_tinyc)) && !defined(zig_macho)
297#define zig_export(symbol, name) __attribute__((alias(symbol)))
298#elif defined(zig_msvc)
297#if defined(zig_msvc)
299298#define zig_export(symbol, name) ; \
300299 __pragma(comment(linker, "/alternatename:" zig_mangle_c(name) "=" zig_mangle_c(symbol)))
300#elif (zig_has_attribute(alias) || defined(zig_tinyc)) && !defined(zig_macho)
301#define zig_export(symbol, name) __attribute__((alias(symbol)))
301302#else
302303#define zig_export(symbol, name) ; \
303304 __asm(zig_mangle_c(name) " = " zig_mangle_c(symbol))
......@@ -321,7 +322,7 @@
321322#if defined(zig_msvc)
322323#define zig_import(Type, fn_name, libc_name, sig_args, call_args) zig_extern Type fn_name sig_args;\
323324 __pragma(comment(linker, "/alternatename:" zig_mangle_c(#fn_name) "=" zig_mangle_c(#libc_name)));
324#define zig_import_builtin(Type, fn_name, libc_name, sig_args, call_args) zig_import(Type, fn_name, sig_args, call_args)
325#define zig_import_builtin(Type, fn_name, libc_name, sig_args, call_args) zig_import(Type, fn_name, libc_name, sig_args, call_args)
325326#else /* zig_msvc */
326327#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));
327328#define zig_import_builtin(Type, fn_name, libc_name, sig_args, call_args) zig_extern Type libc_name sig_args; \
......@@ -331,7 +332,7 @@
331332#define zig_expand_import_0(Type, fn_name, libc_name, sig_args, call_args) zig_import(Type, fn_name, libc_name, sig_args, call_args)
332333#define zig_expand_import_1(Type, fn_name, libc_name, sig_args, call_args) zig_import_builtin(Type, fn_name, libc_name, sig_args, call_args)
333334
334#if zig_has_attribute(weak) || defined(zig_gnuc) || defined(zig_tinyc)
335#if zig_has_attribute(weak) || defined(zig_gcc) || defined(zig_tinyc)
335336#define zig_weak_linkage __attribute__((weak))
336337#define zig_weak_linkage_fn __attribute__((weak))
337338#elif defined(zig_msvc)
......@@ -418,7 +419,7 @@
418419#define zig_breakpoint() zig_breakpoint_unavailable
419420#endif
420421
421#if zig_has_builtin(return_address) || defined(zig_gnuc) || defined(zig_tinyc)
422#if zig_has_builtin(return_address) || defined(zig_gcc) || defined(zig_tinyc)
422423#define zig_return_address() __builtin_extract_return_addr(__builtin_return_address(0))
423424#elif defined(zig_msvc)
424425#define zig_return_address() _ReturnAddress()
......@@ -426,7 +427,7 @@
426427#define zig_return_address() 0
427428#endif
428429
429#if zig_has_builtin(frame_address) || defined(zig_gnuc) || defined(zig_tinyc)
430#if zig_has_builtin(frame_address) || defined(zig_gcc) || defined(zig_tinyc)
430431#define zig_frame_address() __builtin_frame_address(0)
431432#elif defined(zig_msvc)
432433#define zig_frame_address() _AddressOfReturnAddress()
......@@ -434,7 +435,7 @@
434435#define zig_frame_address() 0
435436#endif
436437
437#if zig_has_builtin(prefetch) || defined(zig_gnuc)
438#if zig_has_builtin(prefetch) || defined(zig_gcc)
438439#define zig_prefetch(addr, rw, locality) __builtin_prefetch(addr, rw, locality)
439440#else
440441#define zig_prefetch(addr, rw, locality)
......@@ -452,7 +453,7 @@
452453#define zig_noreturn [[noreturn]]
453454#elif __STDC_VERSION__ >= 201112L
454455#define zig_noreturn _Noreturn
455#elif zig_has_attribute(noreturn) || defined(zig_gnuc) || defined(zig_tinyc)
456#elif zig_has_attribute(noreturn) || defined(zig_gcc) || defined(zig_tinyc)
456457#define zig_noreturn __attribute__((noreturn))
457458#elif defined(zig_msvc)
458459#define zig_noreturn __declspec(noreturn)
......@@ -650,7 +651,7 @@ typedef ptrdiff_t intptr_t;
650651 zig_operator(Type, Type, operation, operator)
651652#define zig_shift_operator(Type, operation, operator) \
652653 zig_operator(Type, uint8_t, operation, operator)
653#define zig_int_helpers(w) \
654#define zig_int_helpers(w, PromotedUnsigned) \
654655 zig_basic_operator(uint##w##_t, and_u##w, &) \
655656 zig_basic_operator( int##w##_t, and_i##w, &) \
656657 zig_basic_operator(uint##w##_t, or_u##w, |) \
......@@ -726,19 +727,51 @@ typedef ptrdiff_t intptr_t;
726727 } \
727728\
728729 static inline uint##w##_t zig_mulw_u##w(uint##w##_t lhs, uint##w##_t rhs, uint8_t bits) { \
729 return zig_wrap_u##w(lhs * rhs, bits); \
730 return zig_wrap_u##w((PromotedUnsigned)lhs * rhs, bits); \
730731 } \
731732\
732733 static inline int##w##_t zig_mulw_i##w(int##w##_t lhs, int##w##_t rhs, uint8_t bits) { \
733734 return zig_wrap_i##w((int##w##_t)((uint##w##_t)lhs * (uint##w##_t)rhs), bits); \
734735 }
735zig_int_helpers(8)
736zig_int_helpers(16)
737zig_int_helpers(32)
738zig_int_helpers(64)
736#if UINT8_MAX <= UINT_MAX
737zig_int_helpers(8, unsigned int)
738#elif UINT8_MAX <= ULONG_MAX
739zig_int_helpers(8, unsigned long)
740#elif UINT8_MAX <= ULLONG_MAX
741zig_int_helpers(8, unsigned long long)
742#else
743zig_int_helpers(8, uint8_t)
744#endif
745#if UINT16_MAX <= UINT_MAX
746zig_int_helpers(16, unsigned int)
747#elif UINT16_MAX <= ULONG_MAX
748zig_int_helpers(16, unsigned long)
749#elif UINT16_MAX <= ULLONG_MAX
750zig_int_helpers(16, unsigned long long)
751#else
752zig_int_helpers(16, uint16_t)
753#endif
754#if UINT32_MAX <= UINT_MAX
755zig_int_helpers(32, unsigned int)
756#elif UINT32_MAX <= ULONG_MAX
757zig_int_helpers(32, unsigned long)
758#elif UINT32_MAX <= ULLONG_MAX
759zig_int_helpers(32, unsigned long long)
760#else
761zig_int_helpers(32, uint32_t)
762#endif
763#if UINT64_MAX <= UINT_MAX
764zig_int_helpers(64, unsigned int)
765#elif UINT64_MAX <= ULONG_MAX
766zig_int_helpers(64, unsigned long)
767#elif UINT64_MAX <= ULLONG_MAX
768zig_int_helpers(64, unsigned long long)
769#else
770zig_int_helpers(64, uint64_t)
771#endif
739772
740773static inline bool zig_addo_u32(uint32_t *res, uint32_t lhs, uint32_t rhs, uint8_t bits) {
741#if zig_has_builtin(add_overflow) || defined(zig_gnuc)
774#if zig_has_builtin(add_overflow) || defined(zig_gcc)
742775 uint32_t full_res;
743776 bool overflow = __builtin_add_overflow(lhs, rhs, &full_res);
744777 *res = zig_wrap_u32(full_res, bits);
......@@ -751,7 +784,7 @@ static inline bool zig_addo_u32(uint32_t *res, uint32_t lhs, uint32_t rhs, uint8
751784
752785zig_extern int32_t __addosi4(int32_t lhs, int32_t rhs, int *overflow);
753786static inline bool zig_addo_i32(int32_t *res, int32_t lhs, int32_t rhs, uint8_t bits) {
754#if zig_has_builtin(add_overflow) || defined(zig_gnuc)
787#if zig_has_builtin(add_overflow) || defined(zig_gcc)
755788 int32_t full_res;
756789 bool overflow = __builtin_add_overflow(lhs, rhs, &full_res);
757790#else
......@@ -764,7 +797,7 @@ static inline bool zig_addo_i32(int32_t *res, int32_t lhs, int32_t rhs, uint8_t
764797}
765798
766799static inline bool zig_addo_u64(uint64_t *res, uint64_t lhs, uint64_t rhs, uint8_t bits) {
767#if zig_has_builtin(add_overflow) || defined(zig_gnuc)
800#if zig_has_builtin(add_overflow) || defined(zig_gcc)
768801 uint64_t full_res;
769802 bool overflow = __builtin_add_overflow(lhs, rhs, &full_res);
770803 *res = zig_wrap_u64(full_res, bits);
......@@ -777,7 +810,7 @@ static inline bool zig_addo_u64(uint64_t *res, uint64_t lhs, uint64_t rhs, uint8
777810
778811zig_extern int64_t __addodi4(int64_t lhs, int64_t rhs, int *overflow);
779812static inline bool zig_addo_i64(int64_t *res, int64_t lhs, int64_t rhs, uint8_t bits) {
780#if zig_has_builtin(add_overflow) || defined(zig_gnuc)
813#if zig_has_builtin(add_overflow) || defined(zig_gcc)
781814 int64_t full_res;
782815 bool overflow = __builtin_add_overflow(lhs, rhs, &full_res);
783816#else
......@@ -790,7 +823,7 @@ static inline bool zig_addo_i64(int64_t *res, int64_t lhs, int64_t rhs, uint8_t
790823}
791824
792825static inline bool zig_addo_u8(uint8_t *res, uint8_t lhs, uint8_t rhs, uint8_t bits) {
793#if zig_has_builtin(add_overflow) || defined(zig_gnuc)
826#if zig_has_builtin(add_overflow) || defined(zig_gcc)
794827 uint8_t full_res;
795828 bool overflow = __builtin_add_overflow(lhs, rhs, &full_res);
796829 *res = zig_wrap_u8(full_res, bits);
......@@ -804,7 +837,7 @@ static inline bool zig_addo_u8(uint8_t *res, uint8_t lhs, uint8_t rhs, uint8_t b
804837}
805838
806839static inline bool zig_addo_i8(int8_t *res, int8_t lhs, int8_t rhs, uint8_t bits) {
807#if zig_has_builtin(add_overflow) || defined(zig_gnuc)
840#if zig_has_builtin(add_overflow) || defined(zig_gcc)
808841 int8_t full_res;
809842 bool overflow = __builtin_add_overflow(lhs, rhs, &full_res);
810843 *res = zig_wrap_i8(full_res, bits);
......@@ -818,7 +851,7 @@ static inline bool zig_addo_i8(int8_t *res, int8_t lhs, int8_t rhs, uint8_t bits
818851}
819852
820853static inline bool zig_addo_u16(uint16_t *res, uint16_t lhs, uint16_t rhs, uint8_t bits) {
821#if zig_has_builtin(add_overflow) || defined(zig_gnuc)
854#if zig_has_builtin(add_overflow) || defined(zig_gcc)
822855 uint16_t full_res;
823856 bool overflow = __builtin_add_overflow(lhs, rhs, &full_res);
824857 *res = zig_wrap_u16(full_res, bits);
......@@ -832,7 +865,7 @@ static inline bool zig_addo_u16(uint16_t *res, uint16_t lhs, uint16_t rhs, uint8
832865}
833866
834867static inline bool zig_addo_i16(int16_t *res, int16_t lhs, int16_t rhs, uint8_t bits) {
835#if zig_has_builtin(add_overflow) || defined(zig_gnuc)
868#if zig_has_builtin(add_overflow) || defined(zig_gcc)
836869 int16_t full_res;
837870 bool overflow = __builtin_add_overflow(lhs, rhs, &full_res);
838871 *res = zig_wrap_i16(full_res, bits);
......@@ -846,7 +879,7 @@ static inline bool zig_addo_i16(int16_t *res, int16_t lhs, int16_t rhs, uint8_t
846879}
847880
848881static inline bool zig_subo_u32(uint32_t *res, uint32_t lhs, uint32_t rhs, uint8_t bits) {
849#if zig_has_builtin(sub_overflow) || defined(zig_gnuc)
882#if zig_has_builtin(sub_overflow) || defined(zig_gcc)
850883 uint32_t full_res;
851884 bool overflow = __builtin_sub_overflow(lhs, rhs, &full_res);
852885 *res = zig_wrap_u32(full_res, bits);
......@@ -859,7 +892,7 @@ static inline bool zig_subo_u32(uint32_t *res, uint32_t lhs, uint32_t rhs, uint8
859892
860893zig_extern int32_t __subosi4(int32_t lhs, int32_t rhs, int *overflow);
861894static inline bool zig_subo_i32(int32_t *res, int32_t lhs, int32_t rhs, uint8_t bits) {
862#if zig_has_builtin(sub_overflow) || defined(zig_gnuc)
895#if zig_has_builtin(sub_overflow) || defined(zig_gcc)
863896 int32_t full_res;
864897 bool overflow = __builtin_sub_overflow(lhs, rhs, &full_res);
865898#else
......@@ -872,7 +905,7 @@ static inline bool zig_subo_i32(int32_t *res, int32_t lhs, int32_t rhs, uint8_t
872905}
873906
874907static inline bool zig_subo_u64(uint64_t *res, uint64_t lhs, uint64_t rhs, uint8_t bits) {
875#if zig_has_builtin(sub_overflow) || defined(zig_gnuc)
908#if zig_has_builtin(sub_overflow) || defined(zig_gcc)
876909 uint64_t full_res;
877910 bool overflow = __builtin_sub_overflow(lhs, rhs, &full_res);
878911 *res = zig_wrap_u64(full_res, bits);
......@@ -885,7 +918,7 @@ static inline bool zig_subo_u64(uint64_t *res, uint64_t lhs, uint64_t rhs, uint8
885918
886919zig_extern int64_t __subodi4(int64_t lhs, int64_t rhs, int *overflow);
887920static inline bool zig_subo_i64(int64_t *res, int64_t lhs, int64_t rhs, uint8_t bits) {
888#if zig_has_builtin(sub_overflow) || defined(zig_gnuc)
921#if zig_has_builtin(sub_overflow) || defined(zig_gcc)
889922 int64_t full_res;
890923 bool overflow = __builtin_sub_overflow(lhs, rhs, &full_res);
891924#else
......@@ -898,7 +931,7 @@ static inline bool zig_subo_i64(int64_t *res, int64_t lhs, int64_t rhs, uint8_t
898931}
899932
900933static inline bool zig_subo_u8(uint8_t *res, uint8_t lhs, uint8_t rhs, uint8_t bits) {
901#if zig_has_builtin(sub_overflow) || defined(zig_gnuc)
934#if zig_has_builtin(sub_overflow) || defined(zig_gcc)
902935 uint8_t full_res;
903936 bool overflow = __builtin_sub_overflow(lhs, rhs, &full_res);
904937 *res = zig_wrap_u8(full_res, bits);
......@@ -912,7 +945,7 @@ static inline bool zig_subo_u8(uint8_t *res, uint8_t lhs, uint8_t rhs, uint8_t b
912945}
913946
914947static inline bool zig_subo_i8(int8_t *res, int8_t lhs, int8_t rhs, uint8_t bits) {
915#if zig_has_builtin(sub_overflow) || defined(zig_gnuc)
948#if zig_has_builtin(sub_overflow) || defined(zig_gcc)
916949 int8_t full_res;
917950 bool overflow = __builtin_sub_overflow(lhs, rhs, &full_res);
918951 *res = zig_wrap_i8(full_res, bits);
......@@ -926,7 +959,7 @@ static inline bool zig_subo_i8(int8_t *res, int8_t lhs, int8_t rhs, uint8_t bits
926959}
927960
928961static inline bool zig_subo_u16(uint16_t *res, uint16_t lhs, uint16_t rhs, uint8_t bits) {
929#if zig_has_builtin(sub_overflow) || defined(zig_gnuc)
962#if zig_has_builtin(sub_overflow) || defined(zig_gcc)
930963 uint16_t full_res;
931964 bool overflow = __builtin_sub_overflow(lhs, rhs, &full_res);
932965 *res = zig_wrap_u16(full_res, bits);
......@@ -940,7 +973,7 @@ static inline bool zig_subo_u16(uint16_t *res, uint16_t lhs, uint16_t rhs, uint8
940973}
941974
942975static inline bool zig_subo_i16(int16_t *res, int16_t lhs, int16_t rhs, uint8_t bits) {
943#if zig_has_builtin(sub_overflow) || defined(zig_gnuc)
976#if zig_has_builtin(sub_overflow) || defined(zig_gcc)
944977 int16_t full_res;
945978 bool overflow = __builtin_sub_overflow(lhs, rhs, &full_res);
946979 *res = zig_wrap_i16(full_res, bits);
......@@ -954,7 +987,7 @@ static inline bool zig_subo_i16(int16_t *res, int16_t lhs, int16_t rhs, uint8_t
954987}
955988
956989static inline bool zig_mulo_u32(uint32_t *res, uint32_t lhs, uint32_t rhs, uint8_t bits) {
957#if zig_has_builtin(mul_overflow) || defined(zig_gnuc)
990#if zig_has_builtin(mul_overflow) || defined(zig_gcc)
958991 uint32_t full_res;
959992 bool overflow = __builtin_mul_overflow(lhs, rhs, &full_res);
960993 *res = zig_wrap_u32(full_res, bits);
......@@ -967,7 +1000,7 @@ static inline bool zig_mulo_u32(uint32_t *res, uint32_t lhs, uint32_t rhs, uint8
9671000
9681001zig_extern int32_t __mulosi4(int32_t lhs, int32_t rhs, int *overflow);
9691002static inline bool zig_mulo_i32(int32_t *res, int32_t lhs, int32_t rhs, uint8_t bits) {
970#if zig_has_builtin(mul_overflow) || defined(zig_gnuc)
1003#if zig_has_builtin(mul_overflow) || defined(zig_gcc)
9711004 int32_t full_res;
9721005 bool overflow = __builtin_mul_overflow(lhs, rhs, &full_res);
9731006#else
......@@ -980,7 +1013,7 @@ static inline bool zig_mulo_i32(int32_t *res, int32_t lhs, int32_t rhs, uint8_t
9801013}
9811014
9821015static inline bool zig_mulo_u64(uint64_t *res, uint64_t lhs, uint64_t rhs, uint8_t bits) {
983#if zig_has_builtin(mul_overflow) || defined(zig_gnuc)
1016#if zig_has_builtin(mul_overflow) || defined(zig_gcc)
9841017 uint64_t full_res;
9851018 bool overflow = __builtin_mul_overflow(lhs, rhs, &full_res);
9861019 *res = zig_wrap_u64(full_res, bits);
......@@ -993,7 +1026,7 @@ static inline bool zig_mulo_u64(uint64_t *res, uint64_t lhs, uint64_t rhs, uint8
9931026
9941027zig_extern int64_t __mulodi4(int64_t lhs, int64_t rhs, int *overflow);
9951028static inline bool zig_mulo_i64(int64_t *res, int64_t lhs, int64_t rhs, uint8_t bits) {
996#if zig_has_builtin(mul_overflow) || defined(zig_gnuc)
1029#if zig_has_builtin(mul_overflow) || defined(zig_gcc)
9971030 int64_t full_res;
9981031 bool overflow = __builtin_mul_overflow(lhs, rhs, &full_res);
9991032#else
......@@ -1006,7 +1039,7 @@ static inline bool zig_mulo_i64(int64_t *res, int64_t lhs, int64_t rhs, uint8_t
10061039}
10071040
10081041static inline bool zig_mulo_u8(uint8_t *res, uint8_t lhs, uint8_t rhs, uint8_t bits) {
1009#if zig_has_builtin(mul_overflow) || defined(zig_gnuc)
1042#if zig_has_builtin(mul_overflow) || defined(zig_gcc)
10101043 uint8_t full_res;
10111044 bool overflow = __builtin_mul_overflow(lhs, rhs, &full_res);
10121045 *res = zig_wrap_u8(full_res, bits);
......@@ -1020,7 +1053,7 @@ static inline bool zig_mulo_u8(uint8_t *res, uint8_t lhs, uint8_t rhs, uint8_t b
10201053}
10211054
10221055static inline bool zig_mulo_i8(int8_t *res, int8_t lhs, int8_t rhs, uint8_t bits) {
1023#if zig_has_builtin(mul_overflow) || defined(zig_gnuc)
1056#if zig_has_builtin(mul_overflow) || defined(zig_gcc)
10241057 int8_t full_res;
10251058 bool overflow = __builtin_mul_overflow(lhs, rhs, &full_res);
10261059 *res = zig_wrap_i8(full_res, bits);
......@@ -1034,7 +1067,7 @@ static inline bool zig_mulo_i8(int8_t *res, int8_t lhs, int8_t rhs, uint8_t bits
10341067}
10351068
10361069static inline bool zig_mulo_u16(uint16_t *res, uint16_t lhs, uint16_t rhs, uint8_t bits) {
1037#if zig_has_builtin(mul_overflow) || defined(zig_gnuc)
1070#if zig_has_builtin(mul_overflow) || defined(zig_gcc)
10381071 uint16_t full_res;
10391072 bool overflow = __builtin_mul_overflow(lhs, rhs, &full_res);
10401073 *res = zig_wrap_u16(full_res, bits);
......@@ -1048,7 +1081,7 @@ static inline bool zig_mulo_u16(uint16_t *res, uint16_t lhs, uint16_t rhs, uint8
10481081}
10491082
10501083static inline bool zig_mulo_i16(int16_t *res, int16_t lhs, int16_t rhs, uint8_t bits) {
1051#if zig_has_builtin(mul_overflow) || defined(zig_gnuc)
1084#if zig_has_builtin(mul_overflow) || defined(zig_gcc)
10521085 int16_t full_res;
10531086 bool overflow = __builtin_mul_overflow(lhs, rhs, &full_res);
10541087 *res = zig_wrap_i16(full_res, bits);
......@@ -1157,7 +1190,7 @@ static inline int8_t zig_byte_swap_i8(int8_t val, uint8_t bits) {
11571190
11581191static inline uint16_t zig_byte_swap_u16(uint16_t val, uint8_t bits) {
11591192 uint16_t full_res;
1160#if zig_has_builtin(bswap16) || defined(zig_gnuc)
1193#if zig_has_builtin(bswap16) || defined(zig_gcc)
11611194 full_res = __builtin_bswap16(val);
11621195#else
11631196 full_res = (uint16_t)zig_byte_swap_u8((uint8_t)(val >> 0), 8) << 8 |
......@@ -1172,7 +1205,7 @@ static inline int16_t zig_byte_swap_i16(int16_t val, uint8_t bits) {
11721205
11731206static inline uint32_t zig_byte_swap_u32(uint32_t val, uint8_t bits) {
11741207 uint32_t full_res;
1175#if zig_has_builtin(bswap32) || defined(zig_gnuc)
1208#if zig_has_builtin(bswap32) || defined(zig_gcc)
11761209 full_res = __builtin_bswap32(val);
11771210#else
11781211 full_res = (uint32_t)zig_byte_swap_u16((uint16_t)(val >> 0), 16) << 16 |
......@@ -1187,7 +1220,7 @@ static inline int32_t zig_byte_swap_i32(int32_t val, uint8_t bits) {
11871220
11881221static inline uint64_t zig_byte_swap_u64(uint64_t val, uint8_t bits) {
11891222 uint64_t full_res;
1190#if zig_has_builtin(bswap64) || defined(zig_gnuc)
1223#if zig_has_builtin(bswap64) || defined(zig_gcc)
11911224 full_res = __builtin_bswap64(val);
11921225#else
11931226 full_res = (uint64_t)zig_byte_swap_u32((uint32_t)(val >> 0), 32) << 32 |
......@@ -1267,7 +1300,7 @@ static inline int64_t zig_bit_reverse_i64(int64_t val, uint8_t bits) {
12671300 static inline uint8_t zig_popcount_i##w(int##w##_t val, uint8_t bits) { \
12681301 return zig_popcount_u##w((uint##w##_t)val, bits); \
12691302 }
1270#if zig_has_builtin(popcount) || defined(zig_gnuc) || defined(zig_tinyc)
1303#if zig_has_builtin(popcount) || defined(zig_gcc) || defined(zig_tinyc)
12711304#define zig_builtin_popcount(w) \
12721305 static inline uint8_t zig_popcount_u##w(uint##w##_t val, uint8_t bits) { \
12731306 (void)bits; \
......@@ -1296,7 +1329,7 @@ zig_builtin_popcount(64)
12961329 static inline uint8_t zig_ctz_i##w(int##w##_t val, uint8_t bits) { \
12971330 return zig_ctz_u##w((uint##w##_t)val, bits); \
12981331 }
1299#if zig_has_builtin(ctz) || defined(zig_gnuc) || defined(zig_tinyc)
1332#if zig_has_builtin(ctz) || defined(zig_gcc) || defined(zig_tinyc)
13001333#define zig_builtin_ctz(w) \
13011334 static inline uint8_t zig_ctz_u##w(uint##w##_t val, uint8_t bits) { \
13021335 if (val == 0) return bits; \
......@@ -1321,7 +1354,7 @@ zig_builtin_ctz(64)
13211354 static inline uint8_t zig_clz_i##w(int##w##_t val, uint8_t bits) { \
13221355 return zig_clz_u##w((uint##w##_t)val, bits); \
13231356 }
1324#if zig_has_builtin(clz) || defined(zig_gnuc) || defined(zig_tinyc)
1357#if zig_has_builtin(clz) || defined(zig_gcc) || defined(zig_tinyc)
13251358#define zig_builtin_clz(w) \
13261359 static inline uint8_t zig_clz_u##w(uint##w##_t val, uint8_t bits) { \
13271360 if (val == 0) return bits; \
......@@ -3176,7 +3209,7 @@ long double __cdecl nanl(char const* input);
31763209#define __builtin_infl() zig_msvc_flt_infl
31773210#endif
31783211
3179#if (zig_has_builtin(nan) && zig_has_builtin(nans) && zig_has_builtin(inf)) || defined(zig_gnuc)
3212#if (zig_has_builtin(nan) && zig_has_builtin(nans) && zig_has_builtin(inf)) || defined(zig_gcc)
31803213#define zig_make_special_f16(sign, name, arg, repr) sign zig_make_f16 (__builtin_##name, )(arg)
31813214#define zig_make_special_f32(sign, name, arg, repr) sign zig_make_f32 (__builtin_##name, )(arg)
31823215#define zig_make_special_f64(sign, name, arg, repr) sign zig_make_f64 (__builtin_##name, )(arg)
......@@ -3202,7 +3235,7 @@ typedef double zig_f16;
32023235#elif LDBL_MANT_DIG == 11
32033236typedef long double zig_f16;
32043237#define zig_make_f16(fp, repr) fp##l
3205#elif FLT16_MANT_DIG == 11 && (zig_has_builtin(inff16) || defined(zig_gnuc))
3238#elif FLT16_MANT_DIG == 11 && (zig_has_builtin(inff16) || defined(zig_gcc))
32063239typedef _Float16 zig_f16;
32073240#define zig_make_f16(fp, repr) fp##f16
32083241#elif defined(__SIZEOF_FP16__)
......@@ -3324,7 +3357,7 @@ typedef zig_u128 zig_f80;
33243357#define zig_init_special_f80(sign, name, arg, repr) repr
33253358#endif
33263359
3327#if !defined(zig_clang) && defined(zig_gnuc) && defined(zig_x86)
3360#if defined(zig_gcc) && defined(zig_x86)
33283361#define zig_f128_has_miscompilations 1
33293362#else
33303363#define zig_f128_has_miscompilations 0
......@@ -3729,7 +3762,11 @@ zig_float_builtins(64)
37293762 res = zig_atomicrmw_expected; \
37303763} while (0)
37313764
3732#if (__STDC_VERSION__ >= 201112L || (zig_has_include(<stdatomic.h>) && !defined(zig_msvc))) && !defined(__STDC_NO_ATOMICS__)
3765#if (__STDC_VERSION__ >= 201112L && !defined(__STDC_NO_ATOMICS__)) || (zig_has_include(<stdatomic.h>) && !defined(zig_msvc))
3766#define zig_c11_atomics
3767#endif
3768
3769#if defined(zig_c11_atomics)
37333770#include <stdatomic.h>
37343771typedef enum memory_order zig_memory_order;
37353772#define zig_memory_order_relaxed memory_order_relaxed
......@@ -3765,9 +3802,9 @@ typedef int zig_memory_order;
37653802#define zig_memory_order_acq_rel __ATOMIC_ACQ_REL
37663803#define zig_memory_order_seq_cst __ATOMIC_SEQ_CST
37673804#define zig_atomic(Type) Type
3768#define zig_cmpxchg_strong( obj, expected, desired, succ, fail, Type, ReprType) __atomic_compare_exchange(obj, &(expected), &(desired), false, succ, fail)
3769#define zig_cmpxchg_weak( obj, expected, desired, succ, fail, Type, ReprType) __atomic_compare_exchange(obj, &(expected), &(desired), true, succ, fail)
3770#define zig_atomicrmw_xchg(res, obj, arg, order, Type, ReprType) __atomic_exchange(obj, &(arg), &(res), order)
3805#define zig_cmpxchg_strong( obj, expected, desired, succ, fail, Type, ReprType) __atomic_compare_exchange(obj, (ReprType *)&(expected), (ReprType *)&(desired), false, succ, fail)
3806#define zig_cmpxchg_weak( obj, expected, desired, succ, fail, Type, ReprType) __atomic_compare_exchange(obj, (ReprType *)&(expected), (ReprType *)&(desired), true, succ, fail)
3807#define zig_atomicrmw_xchg(res, obj, arg, order, Type, ReprType) __atomic_exchange(obj, (ReprType *)&(arg), &(res), order)
37713808#define zig_atomicrmw_add(res, obj, arg, order, Type, ReprType) res = __atomic_fetch_add (obj, arg, order)
37723809#define zig_atomicrmw_sub(res, obj, arg, order, Type, ReprType) res = __atomic_fetch_sub (obj, arg, order)
37733810#define zig_atomicrmw_or(res, obj, arg, order, Type, ReprType) res = __atomic_fetch_or (obj, arg, order)
......@@ -3776,7 +3813,7 @@ typedef int zig_memory_order;
37763813#define zig_atomicrmw_nand(res, obj, arg, order, Type, ReprType) res = __atomic_fetch_nand(obj, arg, order)
37773814#define zig_atomicrmw_min(res, obj, arg, order, Type, ReprType) res = __atomic_fetch_min (obj, arg, order)
37783815#define zig_atomicrmw_max(res, obj, arg, order, Type, ReprType) res = __atomic_fetch_max (obj, arg, order)
3779#define zig_atomic_store( obj, arg, order, Type, ReprType) __atomic_store (obj, &(arg), order)
3816#define zig_atomic_store( obj, arg, order, Type, ReprType) __atomic_store (obj, (ReprType *)&(arg), order)
37803817#define zig_atomic_load(res, obj, order, Type, ReprType) __atomic_load (obj, &(res), order)
37813818#undef zig_atomicrmw_xchg_float
37823819#define zig_atomicrmw_xchg_float zig_atomicrmw_xchg
......@@ -3823,7 +3860,7 @@ typedef int zig_memory_order;
38233860#define zig_atomic_load(res, obj, order, Type, ReprType) zig_atomics_unavailable
38243861#endif
38253862
3826#if defined(zig_msvc) && defined(zig_x86)
3863#if !defined(zig_c11_atomics) && defined(zig_msvc) && defined(zig_x86)
38273864
38283865/* TODO: zig_msvc_atomic_load should load 32 bit without interlocked on x86, and load 64 bit without interlocked on x64 */
38293866
......@@ -4069,7 +4106,7 @@ static inline void zig_msvc_atomic_store_i128(zig_i128 volatile* obj, zig_i128 a
40694106
40704107#endif /* zig_x86_32 */
40714108
4072#endif /* zig_msvc && zig_x86 */
4109#endif /* !zig_c11_atomics && zig_msvc && zig_x86 */
40734110
40744111/* ======================== Special Case Intrinsics ========================= */
40754112
stage1/zig1.wasm
Binary files a/stage1/zig1.wasm and b/stage1/zig1.wasm differ