@zigc/lib 0.17.0-dev.135 → 0.17.0-dev.215

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.
Files changed (673) hide show
  1. package/c/stdlib.zig +32 -22
  2. package/compiler/aro/aro/Compilation.zig +0 -3
  3. package/compiler/translate-c/ast.zig +5 -2
  4. package/compiler_rt/arm.zig +3 -3
  5. package/compiler_rt/trunctfhf2.zig +3 -0
  6. package/compiler_rt.zig +1 -22
  7. package/docs/wasm/markdown/Parser.zig +5 -9
  8. package/include/__clang_spirv_builtins.h +12 -12
  9. package/include/__float_float.h +176 -0
  10. package/include/__float_header_macro.h +12 -0
  11. package/include/__float_infinity_nan.h +20 -0
  12. package/include/amo.h +131 -0
  13. package/include/amxavx512intrin.h +215 -1
  14. package/include/amxintrin.h +0 -2
  15. package/include/arm_acle.h +37 -27
  16. package/include/arm_neon.h +218 -82
  17. package/include/arm_sme.h +8 -8
  18. package/include/arm_sve.h +4162 -3782
  19. package/include/avx10_2_512bf16intrin.h +19 -12
  20. package/include/avx10_2_512convertintrin.h +1 -1
  21. package/include/avx10_2_512niintrin.h +31 -31
  22. package/include/avx10_2_512satcvtdsintrin.h +1 -1
  23. package/include/avx10_2bf16intrin.h +54 -45
  24. package/include/avx10_2convertintrin.h +2 -2
  25. package/include/avx10_2copyintrin.h +1 -1
  26. package/include/avx10_2niintrin.h +14 -14
  27. package/include/avx10_2satcvtdsintrin.h +2 -2
  28. package/include/avx2intrin.h +275 -377
  29. package/include/avx512bf16intrin.h +25 -16
  30. package/include/avx512bitalgintrin.h +19 -30
  31. package/include/avx512bwintrin.h +386 -505
  32. package/include/avx512cdintrin.h +42 -55
  33. package/include/avx512dqintrin.h +132 -161
  34. package/include/avx512fintrin.h +1015 -1424
  35. package/include/avx512fp16intrin.h +112 -110
  36. package/include/avx512ifmaintrin.h +32 -34
  37. package/include/avx512ifmavlintrin.h +73 -46
  38. package/include/avx512vbmi2intrin.h +43 -32
  39. package/include/avx512vbmiintrin.h +19 -27
  40. package/include/avx512vbmivlintrin.h +35 -49
  41. package/include/avx512vlbf16intrin.h +32 -22
  42. package/include/avx512vlbitalgintrin.h +37 -53
  43. package/include/avx512vlbwintrin.h +470 -573
  44. package/include/avx512vlcdintrin.h +74 -102
  45. package/include/avx512vldqintrin.h +110 -127
  46. package/include/avx512vlfp16intrin.h +130 -111
  47. package/include/avx512vlintrin.h +945 -1299
  48. package/include/avx512vlvbmi2intrin.h +78 -63
  49. package/include/avx512vlvnniintrin.h +21 -18
  50. package/include/avx512vlvp2intersectintrin.h +2 -2
  51. package/include/avx512vnniintrin.h +10 -10
  52. package/include/avx512vp2intersectintrin.h +1 -2
  53. package/include/avx512vpopcntdqintrin.h +8 -10
  54. package/include/avx512vpopcntdqvlintrin.h +17 -15
  55. package/include/avxifmaintrin.h +16 -0
  56. package/include/avxintrin.h +165 -241
  57. package/include/avxvnniint16intrin.h +118 -99
  58. package/include/avxvnniint8intrin.h +56 -32
  59. package/include/avxvnniintrin.h +16 -8
  60. package/include/cpuid.h +101 -4
  61. package/include/emmintrin.h +168 -168
  62. package/include/f16cintrin.h +23 -9
  63. package/include/float.h +16 -155
  64. package/include/fma4intrin.h +98 -96
  65. package/include/fmaintrin.h +96 -66
  66. package/include/gfniintrin.h +21 -16
  67. package/include/hexagon_types.h +23 -20
  68. package/include/hvx_hexagon_protos.h +649 -860
  69. package/include/immintrin.h +0 -12
  70. package/include/intrin.h +4 -0
  71. package/include/lasxintrin.h +113 -0
  72. package/include/llvm_libc_wrappers/assert.h +3 -5
  73. package/include/llvm_libc_wrappers/ctype.h +3 -115
  74. package/include/llvm_libc_wrappers/inttypes.h +3 -5
  75. package/include/llvm_libc_wrappers/stdio.h +10 -38
  76. package/include/llvm_libc_wrappers/stdlib.h +3 -24
  77. package/include/llvm_libc_wrappers/string.h +2 -70
  78. package/include/llvm_libc_wrappers/time.h +4 -10
  79. package/include/mmintrin.h +188 -257
  80. package/include/module.modulemap +23 -4
  81. package/include/movrs_avx10_2_512intrin.h +2 -2
  82. package/include/movrs_avx10_2intrin.h +4 -4
  83. package/include/pmmintrin.h +12 -24
  84. package/include/ptrauth.h +16 -2
  85. package/include/riscv_mips.h +34 -0
  86. package/include/riscv_nds.h +89 -0
  87. package/include/sifive_vector.h +58 -2
  88. package/include/sm4evexintrin.h +2 -2
  89. package/include/smmintrin.h +77 -59
  90. package/include/spirvintrin.h +194 -0
  91. package/include/stddefer.h +19 -0
  92. package/include/tmmintrin.h +116 -147
  93. package/include/vaesintrin.h +1 -2
  94. package/include/xmmintrin.h +44 -70
  95. package/include/xopintrin.h +20 -10
  96. package/libcxx/include/__algorithm/all_of.h +11 -5
  97. package/libcxx/include/__algorithm/comp.h +4 -0
  98. package/libcxx/include/__algorithm/copy.h +28 -147
  99. package/libcxx/include/__algorithm/copy_backward.h +9 -24
  100. package/libcxx/include/__algorithm/copy_n.h +50 -16
  101. package/libcxx/include/__algorithm/count.h +2 -2
  102. package/libcxx/include/__algorithm/equal.h +43 -55
  103. package/libcxx/include/__algorithm/fill.h +26 -8
  104. package/libcxx/include/__algorithm/fill_n.h +32 -46
  105. package/libcxx/include/__algorithm/find.h +96 -39
  106. package/libcxx/include/__algorithm/find_end.h +105 -0
  107. package/libcxx/include/__algorithm/for_each.h +18 -24
  108. package/libcxx/include/__algorithm/for_each_n.h +20 -47
  109. package/libcxx/include/__algorithm/for_each_n_segment.h +1 -1
  110. package/libcxx/include/__algorithm/for_each_segment.h +26 -0
  111. package/libcxx/include/__algorithm/generate.h +4 -2
  112. package/libcxx/include/__algorithm/generate_n.h +19 -6
  113. package/libcxx/include/__algorithm/is_permutation.h +4 -4
  114. package/libcxx/include/__algorithm/iterator_operations.h +3 -0
  115. package/libcxx/include/__algorithm/lexicographical_compare.h +2 -2
  116. package/libcxx/include/__algorithm/lexicographical_compare_three_way.h +6 -6
  117. package/libcxx/include/__algorithm/make_heap.h +16 -4
  118. package/libcxx/include/__algorithm/mismatch.h +2 -2
  119. package/libcxx/include/__algorithm/move.h +8 -19
  120. package/libcxx/include/__algorithm/move_backward.h +9 -24
  121. package/libcxx/include/__algorithm/none_of.h +4 -4
  122. package/libcxx/include/__algorithm/partial_sort.h +1 -1
  123. package/libcxx/include/__algorithm/partial_sort_copy.h +1 -1
  124. package/libcxx/include/__algorithm/pstl.h +9 -9
  125. package/libcxx/include/__algorithm/radix_sort.h +27 -25
  126. package/libcxx/include/__algorithm/ranges_copy_n.h +3 -26
  127. package/libcxx/include/__algorithm/ranges_equal.h +17 -26
  128. package/libcxx/include/__algorithm/ranges_fill.h +7 -6
  129. package/libcxx/include/__algorithm/ranges_for_each.h +9 -1
  130. package/libcxx/include/__algorithm/ranges_generate_n.h +2 -6
  131. package/libcxx/include/__algorithm/ranges_search_n.h +2 -2
  132. package/libcxx/include/__algorithm/rotate.h +27 -44
  133. package/libcxx/include/__algorithm/search_n.h +49 -37
  134. package/libcxx/include/__algorithm/sift_down.h +19 -18
  135. package/libcxx/include/__algorithm/simd_utils.h +33 -4
  136. package/libcxx/include/__algorithm/specialized_algorithms.h +54 -0
  137. package/libcxx/include/__algorithm/stable_sort.h +1 -1
  138. package/libcxx/include/__assertion_handler +31 -4
  139. package/libcxx/include/__atomic/atomic.h +36 -60
  140. package/libcxx/include/__atomic/atomic_flag.h +19 -37
  141. package/libcxx/include/__atomic/atomic_ref.h +29 -12
  142. package/libcxx/include/__atomic/atomic_sync.h +127 -55
  143. package/libcxx/include/__atomic/atomic_sync_timed.h +144 -0
  144. package/libcxx/include/__atomic/atomic_waitable_traits.h +103 -0
  145. package/libcxx/include/__atomic/contention_t.h +27 -3
  146. package/libcxx/include/__atomic/floating_point_helper.h +55 -0
  147. package/libcxx/include/__bit/countl.h +1 -2
  148. package/libcxx/include/__bit/countr.h +1 -2
  149. package/libcxx/include/__bit/has_single_bit.h +1 -1
  150. package/libcxx/include/__bit/popcount.h +0 -1
  151. package/libcxx/include/__bit/rotate.h +15 -26
  152. package/libcxx/include/__bit_reference +207 -18
  153. package/libcxx/include/__charconv/from_chars_integral.h +1 -1
  154. package/libcxx/include/__charconv/from_chars_result.h +1 -1
  155. package/libcxx/include/__charconv/to_chars_integral.h +1 -0
  156. package/libcxx/include/__charconv/to_chars_result.h +1 -1
  157. package/libcxx/include/__charconv/traits.h +3 -24
  158. package/libcxx/include/__chrono/day.h +11 -0
  159. package/libcxx/include/__chrono/duration.h +58 -33
  160. package/libcxx/include/__chrono/file_clock.h +4 -2
  161. package/libcxx/include/__chrono/is_clock.h +72 -0
  162. package/libcxx/include/__chrono/leap_second.h +13 -0
  163. package/libcxx/include/__chrono/month.h +13 -0
  164. package/libcxx/include/__chrono/month_weekday.h +22 -0
  165. package/libcxx/include/__chrono/monthday.h +20 -0
  166. package/libcxx/include/__chrono/steady_clock.h +1 -1
  167. package/libcxx/include/__chrono/system_clock.h +3 -3
  168. package/libcxx/include/__chrono/time_point.h +37 -13
  169. package/libcxx/include/__chrono/weekday.h +25 -0
  170. package/libcxx/include/__chrono/year.h +11 -0
  171. package/libcxx/include/__chrono/year_month.h +13 -0
  172. package/libcxx/include/__chrono/year_month_day.h +23 -0
  173. package/libcxx/include/__chrono/year_month_weekday.h +26 -0
  174. package/libcxx/include/__chrono/zoned_time.h +16 -0
  175. package/libcxx/include/__compare/is_eq.h +6 -6
  176. package/libcxx/include/__compare/strong_order.h +12 -30
  177. package/libcxx/include/__compare/three_way_comparable.h +2 -2
  178. package/libcxx/include/__concepts/comparison_common_type.h +40 -0
  179. package/libcxx/include/__concepts/equality_comparable.h +2 -1
  180. package/libcxx/include/__condition_variable/condition_variable.h +1 -1
  181. package/libcxx/include/__config +63 -280
  182. package/libcxx/include/__configuration/abi.h +14 -24
  183. package/libcxx/include/__configuration/availability.h +65 -118
  184. package/libcxx/include/__configuration/compiler.h +6 -6
  185. package/libcxx/include/__configuration/experimental.h +38 -0
  186. package/libcxx/include/__configuration/hardening.h +215 -0
  187. package/libcxx/include/__configuration/language.h +3 -0
  188. package/libcxx/include/__configuration/platform.h +9 -16
  189. package/libcxx/include/__coroutine/coroutine_handle.h +9 -9
  190. package/libcxx/include/__coroutine/noop_coroutine_handle.h +11 -13
  191. package/libcxx/include/__debug_utils/strict_weak_ordering_check.h +1 -1
  192. package/libcxx/include/__exception/exception.h +6 -4
  193. package/libcxx/include/__exception/exception_ptr.h +27 -5
  194. package/libcxx/include/__exception/nested_exception.h +2 -2
  195. package/libcxx/include/__exception/operations.h +5 -5
  196. package/libcxx/include/__expected/bad_expected_access.h +8 -6
  197. package/libcxx/include/__expected/expected.h +62 -64
  198. package/libcxx/include/__expected/unexpected.h +4 -4
  199. package/libcxx/include/__filesystem/copy_options.h +4 -4
  200. package/libcxx/include/__filesystem/directory_entry.h +37 -33
  201. package/libcxx/include/__filesystem/directory_iterator.h +9 -11
  202. package/libcxx/include/__filesystem/directory_options.h +7 -4
  203. package/libcxx/include/__filesystem/file_status.h +3 -3
  204. package/libcxx/include/__filesystem/filesystem_error.h +9 -10
  205. package/libcxx/include/__filesystem/operations.h +97 -66
  206. package/libcxx/include/__filesystem/path.h +68 -64
  207. package/libcxx/include/__filesystem/path_iterator.h +1 -3
  208. package/libcxx/include/__filesystem/perm_options.h +4 -4
  209. package/libcxx/include/__filesystem/perms.h +4 -4
  210. package/libcxx/include/__filesystem/recursive_directory_iterator.h +9 -14
  211. package/libcxx/include/__filesystem/space_info.h +1 -1
  212. package/libcxx/include/__filesystem/u8path.h +12 -14
  213. package/libcxx/include/__flat_map/flat_map.h +88 -71
  214. package/libcxx/include/__flat_map/flat_multimap.h +251 -172
  215. package/libcxx/include/__flat_map/key_value_iterator.h +0 -1
  216. package/libcxx/include/__flat_map/utils.h +1 -0
  217. package/libcxx/include/__flat_set/flat_multiset.h +211 -143
  218. package/libcxx/include/__flat_set/flat_set.h +86 -68
  219. package/libcxx/include/__format/concepts.h +0 -14
  220. package/libcxx/include/__format/extended_grapheme_cluster_table.h +3 -2
  221. package/libcxx/include/__format/fmt_pair_like.h +42 -0
  222. package/libcxx/include/__format/format_arg.h +7 -10
  223. package/libcxx/include/__format/format_args.h +1 -1
  224. package/libcxx/include/__format/format_context.h +5 -5
  225. package/libcxx/include/__format/format_parse_context.h +2 -2
  226. package/libcxx/include/__format/formatter_output.h +30 -34
  227. package/libcxx/include/__format/indic_conjunct_break_table.h +3 -2
  228. package/libcxx/include/__format/range_default_formatter.h +2 -41
  229. package/libcxx/include/__format/range_format.h +71 -0
  230. package/libcxx/include/__format/range_formatter.h +1 -0
  231. package/libcxx/include/__format/width_estimation_table.h +4 -2
  232. package/libcxx/include/__functional/bind.h +10 -15
  233. package/libcxx/include/__functional/bind_back.h +1 -1
  234. package/libcxx/include/__functional/bind_front.h +1 -1
  235. package/libcxx/include/__functional/function.h +57 -75
  236. package/libcxx/include/__functional/hash.h +1 -10
  237. package/libcxx/include/__functional/identity.h +1 -1
  238. package/libcxx/include/__functional/is_transparent.h +8 -0
  239. package/libcxx/include/__functional/mem_fn.h +2 -1
  240. package/libcxx/include/__functional/operations.h +18 -0
  241. package/libcxx/include/__functional/ranges_operations.h +7 -0
  242. package/libcxx/include/__functional/reference_wrapper.h +7 -5
  243. package/libcxx/include/__functional/weak_result_type.h +14 -28
  244. package/libcxx/include/__fwd/ios.h +1 -1
  245. package/libcxx/include/__fwd/tuple.h +14 -0
  246. package/libcxx/include/__hash_table +371 -357
  247. package/libcxx/include/__ios/fpos.h +4 -4
  248. package/libcxx/include/__iterator/back_insert_iterator.h +1 -7
  249. package/libcxx/include/__iterator/bounded_iter.h +7 -8
  250. package/libcxx/include/__iterator/concepts.h +6 -9
  251. package/libcxx/include/__iterator/cpp17_iterator_concepts.h +13 -12
  252. package/libcxx/include/__iterator/distance.h +40 -18
  253. package/libcxx/include/__iterator/front_insert_iterator.h +1 -7
  254. package/libcxx/include/__iterator/insert_iterator.h +1 -7
  255. package/libcxx/include/__iterator/istream_iterator.h +6 -7
  256. package/libcxx/include/__iterator/istreambuf_iterator.h +6 -7
  257. package/libcxx/include/__iterator/iter_move.h +1 -1
  258. package/libcxx/include/__iterator/iterator.h +13 -0
  259. package/libcxx/include/__iterator/iterator_traits.h +13 -14
  260. package/libcxx/include/__iterator/ostream_iterator.h +1 -7
  261. package/libcxx/include/__iterator/ostreambuf_iterator.h +1 -7
  262. package/libcxx/include/__iterator/reverse_iterator.h +8 -13
  263. package/libcxx/include/__iterator/segmented_iterator.h +3 -8
  264. package/libcxx/include/__iterator/static_bounded_iter.h +3 -3
  265. package/libcxx/include/__iterator/wrap_iter.h +8 -6
  266. package/libcxx/include/__locale +3 -10
  267. package/libcxx/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h +0 -10
  268. package/libcxx/include/__locale_dir/locale_base_api.h +5 -28
  269. package/libcxx/include/__locale_dir/messages.h +1 -1
  270. package/libcxx/include/__locale_dir/money.h +2 -2
  271. package/libcxx/include/__locale_dir/num.h +190 -243
  272. package/libcxx/include/__locale_dir/pad_and_output.h +5 -6
  273. package/libcxx/include/__locale_dir/support/bsd_like.h +0 -20
  274. package/libcxx/include/__locale_dir/support/fuchsia.h +0 -7
  275. package/libcxx/include/__locale_dir/support/linux.h +0 -37
  276. package/libcxx/include/__locale_dir/support/netbsd.h +0 -2
  277. package/libcxx/include/__locale_dir/support/newlib.h +243 -0
  278. package/libcxx/include/__locale_dir/support/no_locale/characters.h +0 -4
  279. package/libcxx/include/__locale_dir/support/no_locale/strtonum.h +0 -9
  280. package/libcxx/include/__locale_dir/support/windows.h +0 -29
  281. package/libcxx/include/__locale_dir/time.h +3 -7
  282. package/libcxx/include/__math/hypot.h +1 -1
  283. package/libcxx/include/__math/logarithms.h +1 -1
  284. package/libcxx/include/__math/traits.h +80 -11
  285. package/libcxx/include/__mdspan/extents.h +7 -4
  286. package/libcxx/include/__mdspan/layout_stride.h +4 -5
  287. package/libcxx/include/__mdspan/mdspan.h +29 -23
  288. package/libcxx/include/__memory/addressof.h +7 -5
  289. package/libcxx/include/__memory/align.h +18 -1
  290. package/libcxx/include/__memory/allocate_at_least.h +15 -10
  291. package/libcxx/include/__memory/allocator.h +14 -26
  292. package/libcxx/include/__memory/allocator_traits.h +6 -4
  293. package/libcxx/include/__memory/compressed_pair.h +15 -9
  294. package/libcxx/include/__memory/construct_at.h +12 -23
  295. package/libcxx/include/__memory/inout_ptr.h +1 -1
  296. package/libcxx/include/__memory/is_sufficiently_aligned.h +1 -1
  297. package/libcxx/include/__memory/out_ptr.h +1 -1
  298. package/libcxx/include/__memory/pointer_traits.h +1 -1
  299. package/libcxx/include/__memory/raw_storage_iterator.h +3 -9
  300. package/libcxx/include/__memory/shared_count.h +9 -30
  301. package/libcxx/include/__memory/shared_ptr.h +100 -145
  302. package/libcxx/include/__memory/temp_value.h +1 -2
  303. package/libcxx/include/__memory/uninitialized_algorithms.h +44 -115
  304. package/libcxx/include/__memory/unique_ptr.h +14 -16
  305. package/libcxx/include/__memory/uses_allocator_construction.h +1 -0
  306. package/libcxx/include/__memory_resource/memory_resource.h +4 -2
  307. package/libcxx/include/__memory_resource/monotonic_buffer_resource.h +1 -1
  308. package/libcxx/include/__memory_resource/polymorphic_allocator.h +13 -8
  309. package/libcxx/include/__memory_resource/pool_options.h +1 -1
  310. package/libcxx/include/__memory_resource/synchronized_pool_resource.h +4 -2
  311. package/libcxx/include/__memory_resource/unsynchronized_pool_resource.h +1 -1
  312. package/libcxx/include/__mutex/mutex.h +2 -2
  313. package/libcxx/include/__mutex/once_flag.h +14 -11
  314. package/libcxx/include/__mutex/tag_types.h +3 -3
  315. package/libcxx/include/__mutex/unique_lock.h +8 -7
  316. package/libcxx/include/__new/align_val_t.h +6 -0
  317. package/libcxx/include/__new/allocate.h +1 -2
  318. package/libcxx/include/__new/exceptions.h +8 -2
  319. package/libcxx/include/__new/global_new_delete.h +4 -11
  320. package/libcxx/include/__new/interference_size.h +0 -4
  321. package/libcxx/include/__new/launder.h +3 -5
  322. package/libcxx/include/__new/nothrow_t.h +1 -1
  323. package/libcxx/include/__numeric/gcd_lcm.h +24 -34
  324. package/libcxx/include/__numeric/midpoint.h +9 -14
  325. package/libcxx/include/__numeric/pstl.h +2 -2
  326. package/libcxx/include/__numeric/saturation_arithmetic.h +13 -5
  327. package/libcxx/include/__ostream/basic_ostream.h +8 -8
  328. package/libcxx/include/__pstl/backends/default.h +14 -14
  329. package/libcxx/include/__pstl/backends/libdispatch.h +2 -2
  330. package/libcxx/include/__pstl/cpu_algos/find_if.h +1 -1
  331. package/libcxx/include/__pstl/cpu_algos/transform.h +5 -6
  332. package/libcxx/include/__pstl/cpu_algos/transform_reduce.h +5 -4
  333. package/libcxx/include/__random/binomial_distribution.h +10 -4
  334. package/libcxx/include/__random/mersenne_twister_engine.h +50 -154
  335. package/libcxx/include/__random/piecewise_constant_distribution.h +3 -2
  336. package/libcxx/include/__random/piecewise_linear_distribution.h +3 -2
  337. package/libcxx/include/__ranges/adjacent_transform_view.h +406 -0
  338. package/libcxx/include/__ranges/adjacent_view.h +419 -0
  339. package/libcxx/include/__ranges/as_rvalue_view.h +9 -9
  340. package/libcxx/include/__ranges/chunk_by_view.h +6 -6
  341. package/libcxx/include/__ranges/common_view.h +7 -7
  342. package/libcxx/include/__ranges/drop_view.h +8 -8
  343. package/libcxx/include/__ranges/drop_while_view.h +5 -5
  344. package/libcxx/include/__ranges/elements_of.h +49 -0
  345. package/libcxx/include/__ranges/empty_view.h +5 -5
  346. package/libcxx/include/__ranges/filter_view.h +10 -10
  347. package/libcxx/include/__ranges/iota_view.h +41 -22
  348. package/libcxx/include/__ranges/owning_view.h +15 -15
  349. package/libcxx/include/__ranges/ref_view.h +6 -6
  350. package/libcxx/include/__ranges/repeat_view.h +17 -10
  351. package/libcxx/include/__ranges/single_view.h +8 -8
  352. package/libcxx/include/__ranges/take_view.h +9 -9
  353. package/libcxx/include/__ranges/transform_view.h +1 -2
  354. package/libcxx/include/__ranges/view_interface.h +10 -10
  355. package/libcxx/include/__ranges/zip_transform_view.h +357 -0
  356. package/libcxx/include/__ranges/zip_view.h +20 -20
  357. package/libcxx/include/__split_buffer +612 -240
  358. package/libcxx/include/__stop_token/atomic_unique_lock.h +1 -1
  359. package/libcxx/include/__stop_token/stop_callback.h +2 -2
  360. package/libcxx/include/__stop_token/stop_source.h +1 -1
  361. package/libcxx/include/__stop_token/stop_state.h +4 -4
  362. package/libcxx/include/__stop_token/stop_token.h +1 -1
  363. package/libcxx/include/__string/char_traits.h +51 -31
  364. package/libcxx/include/__string/constexpr_c_functions.h +5 -5
  365. package/libcxx/include/__support/xlocale/__strtonum_fallback.h +0 -8
  366. package/libcxx/include/__system_error/error_category.h +8 -8
  367. package/libcxx/include/__system_error/error_code.h +5 -5
  368. package/libcxx/include/__system_error/error_condition.h +4 -4
  369. package/libcxx/include/__system_error/system_error.h +1 -1
  370. package/libcxx/include/__thread/id.h +1 -1
  371. package/libcxx/include/__thread/jthread.h +1 -1
  372. package/libcxx/include/__thread/poll_with_backoff.h +27 -8
  373. package/libcxx/include/__thread/support/c11.h +8 -8
  374. package/libcxx/include/__thread/support/pthread.h +8 -8
  375. package/libcxx/include/__thread/support/windows.h +8 -8
  376. package/libcxx/include/__thread/thread.h +13 -8
  377. package/libcxx/include/__thread/timed_backoff_policy.h +3 -2
  378. package/libcxx/include/__tree +849 -701
  379. package/libcxx/include/__tuple/sfinae_helpers.h +1 -44
  380. package/libcxx/include/__tuple/tuple_element.h +0 -12
  381. package/libcxx/include/__tuple/tuple_size.h +0 -4
  382. package/libcxx/include/__tuple/tuple_transform.h +45 -0
  383. package/libcxx/include/__type_traits/aligned_storage.h +13 -40
  384. package/libcxx/include/__type_traits/desugars_to.h +4 -0
  385. package/libcxx/include/__type_traits/invoke.h +8 -0
  386. package/libcxx/include/__type_traits/is_allocator.h +6 -7
  387. package/libcxx/include/__type_traits/is_array.h +26 -0
  388. package/libcxx/include/__type_traits/is_equality_comparable.h +16 -21
  389. package/libcxx/include/__type_traits/is_final.h +1 -1
  390. package/libcxx/include/__type_traits/is_floating_point.h +7 -6
  391. package/libcxx/include/__type_traits/is_generic_transparent_comparator.h +30 -0
  392. package/libcxx/include/__type_traits/is_specialization.h +2 -6
  393. package/libcxx/include/__type_traits/is_within_lifetime.h +29 -0
  394. package/libcxx/include/__type_traits/make_transparent.h +52 -0
  395. package/libcxx/include/__type_traits/reference_constructs_from_temporary.h +1 -7
  396. package/libcxx/include/__type_traits/reference_converts_from_temporary.h +1 -1
  397. package/libcxx/include/__utility/cmp.h +19 -7
  398. package/libcxx/include/__utility/default_three_way_comparator.h +70 -0
  399. package/libcxx/include/__utility/in_place.h +1 -1
  400. package/libcxx/include/__utility/integer_sequence.h +56 -41
  401. package/libcxx/include/__utility/lazy_synth_three_way_comparator.h +120 -0
  402. package/libcxx/include/__utility/pair.h +22 -25
  403. package/libcxx/include/__utility/scope_guard.h +2 -0
  404. package/libcxx/include/__utility/try_key_extraction.h +114 -0
  405. package/libcxx/include/__vector/vector.h +187 -160
  406. package/libcxx/include/__vector/vector_bool.h +76 -83
  407. package/libcxx/include/any +118 -155
  408. package/libcxx/include/array +88 -56
  409. package/libcxx/include/atomic +2 -0
  410. package/libcxx/include/barrier +20 -24
  411. package/libcxx/include/bitset +49 -30
  412. package/libcxx/include/ccomplex +3 -11
  413. package/libcxx/include/chrono +47 -0
  414. package/libcxx/include/ciso646 +3 -6
  415. package/libcxx/include/complex +77 -65
  416. package/libcxx/include/complex.h +10 -10
  417. package/libcxx/include/condition_variable +3 -3
  418. package/libcxx/include/cstdalign +3 -10
  419. package/libcxx/include/cstdbool +3 -10
  420. package/libcxx/include/ctgmath +2 -11
  421. package/libcxx/include/ctype.h +24 -24
  422. package/libcxx/include/cwchar +2 -2
  423. package/libcxx/include/deque +109 -225
  424. package/libcxx/include/errno.h +269 -269
  425. package/libcxx/include/exception +4 -1
  426. package/libcxx/include/ext/hash_map +7 -48
  427. package/libcxx/include/ext/hash_set +2 -8
  428. package/libcxx/include/fenv.h +43 -43
  429. package/libcxx/include/flat_map +663 -11
  430. package/libcxx/include/flat_set +543 -8
  431. package/libcxx/include/float.h +16 -16
  432. package/libcxx/include/forward_list +33 -53
  433. package/libcxx/include/fstream +57 -42
  434. package/libcxx/include/future +41 -51
  435. package/libcxx/include/initializer_list +9 -3
  436. package/libcxx/include/inttypes.h +16 -16
  437. package/libcxx/include/ios +28 -28
  438. package/libcxx/include/istream +19 -13
  439. package/libcxx/include/iterator +10 -0
  440. package/libcxx/include/latch +7 -5
  441. package/libcxx/include/limits +4 -4
  442. package/libcxx/include/list +61 -79
  443. package/libcxx/include/map +386 -274
  444. package/libcxx/include/math.h +19 -0
  445. package/libcxx/include/mdspan +1 -5
  446. package/libcxx/include/mutex +29 -19
  447. package/libcxx/include/optional +644 -149
  448. package/libcxx/include/print +9 -5
  449. package/libcxx/include/queue +39 -37
  450. package/libcxx/include/ranges +48 -0
  451. package/libcxx/include/regex +33 -31
  452. package/libcxx/include/scoped_allocator +16 -11
  453. package/libcxx/include/semaphore +15 -18
  454. package/libcxx/include/set +220 -192
  455. package/libcxx/include/shared_mutex +3 -8
  456. package/libcxx/include/span +53 -37
  457. package/libcxx/include/sstream +34 -28
  458. package/libcxx/include/stack +13 -15
  459. package/libcxx/include/stddef.h +10 -10
  460. package/libcxx/include/stdexcept +2 -2
  461. package/libcxx/include/stdio.h +20 -21
  462. package/libcxx/include/streambuf +59 -19
  463. package/libcxx/include/string +574 -573
  464. package/libcxx/include/string_view +113 -89
  465. package/libcxx/include/strstream +10 -10
  466. package/libcxx/include/syncstream +4 -4
  467. package/libcxx/include/tgmath.h +12 -12
  468. package/libcxx/include/tuple +242 -212
  469. package/libcxx/include/type_traits +8 -2
  470. package/libcxx/include/typeindex +5 -3
  471. package/libcxx/include/typeinfo +92 -89
  472. package/libcxx/include/unordered_map +179 -304
  473. package/libcxx/include/unordered_set +168 -195
  474. package/libcxx/include/utility +12 -0
  475. package/libcxx/include/valarray +106 -161
  476. package/libcxx/include/variant +25 -33
  477. package/libcxx/include/version +41 -24
  478. package/libcxx/include/wctype.h +29 -29
  479. package/libcxx/src/any.cpp +4 -0
  480. package/libcxx/src/atomic.cpp +365 -80
  481. package/libcxx/src/barrier.cpp +4 -3
  482. package/libcxx/src/charconv.cpp +6 -3
  483. package/libcxx/src/condition_variable_destructor.cpp +1 -1
  484. package/libcxx/src/error_category.cpp +3 -1
  485. package/libcxx/src/exception.cpp +2 -10
  486. package/libcxx/src/experimental/time_zone.cpp +1 -1
  487. package/libcxx/src/experimental/tzdb.cpp +4 -1
  488. package/libcxx/src/filesystem/error.h +4 -22
  489. package/libcxx/src/filesystem/format_string.h +9 -18
  490. package/libcxx/src/filesystem/int128_builtins.cpp +2 -0
  491. package/libcxx/src/filesystem/operations.cpp +2 -9
  492. package/libcxx/src/filesystem/path.cpp +3 -1
  493. package/libcxx/src/include/aligned_alloc.h +65 -0
  494. package/libcxx/src/include/config_elast.h +1 -1
  495. package/libcxx/src/include/from_chars_floating_point.h +11 -7
  496. package/libcxx/src/include/overridable_function.h +8 -10
  497. package/libcxx/src/iostream.cpp +56 -37
  498. package/libcxx/src/locale.cpp +213 -196
  499. package/libcxx/src/memory.cpp +12 -14
  500. package/libcxx/src/mutex_destructor.cpp +1 -1
  501. package/libcxx/src/new.cpp +5 -5
  502. package/libcxx/src/optional.cpp +4 -0
  503. package/libcxx/src/print.cpp +9 -1
  504. package/libcxx/src/random.cpp +0 -26
  505. package/libcxx/src/string.cpp +10 -25
  506. package/libcxx/src/support/runtime/exception_fallback.ipp +2 -0
  507. package/libcxx/src/support/runtime/exception_glibcxx.ipp +3 -0
  508. package/libcxx/src/support/runtime/exception_libcxxabi.ipp +6 -2
  509. package/libcxx/src/support/runtime/exception_libcxxrt.ipp +2 -0
  510. package/libcxx/src/support/runtime/exception_msvc.ipp +2 -0
  511. package/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp +9 -10
  512. package/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp +2 -0
  513. package/libcxx/src/support/runtime/exception_pointer_msvc.ipp +1 -0
  514. package/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp +1 -0
  515. package/libcxx/src/support/win32/locale_win32.cpp +1 -1
  516. package/libcxx/src/system_error.cpp +2 -0
  517. package/libcxx/src/thread.cpp +1 -3
  518. package/libcxx/src/valarray.cpp +1 -2
  519. package/libcxx/src/vector.cpp +2 -2
  520. package/libcxxabi/include/__cxxabi_config.h +42 -23
  521. package/libcxxabi/src/cxa_exception.cpp +4 -2
  522. package/libcxxabi/src/cxa_exception.h +16 -14
  523. package/libcxxabi/src/cxa_personality.cpp +126 -9
  524. package/libcxxabi/src/cxa_thread_atexit.cpp +2 -1
  525. package/libcxxabi/src/demangle/DemangleConfig.h +4 -0
  526. package/libcxxabi/src/demangle/ItaniumDemangle.h +9 -6
  527. package/libcxxabi/src/demangle/Utility.h +21 -7
  528. package/libcxxabi/src/fallback_malloc.cpp +1 -1
  529. package/libcxxabi/src/private_typeinfo.cpp +6 -0
  530. package/libcxxabi/src/stdlib_new_delete.cpp +5 -5
  531. package/libtsan/LICENSE.TXT +311 -0
  532. package/libtsan/builtins/assembly.h +41 -8
  533. package/libtsan/interception/interception_win.cpp +4 -0
  534. package/libtsan/sanitizer_common/sanitizer_allocator_primary32.h +1 -0
  535. package/libtsan/sanitizer_common/sanitizer_allocator_primary64.h +18 -0
  536. package/libtsan/sanitizer_common/sanitizer_common.h +15 -2
  537. package/libtsan/sanitizer_common/sanitizer_common_interceptors.inc +30 -4
  538. package/libtsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +4 -0
  539. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S +2 -1
  540. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S +2 -0
  541. package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S +2 -0
  542. package/libtsan/sanitizer_common/sanitizer_common_syscalls.inc +18 -0
  543. package/libtsan/sanitizer_common/sanitizer_file.cpp +40 -12
  544. package/libtsan/sanitizer_common/sanitizer_file.h +3 -0
  545. package/libtsan/sanitizer_common/sanitizer_flags.inc +7 -0
  546. package/libtsan/sanitizer_common/sanitizer_fuchsia.cpp +30 -3
  547. package/libtsan/sanitizer_common/sanitizer_haiku.cpp +2 -2
  548. package/libtsan/sanitizer_common/sanitizer_internal_defs.h +1 -1
  549. package/libtsan/sanitizer_common/sanitizer_libc.cpp +8 -0
  550. package/libtsan/sanitizer_common/sanitizer_libc.h +1 -0
  551. package/libtsan/sanitizer_common/sanitizer_linux.cpp +15 -7
  552. package/libtsan/sanitizer_common/sanitizer_linux.h +3 -3
  553. package/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp +1 -0
  554. package/libtsan/sanitizer_common/sanitizer_mac.cpp +255 -104
  555. package/libtsan/sanitizer_common/sanitizer_mac.h +5 -0
  556. package/libtsan/sanitizer_common/sanitizer_netbsd.cpp +2 -2
  557. package/libtsan/sanitizer_common/sanitizer_platform.h +27 -1
  558. package/libtsan/sanitizer_common/sanitizer_platform_interceptors.h +5 -4
  559. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.cpp +15 -17
  560. package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.h +32 -6
  561. package/libtsan/sanitizer_common/sanitizer_posix.cpp +3 -12
  562. package/libtsan/sanitizer_common/sanitizer_posix.h +2 -1
  563. package/libtsan/sanitizer_common/sanitizer_posix_libcdep.cpp +19 -0
  564. package/libtsan/sanitizer_common/sanitizer_procmaps_mac.cpp +102 -37
  565. package/libtsan/sanitizer_common/sanitizer_redefine_builtins.h +1 -1
  566. package/libtsan/sanitizer_common/sanitizer_signal_interceptors.inc +40 -2
  567. package/libtsan/sanitizer_common/sanitizer_stoptheworld.h +1 -1
  568. package/libtsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp +83 -12
  569. package/libtsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp +3 -3
  570. package/libtsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp +7 -7
  571. package/libtsan/sanitizer_common/sanitizer_stoptheworld_win.cpp +2 -2
  572. package/libtsan/sanitizer_common/sanitizer_symbolizer_internal.h +5 -1
  573. package/libtsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp +11 -1
  574. package/libtsan/sanitizer_common/sanitizer_symbolizer_mac.cpp +86 -29
  575. package/libtsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp +27 -16
  576. package/libtsan/sanitizer_common/sanitizer_thread_registry.cpp +5 -4
  577. package/libtsan/sanitizer_common/sanitizer_thread_registry.h +4 -4
  578. package/libtsan/sanitizer_common/sanitizer_win.cpp +1 -3
  579. package/libtsan/tsan_debugging.cpp +2 -2
  580. package/libtsan/tsan_flags.cpp +37 -0
  581. package/libtsan/tsan_flags.h +8 -0
  582. package/libtsan/tsan_flags.inc +12 -0
  583. package/libtsan/tsan_interceptors.h +9 -1
  584. package/libtsan/tsan_interceptors_mac.cpp +19 -0
  585. package/libtsan/tsan_interceptors_posix.cpp +78 -32
  586. package/libtsan/tsan_interface.h +3 -3
  587. package/libtsan/tsan_interface_ann.cpp +23 -9
  588. package/libtsan/tsan_mman.cpp +18 -4
  589. package/libtsan/tsan_platform.h +44 -7
  590. package/libtsan/tsan_platform_linux.cpp +42 -14
  591. package/libtsan/tsan_platform_mac.cpp +16 -3
  592. package/libtsan/tsan_report.h +14 -1
  593. package/libtsan/tsan_rtl.cpp +14 -0
  594. package/libtsan/tsan_rtl.h +7 -2
  595. package/libtsan/tsan_rtl_aarch64.S +3 -5
  596. package/libtsan/tsan_rtl_access.cpp +8 -3
  597. package/libtsan/tsan_rtl_amd64.S +2 -0
  598. package/libtsan/tsan_rtl_mutex.cpp +94 -49
  599. package/libtsan/tsan_rtl_report.cpp +132 -65
  600. package/libtsan/tsan_rtl_thread.cpp +31 -9
  601. package/libtsan/tsan_symbolize.cpp +1 -1
  602. package/libtsan/tsan_symbolize.h +1 -1
  603. package/libtsan/tsan_trace.h +1 -1
  604. package/libunwind/include/__libunwind_config.h +11 -2
  605. package/libunwind/include/libunwind.h +117 -11
  606. package/libunwind/include/unwind_arm_ehabi.h +4 -1
  607. package/libunwind/src/AddressSpace.hpp +40 -19
  608. package/libunwind/src/CompactUnwinder.hpp +16 -5
  609. package/libunwind/src/DwarfInstructions.hpp +24 -13
  610. package/libunwind/src/DwarfParser.hpp +60 -22
  611. package/libunwind/src/EHHeaderParser.hpp +7 -4
  612. package/libunwind/src/Registers.hpp +226 -22
  613. package/libunwind/src/Unwind-seh.cpp +6 -7
  614. package/libunwind/src/Unwind-wasm.c +7 -7
  615. package/libunwind/src/UnwindCursor.hpp +167 -49
  616. package/libunwind/src/UnwindLevel1.c +46 -17
  617. package/libunwind/src/UnwindRegistersRestore.S +46 -5
  618. package/libunwind/src/UnwindRegistersSave.S +86 -2
  619. package/libunwind/src/assembly.h +5 -1
  620. package/libunwind/src/config.h +9 -0
  621. package/libunwind/src/gcc_personality_v0.c +79 -6
  622. package/libunwind/src/libunwind.cpp +104 -4
  623. package/libunwind/src/libunwind_ext.h +7 -1
  624. package/libunwind/src/shadow_stack_unwind.h +2 -2
  625. package/lldb/pretty_printers.py +948 -0
  626. package/package.json +1 -1
  627. package/std/Build/Step/Compile.zig +18 -19
  628. package/std/Build/Step/Run.zig +13 -6
  629. package/std/Build/Step.zig +0 -3
  630. package/std/Io/Threaded.zig +3 -0
  631. package/std/Target/aarch64.zig +620 -77
  632. package/std/Target/amdgcn.zig +421 -21
  633. package/std/Target/arm.zig +40 -6
  634. package/std/Target/bpf.zig +6 -0
  635. package/std/Target/hexagon.zig +41 -6
  636. package/std/Target/loongarch.zig +18 -0
  637. package/std/Target/mips.zig +6 -0
  638. package/std/Target/nvptx.zig +58 -35
  639. package/std/Target/powerpc.zig +27 -19
  640. package/std/Target/riscv.zig +415 -177
  641. package/std/Target/sparc.zig +17 -0
  642. package/std/Target/wasm.zig +7 -0
  643. package/std/Target/x86.zig +200 -31
  644. package/std/Target/xtensa.zig +65 -0
  645. package/std/Target.zig +11 -2
  646. package/std/c.zig +7 -0
  647. package/std/debug/Dwarf.zig +14 -11
  648. package/std/debug/Pdb.zig +24 -16
  649. package/std/hash/xxhash.zig +0 -6
  650. package/std/math/log10.zig +0 -2
  651. package/std/math/modf.zig +0 -1
  652. package/std/mem.zig +1 -2
  653. package/std/os/linux/x86.zig +2 -2
  654. package/std/os/windows.zig +130 -1
  655. package/std/simd.zig +4 -21
  656. package/std/start.zig +4 -3
  657. package/std/zig/Ast.zig +5 -7
  658. package/std/zig/AstGen.zig +20 -14
  659. package/std/zig/ErrorBundle.zig +6 -2
  660. package/std/zig/ZonGen.zig +13 -21
  661. package/std/zig/llvm/Builder.zig +2 -2
  662. package/std/zig/system/arm.zig +56 -2
  663. package/std/zig/system/windows.zig +34 -1
  664. package/std/zig/system/x86.zig +60 -16
  665. package/std/zig/system.zig +0 -10
  666. package/include/amxbf16transposeintrin.h +0 -94
  667. package/include/amxcomplextransposeintrin.h +0 -303
  668. package/include/amxfp16transposeintrin.h +0 -94
  669. package/include/amxmovrstransposeintrin.h +0 -200
  670. package/include/amxtf32transposeintrin.h +0 -105
  671. package/include/amxtransposeintrin.h +0 -248
  672. package/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
  673. package/std/Build/Step/CheckObject.zig +0 -2764
@@ -16,7 +16,6 @@
16
16
 
17
17
  #include <mmintrin.h>
18
18
 
19
- typedef int __v4si __attribute__((__vector_size__(16)));
20
19
  typedef float __v4sf __attribute__((__vector_size__(16)));
21
20
  typedef float __m128 __attribute__((__vector_size__(16), __aligned__(16)));
22
21
 
@@ -24,6 +23,8 @@ typedef float __m128_u __attribute__((__vector_size__(16), __aligned__(1)));
24
23
 
25
24
  /* Unsigned types */
26
25
  typedef unsigned int __v4su __attribute__((__vector_size__(16)));
26
+ typedef unsigned short __v8hu __attribute__((__vector_size__(16)));
27
+ typedef unsigned char __v16qu __attribute__((__vector_size__(16)));
27
28
 
28
29
  /* This header should only be included in a hosted environment as it depends on
29
30
  * a standard library to provide allocation routines. */
@@ -32,21 +33,12 @@ typedef unsigned int __v4su __attribute__((__vector_size__(16)));
32
33
  #endif
33
34
 
34
35
  /* Define the default attributes for the functions in this file. */
35
- #if defined(__EVEX512__) && !defined(__AVX10_1_512__)
36
- #define __DEFAULT_FN_ATTRS \
37
- __attribute__((__always_inline__, __nodebug__, __target__("sse,no-evex512"), \
38
- __min_vector_width__(128)))
39
- #define __DEFAULT_FN_ATTRS_SSE2 \
40
- __attribute__((__always_inline__, __nodebug__, \
41
- __target__("sse2,no-evex512"), __min_vector_width__(128)))
42
- #else
43
36
  #define __DEFAULT_FN_ATTRS \
44
37
  __attribute__((__always_inline__, __nodebug__, __target__("sse"), \
45
38
  __min_vector_width__(128)))
46
39
  #define __DEFAULT_FN_ATTRS_SSE2 \
47
40
  __attribute__((__always_inline__, __nodebug__, __target__("sse2"), \
48
41
  __min_vector_width__(128)))
49
- #endif
50
42
 
51
43
  #if defined(__cplusplus) && (__cplusplus >= 201103L)
52
44
  #define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS constexpr
@@ -239,10 +231,9 @@ _mm_div_ps(__m128 __a, __m128 __b) {
239
231
  /// used in the calculation.
240
232
  /// \returns A 128-bit vector of [4 x float] containing the square root of the
241
233
  /// value in the low-order bits of the operand.
242
- static __inline__ __m128 __DEFAULT_FN_ATTRS
243
- _mm_sqrt_ss(__m128 __a)
244
- {
245
- return (__m128)__builtin_ia32_sqrtss((__v4sf)__a);
234
+ static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_sqrt_ss(__m128 __a) {
235
+ __a[0] = __builtin_elementwise_sqrt(__a[0]);
236
+ return __a;
246
237
  }
247
238
 
248
239
  /// Calculates the square roots of the values stored in a 128-bit vector
@@ -256,10 +247,8 @@ _mm_sqrt_ss(__m128 __a)
256
247
  /// A 128-bit vector of [4 x float].
257
248
  /// \returns A 128-bit vector of [4 x float] containing the square roots of the
258
249
  /// values in the operand.
259
- static __inline__ __m128 __DEFAULT_FN_ATTRS
260
- _mm_sqrt_ps(__m128 __a)
261
- {
262
- return __builtin_ia32_sqrtps((__v4sf)__a);
250
+ static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_sqrt_ps(__m128 __a) {
251
+ return __builtin_elementwise_sqrt(__a);
263
252
  }
264
253
 
265
254
  /// Calculates the approximate reciprocal of the value stored in the
@@ -352,9 +341,7 @@ _mm_rsqrt_ps(__m128 __a)
352
341
  /// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the
353
342
  /// minimum value between both operands. The upper 96 bits are copied from
354
343
  /// the upper 96 bits of the first source operand.
355
- static __inline__ __m128 __DEFAULT_FN_ATTRS
356
- _mm_min_ss(__m128 __a, __m128 __b)
357
- {
344
+ static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_min_ss(__m128 __a, __m128 __b) {
358
345
  return __builtin_ia32_minss((__v4sf)__a, (__v4sf)__b);
359
346
  }
360
347
 
@@ -373,9 +360,8 @@ _mm_min_ss(__m128 __a, __m128 __b)
373
360
  /// A 128-bit vector of [4 x float] containing one of the operands.
374
361
  /// \returns A 128-bit vector of [4 x float] containing the minimum values
375
362
  /// between both operands.
376
- static __inline__ __m128 __DEFAULT_FN_ATTRS
377
- _mm_min_ps(__m128 __a, __m128 __b)
378
- {
363
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR _mm_min_ps(__m128 __a,
364
+ __m128 __b) {
379
365
  return __builtin_ia32_minps((__v4sf)__a, (__v4sf)__b);
380
366
  }
381
367
 
@@ -398,9 +384,7 @@ _mm_min_ps(__m128 __a, __m128 __b)
398
384
  /// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the
399
385
  /// maximum value between both operands. The upper 96 bits are copied from
400
386
  /// the upper 96 bits of the first source operand.
401
- static __inline__ __m128 __DEFAULT_FN_ATTRS
402
- _mm_max_ss(__m128 __a, __m128 __b)
403
- {
387
+ static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_max_ss(__m128 __a, __m128 __b) {
404
388
  return __builtin_ia32_maxss((__v4sf)__a, (__v4sf)__b);
405
389
  }
406
390
 
@@ -419,9 +403,8 @@ _mm_max_ss(__m128 __a, __m128 __b)
419
403
  /// A 128-bit vector of [4 x float] containing one of the operands.
420
404
  /// \returns A 128-bit vector of [4 x float] containing the maximum values
421
405
  /// between both operands.
422
- static __inline__ __m128 __DEFAULT_FN_ATTRS
423
- _mm_max_ps(__m128 __a, __m128 __b)
424
- {
406
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR _mm_max_ps(__m128 __a,
407
+ __m128 __b) {
425
408
  return __builtin_ia32_maxps((__v4sf)__a, (__v4sf)__b);
426
409
  }
427
410
 
@@ -1688,7 +1671,7 @@ _mm_cvtsi64_ss(__m128 __a, long long __b) {
1688
1671
  /// \returns A 128-bit vector of [4 x float] whose lower 64 bits contain the
1689
1672
  /// converted value of the second operand. The upper 64 bits are copied from
1690
1673
  /// the upper 64 bits of the first operand.
1691
- static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2
1674
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
1692
1675
  _mm_cvtpi32_ps(__m128 __a, __m64 __b)
1693
1676
  {
1694
1677
  return (__m128)__builtin_shufflevector(
@@ -1714,7 +1697,7 @@ _mm_cvtpi32_ps(__m128 __a, __m64 __b)
1714
1697
  /// \returns A 128-bit vector of [4 x float] whose lower 64 bits contain the
1715
1698
  /// converted value from the second operand. The upper 64 bits are copied
1716
1699
  /// from the upper 64 bits of the first operand.
1717
- static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2
1700
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
1718
1701
  _mm_cvt_pi2ps(__m128 __a, __m64 __b)
1719
1702
  {
1720
1703
  return _mm_cvtpi32_ps(__a, __b);
@@ -2353,9 +2336,8 @@ void _mm_sfence(void);
2353
2336
  /// \param __b
2354
2337
  /// A 64-bit integer vector containing one of the source operands.
2355
2338
  /// \returns A 64-bit integer vector containing the comparison results.
2356
- static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
2357
- _mm_max_pi16(__m64 __a, __m64 __b)
2358
- {
2339
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2340
+ _mm_max_pi16(__m64 __a, __m64 __b) {
2359
2341
  return (__m64)__builtin_elementwise_max((__v4hi)__a, (__v4hi)__b);
2360
2342
  }
2361
2343
 
@@ -2372,9 +2354,8 @@ _mm_max_pi16(__m64 __a, __m64 __b)
2372
2354
  /// \param __b
2373
2355
  /// A 64-bit integer vector containing one of the source operands.
2374
2356
  /// \returns A 64-bit integer vector containing the comparison results.
2375
- static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
2376
- _mm_max_pu8(__m64 __a, __m64 __b)
2377
- {
2357
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2358
+ _mm_max_pu8(__m64 __a, __m64 __b) {
2378
2359
  return (__m64)__builtin_elementwise_max((__v8qu)__a, (__v8qu)__b);
2379
2360
  }
2380
2361
 
@@ -2391,9 +2372,8 @@ _mm_max_pu8(__m64 __a, __m64 __b)
2391
2372
  /// \param __b
2392
2373
  /// A 64-bit integer vector containing one of the source operands.
2393
2374
  /// \returns A 64-bit integer vector containing the comparison results.
2394
- static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
2395
- _mm_min_pi16(__m64 __a, __m64 __b)
2396
- {
2375
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2376
+ _mm_min_pi16(__m64 __a, __m64 __b) {
2397
2377
  return (__m64)__builtin_elementwise_min((__v4hi)__a, (__v4hi)__b);
2398
2378
  }
2399
2379
 
@@ -2410,9 +2390,8 @@ _mm_min_pi16(__m64 __a, __m64 __b)
2410
2390
  /// \param __b
2411
2391
  /// A 64-bit integer vector containing one of the source operands.
2412
2392
  /// \returns A 64-bit integer vector containing the comparison results.
2413
- static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
2414
- _mm_min_pu8(__m64 __a, __m64 __b)
2415
- {
2393
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2394
+ _mm_min_pu8(__m64 __a, __m64 __b) {
2416
2395
  return (__m64)__builtin_elementwise_min((__v8qu)__a, (__v8qu)__b);
2417
2396
  }
2418
2397
 
@@ -2428,9 +2407,8 @@ _mm_min_pu8(__m64 __a, __m64 __b)
2428
2407
  /// A 64-bit integer vector containing the values with bits to be extracted.
2429
2408
  /// \returns The most significant bit from each 8-bit element in \a __a,
2430
2409
  /// written to bits [7:0].
2431
- static __inline__ int __DEFAULT_FN_ATTRS_SSE2
2432
- _mm_movemask_pi8(__m64 __a)
2433
- {
2410
+ static __inline__ int __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2411
+ _mm_movemask_pi8(__m64 __a) {
2434
2412
  return __builtin_ia32_pmovmskb128((__v16qi)__zext128(__a));
2435
2413
  }
2436
2414
 
@@ -2447,11 +2425,11 @@ _mm_movemask_pi8(__m64 __a)
2447
2425
  /// \param __b
2448
2426
  /// A 64-bit integer vector containing one of the source operands.
2449
2427
  /// \returns A 64-bit integer vector containing the products of both operands.
2450
- static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
2428
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2451
2429
  _mm_mulhi_pu16(__m64 __a, __m64 __b)
2452
2430
  {
2453
- return __trunc64(__builtin_ia32_pmulhuw128((__v8hi)__anyext128(__a),
2454
- (__v8hi)__anyext128(__b)));
2431
+ return __trunc64(__builtin_ia32_pmulhuw128((__v8hu)__zext128(__a),
2432
+ (__v8hu)__zext128(__b)));
2455
2433
  }
2456
2434
 
2457
2435
  /// Shuffles the 4 16-bit integers from a 64-bit integer vector to the
@@ -2530,8 +2508,8 @@ _mm_maskmove_si64(__m64 __d, __m64 __n, char *__p)
2530
2508
  // If there's a risk of spurious trap due to a 128-bit write, back up the
2531
2509
  // pointer by 8 bytes and shift values in registers to match.
2532
2510
  __p -= 8;
2533
- __d128 = __builtin_ia32_pslldqi128_byteshift((__v2di)__d128, 8);
2534
- __n128 = __builtin_ia32_pslldqi128_byteshift((__v2di)__n128, 8);
2511
+ __d128 = (__m128i)__builtin_ia32_pslldqi128_byteshift((__v16qi)__d128, 8);
2512
+ __n128 = (__m128i)__builtin_ia32_pslldqi128_byteshift((__v16qi)__n128, 8);
2535
2513
  }
2536
2514
 
2537
2515
  __builtin_ia32_maskmovdqu((__v16qi)__d128, (__v16qi)__n128, __p);
@@ -2550,11 +2528,10 @@ _mm_maskmove_si64(__m64 __d, __m64 __n, char *__p)
2550
2528
  /// \param __b
2551
2529
  /// A 64-bit integer vector containing one of the source operands.
2552
2530
  /// \returns A 64-bit integer vector containing the averages of both operands.
2553
- static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
2554
- _mm_avg_pu8(__m64 __a, __m64 __b)
2555
- {
2556
- return __trunc64(__builtin_ia32_pavgb128((__v16qi)__anyext128(__a),
2557
- (__v16qi)__anyext128(__b)));
2531
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2532
+ _mm_avg_pu8(__m64 __a, __m64 __b) {
2533
+ return __trunc64(__builtin_ia32_pavgb128((__v16qu)__zext128(__a),
2534
+ (__v16qu)__zext128(__b)));
2558
2535
  }
2559
2536
 
2560
2537
  /// Computes the rounded averages of the packed unsigned 16-bit integer
@@ -2570,11 +2547,10 @@ _mm_avg_pu8(__m64 __a, __m64 __b)
2570
2547
  /// \param __b
2571
2548
  /// A 64-bit integer vector containing one of the source operands.
2572
2549
  /// \returns A 64-bit integer vector containing the averages of both operands.
2573
- static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
2574
- _mm_avg_pu16(__m64 __a, __m64 __b)
2575
- {
2576
- return __trunc64(__builtin_ia32_pavgw128((__v8hi)__anyext128(__a),
2577
- (__v8hi)__anyext128(__b)));
2550
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2551
+ _mm_avg_pu16(__m64 __a, __m64 __b) {
2552
+ return __trunc64(
2553
+ __builtin_ia32_pavgw128((__v8hu)__zext128(__a), (__v8hu)__zext128(__b)));
2578
2554
  }
2579
2555
 
2580
2556
  /// Subtracts the corresponding 8-bit unsigned integer values of the two
@@ -2873,7 +2849,7 @@ _mm_movelh_ps(__m128 __a, __m128 __b) {
2873
2849
  /// from the corresponding elements in this operand.
2874
2850
  /// \returns A 128-bit vector of [4 x float] containing the copied and converted
2875
2851
  /// values from the operand.
2876
- static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2
2852
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2877
2853
  _mm_cvtpi16_ps(__m64 __a)
2878
2854
  {
2879
2855
  return __builtin_convertvector((__v4hi)__a, __v4sf);
@@ -2891,7 +2867,7 @@ _mm_cvtpi16_ps(__m64 __a)
2891
2867
  /// destination are copied from the corresponding elements in this operand.
2892
2868
  /// \returns A 128-bit vector of [4 x float] containing the copied and converted
2893
2869
  /// values from the operand.
2894
- static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2
2870
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2895
2871
  _mm_cvtpu16_ps(__m64 __a)
2896
2872
  {
2897
2873
  return __builtin_convertvector((__v4hu)__a, __v4sf);
@@ -2909,7 +2885,7 @@ _mm_cvtpu16_ps(__m64 __a)
2909
2885
  /// from the corresponding lower 4 elements in this operand.
2910
2886
  /// \returns A 128-bit vector of [4 x float] containing the copied and converted
2911
2887
  /// values from the operand.
2912
- static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2
2888
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2913
2889
  _mm_cvtpi8_ps(__m64 __a)
2914
2890
  {
2915
2891
  return __builtin_convertvector(
@@ -2930,7 +2906,7 @@ _mm_cvtpi8_ps(__m64 __a)
2930
2906
  /// operand.
2931
2907
  /// \returns A 128-bit vector of [4 x float] containing the copied and converted
2932
2908
  /// values from the source operand.
2933
- static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2
2909
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2934
2910
  _mm_cvtpu8_ps(__m64 __a)
2935
2911
  {
2936
2912
  return __builtin_convertvector(
@@ -2954,7 +2930,7 @@ _mm_cvtpu8_ps(__m64 __a)
2954
2930
  /// \returns A 128-bit vector of [4 x float] whose lower 64 bits contain the
2955
2931
  /// copied and converted values from the first operand. The upper 64 bits
2956
2932
  /// contain the copied and converted values from the second operand.
2957
- static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2
2933
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2958
2934
  _mm_cvtpi32x2_ps(__m64 __a, __m64 __b)
2959
2935
  {
2960
2936
  return __builtin_convertvector(
@@ -3029,9 +3005,7 @@ _mm_cvtps_pi8(__m128 __a)
3029
3005
  /// \returns A 32-bit integer value. Bits [3:0] contain the sign bits from each
3030
3006
  /// single-precision floating-point element of the parameter. Bits [31:4] are
3031
3007
  /// set to zero.
3032
- static __inline__ int __DEFAULT_FN_ATTRS
3033
- _mm_movemask_ps(__m128 __a)
3034
- {
3008
+ static __inline__ int __DEFAULT_FN_ATTRS_CONSTEXPR _mm_movemask_ps(__m128 __a) {
3035
3009
  return __builtin_ia32_movmskps((__v4sf)__a);
3036
3010
  }
3037
3011
 
@@ -20,6 +20,14 @@
20
20
  #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("xop"), __min_vector_width__(128)))
21
21
  #define __DEFAULT_FN_ATTRS256 __attribute__((__always_inline__, __nodebug__, __target__("xop"), __min_vector_width__(256)))
22
22
 
23
+ #if defined(__cplusplus) && (__cplusplus >= 201103L)
24
+ #define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS constexpr
25
+ #define __DEFAULT_FN_ATTRS256_CONSTEXPR __DEFAULT_FN_ATTRS256 constexpr
26
+ #else
27
+ #define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS
28
+ #define __DEFAULT_FN_ATTRS256_CONSTEXPR __DEFAULT_FN_ATTRS256
29
+ #endif
30
+
23
31
  static __inline__ __m128i __DEFAULT_FN_ATTRS
24
32
  _mm_maccs_epi16(__m128i __A, __m128i __B, __m128i __C)
25
33
  {
@@ -182,13 +190,13 @@ _mm_hsubq_epi32(__m128i __A)
182
190
  return (__m128i)__builtin_ia32_vphsubdq((__v4si)__A);
183
191
  }
184
192
 
185
- static __inline__ __m128i __DEFAULT_FN_ATTRS
193
+ static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
186
194
  _mm_cmov_si128(__m128i __A, __m128i __B, __m128i __C)
187
195
  {
188
196
  return (__m128i)(((__v2du)__A & (__v2du)__C) | ((__v2du)__B & ~(__v2du)__C));
189
197
  }
190
198
 
191
- static __inline__ __m256i __DEFAULT_FN_ATTRS256
199
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
192
200
  _mm256_cmov_si256(__m256i __A, __m256i __B, __m256i __C)
193
201
  {
194
202
  return (__m256i)(((__v4du)__A & (__v4du)__C) | ((__v4du)__B & ~(__v4du)__C));
@@ -200,28 +208,28 @@ _mm_perm_epi8(__m128i __A, __m128i __B, __m128i __C)
200
208
  return (__m128i)__builtin_ia32_vpperm((__v16qi)__A, (__v16qi)__B, (__v16qi)__C);
201
209
  }
202
210
 
203
- static __inline__ __m128i __DEFAULT_FN_ATTRS
211
+ static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
204
212
  _mm_rot_epi8(__m128i __A, __m128i __B)
205
213
  {
206
- return (__m128i)__builtin_ia32_vprotb((__v16qi)__A, (__v16qi)__B);
214
+ return (__m128i)__builtin_elementwise_fshl((__v16qu)__A, (__v16qu)__A, (__v16qu)__B);
207
215
  }
208
216
 
209
- static __inline__ __m128i __DEFAULT_FN_ATTRS
217
+ static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
210
218
  _mm_rot_epi16(__m128i __A, __m128i __B)
211
219
  {
212
- return (__m128i)__builtin_ia32_vprotw((__v8hi)__A, (__v8hi)__B);
220
+ return (__m128i)__builtin_elementwise_fshl((__v8hu)__A, (__v8hu)__A, (__v8hu)__B);
213
221
  }
214
222
 
215
- static __inline__ __m128i __DEFAULT_FN_ATTRS
223
+ static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
216
224
  _mm_rot_epi32(__m128i __A, __m128i __B)
217
225
  {
218
- return (__m128i)__builtin_ia32_vprotd((__v4si)__A, (__v4si)__B);
226
+ return (__m128i)__builtin_elementwise_fshl((__v4su)__A, (__v4su)__A, (__v4su)__B);
219
227
  }
220
228
 
221
- static __inline__ __m128i __DEFAULT_FN_ATTRS
229
+ static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
222
230
  _mm_rot_epi64(__m128i __A, __m128i __B)
223
231
  {
224
- return (__m128i)__builtin_ia32_vprotq((__v2di)__A, (__v2di)__B);
232
+ return (__m128i)__builtin_elementwise_fshl((__v2du)__A, (__v2du)__A, (__v2du)__B);
225
233
  }
226
234
 
227
235
  #define _mm_roti_epi8(A, N) \
@@ -766,5 +774,7 @@ _mm256_frcz_pd(__m256d __A)
766
774
 
767
775
  #undef __DEFAULT_FN_ATTRS
768
776
  #undef __DEFAULT_FN_ATTRS256
777
+ #undef __DEFAULT_FN_ATTRS_CONSTEXPR
778
+ #undef __DEFAULT_FN_ATTRS256_CONSTEXPR
769
779
 
770
780
  #endif /* __XOPINTRIN_H */
@@ -10,24 +10,28 @@
10
10
  #ifndef _LIBCPP___ALGORITHM_ALL_OF_H
11
11
  #define _LIBCPP___ALGORITHM_ALL_OF_H
12
12
 
13
+ #include <__algorithm/any_of.h>
13
14
  #include <__config>
14
15
  #include <__functional/identity.h>
15
16
  #include <__type_traits/invoke.h>
17
+ #include <__utility/forward.h>
18
+ #include <__utility/move.h>
16
19
 
17
20
  #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
18
21
  # pragma GCC system_header
19
22
  #endif
20
23
 
24
+ _LIBCPP_PUSH_MACROS
25
+ #include <__undef_macros>
26
+
21
27
  _LIBCPP_BEGIN_NAMESPACE_STD
22
28
 
23
29
  template <class _Iter, class _Sent, class _Proj, class _Pred>
24
30
  _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool
25
31
  __all_of(_Iter __first, _Sent __last, _Pred& __pred, _Proj& __proj) {
26
- for (; __first != __last; ++__first) {
27
- if (!std::__invoke(__pred, std::__invoke(__proj, *__first)))
28
- return false;
29
- }
30
- return true;
32
+ using _Ref = decltype(std::__invoke(__proj, *__first));
33
+ auto __negated_pred = [&__pred](_Ref __arg) -> bool { return !std::__invoke(__pred, std::forward<_Ref>(__arg)); };
34
+ return !std::__any_of(std::move(__first), std::move(__last), __negated_pred, __proj);
31
35
  }
32
36
 
33
37
  template <class _InputIterator, class _Predicate>
@@ -39,4 +43,6 @@ all_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) {
39
43
 
40
44
  _LIBCPP_END_NAMESPACE_STD
41
45
 
46
+ _LIBCPP_POP_MACROS
47
+
42
48
  #endif // _LIBCPP___ALGORITHM_ALL_OF_H
@@ -11,6 +11,7 @@
11
11
 
12
12
  #include <__config>
13
13
  #include <__type_traits/desugars_to.h>
14
+ #include <__type_traits/is_generic_transparent_comparator.h>
14
15
  #include <__type_traits/is_integral.h>
15
16
 
16
17
  #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
@@ -48,6 +49,9 @@ inline const bool __desugars_to_v<__less_tag, __less<>, _Tp, _Tp> = true;
48
49
  template <class _Tp>
49
50
  inline const bool __desugars_to_v<__totally_ordered_less_tag, __less<>, _Tp, _Tp> = is_integral<_Tp>::value;
50
51
 
52
+ template <>
53
+ inline const bool __is_generic_transparent_comparator_v<__less<> > = true;
54
+
51
55
  _LIBCPP_END_NAMESPACE_STD
52
56
 
53
57
  #endif // _LIBCPP___ALGORITHM_COMP_H
@@ -12,11 +12,10 @@
12
12
  #include <__algorithm/copy_move_common.h>
13
13
  #include <__algorithm/for_each_segment.h>
14
14
  #include <__algorithm/min.h>
15
+ #include <__algorithm/specialized_algorithms.h>
15
16
  #include <__config>
16
- #include <__fwd/bit_reference.h>
17
17
  #include <__iterator/iterator_traits.h>
18
18
  #include <__iterator/segmented_iterator.h>
19
- #include <__memory/pointer_traits.h>
20
19
  #include <__type_traits/common_type.h>
21
20
  #include <__type_traits/enable_if.h>
22
21
  #include <__utility/move.h>
@@ -38,124 +37,14 @@ copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result);
38
37
  template <class _InIter, class _Sent, class _OutIter>
39
38
  inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> __copy(_InIter, _Sent, _OutIter);
40
39
 
41
- template <class _Cp, bool _IsConst>
42
- _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, false> __copy_aligned(
43
- __bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) {
44
- using _In = __bit_iterator<_Cp, _IsConst>;
45
- using difference_type = typename _In::difference_type;
46
- using __storage_type = typename _In::__storage_type;
47
-
48
- const int __bits_per_word = _In::__bits_per_word;
49
- difference_type __n = __last - __first;
50
- if (__n > 0) {
51
- // do first word
52
- if (__first.__ctz_ != 0) {
53
- unsigned __clz = __bits_per_word - __first.__ctz_;
54
- difference_type __dn = std::min(static_cast<difference_type>(__clz), __n);
55
- __n -= __dn;
56
- __storage_type __m = std::__middle_mask<__storage_type>(__clz - __dn, __first.__ctz_);
57
- __storage_type __b = *__first.__seg_ & __m;
58
- *__result.__seg_ &= ~__m;
59
- *__result.__seg_ |= __b;
60
- __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word;
61
- __result.__ctz_ = static_cast<unsigned>((__dn + __result.__ctz_) % __bits_per_word);
62
- ++__first.__seg_;
63
- // __first.__ctz_ = 0;
64
- }
65
- // __first.__ctz_ == 0;
66
- // do middle words
67
- __storage_type __nw = __n / __bits_per_word;
68
- std::copy(std::__to_address(__first.__seg_),
69
- std::__to_address(__first.__seg_ + __nw),
70
- std::__to_address(__result.__seg_));
71
- __n -= __nw * __bits_per_word;
72
- __result.__seg_ += __nw;
73
- // do last word
74
- if (__n > 0) {
75
- __first.__seg_ += __nw;
76
- __storage_type __m = std::__trailing_mask<__storage_type>(__bits_per_word - __n);
77
- __storage_type __b = *__first.__seg_ & __m;
78
- *__result.__seg_ &= ~__m;
79
- *__result.__seg_ |= __b;
80
- __result.__ctz_ = static_cast<unsigned>(__n);
81
- }
82
- }
83
- return __result;
84
- }
85
-
86
- template <class _Cp, bool _IsConst>
87
- _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, false> __copy_unaligned(
88
- __bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) {
89
- using _In = __bit_iterator<_Cp, _IsConst>;
90
- using difference_type = typename _In::difference_type;
91
- using __storage_type = typename _In::__storage_type;
92
-
93
- const int __bits_per_word = _In::__bits_per_word;
94
- difference_type __n = __last - __first;
95
- if (__n > 0) {
96
- // do first word
97
- if (__first.__ctz_ != 0) {
98
- unsigned __clz_f = __bits_per_word - __first.__ctz_;
99
- difference_type __dn = std::min(static_cast<difference_type>(__clz_f), __n);
100
- __n -= __dn;
101
- __storage_type __m = std::__middle_mask<__storage_type>(__clz_f - __dn, __first.__ctz_);
102
- __storage_type __b = *__first.__seg_ & __m;
103
- unsigned __clz_r = __bits_per_word - __result.__ctz_;
104
- __storage_type __ddn = std::min<__storage_type>(__dn, __clz_r);
105
- __m = std::__middle_mask<__storage_type>(__clz_r - __ddn, __result.__ctz_);
106
- *__result.__seg_ &= ~__m;
107
- if (__result.__ctz_ > __first.__ctz_)
108
- *__result.__seg_ |= __b << (__result.__ctz_ - __first.__ctz_);
109
- else
110
- *__result.__seg_ |= __b >> (__first.__ctz_ - __result.__ctz_);
111
- __result.__seg_ += (__ddn + __result.__ctz_) / __bits_per_word;
112
- __result.__ctz_ = static_cast<unsigned>((__ddn + __result.__ctz_) % __bits_per_word);
113
- __dn -= __ddn;
114
- if (__dn > 0) {
115
- __m = std::__trailing_mask<__storage_type>(__bits_per_word - __dn);
116
- *__result.__seg_ &= ~__m;
117
- *__result.__seg_ |= __b >> (__first.__ctz_ + __ddn);
118
- __result.__ctz_ = static_cast<unsigned>(__dn);
119
- }
120
- ++__first.__seg_;
121
- // __first.__ctz_ = 0;
122
- }
123
- // __first.__ctz_ == 0;
124
- // do middle words
125
- unsigned __clz_r = __bits_per_word - __result.__ctz_;
126
- __storage_type __m = std::__leading_mask<__storage_type>(__result.__ctz_);
127
- for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first.__seg_) {
128
- __storage_type __b = *__first.__seg_;
129
- *__result.__seg_ &= ~__m;
130
- *__result.__seg_ |= __b << __result.__ctz_;
131
- ++__result.__seg_;
132
- *__result.__seg_ &= __m;
133
- *__result.__seg_ |= __b >> __clz_r;
134
- }
135
- // do last word
136
- if (__n > 0) {
137
- __m = std::__trailing_mask<__storage_type>(__bits_per_word - __n);
138
- __storage_type __b = *__first.__seg_ & __m;
139
- __storage_type __dn = std::min(__n, static_cast<difference_type>(__clz_r));
140
- __m = std::__middle_mask<__storage_type>(__clz_r - __dn, __result.__ctz_);
141
- *__result.__seg_ &= ~__m;
142
- *__result.__seg_ |= __b << __result.__ctz_;
143
- __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word;
144
- __result.__ctz_ = static_cast<unsigned>((__dn + __result.__ctz_) % __bits_per_word);
145
- __n -= __dn;
146
- if (__n > 0) {
147
- __m = std::__trailing_mask<__storage_type>(__bits_per_word - __n);
148
- *__result.__seg_ &= ~__m;
149
- *__result.__seg_ |= __b >> __dn;
150
- __result.__ctz_ = static_cast<unsigned>(__n);
151
- }
152
- }
153
- }
154
- return __result;
155
- }
156
-
157
40
  struct __copy_impl {
158
- template <class _InIter, class _Sent, class _OutIter>
41
+ template <class _InIter,
42
+ class _Sent,
43
+ class _OutIter,
44
+ __enable_if_t<!__specialized_algorithm<_Algorithm::__copy,
45
+ __iterator_pair<_InIter, _Sent>,
46
+ __single_iterator<_OutIter> >::__has_algorithm,
47
+ int> = 0>
159
48
  _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter>
160
49
  operator()(_InIter __first, _Sent __last, _OutIter __result) const {
161
50
  while (__first != __last) {
@@ -167,37 +56,39 @@ struct __copy_impl {
167
56
  return std::make_pair(std::move(__first), std::move(__result));
168
57
  }
169
58
 
170
- template <class _InIter, class _OutIter>
171
- struct _CopySegment {
172
- using _Traits _LIBCPP_NODEBUG = __segmented_iterator_traits<_InIter>;
173
-
174
- _OutIter& __result_;
175
-
176
- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 explicit _CopySegment(_OutIter& __result)
177
- : __result_(__result) {}
178
-
179
- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 void
180
- operator()(typename _Traits::__local_iterator __lfirst, typename _Traits::__local_iterator __llast) {
181
- __result_ = std::__copy(__lfirst, __llast, std::move(__result_)).second;
182
- }
183
- };
59
+ template <class _InIter,
60
+ class _Sent,
61
+ class _OutIter,
62
+ __enable_if_t<__specialized_algorithm<_Algorithm::__copy,
63
+ __iterator_pair<_InIter, _Sent>,
64
+ __single_iterator<_OutIter> >::__has_algorithm,
65
+ int> = 0>
66
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 static pair<_InIter, _OutIter>
67
+ operator()(_InIter __first, _Sent __last, _OutIter __result) {
68
+ return __specialized_algorithm<_Algorithm::__copy, __iterator_pair<_InIter, _Sent>, __single_iterator<_OutIter> >()(
69
+ std::move(__first), std::move(__last), std::move(__result));
70
+ }
184
71
 
185
- template <class _InIter, class _OutIter, __enable_if_t<__is_segmented_iterator<_InIter>::value, int> = 0>
72
+ template <class _InIter, class _OutIter, __enable_if_t<__is_segmented_iterator_v<_InIter>, int> = 0>
186
73
  _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter>
187
74
  operator()(_InIter __first, _InIter __last, _OutIter __result) const {
188
- std::__for_each_segment(__first, __last, _CopySegment<_InIter, _OutIter>(__result));
75
+ using __local_iterator = typename __segmented_iterator_traits<_InIter>::__local_iterator;
76
+ std::__for_each_segment(__first, __last, [&__result](__local_iterator __lfirst, __local_iterator __llast) {
77
+ __result = std::__copy(std::move(__lfirst), std::move(__llast), std::move(__result)).second;
78
+ });
189
79
  return std::make_pair(__last, std::move(__result));
190
80
  }
191
81
 
192
82
  template <class _InIter,
193
83
  class _OutIter,
194
84
  __enable_if_t<__has_random_access_iterator_category<_InIter>::value &&
195
- !__is_segmented_iterator<_InIter>::value && __is_segmented_iterator<_OutIter>::value,
85
+ !__is_segmented_iterator_v<_InIter> && __is_segmented_iterator_v<_OutIter>,
196
86
  int> = 0>
197
87
  _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter>
198
88
  operator()(_InIter __first, _InIter __last, _OutIter __result) const {
199
89
  using _Traits = __segmented_iterator_traits<_OutIter>;
200
- using _DiffT = typename common_type<__iter_diff_t<_InIter>, __iter_diff_t<_OutIter> >::type;
90
+ using _DiffT =
91
+ typename common_type<__iterator_difference_type<_InIter>, __iterator_difference_type<_OutIter> >::type;
201
92
 
202
93
  if (__first == __last)
203
94
  return std::make_pair(std::move(__first), std::move(__result));
@@ -217,16 +108,6 @@ struct __copy_impl {
217
108
  }
218
109
  }
219
110
 
220
- template <class _Cp, bool _IsConst>
221
- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<__bit_iterator<_Cp, _IsConst>, __bit_iterator<_Cp, false> >
222
- operator()(__bit_iterator<_Cp, _IsConst> __first,
223
- __bit_iterator<_Cp, _IsConst> __last,
224
- __bit_iterator<_Cp, false> __result) const {
225
- if (__first.__ctz_ == __result.__ctz_)
226
- return std::make_pair(__last, std::__copy_aligned(__first, __last, __result));
227
- return std::make_pair(__last, std::__copy_unaligned(__first, __last, __result));
228
- }
229
-
230
111
  // At this point, the iterators have been unwrapped so any `contiguous_iterator` has been unwrapped to a pointer.
231
112
  template <class _In, class _Out, __enable_if_t<__can_lower_copy_assignment_to_memmove<_In, _Out>::value, int> = 0>
232
113
  _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_In*, _Out*>