@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
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//===-- Detection of _Complex _Float16 compiler builtin type --------------===//
|
|
2
|
+
//
|
|
3
|
+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
4
|
+
// See https://llvm.org/LICENSE.txt for license information.
|
|
5
|
+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
6
|
+
//
|
|
7
|
+
//===----------------------------------------------------------------------===//
|
|
8
|
+
|
|
9
|
+
#ifndef LLVM_LIBC_MACROS_CFLOAT16_MACROS_H
|
|
10
|
+
#define LLVM_LIBC_MACROS_CFLOAT16_MACROS_H
|
|
11
|
+
|
|
12
|
+
#if defined(__FLT16_MANT_DIG__) && \
|
|
13
|
+
(!defined(__GNUC__) || __GNUC__ >= 13 || \
|
|
14
|
+
(defined(__clang__) && __clang_major__ >= 14)) && \
|
|
15
|
+
!defined(__arm__) && !defined(_M_ARM) && !defined(__riscv) && \
|
|
16
|
+
!defined(_WIN32)
|
|
17
|
+
#define LIBC_TYPES_HAS_CFLOAT16
|
|
18
|
+
#endif
|
|
19
|
+
|
|
20
|
+
#endif // LLVM_LIBC_MACROS_CFLOAT16_MACROS_H
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//===-- Macros defined in wchar.h header file -----------------------------===//
|
|
2
|
+
//
|
|
3
|
+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
4
|
+
// See https://llvm.org/LICENSE.txt for license information.
|
|
5
|
+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
6
|
+
//
|
|
7
|
+
//===----------------------------------------------------------------------===//
|
|
8
|
+
|
|
9
|
+
#ifndef LLVM_LIBC_MACROS_WCHAR_MACROS_H
|
|
10
|
+
#define LLVM_LIBC_MACROS_WCHAR_MACROS_H
|
|
11
|
+
|
|
12
|
+
#include "../llvm-libc-types/wint_t.h"
|
|
13
|
+
|
|
14
|
+
#ifndef WEOF
|
|
15
|
+
#define WEOF ((wint_t)(0xffffffffu))
|
|
16
|
+
#endif
|
|
17
|
+
|
|
18
|
+
#endif // LLVM_LIBC_MACROS_WCHAR_MACROS_H
|
|
@@ -9,36 +9,19 @@
|
|
|
9
9
|
#ifndef LLVM_LIBC_TYPES_CFLOAT128_H
|
|
10
10
|
#define LLVM_LIBC_TYPES_CFLOAT128_H
|
|
11
11
|
|
|
12
|
-
#include "../llvm-libc-macros/
|
|
12
|
+
#include "../llvm-libc-macros/cfloat128-macros.h"
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
//
|
|
18
|
-
|
|
19
|
-
//
|
|
20
|
-
// clang supports it.
|
|
21
|
-
#ifdef __clang__
|
|
22
|
-
#if (__clang_major__ >= 11) && \
|
|
23
|
-
(defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__))
|
|
24
|
-
// Use _Complex __float128 type. clang uses __SIZEOF_FLOAT128__ or __FLOAT128__
|
|
25
|
-
// macro to notify the availability of __float128 type:
|
|
26
|
-
// https://reviews.llvm.org/D15120
|
|
27
|
-
#define LIBC_TYPES_HAS_CFLOAT128
|
|
14
|
+
#ifdef LIBC_TYPES_HAS_CFLOAT128
|
|
15
|
+
#ifndef LIBC_TYPES_CFLOAT128_IS_COMPLEX_LONG_DOUBLE
|
|
16
|
+
#if defined(__GNUC__) && !defined(__clang__)
|
|
17
|
+
// Remove the workaround when https://gcc.gnu.org/PR32187 gets fixed.
|
|
18
|
+
typedef __typeof__(_Complex __float128) cfloat128;
|
|
19
|
+
#else // ^^^ workaround / no workaround vvv
|
|
28
20
|
typedef _Complex __float128 cfloat128;
|
|
29
|
-
#endif
|
|
30
|
-
#
|
|
31
|
-
#if (defined(__STDC_IEC_60559_COMPLEX__) || defined(__SIZEOF_FLOAT128__)) && \
|
|
32
|
-
(__GNUC__ >= 13 || (!defined(__cplusplus)))
|
|
33
|
-
#define LIBC_TYPES_HAS_CFLOAT128
|
|
34
|
-
typedef _Complex _Float128 cfloat128;
|
|
35
|
-
#endif
|
|
36
|
-
#endif
|
|
37
|
-
|
|
38
|
-
#if !defined(LIBC_TYPES_HAS_CFLOAT128) && (LDBL_MANT_DIG == 113)
|
|
39
|
-
#define LIBC_TYPES_HAS_CFLOAT128
|
|
40
|
-
#define LIBC_TYPES_CFLOAT128_IS_COMPLEX_LONG_DOUBLE
|
|
21
|
+
#endif // ^^^ no workaround ^^^
|
|
22
|
+
#else
|
|
41
23
|
typedef _Complex long double cfloat128;
|
|
42
|
-
#endif
|
|
24
|
+
#endif // LIBC_TYPES_CFLOAT128_IS_COMPLEX_LONG_DOUBLE
|
|
25
|
+
#endif // LIBC_TYPES_HAS_CFLOAT128
|
|
43
26
|
|
|
44
27
|
#endif // LLVM_LIBC_TYPES_CFLOAT128_H
|
|
@@ -9,13 +9,10 @@
|
|
|
9
9
|
#ifndef LLVM_LIBC_TYPES_CFLOAT16_H
|
|
10
10
|
#define LLVM_LIBC_TYPES_CFLOAT16_H
|
|
11
11
|
|
|
12
|
-
#
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
!defined(__arm__) && !defined(_M_ARM) && !defined(__riscv) && \
|
|
16
|
-
!defined(_WIN32)
|
|
17
|
-
#define LIBC_TYPES_HAS_CFLOAT16
|
|
12
|
+
#include "../llvm-libc-macros/cfloat16-macros.h"
|
|
13
|
+
|
|
14
|
+
#ifdef LIBC_TYPES_HAS_CFLOAT16
|
|
18
15
|
typedef _Complex _Float16 cfloat16;
|
|
19
|
-
#endif
|
|
16
|
+
#endif // LIBC_TYPES_HAS_CFLOAT16
|
|
20
17
|
|
|
21
18
|
#endif // LLVM_LIBC_TYPES_CFLOAT16_H
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//===-- Definition of wint_t types ----------------------------------------===//
|
|
2
|
+
//
|
|
3
|
+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
4
|
+
// See https://llvm.org/LICENSE.txt for license information.
|
|
5
|
+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
6
|
+
//
|
|
7
|
+
//===----------------------------------------------------------------------===//
|
|
8
|
+
|
|
9
|
+
#ifndef LLVM_LIBC_TYPES_WINT_T_H
|
|
10
|
+
#define LLVM_LIBC_TYPES_WINT_T_H
|
|
11
|
+
|
|
12
|
+
typedef __WINT_TYPE__ wint_t;
|
|
13
|
+
|
|
14
|
+
#endif // LLVM_LIBC_TYPES_WINT_T_H
|
|
@@ -19,6 +19,11 @@
|
|
|
19
19
|
#define LIBC_ERRNO_MODE LIBC_ERRNO_MODE_SYSTEM_INLINE
|
|
20
20
|
#endif // LIBC_ERRNO_MODE
|
|
21
21
|
|
|
22
|
+
// Use system fenv functions in math implementations.
|
|
23
|
+
#ifndef LIBC_MATH_USE_SYSTEM_FENV
|
|
24
|
+
#define LIBC_MATH_USE_SYSTEM_FENV
|
|
25
|
+
#endif // LIBC_MATH_USE_SYSTEM_FENV
|
|
26
|
+
|
|
22
27
|
#ifndef LIBC_NAMESPACE
|
|
23
28
|
#define LIBC_NAMESPACE __llvm_libc
|
|
24
29
|
#endif // LIBC_NAMESPACE
|
|
@@ -11,14 +11,14 @@
|
|
|
11
11
|
#ifndef LLVM_LIBC_SRC___SUPPORT_CPP_BIT_H
|
|
12
12
|
#define LLVM_LIBC_SRC___SUPPORT_CPP_BIT_H
|
|
13
13
|
|
|
14
|
+
#include "hdr/stdint_proxy.h"
|
|
14
15
|
#include "src/__support/CPP/limits.h" // numeric_limits
|
|
15
16
|
#include "src/__support/CPP/type_traits.h"
|
|
16
17
|
#include "src/__support/macros/attributes.h"
|
|
17
18
|
#include "src/__support/macros/config.h"
|
|
19
|
+
#include "src/__support/macros/properties/compiler.h"
|
|
18
20
|
#include "src/__support/macros/sanitizer.h"
|
|
19
21
|
|
|
20
|
-
#include <stdint.h>
|
|
21
|
-
|
|
22
22
|
namespace LIBC_NAMESPACE_DECL {
|
|
23
23
|
namespace cpp {
|
|
24
24
|
|
|
@@ -26,6 +26,16 @@ namespace cpp {
|
|
|
26
26
|
#define LLVM_LIBC_HAS_BUILTIN_MEMCPY_INLINE
|
|
27
27
|
#endif
|
|
28
28
|
|
|
29
|
+
template <unsigned N>
|
|
30
|
+
LIBC_INLINE static void inline_copy(const char *from, char *to) {
|
|
31
|
+
#if __has_builtin(__builtin_memcpy_inline)
|
|
32
|
+
__builtin_memcpy_inline(to, from, N);
|
|
33
|
+
#else
|
|
34
|
+
for (unsigned i = 0; i < N; ++i)
|
|
35
|
+
to[i] = from[i];
|
|
36
|
+
#endif // __has_builtin(__builtin_memcpy_inline)
|
|
37
|
+
}
|
|
38
|
+
|
|
29
39
|
// This implementation of bit_cast requires trivially-constructible To, to avoid
|
|
30
40
|
// UB in the implementation.
|
|
31
41
|
template <typename To, typename From>
|
|
@@ -37,22 +47,32 @@ LIBC_INLINE constexpr cpp::enable_if_t<
|
|
|
37
47
|
To>
|
|
38
48
|
bit_cast(const From &from) {
|
|
39
49
|
MSAN_UNPOISON(&from, sizeof(From));
|
|
40
|
-
#if __has_builtin(__builtin_bit_cast)
|
|
50
|
+
#if __has_builtin(__builtin_bit_cast) || defined(LIBC_COMPILER_IS_MSVC)
|
|
41
51
|
return __builtin_bit_cast(To, from);
|
|
42
52
|
#else
|
|
43
|
-
To to;
|
|
53
|
+
To to{};
|
|
44
54
|
char *dst = reinterpret_cast<char *>(&to);
|
|
45
55
|
const char *src = reinterpret_cast<const char *>(&from);
|
|
46
|
-
|
|
47
|
-
__builtin_memcpy_inline(dst, src, sizeof(To));
|
|
48
|
-
#else
|
|
49
|
-
for (unsigned i = 0; i < sizeof(To); ++i)
|
|
50
|
-
dst[i] = src[i];
|
|
51
|
-
#endif // __has_builtin(__builtin_memcpy_inline)
|
|
56
|
+
inline_copy<sizeof(From)>(src, dst);
|
|
52
57
|
return to;
|
|
53
58
|
#endif // __has_builtin(__builtin_bit_cast)
|
|
54
59
|
}
|
|
55
60
|
|
|
61
|
+
// The following simple bit copy from a smaller type to maybe-larger type.
|
|
62
|
+
template <typename To, typename From>
|
|
63
|
+
LIBC_INLINE constexpr cpp::enable_if_t<
|
|
64
|
+
(sizeof(To) >= sizeof(From)) &&
|
|
65
|
+
cpp::is_trivially_constructible<To>::value &&
|
|
66
|
+
cpp::is_trivially_copyable<To>::value &&
|
|
67
|
+
cpp::is_trivially_copyable<From>::value,
|
|
68
|
+
void>
|
|
69
|
+
bit_copy(const From &from, To &to) {
|
|
70
|
+
MSAN_UNPOISON(&from, sizeof(From));
|
|
71
|
+
char *dst = reinterpret_cast<char *>(&to);
|
|
72
|
+
const char *src = reinterpret_cast<const char *>(&from);
|
|
73
|
+
inline_copy<sizeof(From)>(src, dst);
|
|
74
|
+
}
|
|
75
|
+
|
|
56
76
|
template <typename T>
|
|
57
77
|
[[nodiscard]] LIBC_INLINE constexpr cpp::enable_if_t<cpp::is_unsigned_v<T>,
|
|
58
78
|
bool>
|
|
@@ -105,10 +125,16 @@ countr_zero(T value) {
|
|
|
105
125
|
}
|
|
106
126
|
#if __has_builtin(__builtin_ctzs)
|
|
107
127
|
ADD_SPECIALIZATION(countr_zero, unsigned short, __builtin_ctzs)
|
|
108
|
-
#endif
|
|
128
|
+
#endif // __has_builtin(__builtin_ctzs)
|
|
129
|
+
#if __has_builtin(__builtin_ctz)
|
|
109
130
|
ADD_SPECIALIZATION(countr_zero, unsigned int, __builtin_ctz)
|
|
131
|
+
#endif // __has_builtin(__builtin_ctz)
|
|
132
|
+
#if __has_builtin(__builtin_ctzl)
|
|
110
133
|
ADD_SPECIALIZATION(countr_zero, unsigned long, __builtin_ctzl)
|
|
134
|
+
#endif // __has_builtin(__builtin_ctzl)
|
|
135
|
+
#if __has_builtin(__builtin_ctzll)
|
|
111
136
|
ADD_SPECIALIZATION(countr_zero, unsigned long long, __builtin_ctzll)
|
|
137
|
+
#endif // __has_builtin(__builtin_ctzll)
|
|
112
138
|
#endif // __has_builtin(__builtin_ctzg)
|
|
113
139
|
|
|
114
140
|
/// Count number of 0's from the most significant bit to the least
|
|
@@ -144,10 +170,16 @@ countl_zero(T value) {
|
|
|
144
170
|
}
|
|
145
171
|
#if __has_builtin(__builtin_clzs)
|
|
146
172
|
ADD_SPECIALIZATION(countl_zero, unsigned short, __builtin_clzs)
|
|
147
|
-
#endif
|
|
173
|
+
#endif // __has_builtin(__builtin_clzs)
|
|
174
|
+
#if __has_builtin(__builtin_clz)
|
|
148
175
|
ADD_SPECIALIZATION(countl_zero, unsigned int, __builtin_clz)
|
|
176
|
+
#endif // __has_builtin(__builtin_clz)
|
|
177
|
+
#if __has_builtin(__builtin_clzl)
|
|
149
178
|
ADD_SPECIALIZATION(countl_zero, unsigned long, __builtin_clzl)
|
|
179
|
+
#endif // __has_builtin(__builtin_clzl)
|
|
180
|
+
#if __has_builtin(__builtin_clzll)
|
|
150
181
|
ADD_SPECIALIZATION(countl_zero, unsigned long long, __builtin_clzll)
|
|
182
|
+
#endif // __has_builtin(__builtin_clzll)
|
|
151
183
|
#endif // __has_builtin(__builtin_clzg)
|
|
152
184
|
|
|
153
185
|
#undef ADD_SPECIALIZATION
|
|
@@ -284,11 +316,17 @@ popcount(T value) {
|
|
|
284
316
|
[[nodiscard]] LIBC_INLINE constexpr int popcount<TYPE>(TYPE value) { \
|
|
285
317
|
return BUILTIN(value); \
|
|
286
318
|
}
|
|
319
|
+
#if __has_builtin(__builtin_popcount)
|
|
287
320
|
ADD_SPECIALIZATION(unsigned char, __builtin_popcount)
|
|
288
321
|
ADD_SPECIALIZATION(unsigned short, __builtin_popcount)
|
|
289
322
|
ADD_SPECIALIZATION(unsigned, __builtin_popcount)
|
|
323
|
+
#endif // __builtin_popcount
|
|
324
|
+
#if __has_builtin(__builtin_popcountl)
|
|
290
325
|
ADD_SPECIALIZATION(unsigned long, __builtin_popcountl)
|
|
326
|
+
#endif // __builtin_popcountl
|
|
327
|
+
#if __has_builtin(__builtin_popcountll)
|
|
291
328
|
ADD_SPECIALIZATION(unsigned long long, __builtin_popcountll)
|
|
329
|
+
#endif // __builtin_popcountll
|
|
292
330
|
#endif // __builtin_popcountg
|
|
293
331
|
#undef ADD_SPECIALIZATION
|
|
294
332
|
|
|
@@ -13,12 +13,17 @@
|
|
|
13
13
|
#include "src/__support/macros/attributes.h"
|
|
14
14
|
#include "src/__support/macros/config.h"
|
|
15
15
|
// LIBC_TYPES_HAS_CFLOAT16 && LIBC_TYPES_HAS_CFLOAT128
|
|
16
|
+
#include "src/__support/macros/properties/compiler.h"
|
|
16
17
|
#include "src/__support/macros/properties/complex_types.h"
|
|
17
18
|
|
|
18
19
|
namespace LIBC_NAMESPACE_DECL {
|
|
19
20
|
namespace cpp {
|
|
20
21
|
|
|
21
22
|
// is_complex
|
|
23
|
+
#ifdef LIBC_COMPILER_IS_MSVC
|
|
24
|
+
// TODO: Add support for complex types with MSVC.
|
|
25
|
+
template <typename T> struct is_complex : false_type {};
|
|
26
|
+
#else
|
|
22
27
|
template <typename T> struct is_complex {
|
|
23
28
|
private:
|
|
24
29
|
template <typename Head, typename... Args>
|
|
@@ -40,6 +45,8 @@ public:
|
|
|
40
45
|
#endif
|
|
41
46
|
>();
|
|
42
47
|
};
|
|
48
|
+
#endif // LIBC_COMPILER_IS_MSVC
|
|
49
|
+
|
|
43
50
|
template <typename T>
|
|
44
51
|
LIBC_INLINE_VAR constexpr bool is_complex_v = is_complex<T>::value;
|
|
45
52
|
template <typename T1, typename T2>
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
#include "src/__support/CPP/type_traits/remove_all_extents.h"
|
|
16
16
|
#include "src/__support/CPP/type_traits/true_type.h"
|
|
17
17
|
#include "src/__support/CPP/type_traits/type_identity.h"
|
|
18
|
+
#include "src/__support/CPP/utility/declval.h"
|
|
18
19
|
#include "src/__support/macros/attributes.h"
|
|
19
20
|
#include "src/__support/macros/config.h"
|
|
20
21
|
|
|
@@ -22,7 +23,7 @@ namespace LIBC_NAMESPACE_DECL {
|
|
|
22
23
|
namespace cpp {
|
|
23
24
|
|
|
24
25
|
// is_destructible
|
|
25
|
-
#if __has_builtin(__is_destructible)
|
|
26
|
+
#if __has_builtin(__is_destructible) || defined(LIBC_COMPILER_IS_MSVC)
|
|
26
27
|
template <typename T>
|
|
27
28
|
struct is_destructible : bool_constant<__is_destructible(T)> {};
|
|
28
29
|
#else
|
|
@@ -16,6 +16,8 @@
|
|
|
16
16
|
#include "src/__support/macros/attributes.h"
|
|
17
17
|
#include "src/__support/macros/config.h"
|
|
18
18
|
|
|
19
|
+
#include <stddef.h>
|
|
20
|
+
|
|
19
21
|
namespace LIBC_NAMESPACE_DECL {
|
|
20
22
|
namespace cpp {
|
|
21
23
|
|
|
@@ -46,6 +48,10 @@ public:
|
|
|
46
48
|
LIBC_INLINE constexpr bool operator()() const { return is_unsigned::value; }
|
|
47
49
|
};
|
|
48
50
|
#endif // LIBC_COMPILER_HAS_FIXED_POINT
|
|
51
|
+
#if LIBC_HAS_VECTOR_TYPE
|
|
52
|
+
template <typename T, size_t N>
|
|
53
|
+
struct is_unsigned<T [[clang::ext_vector_type(N)]]> : bool_constant<false> {};
|
|
54
|
+
#endif
|
|
49
55
|
|
|
50
56
|
template <typename T>
|
|
51
57
|
LIBC_INLINE_VAR constexpr bool is_unsigned_v = is_unsigned<T>::value;
|
|
@@ -5,12 +5,15 @@
|
|
|
5
5
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
6
6
|
//
|
|
7
7
|
//===----------------------------------------------------------------------===//
|
|
8
|
+
|
|
8
9
|
#ifndef LLVM_LIBC_SRC___SUPPORT_CPP_UTILITY_INTEGER_SEQUENCE_H
|
|
9
10
|
#define LLVM_LIBC_SRC___SUPPORT_CPP_UTILITY_INTEGER_SEQUENCE_H
|
|
10
11
|
|
|
11
12
|
#include "src/__support/CPP/type_traits/is_integral.h"
|
|
12
13
|
#include "src/__support/macros/config.h"
|
|
13
14
|
|
|
15
|
+
#include <stddef.h>
|
|
16
|
+
|
|
14
17
|
namespace LIBC_NAMESPACE_DECL {
|
|
15
18
|
namespace cpp {
|
|
16
19
|
|
|
@@ -34,6 +37,13 @@ template <typename T, int N>
|
|
|
34
37
|
using make_integer_sequence =
|
|
35
38
|
typename detail::make_integer_sequence<T, N - 1>::type;
|
|
36
39
|
|
|
40
|
+
// index sequence
|
|
41
|
+
template <size_t... Ints>
|
|
42
|
+
using index_sequence = integer_sequence<size_t, Ints...>;
|
|
43
|
+
template <int N>
|
|
44
|
+
using make_index_sequence =
|
|
45
|
+
typename detail::make_integer_sequence<size_t, N - 1>::type;
|
|
46
|
+
|
|
37
47
|
} // namespace cpp
|
|
38
48
|
} // namespace LIBC_NAMESPACE_DECL
|
|
39
49
|
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
#ifndef LLVM_LIBC_SRC___SUPPORT_FPUTIL_FPBITS_H
|
|
16
16
|
#define LLVM_LIBC_SRC___SUPPORT_FPUTIL_FPBITS_H
|
|
17
17
|
|
|
18
|
+
#include "hdr/stdint_proxy.h"
|
|
18
19
|
#include "src/__support/CPP/bit.h"
|
|
19
20
|
#include "src/__support/CPP/type_traits.h"
|
|
20
21
|
#include "src/__support/common.h"
|
|
@@ -26,8 +27,6 @@
|
|
|
26
27
|
#include "src/__support/sign.h" // Sign
|
|
27
28
|
#include "src/__support/uint128.h"
|
|
28
29
|
|
|
29
|
-
#include <stdint.h>
|
|
30
|
-
|
|
31
30
|
namespace LIBC_NAMESPACE_DECL {
|
|
32
31
|
namespace fputil {
|
|
33
32
|
|
|
@@ -790,16 +789,16 @@ struct FPRep : public FPRepImpl<fp_type, FPRep<fp_type>> {
|
|
|
790
789
|
// Returns the FPType corresponding to C++ type T on the host.
|
|
791
790
|
template <typename T> LIBC_INLINE static constexpr FPType get_fp_type() {
|
|
792
791
|
using UnqualT = cpp::remove_cv_t<T>;
|
|
793
|
-
if constexpr (cpp::is_same_v<UnqualT, float> &&
|
|
792
|
+
if constexpr (cpp::is_same_v<UnqualT, float> && FLT_MANT_DIG == 24)
|
|
794
793
|
return FPType::IEEE754_Binary32;
|
|
795
|
-
else if constexpr (cpp::is_same_v<UnqualT, double> &&
|
|
794
|
+
else if constexpr (cpp::is_same_v<UnqualT, double> && DBL_MANT_DIG == 53)
|
|
796
795
|
return FPType::IEEE754_Binary64;
|
|
797
796
|
else if constexpr (cpp::is_same_v<UnqualT, long double>) {
|
|
798
|
-
if constexpr (
|
|
797
|
+
if constexpr (LDBL_MANT_DIG == 53)
|
|
799
798
|
return FPType::IEEE754_Binary64;
|
|
800
|
-
else if constexpr (
|
|
799
|
+
else if constexpr (LDBL_MANT_DIG == 64)
|
|
801
800
|
return FPType::X86_Binary80;
|
|
802
|
-
else if constexpr (
|
|
801
|
+
else if constexpr (LDBL_MANT_DIG == 113)
|
|
803
802
|
return FPType::IEEE754_Binary128;
|
|
804
803
|
}
|
|
805
804
|
#if defined(LIBC_TYPES_HAS_FLOAT16)
|
|
@@ -10,18 +10,21 @@
|
|
|
10
10
|
#define LLVM_LIBC_SRC___SUPPORT_FPUTIL_ROUNDING_MODE_H
|
|
11
11
|
|
|
12
12
|
#include "hdr/fenv_macros.h"
|
|
13
|
+
#include "src/__support/CPP/type_traits.h" // is_constant_evaluated
|
|
13
14
|
#include "src/__support/macros/attributes.h" // LIBC_INLINE
|
|
14
15
|
#include "src/__support/macros/config.h"
|
|
15
16
|
|
|
16
17
|
namespace LIBC_NAMESPACE_DECL {
|
|
17
18
|
namespace fputil {
|
|
18
19
|
|
|
20
|
+
namespace generic {
|
|
21
|
+
|
|
19
22
|
// Quick free-standing test whether fegetround() == FE_UPWARD.
|
|
20
23
|
// Using the following observation:
|
|
21
24
|
// 1.0f + 2^-25 = 1.0f for FE_TONEAREST, FE_DOWNWARD, FE_TOWARDZERO
|
|
22
25
|
// = 0x1.000002f for FE_UPWARD.
|
|
23
26
|
LIBC_INLINE bool fenv_is_round_up() {
|
|
24
|
-
volatile float x = 0x1.0p-25f;
|
|
27
|
+
static volatile float x = 0x1.0p-25f;
|
|
25
28
|
return (1.0f + x != 1.0f);
|
|
26
29
|
}
|
|
27
30
|
|
|
@@ -30,7 +33,7 @@ LIBC_INLINE bool fenv_is_round_up() {
|
|
|
30
33
|
// -1.0f - 2^-25 = -1.0f for FE_TONEAREST, FE_UPWARD, FE_TOWARDZERO
|
|
31
34
|
// = -0x1.000002f for FE_DOWNWARD.
|
|
32
35
|
LIBC_INLINE bool fenv_is_round_down() {
|
|
33
|
-
volatile float x = 0x1.0p-25f;
|
|
36
|
+
static volatile float x = 0x1.0p-25f;
|
|
34
37
|
return (-1.0f - x != -1.0f);
|
|
35
38
|
}
|
|
36
39
|
|
|
@@ -42,8 +45,8 @@ LIBC_INLINE bool fenv_is_round_down() {
|
|
|
42
45
|
// = 0x1.0ffffep-1f for FE_DOWNWARD, FE_TOWARDZERO
|
|
43
46
|
LIBC_INLINE bool fenv_is_round_to_nearest() {
|
|
44
47
|
static volatile float x = 0x1.0p-24f;
|
|
45
|
-
float y = x;
|
|
46
|
-
return (
|
|
48
|
+
float y = 1.5f + x;
|
|
49
|
+
return (y == 1.5f - x);
|
|
47
50
|
}
|
|
48
51
|
|
|
49
52
|
// Quick free-standing test whether fegetround() == FE_TOWARDZERO.
|
|
@@ -75,6 +78,49 @@ LIBC_INLINE int quick_get_round() {
|
|
|
75
78
|
return (2.0f + y == 2.0f) ? FE_TONEAREST : FE_UPWARD;
|
|
76
79
|
}
|
|
77
80
|
|
|
81
|
+
} // namespace generic
|
|
82
|
+
|
|
83
|
+
LIBC_INLINE static constexpr bool fenv_is_round_up() {
|
|
84
|
+
if (cpp::is_constant_evaluated()) {
|
|
85
|
+
return false;
|
|
86
|
+
} else {
|
|
87
|
+
return generic::fenv_is_round_up();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
LIBC_INLINE static constexpr bool fenv_is_round_down() {
|
|
92
|
+
if (cpp::is_constant_evaluated()) {
|
|
93
|
+
return false;
|
|
94
|
+
} else {
|
|
95
|
+
return generic::fenv_is_round_down();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
LIBC_INLINE static constexpr bool fenv_is_round_to_nearest() {
|
|
100
|
+
if (cpp::is_constant_evaluated()) {
|
|
101
|
+
return true;
|
|
102
|
+
} else {
|
|
103
|
+
return generic::fenv_is_round_to_nearest();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
LIBC_INLINE static constexpr bool fenv_is_round_to_zero() {
|
|
108
|
+
if (cpp::is_constant_evaluated()) {
|
|
109
|
+
return false;
|
|
110
|
+
} else {
|
|
111
|
+
return generic::fenv_is_round_to_zero();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Quick free standing get rounding mode based on the above observations.
|
|
116
|
+
LIBC_INLINE static constexpr int quick_get_round() {
|
|
117
|
+
if (cpp::is_constant_evaluated()) {
|
|
118
|
+
return FE_TONEAREST;
|
|
119
|
+
} else {
|
|
120
|
+
return generic::quick_get_round();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
78
124
|
} // namespace fputil
|
|
79
125
|
} // namespace LIBC_NAMESPACE_DECL
|
|
80
126
|
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
#ifndef LLVM_LIBC_SRC___SUPPORT_BIG_INT_H
|
|
10
10
|
#define LLVM_LIBC_SRC___SUPPORT_BIG_INT_H
|
|
11
11
|
|
|
12
|
+
#include "hdr/stdint_proxy.h"
|
|
12
13
|
#include "src/__support/CPP/array.h"
|
|
13
14
|
#include "src/__support/CPP/bit.h" // countl_zero
|
|
14
15
|
#include "src/__support/CPP/limits.h"
|
|
@@ -23,7 +24,6 @@
|
|
|
23
24
|
#include "src/__support/number_pair.h"
|
|
24
25
|
|
|
25
26
|
#include <stddef.h> // For size_t
|
|
26
|
-
#include <stdint.h>
|
|
27
27
|
|
|
28
28
|
namespace LIBC_NAMESPACE_DECL {
|
|
29
29
|
|
|
@@ -95,10 +95,10 @@ LIBC_INLINE constexpr DoubleWide<word> mul2(word a, word b) {
|
|
|
95
95
|
#endif
|
|
96
96
|
else {
|
|
97
97
|
using half_word = half_width_t<word>;
|
|
98
|
-
|
|
98
|
+
constexpr auto shiftl = [](word value) -> word {
|
|
99
99
|
return value << cpp::numeric_limits<half_word>::digits;
|
|
100
100
|
};
|
|
101
|
-
|
|
101
|
+
constexpr auto shiftr = [](word value) -> word {
|
|
102
102
|
return value >> cpp::numeric_limits<half_word>::digits;
|
|
103
103
|
};
|
|
104
104
|
// Here we do a one digit multiplication where 'a' and 'b' are of type
|
|
@@ -111,19 +111,19 @@ LIBC_INLINE constexpr DoubleWide<word> mul2(word a, word b) {
|
|
|
111
111
|
// c result
|
|
112
112
|
// We convert 'lo' and 'hi' from 'half_word' to 'word' so multiplication
|
|
113
113
|
// doesn't overflow.
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
114
|
+
word a_lo = lo(a);
|
|
115
|
+
word b_lo = lo(b);
|
|
116
|
+
word a_hi = hi(a);
|
|
117
|
+
word b_hi = hi(b);
|
|
118
|
+
word step1 = b_lo * a_lo; // no overflow;
|
|
119
|
+
word step2 = b_lo * a_hi; // no overflow;
|
|
120
|
+
word step3 = b_hi * a_lo; // no overflow;
|
|
121
|
+
word step4 = b_hi * a_hi; // no overflow;
|
|
122
122
|
word lo_digit = step1;
|
|
123
123
|
word hi_digit = step4;
|
|
124
|
-
|
|
125
|
-
word carry;
|
|
126
|
-
word _; // unused carry variable.
|
|
124
|
+
word no_carry = 0;
|
|
125
|
+
word carry = 0;
|
|
126
|
+
[[maybe_unused]] word _ = 0; // unused carry variable.
|
|
127
127
|
lo_digit = add_with_carry<word>(lo_digit, shiftl(step2), no_carry, carry);
|
|
128
128
|
hi_digit = add_with_carry<word>(hi_digit, shiftr(step2), carry, _);
|
|
129
129
|
lo_digit = add_with_carry<word>(lo_digit, shiftl(step3), no_carry, carry);
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
#include "src/__support/macros/attributes.h"
|
|
17
17
|
#include "src/__support/macros/config.h"
|
|
18
18
|
#include "src/__support/macros/properties/architectures.h"
|
|
19
|
+
#include "src/__support/macros/properties/compiler.h"
|
|
19
20
|
|
|
20
21
|
#ifndef LLVM_LIBC_FUNCTION_ATTR
|
|
21
22
|
#define LLVM_LIBC_FUNCTION_ATTR
|
|
@@ -41,12 +42,12 @@
|
|
|
41
42
|
// to cleanly export and alias the C++ symbol `LIBC_NAMESPACE::func` with the C
|
|
42
43
|
// symbol `func`. So for public packaging on MacOS, we will only export the C
|
|
43
44
|
// symbol. Moreover, a C symbol `func` in macOS is mangled as `_func`.
|
|
44
|
-
#if defined(LIBC_COPT_PUBLIC_PACKAGING)
|
|
45
|
+
#if defined(LIBC_COPT_PUBLIC_PACKAGING) && !defined(LIBC_COMPILER_IS_MSVC)
|
|
45
46
|
#ifndef __APPLE__
|
|
46
47
|
#define LLVM_LIBC_FUNCTION_IMPL(type, name, arglist) \
|
|
47
48
|
LLVM_LIBC_ATTR(name) \
|
|
48
49
|
LLVM_LIBC_FUNCTION_ATTR decltype(LIBC_NAMESPACE::name) \
|
|
49
|
-
__##name##_impl__
|
|
50
|
+
__##name##_impl__ asm(#name); \
|
|
50
51
|
decltype(LIBC_NAMESPACE::name) name [[gnu::alias(#name)]]; \
|
|
51
52
|
type __##name##_impl__ arglist
|
|
52
53
|
#else // __APPLE__
|