@zigc/lib 0.17.0-dev.135 → 0.17.0-dev.224
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/c/stdlib.zig +32 -22
- package/compiler/aro/aro/Compilation.zig +0 -3
- package/compiler/translate-c/ast.zig +5 -2
- package/compiler_rt/arm.zig +3 -3
- package/compiler_rt/trunctfhf2.zig +3 -0
- package/compiler_rt.zig +1 -22
- package/docs/wasm/markdown/Parser.zig +5 -9
- package/include/__clang_spirv_builtins.h +12 -12
- package/include/__float_float.h +176 -0
- package/include/__float_header_macro.h +12 -0
- package/include/__float_infinity_nan.h +20 -0
- package/include/amo.h +131 -0
- package/include/amxavx512intrin.h +215 -1
- package/include/amxintrin.h +0 -2
- package/include/arm_acle.h +37 -27
- package/include/arm_neon.h +218 -82
- package/include/arm_sme.h +8 -8
- package/include/arm_sve.h +4162 -3782
- package/include/avx10_2_512bf16intrin.h +19 -12
- package/include/avx10_2_512convertintrin.h +1 -1
- package/include/avx10_2_512niintrin.h +31 -31
- package/include/avx10_2_512satcvtdsintrin.h +1 -1
- package/include/avx10_2bf16intrin.h +54 -45
- package/include/avx10_2convertintrin.h +2 -2
- package/include/avx10_2copyintrin.h +1 -1
- package/include/avx10_2niintrin.h +14 -14
- package/include/avx10_2satcvtdsintrin.h +2 -2
- package/include/avx2intrin.h +275 -377
- package/include/avx512bf16intrin.h +25 -16
- package/include/avx512bitalgintrin.h +19 -30
- package/include/avx512bwintrin.h +386 -505
- package/include/avx512cdintrin.h +42 -55
- package/include/avx512dqintrin.h +132 -161
- package/include/avx512fintrin.h +1015 -1424
- package/include/avx512fp16intrin.h +112 -110
- package/include/avx512ifmaintrin.h +32 -34
- package/include/avx512ifmavlintrin.h +73 -46
- package/include/avx512vbmi2intrin.h +43 -32
- package/include/avx512vbmiintrin.h +19 -27
- package/include/avx512vbmivlintrin.h +35 -49
- package/include/avx512vlbf16intrin.h +32 -22
- package/include/avx512vlbitalgintrin.h +37 -53
- package/include/avx512vlbwintrin.h +470 -573
- package/include/avx512vlcdintrin.h +74 -102
- package/include/avx512vldqintrin.h +110 -127
- package/include/avx512vlfp16intrin.h +130 -111
- package/include/avx512vlintrin.h +945 -1299
- package/include/avx512vlvbmi2intrin.h +78 -63
- package/include/avx512vlvnniintrin.h +21 -18
- package/include/avx512vlvp2intersectintrin.h +2 -2
- package/include/avx512vnniintrin.h +10 -10
- package/include/avx512vp2intersectintrin.h +1 -2
- package/include/avx512vpopcntdqintrin.h +8 -10
- package/include/avx512vpopcntdqvlintrin.h +17 -15
- package/include/avxifmaintrin.h +16 -0
- package/include/avxintrin.h +165 -241
- package/include/avxvnniint16intrin.h +118 -99
- package/include/avxvnniint8intrin.h +56 -32
- package/include/avxvnniintrin.h +16 -8
- package/include/cpuid.h +101 -4
- package/include/emmintrin.h +168 -168
- package/include/f16cintrin.h +23 -9
- package/include/float.h +16 -155
- package/include/fma4intrin.h +98 -96
- package/include/fmaintrin.h +96 -66
- package/include/gfniintrin.h +21 -16
- package/include/hexagon_types.h +23 -20
- package/include/hvx_hexagon_protos.h +649 -860
- package/include/immintrin.h +0 -12
- package/include/intrin.h +4 -0
- package/include/lasxintrin.h +113 -0
- package/include/llvm_libc_wrappers/assert.h +3 -5
- package/include/llvm_libc_wrappers/ctype.h +3 -115
- package/include/llvm_libc_wrappers/inttypes.h +3 -5
- package/include/llvm_libc_wrappers/stdio.h +10 -38
- package/include/llvm_libc_wrappers/stdlib.h +3 -24
- package/include/llvm_libc_wrappers/string.h +2 -70
- package/include/llvm_libc_wrappers/time.h +4 -10
- package/include/mmintrin.h +188 -257
- package/include/module.modulemap +23 -4
- package/include/movrs_avx10_2_512intrin.h +2 -2
- package/include/movrs_avx10_2intrin.h +4 -4
- package/include/pmmintrin.h +12 -24
- package/include/ptrauth.h +16 -2
- package/include/riscv_mips.h +34 -0
- package/include/riscv_nds.h +89 -0
- package/include/sifive_vector.h +58 -2
- package/include/sm4evexintrin.h +2 -2
- package/include/smmintrin.h +77 -59
- package/include/spirvintrin.h +194 -0
- package/include/stddefer.h +19 -0
- package/include/tmmintrin.h +116 -147
- package/include/vaesintrin.h +1 -2
- package/include/xmmintrin.h +44 -70
- package/include/xopintrin.h +20 -10
- package/libcxx/include/__algorithm/all_of.h +11 -5
- package/libcxx/include/__algorithm/comp.h +4 -0
- package/libcxx/include/__algorithm/copy.h +28 -147
- package/libcxx/include/__algorithm/copy_backward.h +9 -24
- package/libcxx/include/__algorithm/copy_n.h +50 -16
- package/libcxx/include/__algorithm/count.h +2 -2
- package/libcxx/include/__algorithm/equal.h +43 -55
- package/libcxx/include/__algorithm/fill.h +26 -8
- package/libcxx/include/__algorithm/fill_n.h +32 -46
- package/libcxx/include/__algorithm/find.h +96 -39
- package/libcxx/include/__algorithm/find_end.h +105 -0
- package/libcxx/include/__algorithm/for_each.h +18 -24
- package/libcxx/include/__algorithm/for_each_n.h +20 -47
- package/libcxx/include/__algorithm/for_each_n_segment.h +1 -1
- package/libcxx/include/__algorithm/for_each_segment.h +26 -0
- package/libcxx/include/__algorithm/generate.h +4 -2
- package/libcxx/include/__algorithm/generate_n.h +19 -6
- package/libcxx/include/__algorithm/is_permutation.h +4 -4
- package/libcxx/include/__algorithm/iterator_operations.h +3 -0
- package/libcxx/include/__algorithm/lexicographical_compare.h +2 -2
- package/libcxx/include/__algorithm/lexicographical_compare_three_way.h +6 -6
- package/libcxx/include/__algorithm/make_heap.h +16 -4
- package/libcxx/include/__algorithm/mismatch.h +2 -2
- package/libcxx/include/__algorithm/move.h +8 -19
- package/libcxx/include/__algorithm/move_backward.h +9 -24
- package/libcxx/include/__algorithm/none_of.h +4 -4
- package/libcxx/include/__algorithm/partial_sort.h +1 -1
- package/libcxx/include/__algorithm/partial_sort_copy.h +1 -1
- package/libcxx/include/__algorithm/pstl.h +9 -9
- package/libcxx/include/__algorithm/radix_sort.h +27 -25
- package/libcxx/include/__algorithm/ranges_copy_n.h +3 -26
- package/libcxx/include/__algorithm/ranges_equal.h +17 -26
- package/libcxx/include/__algorithm/ranges_fill.h +7 -6
- package/libcxx/include/__algorithm/ranges_for_each.h +9 -1
- package/libcxx/include/__algorithm/ranges_generate_n.h +2 -6
- package/libcxx/include/__algorithm/ranges_search_n.h +2 -2
- package/libcxx/include/__algorithm/rotate.h +27 -44
- package/libcxx/include/__algorithm/search_n.h +49 -37
- package/libcxx/include/__algorithm/sift_down.h +19 -18
- package/libcxx/include/__algorithm/simd_utils.h +33 -4
- package/libcxx/include/__algorithm/specialized_algorithms.h +54 -0
- package/libcxx/include/__algorithm/stable_sort.h +1 -1
- package/libcxx/include/__assertion_handler +31 -4
- package/libcxx/include/__atomic/atomic.h +36 -60
- package/libcxx/include/__atomic/atomic_flag.h +19 -37
- package/libcxx/include/__atomic/atomic_ref.h +29 -12
- package/libcxx/include/__atomic/atomic_sync.h +127 -55
- package/libcxx/include/__atomic/atomic_sync_timed.h +144 -0
- package/libcxx/include/__atomic/atomic_waitable_traits.h +103 -0
- package/libcxx/include/__atomic/contention_t.h +27 -3
- package/libcxx/include/__atomic/floating_point_helper.h +55 -0
- package/libcxx/include/__bit/countl.h +1 -2
- package/libcxx/include/__bit/countr.h +1 -2
- package/libcxx/include/__bit/has_single_bit.h +1 -1
- package/libcxx/include/__bit/popcount.h +0 -1
- package/libcxx/include/__bit/rotate.h +15 -26
- package/libcxx/include/__bit_reference +207 -18
- package/libcxx/include/__charconv/from_chars_integral.h +1 -1
- package/libcxx/include/__charconv/from_chars_result.h +1 -1
- package/libcxx/include/__charconv/to_chars_integral.h +1 -0
- package/libcxx/include/__charconv/to_chars_result.h +1 -1
- package/libcxx/include/__charconv/traits.h +3 -24
- package/libcxx/include/__chrono/day.h +11 -0
- package/libcxx/include/__chrono/duration.h +58 -33
- package/libcxx/include/__chrono/file_clock.h +4 -2
- package/libcxx/include/__chrono/is_clock.h +72 -0
- package/libcxx/include/__chrono/leap_second.h +13 -0
- package/libcxx/include/__chrono/month.h +13 -0
- package/libcxx/include/__chrono/month_weekday.h +22 -0
- package/libcxx/include/__chrono/monthday.h +20 -0
- package/libcxx/include/__chrono/steady_clock.h +1 -1
- package/libcxx/include/__chrono/system_clock.h +3 -3
- package/libcxx/include/__chrono/time_point.h +37 -13
- package/libcxx/include/__chrono/weekday.h +25 -0
- package/libcxx/include/__chrono/year.h +11 -0
- package/libcxx/include/__chrono/year_month.h +13 -0
- package/libcxx/include/__chrono/year_month_day.h +23 -0
- package/libcxx/include/__chrono/year_month_weekday.h +26 -0
- package/libcxx/include/__chrono/zoned_time.h +16 -0
- package/libcxx/include/__compare/is_eq.h +6 -6
- package/libcxx/include/__compare/strong_order.h +12 -30
- package/libcxx/include/__compare/three_way_comparable.h +2 -2
- package/libcxx/include/__concepts/comparison_common_type.h +40 -0
- package/libcxx/include/__concepts/equality_comparable.h +2 -1
- package/libcxx/include/__condition_variable/condition_variable.h +1 -1
- package/libcxx/include/__config +63 -280
- package/libcxx/include/__configuration/abi.h +14 -24
- package/libcxx/include/__configuration/availability.h +65 -118
- package/libcxx/include/__configuration/compiler.h +6 -6
- package/libcxx/include/__configuration/experimental.h +38 -0
- package/libcxx/include/__configuration/hardening.h +215 -0
- package/libcxx/include/__configuration/language.h +3 -0
- package/libcxx/include/__configuration/platform.h +9 -16
- package/libcxx/include/__coroutine/coroutine_handle.h +9 -9
- package/libcxx/include/__coroutine/noop_coroutine_handle.h +11 -13
- package/libcxx/include/__debug_utils/strict_weak_ordering_check.h +1 -1
- package/libcxx/include/__exception/exception.h +6 -4
- package/libcxx/include/__exception/exception_ptr.h +27 -5
- package/libcxx/include/__exception/nested_exception.h +2 -2
- package/libcxx/include/__exception/operations.h +5 -5
- package/libcxx/include/__expected/bad_expected_access.h +8 -6
- package/libcxx/include/__expected/expected.h +62 -64
- package/libcxx/include/__expected/unexpected.h +4 -4
- package/libcxx/include/__filesystem/copy_options.h +4 -4
- package/libcxx/include/__filesystem/directory_entry.h +37 -33
- package/libcxx/include/__filesystem/directory_iterator.h +9 -11
- package/libcxx/include/__filesystem/directory_options.h +7 -4
- package/libcxx/include/__filesystem/file_status.h +3 -3
- package/libcxx/include/__filesystem/filesystem_error.h +9 -10
- package/libcxx/include/__filesystem/operations.h +97 -66
- package/libcxx/include/__filesystem/path.h +68 -64
- package/libcxx/include/__filesystem/path_iterator.h +1 -3
- package/libcxx/include/__filesystem/perm_options.h +4 -4
- package/libcxx/include/__filesystem/perms.h +4 -4
- package/libcxx/include/__filesystem/recursive_directory_iterator.h +9 -14
- package/libcxx/include/__filesystem/space_info.h +1 -1
- package/libcxx/include/__filesystem/u8path.h +12 -14
- package/libcxx/include/__flat_map/flat_map.h +88 -71
- package/libcxx/include/__flat_map/flat_multimap.h +251 -172
- package/libcxx/include/__flat_map/key_value_iterator.h +0 -1
- package/libcxx/include/__flat_map/utils.h +1 -0
- package/libcxx/include/__flat_set/flat_multiset.h +211 -143
- package/libcxx/include/__flat_set/flat_set.h +86 -68
- package/libcxx/include/__format/concepts.h +0 -14
- package/libcxx/include/__format/extended_grapheme_cluster_table.h +3 -2
- package/libcxx/include/__format/fmt_pair_like.h +42 -0
- package/libcxx/include/__format/format_arg.h +7 -10
- package/libcxx/include/__format/format_args.h +1 -1
- package/libcxx/include/__format/format_context.h +5 -5
- package/libcxx/include/__format/format_parse_context.h +2 -2
- package/libcxx/include/__format/formatter_output.h +30 -34
- package/libcxx/include/__format/indic_conjunct_break_table.h +3 -2
- package/libcxx/include/__format/range_default_formatter.h +2 -41
- package/libcxx/include/__format/range_format.h +71 -0
- package/libcxx/include/__format/range_formatter.h +1 -0
- package/libcxx/include/__format/width_estimation_table.h +4 -2
- package/libcxx/include/__functional/bind.h +10 -15
- package/libcxx/include/__functional/bind_back.h +1 -1
- package/libcxx/include/__functional/bind_front.h +1 -1
- package/libcxx/include/__functional/function.h +57 -75
- package/libcxx/include/__functional/hash.h +1 -10
- package/libcxx/include/__functional/identity.h +1 -1
- package/libcxx/include/__functional/is_transparent.h +8 -0
- package/libcxx/include/__functional/mem_fn.h +2 -1
- package/libcxx/include/__functional/operations.h +18 -0
- package/libcxx/include/__functional/ranges_operations.h +7 -0
- package/libcxx/include/__functional/reference_wrapper.h +7 -5
- package/libcxx/include/__functional/weak_result_type.h +14 -28
- package/libcxx/include/__fwd/ios.h +1 -1
- package/libcxx/include/__fwd/tuple.h +14 -0
- package/libcxx/include/__hash_table +371 -357
- package/libcxx/include/__ios/fpos.h +4 -4
- package/libcxx/include/__iterator/back_insert_iterator.h +1 -7
- package/libcxx/include/__iterator/bounded_iter.h +7 -8
- package/libcxx/include/__iterator/concepts.h +6 -9
- package/libcxx/include/__iterator/cpp17_iterator_concepts.h +13 -12
- package/libcxx/include/__iterator/distance.h +40 -18
- package/libcxx/include/__iterator/front_insert_iterator.h +1 -7
- package/libcxx/include/__iterator/insert_iterator.h +1 -7
- package/libcxx/include/__iterator/istream_iterator.h +6 -7
- package/libcxx/include/__iterator/istreambuf_iterator.h +6 -7
- package/libcxx/include/__iterator/iter_move.h +1 -1
- package/libcxx/include/__iterator/iterator.h +13 -0
- package/libcxx/include/__iterator/iterator_traits.h +13 -14
- package/libcxx/include/__iterator/ostream_iterator.h +1 -7
- package/libcxx/include/__iterator/ostreambuf_iterator.h +1 -7
- package/libcxx/include/__iterator/reverse_iterator.h +8 -13
- package/libcxx/include/__iterator/segmented_iterator.h +3 -8
- package/libcxx/include/__iterator/static_bounded_iter.h +3 -3
- package/libcxx/include/__iterator/wrap_iter.h +8 -6
- package/libcxx/include/__locale +3 -10
- package/libcxx/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h +0 -10
- package/libcxx/include/__locale_dir/locale_base_api.h +5 -28
- package/libcxx/include/__locale_dir/messages.h +1 -1
- package/libcxx/include/__locale_dir/money.h +2 -2
- package/libcxx/include/__locale_dir/num.h +190 -243
- package/libcxx/include/__locale_dir/pad_and_output.h +5 -6
- package/libcxx/include/__locale_dir/support/bsd_like.h +0 -20
- package/libcxx/include/__locale_dir/support/fuchsia.h +0 -7
- package/libcxx/include/__locale_dir/support/linux.h +0 -37
- package/libcxx/include/__locale_dir/support/netbsd.h +0 -2
- package/libcxx/include/__locale_dir/support/newlib.h +243 -0
- package/libcxx/include/__locale_dir/support/no_locale/characters.h +0 -4
- package/libcxx/include/__locale_dir/support/no_locale/strtonum.h +0 -9
- package/libcxx/include/__locale_dir/support/windows.h +0 -29
- package/libcxx/include/__locale_dir/time.h +3 -7
- package/libcxx/include/__math/hypot.h +1 -1
- package/libcxx/include/__math/logarithms.h +1 -1
- package/libcxx/include/__math/traits.h +80 -11
- package/libcxx/include/__mdspan/extents.h +7 -4
- package/libcxx/include/__mdspan/layout_stride.h +4 -5
- package/libcxx/include/__mdspan/mdspan.h +29 -23
- package/libcxx/include/__memory/addressof.h +7 -5
- package/libcxx/include/__memory/align.h +18 -1
- package/libcxx/include/__memory/allocate_at_least.h +15 -10
- package/libcxx/include/__memory/allocator.h +14 -26
- package/libcxx/include/__memory/allocator_traits.h +6 -4
- package/libcxx/include/__memory/compressed_pair.h +15 -9
- package/libcxx/include/__memory/construct_at.h +12 -23
- package/libcxx/include/__memory/inout_ptr.h +1 -1
- package/libcxx/include/__memory/is_sufficiently_aligned.h +1 -1
- package/libcxx/include/__memory/out_ptr.h +1 -1
- package/libcxx/include/__memory/pointer_traits.h +1 -1
- package/libcxx/include/__memory/raw_storage_iterator.h +3 -9
- package/libcxx/include/__memory/shared_count.h +9 -30
- package/libcxx/include/__memory/shared_ptr.h +100 -145
- package/libcxx/include/__memory/temp_value.h +1 -2
- package/libcxx/include/__memory/uninitialized_algorithms.h +44 -115
- package/libcxx/include/__memory/unique_ptr.h +14 -16
- package/libcxx/include/__memory/uses_allocator_construction.h +1 -0
- package/libcxx/include/__memory_resource/memory_resource.h +4 -2
- package/libcxx/include/__memory_resource/monotonic_buffer_resource.h +1 -1
- package/libcxx/include/__memory_resource/polymorphic_allocator.h +13 -8
- package/libcxx/include/__memory_resource/pool_options.h +1 -1
- package/libcxx/include/__memory_resource/synchronized_pool_resource.h +4 -2
- package/libcxx/include/__memory_resource/unsynchronized_pool_resource.h +1 -1
- package/libcxx/include/__mutex/mutex.h +2 -2
- package/libcxx/include/__mutex/once_flag.h +14 -11
- package/libcxx/include/__mutex/tag_types.h +3 -3
- package/libcxx/include/__mutex/unique_lock.h +8 -7
- package/libcxx/include/__new/align_val_t.h +6 -0
- package/libcxx/include/__new/allocate.h +1 -2
- package/libcxx/include/__new/exceptions.h +8 -2
- package/libcxx/include/__new/global_new_delete.h +4 -11
- package/libcxx/include/__new/interference_size.h +0 -4
- package/libcxx/include/__new/launder.h +3 -5
- package/libcxx/include/__new/nothrow_t.h +1 -1
- package/libcxx/include/__numeric/gcd_lcm.h +24 -34
- package/libcxx/include/__numeric/midpoint.h +9 -14
- package/libcxx/include/__numeric/pstl.h +2 -2
- package/libcxx/include/__numeric/saturation_arithmetic.h +13 -5
- package/libcxx/include/__ostream/basic_ostream.h +8 -8
- package/libcxx/include/__pstl/backends/default.h +14 -14
- package/libcxx/include/__pstl/backends/libdispatch.h +2 -2
- package/libcxx/include/__pstl/cpu_algos/find_if.h +1 -1
- package/libcxx/include/__pstl/cpu_algos/transform.h +5 -6
- package/libcxx/include/__pstl/cpu_algos/transform_reduce.h +5 -4
- package/libcxx/include/__random/binomial_distribution.h +10 -4
- package/libcxx/include/__random/mersenne_twister_engine.h +50 -154
- package/libcxx/include/__random/piecewise_constant_distribution.h +3 -2
- package/libcxx/include/__random/piecewise_linear_distribution.h +3 -2
- package/libcxx/include/__ranges/adjacent_transform_view.h +406 -0
- package/libcxx/include/__ranges/adjacent_view.h +419 -0
- package/libcxx/include/__ranges/as_rvalue_view.h +9 -9
- package/libcxx/include/__ranges/chunk_by_view.h +6 -6
- package/libcxx/include/__ranges/common_view.h +7 -7
- package/libcxx/include/__ranges/drop_view.h +8 -8
- package/libcxx/include/__ranges/drop_while_view.h +5 -5
- package/libcxx/include/__ranges/elements_of.h +49 -0
- package/libcxx/include/__ranges/empty_view.h +5 -5
- package/libcxx/include/__ranges/filter_view.h +10 -10
- package/libcxx/include/__ranges/iota_view.h +41 -22
- package/libcxx/include/__ranges/owning_view.h +15 -15
- package/libcxx/include/__ranges/ref_view.h +6 -6
- package/libcxx/include/__ranges/repeat_view.h +17 -10
- package/libcxx/include/__ranges/single_view.h +8 -8
- package/libcxx/include/__ranges/take_view.h +9 -9
- package/libcxx/include/__ranges/transform_view.h +1 -2
- package/libcxx/include/__ranges/view_interface.h +10 -10
- package/libcxx/include/__ranges/zip_transform_view.h +357 -0
- package/libcxx/include/__ranges/zip_view.h +20 -20
- package/libcxx/include/__split_buffer +612 -240
- package/libcxx/include/__stop_token/atomic_unique_lock.h +1 -1
- package/libcxx/include/__stop_token/stop_callback.h +2 -2
- package/libcxx/include/__stop_token/stop_source.h +1 -1
- package/libcxx/include/__stop_token/stop_state.h +4 -4
- package/libcxx/include/__stop_token/stop_token.h +1 -1
- package/libcxx/include/__string/char_traits.h +51 -31
- package/libcxx/include/__string/constexpr_c_functions.h +5 -5
- package/libcxx/include/__support/xlocale/__strtonum_fallback.h +0 -8
- package/libcxx/include/__system_error/error_category.h +8 -8
- package/libcxx/include/__system_error/error_code.h +5 -5
- package/libcxx/include/__system_error/error_condition.h +4 -4
- package/libcxx/include/__system_error/system_error.h +1 -1
- package/libcxx/include/__thread/id.h +1 -1
- package/libcxx/include/__thread/jthread.h +1 -1
- package/libcxx/include/__thread/poll_with_backoff.h +27 -8
- package/libcxx/include/__thread/support/c11.h +8 -8
- package/libcxx/include/__thread/support/pthread.h +8 -8
- package/libcxx/include/__thread/support/windows.h +8 -8
- package/libcxx/include/__thread/thread.h +13 -8
- package/libcxx/include/__thread/timed_backoff_policy.h +3 -2
- package/libcxx/include/__tree +849 -701
- package/libcxx/include/__tuple/sfinae_helpers.h +1 -44
- package/libcxx/include/__tuple/tuple_element.h +0 -12
- package/libcxx/include/__tuple/tuple_size.h +0 -4
- package/libcxx/include/__tuple/tuple_transform.h +45 -0
- package/libcxx/include/__type_traits/aligned_storage.h +13 -40
- package/libcxx/include/__type_traits/desugars_to.h +4 -0
- package/libcxx/include/__type_traits/invoke.h +8 -0
- package/libcxx/include/__type_traits/is_allocator.h +6 -7
- package/libcxx/include/__type_traits/is_array.h +26 -0
- package/libcxx/include/__type_traits/is_equality_comparable.h +16 -21
- package/libcxx/include/__type_traits/is_final.h +1 -1
- package/libcxx/include/__type_traits/is_floating_point.h +7 -6
- package/libcxx/include/__type_traits/is_generic_transparent_comparator.h +30 -0
- package/libcxx/include/__type_traits/is_specialization.h +2 -6
- package/libcxx/include/__type_traits/is_within_lifetime.h +29 -0
- package/libcxx/include/__type_traits/make_transparent.h +52 -0
- package/libcxx/include/__type_traits/reference_constructs_from_temporary.h +1 -7
- package/libcxx/include/__type_traits/reference_converts_from_temporary.h +1 -1
- package/libcxx/include/__utility/cmp.h +19 -7
- package/libcxx/include/__utility/default_three_way_comparator.h +70 -0
- package/libcxx/include/__utility/in_place.h +1 -1
- package/libcxx/include/__utility/integer_sequence.h +56 -41
- package/libcxx/include/__utility/lazy_synth_three_way_comparator.h +120 -0
- package/libcxx/include/__utility/pair.h +22 -25
- package/libcxx/include/__utility/scope_guard.h +2 -0
- package/libcxx/include/__utility/try_key_extraction.h +114 -0
- package/libcxx/include/__vector/vector.h +187 -160
- package/libcxx/include/__vector/vector_bool.h +76 -83
- package/libcxx/include/any +118 -155
- package/libcxx/include/array +88 -56
- package/libcxx/include/atomic +2 -0
- package/libcxx/include/barrier +20 -24
- package/libcxx/include/bitset +49 -30
- package/libcxx/include/ccomplex +3 -11
- package/libcxx/include/chrono +47 -0
- package/libcxx/include/ciso646 +3 -6
- package/libcxx/include/complex +77 -65
- package/libcxx/include/complex.h +10 -10
- package/libcxx/include/condition_variable +3 -3
- package/libcxx/include/cstdalign +3 -10
- package/libcxx/include/cstdbool +3 -10
- package/libcxx/include/ctgmath +2 -11
- package/libcxx/include/ctype.h +24 -24
- package/libcxx/include/cwchar +2 -2
- package/libcxx/include/deque +109 -225
- package/libcxx/include/errno.h +269 -269
- package/libcxx/include/exception +4 -1
- package/libcxx/include/ext/hash_map +7 -48
- package/libcxx/include/ext/hash_set +2 -8
- package/libcxx/include/fenv.h +43 -43
- package/libcxx/include/flat_map +663 -11
- package/libcxx/include/flat_set +543 -8
- package/libcxx/include/float.h +16 -16
- package/libcxx/include/forward_list +33 -53
- package/libcxx/include/fstream +57 -42
- package/libcxx/include/future +41 -51
- package/libcxx/include/initializer_list +9 -3
- package/libcxx/include/inttypes.h +16 -16
- package/libcxx/include/ios +28 -28
- package/libcxx/include/istream +19 -13
- package/libcxx/include/iterator +10 -0
- package/libcxx/include/latch +7 -5
- package/libcxx/include/limits +4 -4
- package/libcxx/include/list +61 -79
- package/libcxx/include/map +386 -274
- package/libcxx/include/math.h +19 -0
- package/libcxx/include/mdspan +1 -5
- package/libcxx/include/mutex +29 -19
- package/libcxx/include/optional +644 -149
- package/libcxx/include/print +9 -5
- package/libcxx/include/queue +39 -37
- package/libcxx/include/ranges +48 -0
- package/libcxx/include/regex +33 -31
- package/libcxx/include/scoped_allocator +16 -11
- package/libcxx/include/semaphore +15 -18
- package/libcxx/include/set +220 -192
- package/libcxx/include/shared_mutex +3 -8
- package/libcxx/include/span +53 -37
- package/libcxx/include/sstream +34 -28
- package/libcxx/include/stack +13 -15
- package/libcxx/include/stddef.h +10 -10
- package/libcxx/include/stdexcept +2 -2
- package/libcxx/include/stdio.h +20 -21
- package/libcxx/include/streambuf +59 -19
- package/libcxx/include/string +574 -573
- package/libcxx/include/string_view +113 -89
- package/libcxx/include/strstream +10 -10
- package/libcxx/include/syncstream +4 -4
- package/libcxx/include/tgmath.h +12 -12
- package/libcxx/include/tuple +242 -212
- package/libcxx/include/type_traits +8 -2
- package/libcxx/include/typeindex +5 -3
- package/libcxx/include/typeinfo +92 -89
- package/libcxx/include/unordered_map +179 -304
- package/libcxx/include/unordered_set +168 -195
- package/libcxx/include/utility +12 -0
- package/libcxx/include/valarray +106 -161
- package/libcxx/include/variant +25 -33
- package/libcxx/include/version +41 -24
- package/libcxx/include/wctype.h +29 -29
- package/libcxx/libc/hdr/errno_macros.h +3 -1
- package/libcxx/libc/hdr/stdint_proxy.h +18 -0
- package/libcxx/libc/hdr/types/wchar_t.h +23 -0
- package/libcxx/libc/hdr/wchar_overlay.h +69 -0
- package/libcxx/libc/include/llvm-libc-macros/cfloat128-macros.h +41 -0
- package/libcxx/libc/include/llvm-libc-macros/cfloat16-macros.h +20 -0
- package/libcxx/libc/include/llvm-libc-macros/wchar-macros.h +18 -0
- package/libcxx/libc/include/llvm-libc-types/cfloat128.h +11 -28
- package/libcxx/libc/include/llvm-libc-types/cfloat16.h +4 -7
- package/libcxx/libc/include/llvm-libc-types/wint_t.h +14 -0
- package/libcxx/libc/shared/libc_common.h +5 -0
- package/libcxx/libc/src/__support/CPP/bit.h +50 -12
- package/libcxx/libc/src/__support/CPP/type_traits/is_complex.h +7 -0
- package/libcxx/libc/src/__support/CPP/type_traits/is_destructible.h +2 -1
- package/libcxx/libc/src/__support/CPP/type_traits/is_unsigned.h +6 -0
- package/libcxx/libc/src/__support/CPP/utility/integer_sequence.h +10 -0
- package/libcxx/libc/src/__support/FPUtil/FPBits.h +6 -7
- package/libcxx/libc/src/__support/FPUtil/rounding_mode.h +50 -4
- package/libcxx/libc/src/__support/big_int.h +14 -14
- package/libcxx/libc/src/__support/common.h +3 -2
- package/libcxx/libc/src/__support/ctype_utils.h +19 -12
- package/libcxx/libc/src/__support/detailed_powers_of_ten.h +1 -2
- package/libcxx/libc/src/__support/high_precision_decimal.h +33 -14
- package/libcxx/libc/src/__support/libc_assert.h +2 -0
- package/libcxx/libc/src/__support/macros/attributes.h +44 -1
- package/libcxx/libc/src/__support/macros/config.h +23 -0
- package/libcxx/libc/src/__support/macros/null_check.h +1 -2
- package/libcxx/libc/src/__support/macros/optimization.h +3 -0
- package/libcxx/libc/src/__support/macros/properties/architectures.h +5 -1
- package/libcxx/libc/src/__support/macros/properties/compiler.h +8 -3
- package/libcxx/libc/src/__support/macros/properties/cpu_features.h +17 -1
- package/libcxx/libc/src/__support/macros/properties/types.h +2 -3
- package/libcxx/libc/src/__support/macros/sanitizer.h +0 -10
- package/libcxx/libc/src/__support/math_extras.h +20 -4
- package/libcxx/libc/src/__support/str_to_float.h +98 -125
- package/libcxx/libc/src/__support/str_to_integer.h +39 -27
- package/libcxx/libc/src/__support/wctype_utils.h +588 -0
- package/libcxx/src/any.cpp +4 -0
- package/libcxx/src/atomic.cpp +365 -80
- package/libcxx/src/barrier.cpp +4 -3
- package/libcxx/src/charconv.cpp +6 -3
- package/libcxx/src/condition_variable_destructor.cpp +1 -1
- package/libcxx/src/error_category.cpp +3 -1
- package/libcxx/src/exception.cpp +2 -10
- package/libcxx/src/experimental/time_zone.cpp +1 -1
- package/libcxx/src/experimental/tzdb.cpp +4 -1
- package/libcxx/src/filesystem/error.h +4 -22
- package/libcxx/src/filesystem/format_string.h +9 -18
- package/libcxx/src/filesystem/int128_builtins.cpp +2 -0
- package/libcxx/src/filesystem/operations.cpp +2 -9
- package/libcxx/src/filesystem/path.cpp +3 -1
- package/libcxx/src/include/aligned_alloc.h +65 -0
- package/libcxx/src/include/config_elast.h +1 -1
- package/libcxx/src/include/from_chars_floating_point.h +11 -7
- package/libcxx/src/include/overridable_function.h +8 -10
- package/libcxx/src/iostream.cpp +56 -37
- package/libcxx/src/locale.cpp +213 -196
- package/libcxx/src/memory.cpp +12 -14
- package/libcxx/src/mutex_destructor.cpp +1 -1
- package/libcxx/src/new.cpp +5 -5
- package/libcxx/src/optional.cpp +4 -0
- package/libcxx/src/print.cpp +9 -1
- package/libcxx/src/random.cpp +0 -26
- package/libcxx/src/string.cpp +10 -25
- package/libcxx/src/support/runtime/exception_fallback.ipp +2 -0
- package/libcxx/src/support/runtime/exception_glibcxx.ipp +3 -0
- package/libcxx/src/support/runtime/exception_libcxxabi.ipp +6 -2
- package/libcxx/src/support/runtime/exception_libcxxrt.ipp +2 -0
- package/libcxx/src/support/runtime/exception_msvc.ipp +2 -0
- package/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp +9 -10
- package/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp +2 -0
- package/libcxx/src/support/runtime/exception_pointer_msvc.ipp +1 -0
- package/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp +1 -0
- package/libcxx/src/support/win32/locale_win32.cpp +1 -1
- package/libcxx/src/system_error.cpp +2 -0
- package/libcxx/src/thread.cpp +1 -3
- package/libcxx/src/valarray.cpp +1 -2
- package/libcxx/src/vector.cpp +2 -2
- package/libcxxabi/include/__cxxabi_config.h +42 -23
- package/libcxxabi/src/cxa_exception.cpp +4 -2
- package/libcxxabi/src/cxa_exception.h +16 -14
- package/libcxxabi/src/cxa_personality.cpp +126 -9
- package/libcxxabi/src/cxa_thread_atexit.cpp +2 -1
- package/libcxxabi/src/demangle/DemangleConfig.h +4 -0
- package/libcxxabi/src/demangle/ItaniumDemangle.h +9 -6
- package/libcxxabi/src/demangle/Utility.h +21 -7
- package/libcxxabi/src/fallback_malloc.cpp +1 -1
- package/libcxxabi/src/private_typeinfo.cpp +6 -0
- package/libcxxabi/src/stdlib_new_delete.cpp +5 -5
- package/libtsan/LICENSE.TXT +311 -0
- package/libtsan/builtins/assembly.h +41 -8
- package/libtsan/interception/interception_win.cpp +4 -0
- package/libtsan/sanitizer_common/sanitizer_allocator_primary32.h +1 -0
- package/libtsan/sanitizer_common/sanitizer_allocator_primary64.h +18 -0
- package/libtsan/sanitizer_common/sanitizer_common.h +15 -2
- package/libtsan/sanitizer_common/sanitizer_common_interceptors.inc +30 -4
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +4 -0
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S +2 -1
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S +2 -0
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S +2 -0
- package/libtsan/sanitizer_common/sanitizer_common_syscalls.inc +18 -0
- package/libtsan/sanitizer_common/sanitizer_file.cpp +40 -12
- package/libtsan/sanitizer_common/sanitizer_file.h +3 -0
- package/libtsan/sanitizer_common/sanitizer_flags.inc +7 -0
- package/libtsan/sanitizer_common/sanitizer_fuchsia.cpp +30 -3
- package/libtsan/sanitizer_common/sanitizer_haiku.cpp +2 -2
- package/libtsan/sanitizer_common/sanitizer_internal_defs.h +1 -1
- package/libtsan/sanitizer_common/sanitizer_libc.cpp +8 -0
- package/libtsan/sanitizer_common/sanitizer_libc.h +1 -0
- package/libtsan/sanitizer_common/sanitizer_linux.cpp +15 -7
- package/libtsan/sanitizer_common/sanitizer_linux.h +3 -3
- package/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp +1 -0
- package/libtsan/sanitizer_common/sanitizer_mac.cpp +255 -104
- package/libtsan/sanitizer_common/sanitizer_mac.h +5 -0
- package/libtsan/sanitizer_common/sanitizer_netbsd.cpp +2 -2
- package/libtsan/sanitizer_common/sanitizer_platform.h +27 -1
- package/libtsan/sanitizer_common/sanitizer_platform_interceptors.h +5 -4
- package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.cpp +15 -17
- package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.h +32 -6
- package/libtsan/sanitizer_common/sanitizer_posix.cpp +3 -12
- package/libtsan/sanitizer_common/sanitizer_posix.h +2 -1
- package/libtsan/sanitizer_common/sanitizer_posix_libcdep.cpp +19 -0
- package/libtsan/sanitizer_common/sanitizer_procmaps_mac.cpp +102 -37
- package/libtsan/sanitizer_common/sanitizer_redefine_builtins.h +1 -1
- package/libtsan/sanitizer_common/sanitizer_signal_interceptors.inc +40 -2
- package/libtsan/sanitizer_common/sanitizer_stoptheworld.h +1 -1
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp +83 -12
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp +3 -3
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp +7 -7
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_win.cpp +2 -2
- package/libtsan/sanitizer_common/sanitizer_symbolizer_internal.h +5 -1
- package/libtsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp +11 -1
- package/libtsan/sanitizer_common/sanitizer_symbolizer_mac.cpp +86 -29
- package/libtsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp +27 -16
- package/libtsan/sanitizer_common/sanitizer_thread_registry.cpp +5 -4
- package/libtsan/sanitizer_common/sanitizer_thread_registry.h +4 -4
- package/libtsan/sanitizer_common/sanitizer_win.cpp +1 -3
- package/libtsan/tsan_debugging.cpp +2 -2
- package/libtsan/tsan_flags.cpp +37 -0
- package/libtsan/tsan_flags.h +8 -0
- package/libtsan/tsan_flags.inc +12 -0
- package/libtsan/tsan_interceptors.h +9 -1
- package/libtsan/tsan_interceptors_mac.cpp +19 -0
- package/libtsan/tsan_interceptors_posix.cpp +78 -32
- package/libtsan/tsan_interface.h +3 -3
- package/libtsan/tsan_interface_ann.cpp +23 -9
- package/libtsan/tsan_mman.cpp +18 -4
- package/libtsan/tsan_platform.h +44 -7
- package/libtsan/tsan_platform_linux.cpp +42 -14
- package/libtsan/tsan_platform_mac.cpp +16 -3
- package/libtsan/tsan_report.h +14 -1
- package/libtsan/tsan_rtl.cpp +14 -0
- package/libtsan/tsan_rtl.h +7 -2
- package/libtsan/tsan_rtl_aarch64.S +3 -5
- package/libtsan/tsan_rtl_access.cpp +8 -3
- package/libtsan/tsan_rtl_amd64.S +2 -0
- package/libtsan/tsan_rtl_mutex.cpp +94 -49
- package/libtsan/tsan_rtl_report.cpp +132 -65
- package/libtsan/tsan_rtl_thread.cpp +31 -9
- package/libtsan/tsan_symbolize.cpp +1 -1
- package/libtsan/tsan_symbolize.h +1 -1
- package/libtsan/tsan_trace.h +1 -1
- package/libunwind/include/__libunwind_config.h +11 -2
- package/libunwind/include/libunwind.h +117 -11
- package/libunwind/include/unwind_arm_ehabi.h +4 -1
- package/libunwind/src/AddressSpace.hpp +42 -20
- package/libunwind/src/CompactUnwinder.hpp +16 -5
- package/libunwind/src/DwarfInstructions.hpp +24 -13
- package/libunwind/src/DwarfParser.hpp +62 -23
- package/libunwind/src/EHHeaderParser.hpp +7 -4
- package/libunwind/src/Registers.hpp +226 -22
- package/libunwind/src/Unwind-seh.cpp +6 -7
- package/libunwind/src/Unwind-wasm.c +7 -7
- package/libunwind/src/UnwindCursor.hpp +167 -49
- package/libunwind/src/UnwindLevel1.c +46 -17
- package/libunwind/src/UnwindRegistersRestore.S +46 -5
- package/libunwind/src/UnwindRegistersSave.S +86 -2
- package/libunwind/src/assembly.h +5 -1
- package/libunwind/src/config.h +9 -0
- package/libunwind/src/gcc_personality_v0.c +79 -6
- package/libunwind/src/libunwind.cpp +104 -4
- package/libunwind/src/libunwind_ext.h +7 -1
- package/libunwind/src/shadow_stack_unwind.h +2 -2
- package/lldb/pretty_printers.py +948 -0
- package/package.json +1 -1
- package/std/Build/Step/Compile.zig +18 -19
- package/std/Build/Step/Run.zig +13 -6
- package/std/Build/Step.zig +0 -3
- package/std/Io/Threaded.zig +3 -0
- package/std/Target/aarch64.zig +620 -77
- package/std/Target/amdgcn.zig +421 -21
- package/std/Target/arm.zig +40 -6
- package/std/Target/bpf.zig +6 -0
- package/std/Target/hexagon.zig +41 -6
- package/std/Target/loongarch.zig +18 -0
- package/std/Target/mips.zig +6 -0
- package/std/Target/nvptx.zig +58 -35
- package/std/Target/powerpc.zig +27 -19
- package/std/Target/riscv.zig +415 -177
- package/std/Target/sparc.zig +17 -0
- package/std/Target/wasm.zig +7 -0
- package/std/Target/x86.zig +200 -31
- package/std/Target/xtensa.zig +65 -0
- package/std/Target.zig +16 -8
- package/std/c.zig +7 -0
- package/std/crypto/ml_kem.zig +0 -15
- package/std/debug/Dwarf.zig +14 -11
- package/std/debug/Pdb.zig +24 -16
- package/std/hash/xxhash.zig +0 -6
- package/std/math/log10.zig +0 -2
- package/std/math/modf.zig +1 -2
- package/std/mem.zig +1 -2
- package/std/os/linux/x86.zig +2 -2
- package/std/os/windows.zig +130 -1
- package/std/simd.zig +4 -21
- package/std/start.zig +4 -3
- package/std/zig/Ast.zig +5 -7
- package/std/zig/AstGen.zig +20 -14
- package/std/zig/ErrorBundle.zig +6 -2
- package/std/zig/ZonGen.zig +13 -21
- package/std/zig/llvm/Builder.zig +2 -2
- package/std/zig/system/arm.zig +56 -2
- package/std/zig/system/windows.zig +34 -1
- package/std/zig/system/x86.zig +60 -16
- package/std/zig/system.zig +0 -10
- package/std/zig/target.zig +1 -2
- package/std/zon/parse.zig +1 -1
- package/include/amxbf16transposeintrin.h +0 -94
- package/include/amxcomplextransposeintrin.h +0 -303
- package/include/amxfp16transposeintrin.h +0 -94
- package/include/amxmovrstransposeintrin.h +0 -200
- package/include/amxtf32transposeintrin.h +0 -105
- package/include/amxtransposeintrin.h +0 -248
- package/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
- package/std/Build/Step/CheckObject.zig +0 -2764
|
@@ -27,7 +27,7 @@ namespace internal {
|
|
|
27
27
|
// as well as a way to support non-ASCII character encodings.
|
|
28
28
|
|
|
29
29
|
// Similarly, do not change these functions to use case ranges. e.g.
|
|
30
|
-
// bool islower(
|
|
30
|
+
// bool islower(char ch) {
|
|
31
31
|
// switch(ch) {
|
|
32
32
|
// case 'a'...'z':
|
|
33
33
|
// return true;
|
|
@@ -37,7 +37,7 @@ namespace internal {
|
|
|
37
37
|
// EBCDIC. Technically we could use some smaller ranges, but that's even harder
|
|
38
38
|
// to read.
|
|
39
39
|
|
|
40
|
-
LIBC_INLINE static constexpr bool islower(
|
|
40
|
+
LIBC_INLINE static constexpr bool islower(char ch) {
|
|
41
41
|
switch (ch) {
|
|
42
42
|
case 'a':
|
|
43
43
|
case 'b':
|
|
@@ -71,7 +71,7 @@ LIBC_INLINE static constexpr bool islower(int ch) {
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
LIBC_INLINE static constexpr bool isupper(
|
|
74
|
+
LIBC_INLINE static constexpr bool isupper(char ch) {
|
|
75
75
|
switch (ch) {
|
|
76
76
|
case 'A':
|
|
77
77
|
case 'B':
|
|
@@ -105,7 +105,7 @@ LIBC_INLINE static constexpr bool isupper(int ch) {
|
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
LIBC_INLINE static constexpr bool isdigit(
|
|
108
|
+
LIBC_INLINE static constexpr bool isdigit(char ch) {
|
|
109
109
|
switch (ch) {
|
|
110
110
|
case '0':
|
|
111
111
|
case '1':
|
|
@@ -123,7 +123,7 @@ LIBC_INLINE static constexpr bool isdigit(int ch) {
|
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
LIBC_INLINE static constexpr
|
|
126
|
+
LIBC_INLINE static constexpr char tolower(char ch) {
|
|
127
127
|
switch (ch) {
|
|
128
128
|
case 'A':
|
|
129
129
|
return 'a';
|
|
@@ -182,7 +182,7 @@ LIBC_INLINE static constexpr int tolower(int ch) {
|
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
184
|
|
|
185
|
-
LIBC_INLINE static constexpr
|
|
185
|
+
LIBC_INLINE static constexpr char toupper(char ch) {
|
|
186
186
|
switch (ch) {
|
|
187
187
|
case 'a':
|
|
188
188
|
return 'A';
|
|
@@ -241,7 +241,7 @@ LIBC_INLINE static constexpr int toupper(int ch) {
|
|
|
241
241
|
}
|
|
242
242
|
}
|
|
243
243
|
|
|
244
|
-
LIBC_INLINE static constexpr bool isalpha(
|
|
244
|
+
LIBC_INLINE static constexpr bool isalpha(char ch) {
|
|
245
245
|
switch (ch) {
|
|
246
246
|
case 'a':
|
|
247
247
|
case 'b':
|
|
@@ -301,7 +301,7 @@ LIBC_INLINE static constexpr bool isalpha(int ch) {
|
|
|
301
301
|
}
|
|
302
302
|
}
|
|
303
303
|
|
|
304
|
-
LIBC_INLINE static constexpr bool isalnum(
|
|
304
|
+
LIBC_INLINE static constexpr bool isalnum(char ch) {
|
|
305
305
|
switch (ch) {
|
|
306
306
|
case 'a':
|
|
307
307
|
case 'b':
|
|
@@ -371,7 +371,7 @@ LIBC_INLINE static constexpr bool isalnum(int ch) {
|
|
|
371
371
|
}
|
|
372
372
|
}
|
|
373
373
|
|
|
374
|
-
LIBC_INLINE static constexpr int b36_char_to_int(
|
|
374
|
+
LIBC_INLINE static constexpr int b36_char_to_int(char ch) {
|
|
375
375
|
switch (ch) {
|
|
376
376
|
case '0':
|
|
377
377
|
return 0;
|
|
@@ -476,7 +476,7 @@ LIBC_INLINE static constexpr int b36_char_to_int(int ch) {
|
|
|
476
476
|
}
|
|
477
477
|
}
|
|
478
478
|
|
|
479
|
-
LIBC_INLINE static constexpr
|
|
479
|
+
LIBC_INLINE static constexpr char int_to_b36_char(int num) {
|
|
480
480
|
// Can't actually use LIBC_ASSERT here because it depends on integer_to_string
|
|
481
481
|
// which depends on this.
|
|
482
482
|
|
|
@@ -559,7 +559,7 @@ LIBC_INLINE static constexpr int int_to_b36_char(int num) {
|
|
|
559
559
|
}
|
|
560
560
|
}
|
|
561
561
|
|
|
562
|
-
LIBC_INLINE static constexpr bool isspace(
|
|
562
|
+
LIBC_INLINE static constexpr bool isspace(char ch) {
|
|
563
563
|
switch (ch) {
|
|
564
564
|
case ' ':
|
|
565
565
|
case '\t':
|
|
@@ -574,10 +574,17 @@ LIBC_INLINE static constexpr bool isspace(int ch) {
|
|
|
574
574
|
}
|
|
575
575
|
|
|
576
576
|
// not yet encoding independent.
|
|
577
|
-
LIBC_INLINE static constexpr bool isgraph(
|
|
577
|
+
LIBC_INLINE static constexpr bool isgraph(char ch) {
|
|
578
578
|
return 0x20 < ch && ch < 0x7f;
|
|
579
579
|
}
|
|
580
580
|
|
|
581
|
+
// An overload which provides a way to compare input with specific character
|
|
582
|
+
// values, when input can be of a regular or a wide character type.
|
|
583
|
+
LIBC_INLINE static constexpr bool is_char_or_wchar(char ch, char c_value,
|
|
584
|
+
[[maybe_unused]] wchar_t) {
|
|
585
|
+
return (ch == c_value);
|
|
586
|
+
}
|
|
587
|
+
|
|
581
588
|
} // namespace internal
|
|
582
589
|
} // namespace LIBC_NAMESPACE_DECL
|
|
583
590
|
|
|
@@ -9,11 +9,10 @@
|
|
|
9
9
|
#ifndef LLVM_LIBC_SRC___SUPPORT_DETAILED_POWERS_OF_TEN_H
|
|
10
10
|
#define LLVM_LIBC_SRC___SUPPORT_DETAILED_POWERS_OF_TEN_H
|
|
11
11
|
|
|
12
|
+
#include "hdr/stdint_proxy.h"
|
|
12
13
|
#include "src/__support/common.h"
|
|
13
14
|
#include "src/__support/macros/config.h"
|
|
14
15
|
|
|
15
|
-
#include <stdint.h>
|
|
16
|
-
|
|
17
16
|
namespace LIBC_NAMESPACE_DECL {
|
|
18
17
|
namespace internal {
|
|
19
18
|
|
|
@@ -15,11 +15,12 @@
|
|
|
15
15
|
#ifndef LLVM_LIBC_SRC___SUPPORT_HIGH_PRECISION_DECIMAL_H
|
|
16
16
|
#define LLVM_LIBC_SRC___SUPPORT_HIGH_PRECISION_DECIMAL_H
|
|
17
17
|
|
|
18
|
+
#include "hdr/stdint_proxy.h"
|
|
18
19
|
#include "src/__support/CPP/limits.h"
|
|
19
20
|
#include "src/__support/ctype_utils.h"
|
|
20
21
|
#include "src/__support/macros/config.h"
|
|
21
22
|
#include "src/__support/str_to_integer.h"
|
|
22
|
-
#include
|
|
23
|
+
#include "src/__support/wctype_utils.h"
|
|
23
24
|
|
|
24
25
|
namespace LIBC_NAMESPACE_DECL {
|
|
25
26
|
namespace internal {
|
|
@@ -38,6 +39,24 @@ struct LShiftTableEntry {
|
|
|
38
39
|
// TODO: Figure out where to put this.
|
|
39
40
|
enum class RoundDirection { Up, Down, Nearest };
|
|
40
41
|
|
|
42
|
+
// These constants are used in both this file and in the main str_to_float.h.
|
|
43
|
+
// TODO: Figure out where to put this.
|
|
44
|
+
template <typename CharType> struct constants;
|
|
45
|
+
template <> struct constants<char> {
|
|
46
|
+
static constexpr char DECIMAL_POINT = '.';
|
|
47
|
+
static constexpr char DECIMAL_EXPONENT_MARKER = 'e';
|
|
48
|
+
static constexpr char HEX_EXPONENT_MARKER = 'p';
|
|
49
|
+
static constexpr char INF_STRING[] = "infinity";
|
|
50
|
+
static constexpr char NAN_STRING[] = "nan";
|
|
51
|
+
};
|
|
52
|
+
template <> struct constants<wchar_t> {
|
|
53
|
+
static constexpr wchar_t DECIMAL_POINT = L'.';
|
|
54
|
+
static constexpr wchar_t DECIMAL_EXPONENT_MARKER = L'e';
|
|
55
|
+
static constexpr wchar_t HEX_EXPONENT_MARKER = L'p';
|
|
56
|
+
static constexpr wchar_t INF_STRING[] = L"infinity";
|
|
57
|
+
static constexpr wchar_t NAN_STRING[] = L"nan";
|
|
58
|
+
};
|
|
59
|
+
|
|
41
60
|
// This is based on the HPD data structure described as part of the Simple
|
|
42
61
|
// Decimal Conversion algorithm by Nigel Tao, described at this link:
|
|
43
62
|
// https://nigeltao.github.io/blog/2020/parse-number-f64-simple.html
|
|
@@ -314,9 +333,9 @@ private:
|
|
|
314
333
|
public:
|
|
315
334
|
// num_string is assumed to be a string of numeric characters. It doesn't
|
|
316
335
|
// handle leading spaces.
|
|
317
|
-
|
|
318
|
-
HighPrecisionDecimal(
|
|
319
|
-
const
|
|
336
|
+
template <typename CharType>
|
|
337
|
+
LIBC_INLINE HighPrecisionDecimal(
|
|
338
|
+
const CharType *__restrict num_string,
|
|
320
339
|
const size_t num_len = cpp::numeric_limits<size_t>::max()) {
|
|
321
340
|
bool saw_dot = false;
|
|
322
341
|
size_t num_cur = 0;
|
|
@@ -324,25 +343,26 @@ public:
|
|
|
324
343
|
// them all.
|
|
325
344
|
uint32_t total_digits = 0;
|
|
326
345
|
while (num_cur < num_len &&
|
|
327
|
-
(isdigit(num_string[num_cur]) ||
|
|
328
|
-
|
|
346
|
+
(isdigit(num_string[num_cur]) ||
|
|
347
|
+
num_string[num_cur] == constants<CharType>::DECIMAL_POINT)) {
|
|
348
|
+
if (num_string[num_cur] == constants<CharType>::DECIMAL_POINT) {
|
|
329
349
|
if (saw_dot) {
|
|
330
350
|
break;
|
|
331
351
|
}
|
|
332
352
|
this->decimal_point = static_cast<int32_t>(total_digits);
|
|
333
353
|
saw_dot = true;
|
|
334
354
|
} else {
|
|
335
|
-
|
|
355
|
+
int digit = b36_char_to_int(num_string[num_cur]);
|
|
356
|
+
if (digit == 0 && this->num_digits == 0) {
|
|
336
357
|
--this->decimal_point;
|
|
337
358
|
++num_cur;
|
|
338
359
|
continue;
|
|
339
360
|
}
|
|
340
361
|
++total_digits;
|
|
341
362
|
if (this->num_digits < MAX_NUM_DIGITS) {
|
|
342
|
-
this->digits[this->num_digits] = static_cast<uint8_t>(
|
|
343
|
-
internal::b36_char_to_int(num_string[num_cur]));
|
|
363
|
+
this->digits[this->num_digits] = static_cast<uint8_t>(digit);
|
|
344
364
|
++this->num_digits;
|
|
345
|
-
} else if (
|
|
365
|
+
} else if (digit != 0) {
|
|
346
366
|
this->truncated = true;
|
|
347
367
|
}
|
|
348
368
|
}
|
|
@@ -352,11 +372,10 @@ public:
|
|
|
352
372
|
if (!saw_dot)
|
|
353
373
|
this->decimal_point = static_cast<int32_t>(total_digits);
|
|
354
374
|
|
|
355
|
-
if (num_cur < num_len &&
|
|
356
|
-
|
|
375
|
+
if (num_cur < num_len && tolower(num_string[num_cur]) ==
|
|
376
|
+
constants<CharType>::DECIMAL_EXPONENT_MARKER) {
|
|
357
377
|
++num_cur;
|
|
358
|
-
if (isdigit(num_string[num_cur]) || num_string
|
|
359
|
-
num_string[num_cur] == '-') {
|
|
378
|
+
if (isdigit(num_string[num_cur]) || get_sign(num_string + num_cur) != 0) {
|
|
360
379
|
auto result =
|
|
361
380
|
strtointeger<int32_t>(num_string + num_cur, 10, num_len - num_cur);
|
|
362
381
|
if (result.has_error()) {
|
|
@@ -14,9 +14,11 @@
|
|
|
14
14
|
// The build is configured to just use the public <assert.h> API
|
|
15
15
|
// for libc's internal assertions.
|
|
16
16
|
|
|
17
|
+
#ifndef LIBC_ASSERT
|
|
17
18
|
#include <assert.h>
|
|
18
19
|
|
|
19
20
|
#define LIBC_ASSERT(COND) assert(COND)
|
|
21
|
+
#endif // LIBC_ASSERT
|
|
20
22
|
|
|
21
23
|
#else // Not LIBC_COPT_USE_C_ASSERT
|
|
22
24
|
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
#ifndef LLVM_LIBC_SRC___SUPPORT_MACROS_ATTRIBUTES_H
|
|
18
18
|
#define LLVM_LIBC_SRC___SUPPORT_MACROS_ATTRIBUTES_H
|
|
19
19
|
|
|
20
|
+
#include "config.h"
|
|
20
21
|
#include "properties/architectures.h"
|
|
21
22
|
|
|
22
23
|
#ifndef __has_attribute
|
|
@@ -28,7 +29,32 @@
|
|
|
28
29
|
#define LIBC_INLINE_ASM __asm__ __volatile__
|
|
29
30
|
#define LIBC_UNUSED __attribute__((unused))
|
|
30
31
|
|
|
31
|
-
|
|
32
|
+
// Uses the platform specific specialization
|
|
33
|
+
#define LIBC_THREAD_MODE_PLATFORM 0
|
|
34
|
+
|
|
35
|
+
// Mutex guards nothing, used in single-threaded implementations
|
|
36
|
+
#define LIBC_THREAD_MODE_SINGLE 1
|
|
37
|
+
|
|
38
|
+
// Vendor provides implementation
|
|
39
|
+
#define LIBC_THREAD_MODE_EXTERNAL 2
|
|
40
|
+
|
|
41
|
+
// libcxx doesn't define LIBC_THREAD_MODE, unless that is passed in the command
|
|
42
|
+
// line in the CMake invocation. This defaults to the original implementation
|
|
43
|
+
// (before changes in https://github.com/llvm/llvm-project/pull/145358)
|
|
44
|
+
#ifndef LIBC_THREAD_MODE
|
|
45
|
+
#define LIBC_THREAD_MODE LIBC_THREAD_MODE_PLATFORM
|
|
46
|
+
#endif // LIBC_THREAD_MODE
|
|
47
|
+
|
|
48
|
+
#if LIBC_THREAD_MODE != LIBC_THREAD_MODE_PLATFORM && \
|
|
49
|
+
LIBC_THREAD_MODE != LIBC_THREAD_MODE_SINGLE && \
|
|
50
|
+
LIBC_THREAD_MODE != LIBC_THREAD_MODE_EXTERNAL
|
|
51
|
+
#error LIBC_THREAD_MODE must be one of the following values: \
|
|
52
|
+
LIBC_THREAD_MODE_PLATFORM, \
|
|
53
|
+
LIBC_THREAD_MODE_SINGLE, \
|
|
54
|
+
LIBC_THREAD_MODE_EXTERNAL.
|
|
55
|
+
#endif
|
|
56
|
+
|
|
57
|
+
#if LIBC_THREAD_MODE == LIBC_THREAD_MODE_SINGLE
|
|
32
58
|
#define LIBC_THREAD_LOCAL
|
|
33
59
|
#else
|
|
34
60
|
#define LIBC_THREAD_LOCAL thread_local
|
|
@@ -48,4 +74,21 @@
|
|
|
48
74
|
#define LIBC_PREFERED_TYPE(TYPE)
|
|
49
75
|
#endif
|
|
50
76
|
|
|
77
|
+
#if __has_attribute(ext_vector_type) && \
|
|
78
|
+
LIBC_HAS_FEATURE(ext_vector_type_boolean)
|
|
79
|
+
#define LIBC_HAS_VECTOR_TYPE 1
|
|
80
|
+
#else
|
|
81
|
+
#define LIBC_HAS_VECTOR_TYPE 0
|
|
82
|
+
#endif
|
|
83
|
+
|
|
84
|
+
#if __has_attribute(no_sanitize)
|
|
85
|
+
// Disable regular and hardware-supported ASan for functions that may
|
|
86
|
+
// intentionally make out-of-bounds access. Disable TSan as well, as it detects
|
|
87
|
+
// out-of-bounds accesses to heap memory.
|
|
88
|
+
#define LIBC_NO_SANITIZE_OOB_ACCESS \
|
|
89
|
+
__attribute__((no_sanitize("address", "hwaddress", "thread")))
|
|
90
|
+
#else
|
|
91
|
+
#define LIBC_NO_SANITIZE_OOB_ACCESS
|
|
92
|
+
#endif
|
|
93
|
+
|
|
51
94
|
#endif // LLVM_LIBC_SRC___SUPPORT_MACROS_ATTRIBUTES_H
|
|
@@ -13,6 +13,13 @@
|
|
|
13
13
|
#ifndef LLVM_LIBC_SRC___SUPPORT_MACROS_CONFIG_H
|
|
14
14
|
#define LLVM_LIBC_SRC___SUPPORT_MACROS_CONFIG_H
|
|
15
15
|
|
|
16
|
+
#include "src/__support/macros/properties/architectures.h"
|
|
17
|
+
#include "src/__support/macros/properties/compiler.h"
|
|
18
|
+
|
|
19
|
+
#ifdef LIBC_COMPILER_IS_MSVC
|
|
20
|
+
#include <intrin.h>
|
|
21
|
+
#endif // LIBC_COMPILER_IS_MSVC
|
|
22
|
+
|
|
16
23
|
// Workaround for compilers that do not support builtin detection.
|
|
17
24
|
// FIXME: This is only required for the GPU portion which should be moved.
|
|
18
25
|
#ifndef __has_builtin
|
|
@@ -27,6 +34,22 @@
|
|
|
27
34
|
#define LIBC_HAS_FEATURE(f) 0
|
|
28
35
|
#endif
|
|
29
36
|
|
|
37
|
+
#ifdef LIBC_COMPILER_IS_MSVC
|
|
38
|
+
|
|
39
|
+
// __builtin_trap replacement
|
|
40
|
+
#ifdef LIBC_TARGET_ARCH_IS_X86
|
|
41
|
+
#define __builtin_trap __ud2
|
|
42
|
+
#else // arm64
|
|
43
|
+
#define __builtin_trap() __break(1)
|
|
44
|
+
#endif
|
|
45
|
+
|
|
46
|
+
#define __builtin_expect(value, expectation) (value)
|
|
47
|
+
#define __builtin_unreachable() __assume(0)
|
|
48
|
+
|
|
49
|
+
#define __builtin_prefetch(X, Y, Z)
|
|
50
|
+
|
|
51
|
+
#endif // LIBC_COMPILER_IS_MSVC
|
|
52
|
+
|
|
30
53
|
#ifdef __clang__
|
|
31
54
|
// Declare a LIBC_NAMESPACE with hidden visibility. `namespace
|
|
32
55
|
// LIBC_NAMESPACE_DECL {` should be used around all declarations and definitions
|
|
@@ -11,9 +11,8 @@
|
|
|
11
11
|
|
|
12
12
|
#include "src/__support/macros/config.h"
|
|
13
13
|
#include "src/__support/macros/optimization.h"
|
|
14
|
-
#include "src/__support/macros/sanitizer.h"
|
|
15
14
|
|
|
16
|
-
#if defined(LIBC_ADD_NULL_CHECKS)
|
|
15
|
+
#if defined(LIBC_ADD_NULL_CHECKS)
|
|
17
16
|
#define LIBC_CRASH_ON_NULLPTR(ptr) \
|
|
18
17
|
do { \
|
|
19
18
|
if (LIBC_UNLIKELY((ptr) == nullptr)) \
|
|
@@ -34,6 +34,9 @@ LIBC_INLINE constexpr bool expects_bool_condition(T value, T expected) {
|
|
|
34
34
|
#elif defined(LIBC_COMPILER_IS_GCC)
|
|
35
35
|
#define LIBC_LOOP_NOUNROLL _Pragma("GCC unroll 0")
|
|
36
36
|
#define LIBC_LOOP_UNROLL _Pragma("GCC unroll 2048")
|
|
37
|
+
#elif defined(LIBC_COMPILER_IS_MSVC)
|
|
38
|
+
#define LIBC_LOOP_NOUNROLL
|
|
39
|
+
#define LIBC_LOOP_UNROLL
|
|
37
40
|
#else
|
|
38
41
|
#error "Unhandled compiler"
|
|
39
42
|
#endif
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
#define LIBC_TARGET_ARCH_IS_GPU
|
|
22
22
|
#endif
|
|
23
23
|
|
|
24
|
-
#if defined(
|
|
24
|
+
#if defined(__CLR_VER) || defined(LIBC_TARGET_ARCH_IS_GPU)
|
|
25
25
|
#define LIBC_TARGET_ARCH_IS_VM
|
|
26
26
|
#endif
|
|
27
27
|
|
|
@@ -41,6 +41,10 @@
|
|
|
41
41
|
#define LIBC_TARGET_ARCH_IS_ARM
|
|
42
42
|
#endif
|
|
43
43
|
|
|
44
|
+
#if defined(__wasm__)
|
|
45
|
+
#define LIBC_TARGET_ARCH_IS_WASM
|
|
46
|
+
#endif
|
|
47
|
+
|
|
44
48
|
#if defined(__aarch64__) || defined(__arm64__) || defined(_M_ARM64)
|
|
45
49
|
#define LIBC_TARGET_ARCH_IS_AARCH64
|
|
46
50
|
#endif
|
|
@@ -34,10 +34,15 @@
|
|
|
34
34
|
#define LIBC_COMPILER_GCC_VER (__GNUC__ * 100 + __GNUC_MINOR__)
|
|
35
35
|
#endif
|
|
36
36
|
|
|
37
|
-
#if defined(_MSC_VER)
|
|
38
|
-
#define
|
|
37
|
+
#if defined(_MSC_VER) && !defined(__clang__)
|
|
38
|
+
#define LIBC_COMPILER_IS_MSVC
|
|
39
39
|
// https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros
|
|
40
|
-
#define
|
|
40
|
+
#define LIBC_COMPILER_MSVC_VER (_MSC_VER)
|
|
41
|
+
#ifdef _M_X64
|
|
42
|
+
#define LIBC_COMPILER_IS_MSVC_X64
|
|
43
|
+
#else
|
|
44
|
+
#define LIBC_COMPILER_IS_MSVC_X86
|
|
45
|
+
#endif
|
|
41
46
|
#endif
|
|
42
47
|
|
|
43
48
|
#endif // LLVM_LIBC_SRC___SUPPORT_MACROS_PROPERTIES_COMPILER_H
|
|
@@ -18,6 +18,18 @@
|
|
|
18
18
|
#define LIBC_TARGET_CPU_HAS_FULLFP16
|
|
19
19
|
#endif
|
|
20
20
|
|
|
21
|
+
#if defined(__ARM_FEATURE_SVE)
|
|
22
|
+
#define LIBC_TARGET_CPU_HAS_SVE
|
|
23
|
+
#endif
|
|
24
|
+
|
|
25
|
+
#if defined(__ARM_FEATURE_SVE2)
|
|
26
|
+
#define LIBC_TARGET_CPU_HAS_SVE2
|
|
27
|
+
#endif
|
|
28
|
+
|
|
29
|
+
#if defined(__ARM_FEATURE_MOPS)
|
|
30
|
+
#define LIBC_TARGET_CPU_HAS_MOPS
|
|
31
|
+
#endif
|
|
32
|
+
|
|
21
33
|
#if defined(__SSE2__)
|
|
22
34
|
#define LIBC_TARGET_CPU_HAS_SSE2
|
|
23
35
|
#define LIBC_TARGET_CPU_HAS_FPU_FLOAT
|
|
@@ -59,6 +71,10 @@
|
|
|
59
71
|
#endif // LIBC_TARGET_CPU_HAS_ARM_FPU_DOUBLE
|
|
60
72
|
#endif // __ARM_FP
|
|
61
73
|
|
|
74
|
+
#if defined(__ARM_NEON)
|
|
75
|
+
#define LIBC_TARGET_CPU_HAS_ARM_NEON
|
|
76
|
+
#endif
|
|
77
|
+
|
|
62
78
|
#if defined(__riscv_flen)
|
|
63
79
|
// https://github.com/riscv-non-isa/riscv-c-api-doc/blob/main/src/c-api.adoc
|
|
64
80
|
#if defined(__riscv_zfhmin)
|
|
@@ -81,7 +97,7 @@
|
|
|
81
97
|
#endif
|
|
82
98
|
|
|
83
99
|
#if defined(__ARM_FEATURE_FMA) || (defined(__AVX2__) && defined(__FMA__)) || \
|
|
84
|
-
defined(__NVPTX__) || defined(__AMDGPU__) || defined(
|
|
100
|
+
defined(__NVPTX__) || defined(__AMDGPU__) || defined(__riscv_flen)
|
|
85
101
|
#define LIBC_TARGET_CPU_HAS_FMA
|
|
86
102
|
// Provide a more fine-grained control of FMA instruction for ARM targets.
|
|
87
103
|
#if defined(LIBC_TARGET_CPU_HAS_FPU_HALF)
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
#ifndef LLVM_LIBC_SRC___SUPPORT_MACROS_PROPERTIES_TYPES_H
|
|
11
11
|
#define LLVM_LIBC_SRC___SUPPORT_MACROS_PROPERTIES_TYPES_H
|
|
12
12
|
|
|
13
|
-
#include "hdr/float_macros.h"
|
|
13
|
+
#include "hdr/float_macros.h" // LDBL_MANT_DIG
|
|
14
|
+
#include "hdr/stdint_proxy.h" // UINT64_MAX, __SIZEOF_INT128__
|
|
14
15
|
#include "include/llvm-libc-macros/float16-macros.h" // LIBC_TYPES_HAS_FLOAT16
|
|
15
16
|
#include "include/llvm-libc-types/float128.h" // float128
|
|
16
17
|
#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
|
|
@@ -19,8 +20,6 @@
|
|
|
19
20
|
#include "src/__support/macros/properties/cpu_features.h"
|
|
20
21
|
#include "src/__support/macros/properties/os.h"
|
|
21
22
|
|
|
22
|
-
#include <stdint.h> // UINT64_MAX, __SIZEOF_INT128__
|
|
23
|
-
|
|
24
23
|
// 'long double' properties.
|
|
25
24
|
#if (LDBL_MANT_DIG == 53)
|
|
26
25
|
#define LIBC_TYPES_LONG_DOUBLE_IS_FLOAT64
|
|
@@ -23,16 +23,6 @@
|
|
|
23
23
|
#define LIBC_HAS_MEMORY_SANITIZER
|
|
24
24
|
#endif
|
|
25
25
|
|
|
26
|
-
#if LIBC_HAS_FEATURE(undefined_behavior_sanitizer)
|
|
27
|
-
#define LIBC_HAS_UNDEFINED_BEHAVIOR_SANITIZER
|
|
28
|
-
#endif
|
|
29
|
-
|
|
30
|
-
#if defined(LIBC_HAS_ADDRESS_SANITIZER) || \
|
|
31
|
-
defined(LIBC_HAS_MEMORY_SANITIZER) || \
|
|
32
|
-
defined(LIBC_HAS_UNDEFINED_BEHAVIOR_SANITIZER)
|
|
33
|
-
#define LIBC_HAS_SANITIZER
|
|
34
|
-
#endif
|
|
35
|
-
|
|
36
26
|
#ifdef LIBC_HAS_MEMORY_SANITIZER
|
|
37
27
|
// Only perform MSAN unpoison in non-constexpr context.
|
|
38
28
|
#include <sanitizer/msan_interface.h>
|
|
@@ -25,7 +25,13 @@ LIBC_INLINE constexpr cpp::enable_if_t<cpp::is_unsigned_v<T>, T>
|
|
|
25
25
|
mask_trailing_ones() {
|
|
26
26
|
constexpr unsigned T_BITS = CHAR_BIT * sizeof(T);
|
|
27
27
|
static_assert(count <= T_BITS && "Invalid bit index");
|
|
28
|
-
|
|
28
|
+
// MSVC complains about out of range shifts.
|
|
29
|
+
if constexpr (count == 0)
|
|
30
|
+
return 0;
|
|
31
|
+
else if constexpr (count >= T_BITS)
|
|
32
|
+
return T(-1);
|
|
33
|
+
else
|
|
34
|
+
return T(-1) >> (T_BITS - count);
|
|
29
35
|
}
|
|
30
36
|
|
|
31
37
|
// Create a bitmask with the count left-most bits set to 1, and all other bits
|
|
@@ -55,18 +61,28 @@ mask_leading_zeros() {
|
|
|
55
61
|
// Returns whether 'a + b' overflows, the result is stored in 'res'.
|
|
56
62
|
template <typename T>
|
|
57
63
|
[[nodiscard]] LIBC_INLINE constexpr bool add_overflow(T a, T b, T &res) {
|
|
64
|
+
#if __has_builtin(__builtin_add_overflow)
|
|
58
65
|
return __builtin_add_overflow(a, b, &res);
|
|
66
|
+
#else
|
|
67
|
+
res = a + b;
|
|
68
|
+
return (res < a) || (res < b);
|
|
69
|
+
#endif // __builtin_add_overflow
|
|
59
70
|
}
|
|
60
71
|
|
|
61
72
|
// Returns whether 'a - b' overflows, the result is stored in 'res'.
|
|
62
73
|
template <typename T>
|
|
63
74
|
[[nodiscard]] LIBC_INLINE constexpr bool sub_overflow(T a, T b, T &res) {
|
|
75
|
+
#if __has_builtin(__builtin_sub_overflow)
|
|
64
76
|
return __builtin_sub_overflow(a, b, &res);
|
|
77
|
+
#else
|
|
78
|
+
res = a - b;
|
|
79
|
+
return (res > a);
|
|
80
|
+
#endif // __builtin_sub_overflow
|
|
65
81
|
}
|
|
66
82
|
|
|
67
83
|
#define RETURN_IF(TYPE, BUILTIN) \
|
|
68
84
|
if constexpr (cpp::is_same_v<T, TYPE>) \
|
|
69
|
-
return BUILTIN(a, b, carry_in, carry_out);
|
|
85
|
+
return BUILTIN(a, b, carry_in, &carry_out);
|
|
70
86
|
|
|
71
87
|
// Returns the result of 'a + b' taking into account 'carry_in'.
|
|
72
88
|
// The carry out is stored in 'carry_out' it not 'nullptr', dropped otherwise.
|
|
@@ -74,7 +90,7 @@ template <typename T>
|
|
|
74
90
|
template <typename T>
|
|
75
91
|
[[nodiscard]] LIBC_INLINE constexpr cpp::enable_if_t<cpp::is_unsigned_v<T>, T>
|
|
76
92
|
add_with_carry(T a, T b, T carry_in, T &carry_out) {
|
|
77
|
-
if
|
|
93
|
+
if (!cpp::is_constant_evaluated()) {
|
|
78
94
|
#if __has_builtin(__builtin_addcb)
|
|
79
95
|
RETURN_IF(unsigned char, __builtin_addcb)
|
|
80
96
|
#elif __has_builtin(__builtin_addcs)
|
|
@@ -100,7 +116,7 @@ add_with_carry(T a, T b, T carry_in, T &carry_out) {
|
|
|
100
116
|
template <typename T>
|
|
101
117
|
[[nodiscard]] LIBC_INLINE constexpr cpp::enable_if_t<cpp::is_unsigned_v<T>, T>
|
|
102
118
|
sub_with_borrow(T a, T b, T carry_in, T &carry_out) {
|
|
103
|
-
if
|
|
119
|
+
if (!cpp::is_constant_evaluated()) {
|
|
104
120
|
#if __has_builtin(__builtin_subcb)
|
|
105
121
|
RETURN_IF(unsigned char, __builtin_subcb)
|
|
106
122
|
#elif __has_builtin(__builtin_subcs)
|