| ... | ... | @@ -9,6 +9,7 @@ |
| 9 | 9 | #define zig_clang |
| 10 | 10 | #define zig_gnuc |
| 11 | 11 | #elif defined(__GNUC__) |
| 12 | #define zig_gcc |
| 12 | 13 | #define zig_gnuc |
| 13 | 14 | #elif defined(__IBMC__) |
| 14 | 15 | #define zig_xlc |
| ... | ... | @@ -171,7 +172,7 @@ |
| 171 | 172 | #define zig_callconv(c) __attribute__((c)) |
| 172 | 173 | #endif |
| 173 | 174 | |
| 174 | | #if zig_has_attribute(naked) || defined(zig_gnuc) |
| 175 | #if zig_has_attribute(naked) || defined(zig_gcc) |
| 175 | 176 | #define zig_naked_decl __attribute__((naked)) |
| 176 | 177 | #define zig_naked __attribute__((naked)) |
| 177 | 178 | #elif defined(zig_msvc) |
| ... | ... | @@ -265,7 +266,7 @@ |
| 265 | 266 | #define zig_linksection_fn zig_linksection |
| 266 | 267 | #endif |
| 267 | 268 | |
| 268 | | #if zig_has_builtin(unreachable) || defined(zig_gnuc) || defined(zig_tinyc) |
| 269 | #if zig_has_builtin(unreachable) || defined(zig_gcc) || defined(zig_tinyc) |
| 269 | 270 | #define zig_unreachable() __builtin_unreachable() |
| 270 | 271 | #elif defined(zig_msvc) |
| 271 | 272 | #define zig_unreachable() __assume(0) |
| ... | ... | @@ -331,7 +332,7 @@ |
| 331 | 332 | #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) |
| 332 | 333 | #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) |
| 333 | 334 | |
| 334 | | #if zig_has_attribute(weak) || defined(zig_gnuc) || defined(zig_tinyc) |
| 335 | #if zig_has_attribute(weak) || defined(zig_gcc) || defined(zig_tinyc) |
| 335 | 336 | #define zig_weak_linkage __attribute__((weak)) |
| 336 | 337 | #define zig_weak_linkage_fn __attribute__((weak)) |
| 337 | 338 | #elif defined(zig_msvc) |
| ... | ... | @@ -418,7 +419,7 @@ |
| 418 | 419 | #define zig_breakpoint() zig_breakpoint_unavailable |
| 419 | 420 | #endif |
| 420 | 421 | |
| 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) |
| 422 | 423 | #define zig_return_address() __builtin_extract_return_addr(__builtin_return_address(0)) |
| 423 | 424 | #elif defined(zig_msvc) |
| 424 | 425 | #define zig_return_address() _ReturnAddress() |
| ... | ... | @@ -426,7 +427,7 @@ |
| 426 | 427 | #define zig_return_address() 0 |
| 427 | 428 | #endif |
| 428 | 429 | |
| 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) |
| 430 | 431 | #define zig_frame_address() __builtin_frame_address(0) |
| 431 | 432 | #elif defined(zig_msvc) |
| 432 | 433 | #define zig_frame_address() _AddressOfReturnAddress() |
| ... | ... | @@ -434,7 +435,7 @@ |
| 434 | 435 | #define zig_frame_address() 0 |
| 435 | 436 | #endif |
| 436 | 437 | |
| 437 | | #if zig_has_builtin(prefetch) || defined(zig_gnuc) |
| 438 | #if zig_has_builtin(prefetch) || defined(zig_gcc) |
| 438 | 439 | #define zig_prefetch(addr, rw, locality) __builtin_prefetch(addr, rw, locality) |
| 439 | 440 | #else |
| 440 | 441 | #define zig_prefetch(addr, rw, locality) |
| ... | ... | @@ -452,7 +453,7 @@ |
| 452 | 453 | #define zig_noreturn [[noreturn]] |
| 453 | 454 | #elif __STDC_VERSION__ >= 201112L |
| 454 | 455 | #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) |
| 456 | 457 | #define zig_noreturn __attribute__((noreturn)) |
| 457 | 458 | #elif defined(zig_msvc) |
| 458 | 459 | #define zig_noreturn __declspec(noreturn) |
| ... | ... | @@ -770,7 +771,7 @@ zig_int_helpers(64, uint64_t) |
| 770 | 771 | #endif |
| 771 | 772 | |
| 772 | 773 | static inline bool zig_addo_u32(uint32_t *res, uint32_t lhs, uint32_t rhs, uint8_t bits) { |
| 773 | | #if zig_has_builtin(add_overflow) || defined(zig_gnuc) |
| 774 | #if zig_has_builtin(add_overflow) || defined(zig_gcc) |
| 774 | 775 | uint32_t full_res; |
| 775 | 776 | bool overflow = __builtin_add_overflow(lhs, rhs, &full_res); |
| 776 | 777 | *res = zig_wrap_u32(full_res, bits); |
| ... | ... | @@ -783,7 +784,7 @@ static inline bool zig_addo_u32(uint32_t *res, uint32_t lhs, uint32_t rhs, uint8 |
| 783 | 784 | |
| 784 | 785 | zig_extern int32_t __addosi4(int32_t lhs, int32_t rhs, int *overflow); |
| 785 | 786 | static inline bool zig_addo_i32(int32_t *res, int32_t lhs, int32_t rhs, uint8_t bits) { |
| 786 | | #if zig_has_builtin(add_overflow) || defined(zig_gnuc) |
| 787 | #if zig_has_builtin(add_overflow) || defined(zig_gcc) |
| 787 | 788 | int32_t full_res; |
| 788 | 789 | bool overflow = __builtin_add_overflow(lhs, rhs, &full_res); |
| 789 | 790 | #else |
| ... | ... | @@ -796,7 +797,7 @@ static inline bool zig_addo_i32(int32_t *res, int32_t lhs, int32_t rhs, uint8_t |
| 796 | 797 | } |
| 797 | 798 | |
| 798 | 799 | static inline bool zig_addo_u64(uint64_t *res, uint64_t lhs, uint64_t rhs, uint8_t bits) { |
| 799 | | #if zig_has_builtin(add_overflow) || defined(zig_gnuc) |
| 800 | #if zig_has_builtin(add_overflow) || defined(zig_gcc) |
| 800 | 801 | uint64_t full_res; |
| 801 | 802 | bool overflow = __builtin_add_overflow(lhs, rhs, &full_res); |
| 802 | 803 | *res = zig_wrap_u64(full_res, bits); |
| ... | ... | @@ -809,7 +810,7 @@ static inline bool zig_addo_u64(uint64_t *res, uint64_t lhs, uint64_t rhs, uint8 |
| 809 | 810 | |
| 810 | 811 | zig_extern int64_t __addodi4(int64_t lhs, int64_t rhs, int *overflow); |
| 811 | 812 | static inline bool zig_addo_i64(int64_t *res, int64_t lhs, int64_t rhs, uint8_t bits) { |
| 812 | | #if zig_has_builtin(add_overflow) || defined(zig_gnuc) |
| 813 | #if zig_has_builtin(add_overflow) || defined(zig_gcc) |
| 813 | 814 | int64_t full_res; |
| 814 | 815 | bool overflow = __builtin_add_overflow(lhs, rhs, &full_res); |
| 815 | 816 | #else |
| ... | ... | @@ -822,7 +823,7 @@ static inline bool zig_addo_i64(int64_t *res, int64_t lhs, int64_t rhs, uint8_t |
| 822 | 823 | } |
| 823 | 824 | |
| 824 | 825 | static inline bool zig_addo_u8(uint8_t *res, uint8_t lhs, uint8_t rhs, uint8_t bits) { |
| 825 | | #if zig_has_builtin(add_overflow) || defined(zig_gnuc) |
| 826 | #if zig_has_builtin(add_overflow) || defined(zig_gcc) |
| 826 | 827 | uint8_t full_res; |
| 827 | 828 | bool overflow = __builtin_add_overflow(lhs, rhs, &full_res); |
| 828 | 829 | *res = zig_wrap_u8(full_res, bits); |
| ... | ... | @@ -836,7 +837,7 @@ static inline bool zig_addo_u8(uint8_t *res, uint8_t lhs, uint8_t rhs, uint8_t b |
| 836 | 837 | } |
| 837 | 838 | |
| 838 | 839 | static inline bool zig_addo_i8(int8_t *res, int8_t lhs, int8_t rhs, uint8_t bits) { |
| 839 | | #if zig_has_builtin(add_overflow) || defined(zig_gnuc) |
| 840 | #if zig_has_builtin(add_overflow) || defined(zig_gcc) |
| 840 | 841 | int8_t full_res; |
| 841 | 842 | bool overflow = __builtin_add_overflow(lhs, rhs, &full_res); |
| 842 | 843 | *res = zig_wrap_i8(full_res, bits); |
| ... | ... | @@ -850,7 +851,7 @@ static inline bool zig_addo_i8(int8_t *res, int8_t lhs, int8_t rhs, uint8_t bits |
| 850 | 851 | } |
| 851 | 852 | |
| 852 | 853 | static inline bool zig_addo_u16(uint16_t *res, uint16_t lhs, uint16_t rhs, uint8_t bits) { |
| 853 | | #if zig_has_builtin(add_overflow) || defined(zig_gnuc) |
| 854 | #if zig_has_builtin(add_overflow) || defined(zig_gcc) |
| 854 | 855 | uint16_t full_res; |
| 855 | 856 | bool overflow = __builtin_add_overflow(lhs, rhs, &full_res); |
| 856 | 857 | *res = zig_wrap_u16(full_res, bits); |
| ... | ... | @@ -864,7 +865,7 @@ static inline bool zig_addo_u16(uint16_t *res, uint16_t lhs, uint16_t rhs, uint8 |
| 864 | 865 | } |
| 865 | 866 | |
| 866 | 867 | static inline bool zig_addo_i16(int16_t *res, int16_t lhs, int16_t rhs, uint8_t bits) { |
| 867 | | #if zig_has_builtin(add_overflow) || defined(zig_gnuc) |
| 868 | #if zig_has_builtin(add_overflow) || defined(zig_gcc) |
| 868 | 869 | int16_t full_res; |
| 869 | 870 | bool overflow = __builtin_add_overflow(lhs, rhs, &full_res); |
| 870 | 871 | *res = zig_wrap_i16(full_res, bits); |
| ... | ... | @@ -878,7 +879,7 @@ static inline bool zig_addo_i16(int16_t *res, int16_t lhs, int16_t rhs, uint8_t |
| 878 | 879 | } |
| 879 | 880 | |
| 880 | 881 | static inline bool zig_subo_u32(uint32_t *res, uint32_t lhs, uint32_t rhs, uint8_t bits) { |
| 881 | | #if zig_has_builtin(sub_overflow) || defined(zig_gnuc) |
| 882 | #if zig_has_builtin(sub_overflow) || defined(zig_gcc) |
| 882 | 883 | uint32_t full_res; |
| 883 | 884 | bool overflow = __builtin_sub_overflow(lhs, rhs, &full_res); |
| 884 | 885 | *res = zig_wrap_u32(full_res, bits); |
| ... | ... | @@ -891,7 +892,7 @@ static inline bool zig_subo_u32(uint32_t *res, uint32_t lhs, uint32_t rhs, uint8 |
| 891 | 892 | |
| 892 | 893 | zig_extern int32_t __subosi4(int32_t lhs, int32_t rhs, int *overflow); |
| 893 | 894 | static inline bool zig_subo_i32(int32_t *res, int32_t lhs, int32_t rhs, uint8_t bits) { |
| 894 | | #if zig_has_builtin(sub_overflow) || defined(zig_gnuc) |
| 895 | #if zig_has_builtin(sub_overflow) || defined(zig_gcc) |
| 895 | 896 | int32_t full_res; |
| 896 | 897 | bool overflow = __builtin_sub_overflow(lhs, rhs, &full_res); |
| 897 | 898 | #else |
| ... | ... | @@ -904,7 +905,7 @@ static inline bool zig_subo_i32(int32_t *res, int32_t lhs, int32_t rhs, uint8_t |
| 904 | 905 | } |
| 905 | 906 | |
| 906 | 907 | static inline bool zig_subo_u64(uint64_t *res, uint64_t lhs, uint64_t rhs, uint8_t bits) { |
| 907 | | #if zig_has_builtin(sub_overflow) || defined(zig_gnuc) |
| 908 | #if zig_has_builtin(sub_overflow) || defined(zig_gcc) |
| 908 | 909 | uint64_t full_res; |
| 909 | 910 | bool overflow = __builtin_sub_overflow(lhs, rhs, &full_res); |
| 910 | 911 | *res = zig_wrap_u64(full_res, bits); |
| ... | ... | @@ -917,7 +918,7 @@ static inline bool zig_subo_u64(uint64_t *res, uint64_t lhs, uint64_t rhs, uint8 |
| 917 | 918 | |
| 918 | 919 | zig_extern int64_t __subodi4(int64_t lhs, int64_t rhs, int *overflow); |
| 919 | 920 | static inline bool zig_subo_i64(int64_t *res, int64_t lhs, int64_t rhs, uint8_t bits) { |
| 920 | | #if zig_has_builtin(sub_overflow) || defined(zig_gnuc) |
| 921 | #if zig_has_builtin(sub_overflow) || defined(zig_gcc) |
| 921 | 922 | int64_t full_res; |
| 922 | 923 | bool overflow = __builtin_sub_overflow(lhs, rhs, &full_res); |
| 923 | 924 | #else |
| ... | ... | @@ -930,7 +931,7 @@ static inline bool zig_subo_i64(int64_t *res, int64_t lhs, int64_t rhs, uint8_t |
| 930 | 931 | } |
| 931 | 932 | |
| 932 | 933 | static inline bool zig_subo_u8(uint8_t *res, uint8_t lhs, uint8_t rhs, uint8_t bits) { |
| 933 | | #if zig_has_builtin(sub_overflow) || defined(zig_gnuc) |
| 934 | #if zig_has_builtin(sub_overflow) || defined(zig_gcc) |
| 934 | 935 | uint8_t full_res; |
| 935 | 936 | bool overflow = __builtin_sub_overflow(lhs, rhs, &full_res); |
| 936 | 937 | *res = zig_wrap_u8(full_res, bits); |
| ... | ... | @@ -944,7 +945,7 @@ static inline bool zig_subo_u8(uint8_t *res, uint8_t lhs, uint8_t rhs, uint8_t b |
| 944 | 945 | } |
| 945 | 946 | |
| 946 | 947 | static inline bool zig_subo_i8(int8_t *res, int8_t lhs, int8_t rhs, uint8_t bits) { |
| 947 | | #if zig_has_builtin(sub_overflow) || defined(zig_gnuc) |
| 948 | #if zig_has_builtin(sub_overflow) || defined(zig_gcc) |
| 948 | 949 | int8_t full_res; |
| 949 | 950 | bool overflow = __builtin_sub_overflow(lhs, rhs, &full_res); |
| 950 | 951 | *res = zig_wrap_i8(full_res, bits); |
| ... | ... | @@ -958,7 +959,7 @@ static inline bool zig_subo_i8(int8_t *res, int8_t lhs, int8_t rhs, uint8_t bits |
| 958 | 959 | } |
| 959 | 960 | |
| 960 | 961 | static inline bool zig_subo_u16(uint16_t *res, uint16_t lhs, uint16_t rhs, uint8_t bits) { |
| 961 | | #if zig_has_builtin(sub_overflow) || defined(zig_gnuc) |
| 962 | #if zig_has_builtin(sub_overflow) || defined(zig_gcc) |
| 962 | 963 | uint16_t full_res; |
| 963 | 964 | bool overflow = __builtin_sub_overflow(lhs, rhs, &full_res); |
| 964 | 965 | *res = zig_wrap_u16(full_res, bits); |
| ... | ... | @@ -972,7 +973,7 @@ static inline bool zig_subo_u16(uint16_t *res, uint16_t lhs, uint16_t rhs, uint8 |
| 972 | 973 | } |
| 973 | 974 | |
| 974 | 975 | static inline bool zig_subo_i16(int16_t *res, int16_t lhs, int16_t rhs, uint8_t bits) { |
| 975 | | #if zig_has_builtin(sub_overflow) || defined(zig_gnuc) |
| 976 | #if zig_has_builtin(sub_overflow) || defined(zig_gcc) |
| 976 | 977 | int16_t full_res; |
| 977 | 978 | bool overflow = __builtin_sub_overflow(lhs, rhs, &full_res); |
| 978 | 979 | *res = zig_wrap_i16(full_res, bits); |
| ... | ... | @@ -986,7 +987,7 @@ static inline bool zig_subo_i16(int16_t *res, int16_t lhs, int16_t rhs, uint8_t |
| 986 | 987 | } |
| 987 | 988 | |
| 988 | 989 | static inline bool zig_mulo_u32(uint32_t *res, uint32_t lhs, uint32_t rhs, uint8_t bits) { |
| 989 | | #if zig_has_builtin(mul_overflow) || defined(zig_gnuc) |
| 990 | #if zig_has_builtin(mul_overflow) || defined(zig_gcc) |
| 990 | 991 | uint32_t full_res; |
| 991 | 992 | bool overflow = __builtin_mul_overflow(lhs, rhs, &full_res); |
| 992 | 993 | *res = zig_wrap_u32(full_res, bits); |
| ... | ... | @@ -999,7 +1000,7 @@ static inline bool zig_mulo_u32(uint32_t *res, uint32_t lhs, uint32_t rhs, uint8 |
| 999 | 1000 | |
| 1000 | 1001 | zig_extern int32_t __mulosi4(int32_t lhs, int32_t rhs, int *overflow); |
| 1001 | 1002 | static inline bool zig_mulo_i32(int32_t *res, int32_t lhs, int32_t rhs, uint8_t bits) { |
| 1002 | | #if zig_has_builtin(mul_overflow) || defined(zig_gnuc) |
| 1003 | #if zig_has_builtin(mul_overflow) || defined(zig_gcc) |
| 1003 | 1004 | int32_t full_res; |
| 1004 | 1005 | bool overflow = __builtin_mul_overflow(lhs, rhs, &full_res); |
| 1005 | 1006 | #else |
| ... | ... | @@ -1012,7 +1013,7 @@ static inline bool zig_mulo_i32(int32_t *res, int32_t lhs, int32_t rhs, uint8_t |
| 1012 | 1013 | } |
| 1013 | 1014 | |
| 1014 | 1015 | static inline bool zig_mulo_u64(uint64_t *res, uint64_t lhs, uint64_t rhs, uint8_t bits) { |
| 1015 | | #if zig_has_builtin(mul_overflow) || defined(zig_gnuc) |
| 1016 | #if zig_has_builtin(mul_overflow) || defined(zig_gcc) |
| 1016 | 1017 | uint64_t full_res; |
| 1017 | 1018 | bool overflow = __builtin_mul_overflow(lhs, rhs, &full_res); |
| 1018 | 1019 | *res = zig_wrap_u64(full_res, bits); |
| ... | ... | @@ -1025,7 +1026,7 @@ static inline bool zig_mulo_u64(uint64_t *res, uint64_t lhs, uint64_t rhs, uint8 |
| 1025 | 1026 | |
| 1026 | 1027 | zig_extern int64_t __mulodi4(int64_t lhs, int64_t rhs, int *overflow); |
| 1027 | 1028 | static inline bool zig_mulo_i64(int64_t *res, int64_t lhs, int64_t rhs, uint8_t bits) { |
| 1028 | | #if zig_has_builtin(mul_overflow) || defined(zig_gnuc) |
| 1029 | #if zig_has_builtin(mul_overflow) || defined(zig_gcc) |
| 1029 | 1030 | int64_t full_res; |
| 1030 | 1031 | bool overflow = __builtin_mul_overflow(lhs, rhs, &full_res); |
| 1031 | 1032 | #else |
| ... | ... | @@ -1038,7 +1039,7 @@ static inline bool zig_mulo_i64(int64_t *res, int64_t lhs, int64_t rhs, uint8_t |
| 1038 | 1039 | } |
| 1039 | 1040 | |
| 1040 | 1041 | static inline bool zig_mulo_u8(uint8_t *res, uint8_t lhs, uint8_t rhs, uint8_t bits) { |
| 1041 | | #if zig_has_builtin(mul_overflow) || defined(zig_gnuc) |
| 1042 | #if zig_has_builtin(mul_overflow) || defined(zig_gcc) |
| 1042 | 1043 | uint8_t full_res; |
| 1043 | 1044 | bool overflow = __builtin_mul_overflow(lhs, rhs, &full_res); |
| 1044 | 1045 | *res = zig_wrap_u8(full_res, bits); |
| ... | ... | @@ -1052,7 +1053,7 @@ static inline bool zig_mulo_u8(uint8_t *res, uint8_t lhs, uint8_t rhs, uint8_t b |
| 1052 | 1053 | } |
| 1053 | 1054 | |
| 1054 | 1055 | static inline bool zig_mulo_i8(int8_t *res, int8_t lhs, int8_t rhs, uint8_t bits) { |
| 1055 | | #if zig_has_builtin(mul_overflow) || defined(zig_gnuc) |
| 1056 | #if zig_has_builtin(mul_overflow) || defined(zig_gcc) |
| 1056 | 1057 | int8_t full_res; |
| 1057 | 1058 | bool overflow = __builtin_mul_overflow(lhs, rhs, &full_res); |
| 1058 | 1059 | *res = zig_wrap_i8(full_res, bits); |
| ... | ... | @@ -1066,7 +1067,7 @@ static inline bool zig_mulo_i8(int8_t *res, int8_t lhs, int8_t rhs, uint8_t bits |
| 1066 | 1067 | } |
| 1067 | 1068 | |
| 1068 | 1069 | static inline bool zig_mulo_u16(uint16_t *res, uint16_t lhs, uint16_t rhs, uint8_t bits) { |
| 1069 | | #if zig_has_builtin(mul_overflow) || defined(zig_gnuc) |
| 1070 | #if zig_has_builtin(mul_overflow) || defined(zig_gcc) |
| 1070 | 1071 | uint16_t full_res; |
| 1071 | 1072 | bool overflow = __builtin_mul_overflow(lhs, rhs, &full_res); |
| 1072 | 1073 | *res = zig_wrap_u16(full_res, bits); |
| ... | ... | @@ -1080,7 +1081,7 @@ static inline bool zig_mulo_u16(uint16_t *res, uint16_t lhs, uint16_t rhs, uint8 |
| 1080 | 1081 | } |
| 1081 | 1082 | |
| 1082 | 1083 | static inline bool zig_mulo_i16(int16_t *res, int16_t lhs, int16_t rhs, uint8_t bits) { |
| 1083 | | #if zig_has_builtin(mul_overflow) || defined(zig_gnuc) |
| 1084 | #if zig_has_builtin(mul_overflow) || defined(zig_gcc) |
| 1084 | 1085 | int16_t full_res; |
| 1085 | 1086 | bool overflow = __builtin_mul_overflow(lhs, rhs, &full_res); |
| 1086 | 1087 | *res = zig_wrap_i16(full_res, bits); |
| ... | ... | @@ -1189,7 +1190,7 @@ static inline int8_t zig_byte_swap_i8(int8_t val, uint8_t bits) { |
| 1189 | 1190 | |
| 1190 | 1191 | static inline uint16_t zig_byte_swap_u16(uint16_t val, uint8_t bits) { |
| 1191 | 1192 | uint16_t full_res; |
| 1192 | | #if zig_has_builtin(bswap16) || defined(zig_gnuc) |
| 1193 | #if zig_has_builtin(bswap16) || defined(zig_gcc) |
| 1193 | 1194 | full_res = __builtin_bswap16(val); |
| 1194 | 1195 | #else |
| 1195 | 1196 | full_res = (uint16_t)zig_byte_swap_u8((uint8_t)(val >> 0), 8) << 8 | |
| ... | ... | @@ -1204,7 +1205,7 @@ static inline int16_t zig_byte_swap_i16(int16_t val, uint8_t bits) { |
| 1204 | 1205 | |
| 1205 | 1206 | static inline uint32_t zig_byte_swap_u32(uint32_t val, uint8_t bits) { |
| 1206 | 1207 | uint32_t full_res; |
| 1207 | | #if zig_has_builtin(bswap32) || defined(zig_gnuc) |
| 1208 | #if zig_has_builtin(bswap32) || defined(zig_gcc) |
| 1208 | 1209 | full_res = __builtin_bswap32(val); |
| 1209 | 1210 | #else |
| 1210 | 1211 | full_res = (uint32_t)zig_byte_swap_u16((uint16_t)(val >> 0), 16) << 16 | |
| ... | ... | @@ -1219,7 +1220,7 @@ static inline int32_t zig_byte_swap_i32(int32_t val, uint8_t bits) { |
| 1219 | 1220 | |
| 1220 | 1221 | static inline uint64_t zig_byte_swap_u64(uint64_t val, uint8_t bits) { |
| 1221 | 1222 | uint64_t full_res; |
| 1222 | | #if zig_has_builtin(bswap64) || defined(zig_gnuc) |
| 1223 | #if zig_has_builtin(bswap64) || defined(zig_gcc) |
| 1223 | 1224 | full_res = __builtin_bswap64(val); |
| 1224 | 1225 | #else |
| 1225 | 1226 | full_res = (uint64_t)zig_byte_swap_u32((uint32_t)(val >> 0), 32) << 32 | |
| ... | ... | @@ -1299,7 +1300,7 @@ static inline int64_t zig_bit_reverse_i64(int64_t val, uint8_t bits) { |
| 1299 | 1300 | static inline uint8_t zig_popcount_i##w(int##w##_t val, uint8_t bits) { \ |
| 1300 | 1301 | return zig_popcount_u##w((uint##w##_t)val, bits); \ |
| 1301 | 1302 | } |
| 1302 | | #if zig_has_builtin(popcount) || defined(zig_gnuc) || defined(zig_tinyc) |
| 1303 | #if zig_has_builtin(popcount) || defined(zig_gcc) || defined(zig_tinyc) |
| 1303 | 1304 | #define zig_builtin_popcount(w) \ |
| 1304 | 1305 | static inline uint8_t zig_popcount_u##w(uint##w##_t val, uint8_t bits) { \ |
| 1305 | 1306 | (void)bits; \ |
| ... | ... | @@ -1328,7 +1329,7 @@ zig_builtin_popcount(64) |
| 1328 | 1329 | static inline uint8_t zig_ctz_i##w(int##w##_t val, uint8_t bits) { \ |
| 1329 | 1330 | return zig_ctz_u##w((uint##w##_t)val, bits); \ |
| 1330 | 1331 | } |
| 1331 | | #if zig_has_builtin(ctz) || defined(zig_gnuc) || defined(zig_tinyc) |
| 1332 | #if zig_has_builtin(ctz) || defined(zig_gcc) || defined(zig_tinyc) |
| 1332 | 1333 | #define zig_builtin_ctz(w) \ |
| 1333 | 1334 | static inline uint8_t zig_ctz_u##w(uint##w##_t val, uint8_t bits) { \ |
| 1334 | 1335 | if (val == 0) return bits; \ |
| ... | ... | @@ -1353,7 +1354,7 @@ zig_builtin_ctz(64) |
| 1353 | 1354 | static inline uint8_t zig_clz_i##w(int##w##_t val, uint8_t bits) { \ |
| 1354 | 1355 | return zig_clz_u##w((uint##w##_t)val, bits); \ |
| 1355 | 1356 | } |
| 1356 | | #if zig_has_builtin(clz) || defined(zig_gnuc) || defined(zig_tinyc) |
| 1357 | #if zig_has_builtin(clz) || defined(zig_gcc) || defined(zig_tinyc) |
| 1357 | 1358 | #define zig_builtin_clz(w) \ |
| 1358 | 1359 | static inline uint8_t zig_clz_u##w(uint##w##_t val, uint8_t bits) { \ |
| 1359 | 1360 | if (val == 0) return bits; \ |
| ... | ... | @@ -3208,7 +3209,7 @@ long double __cdecl nanl(char const* input); |
| 3208 | 3209 | #define __builtin_infl() zig_msvc_flt_infl |
| 3209 | 3210 | #endif |
| 3210 | 3211 | |
| 3211 | | #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) |
| 3212 | 3213 | #define zig_make_special_f16(sign, name, arg, repr) sign zig_make_f16 (__builtin_##name, )(arg) |
| 3213 | 3214 | #define zig_make_special_f32(sign, name, arg, repr) sign zig_make_f32 (__builtin_##name, )(arg) |
| 3214 | 3215 | #define zig_make_special_f64(sign, name, arg, repr) sign zig_make_f64 (__builtin_##name, )(arg) |
| ... | ... | @@ -3234,7 +3235,7 @@ typedef double zig_f16; |
| 3234 | 3235 | #elif LDBL_MANT_DIG == 11 |
| 3235 | 3236 | typedef long double zig_f16; |
| 3236 | 3237 | #define zig_make_f16(fp, repr) fp##l |
| 3237 | | #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)) |
| 3238 | 3239 | typedef _Float16 zig_f16; |
| 3239 | 3240 | #define zig_make_f16(fp, repr) fp##f16 |
| 3240 | 3241 | #elif defined(__SIZEOF_FP16__) |
| ... | ... | @@ -3356,7 +3357,7 @@ typedef zig_u128 zig_f80; |
| 3356 | 3357 | #define zig_init_special_f80(sign, name, arg, repr) repr |
| 3357 | 3358 | #endif |
| 3358 | 3359 | |
| 3359 | | #if !defined(zig_clang) && defined(zig_gnuc) && defined(zig_x86) |
| 3360 | #if defined(zig_gcc) && defined(zig_x86) |
| 3360 | 3361 | #define zig_f128_has_miscompilations 1 |
| 3361 | 3362 | #else |
| 3362 | 3363 | #define zig_f128_has_miscompilations 0 |