cuda-cccl 0.1.3.1.0.dev1486__cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

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.

Potentially problematic release.


This version of cuda-cccl might be problematic. Click here for more details.

Files changed (1819) hide show
  1. cuda/cccl/__init__.py +14 -0
  2. cuda/cccl/cooperative/__init__.py +3 -0
  3. cuda/cccl/cooperative/experimental/__init__.py +8 -0
  4. cuda/cccl/cooperative/experimental/_caching.py +48 -0
  5. cuda/cccl/cooperative/experimental/_common.py +276 -0
  6. cuda/cccl/cooperative/experimental/_nvrtc.py +91 -0
  7. cuda/cccl/cooperative/experimental/_scan_op.py +181 -0
  8. cuda/cccl/cooperative/experimental/_types.py +953 -0
  9. cuda/cccl/cooperative/experimental/_typing.py +107 -0
  10. cuda/cccl/cooperative/experimental/block/__init__.py +33 -0
  11. cuda/cccl/cooperative/experimental/block/_block_load_store.py +215 -0
  12. cuda/cccl/cooperative/experimental/block/_block_merge_sort.py +125 -0
  13. cuda/cccl/cooperative/experimental/block/_block_radix_sort.py +214 -0
  14. cuda/cccl/cooperative/experimental/block/_block_reduce.py +294 -0
  15. cuda/cccl/cooperative/experimental/block/_block_scan.py +983 -0
  16. cuda/cccl/cooperative/experimental/warp/__init__.py +9 -0
  17. cuda/cccl/cooperative/experimental/warp/_warp_merge_sort.py +98 -0
  18. cuda/cccl/cooperative/experimental/warp/_warp_reduce.py +153 -0
  19. cuda/cccl/cooperative/experimental/warp/_warp_scan.py +78 -0
  20. cuda/cccl/headers/__init__.py +7 -0
  21. cuda/cccl/headers/include/__init__.py +1 -0
  22. cuda/cccl/headers/include/cub/agent/agent_adjacent_difference.cuh +261 -0
  23. cuda/cccl/headers/include/cub/agent/agent_batch_memcpy.cuh +1181 -0
  24. cuda/cccl/headers/include/cub/agent/agent_for.cuh +84 -0
  25. cuda/cccl/headers/include/cub/agent/agent_histogram.cuh +919 -0
  26. cuda/cccl/headers/include/cub/agent/agent_merge.cuh +227 -0
  27. cuda/cccl/headers/include/cub/agent/agent_merge_sort.cuh +752 -0
  28. cuda/cccl/headers/include/cub/agent/agent_radix_sort_downsweep.cuh +766 -0
  29. cuda/cccl/headers/include/cub/agent/agent_radix_sort_histogram.cuh +286 -0
  30. cuda/cccl/headers/include/cub/agent/agent_radix_sort_onesweep.cuh +704 -0
  31. cuda/cccl/headers/include/cub/agent/agent_radix_sort_upsweep.cuh +557 -0
  32. cuda/cccl/headers/include/cub/agent/agent_reduce.cuh +678 -0
  33. cuda/cccl/headers/include/cub/agent/agent_reduce_by_key.cuh +804 -0
  34. cuda/cccl/headers/include/cub/agent/agent_rle.cuh +997 -0
  35. cuda/cccl/headers/include/cub/agent/agent_scan.cuh +561 -0
  36. cuda/cccl/headers/include/cub/agent/agent_scan_by_key.cuh +473 -0
  37. cuda/cccl/headers/include/cub/agent/agent_segmented_radix_sort.cuh +292 -0
  38. cuda/cccl/headers/include/cub/agent/agent_select_if.cuh +1032 -0
  39. cuda/cccl/headers/include/cub/agent/agent_sub_warp_merge_sort.cuh +342 -0
  40. cuda/cccl/headers/include/cub/agent/agent_three_way_partition.cuh +592 -0
  41. cuda/cccl/headers/include/cub/agent/agent_unique_by_key.cuh +614 -0
  42. cuda/cccl/headers/include/cub/agent/single_pass_scan_operators.cuh +1346 -0
  43. cuda/cccl/headers/include/cub/block/block_adjacent_difference.cuh +965 -0
  44. cuda/cccl/headers/include/cub/block/block_discontinuity.cuh +1217 -0
  45. cuda/cccl/headers/include/cub/block/block_exchange.cuh +1306 -0
  46. cuda/cccl/headers/include/cub/block/block_histogram.cuh +420 -0
  47. cuda/cccl/headers/include/cub/block/block_load.cuh +1259 -0
  48. cuda/cccl/headers/include/cub/block/block_merge_sort.cuh +787 -0
  49. cuda/cccl/headers/include/cub/block/block_radix_rank.cuh +1218 -0
  50. cuda/cccl/headers/include/cub/block/block_radix_sort.cuh +2193 -0
  51. cuda/cccl/headers/include/cub/block/block_raking_layout.cuh +150 -0
  52. cuda/cccl/headers/include/cub/block/block_reduce.cuh +629 -0
  53. cuda/cccl/headers/include/cub/block/block_run_length_decode.cuh +437 -0
  54. cuda/cccl/headers/include/cub/block/block_scan.cuh +2600 -0
  55. cuda/cccl/headers/include/cub/block/block_shuffle.cuh +346 -0
  56. cuda/cccl/headers/include/cub/block/block_store.cuh +1246 -0
  57. cuda/cccl/headers/include/cub/block/radix_rank_sort_operations.cuh +620 -0
  58. cuda/cccl/headers/include/cub/block/specializations/block_histogram_atomic.cuh +86 -0
  59. cuda/cccl/headers/include/cub/block/specializations/block_histogram_sort.cuh +240 -0
  60. cuda/cccl/headers/include/cub/block/specializations/block_reduce_raking.cuh +252 -0
  61. cuda/cccl/headers/include/cub/block/specializations/block_reduce_raking_commutative_only.cuh +238 -0
  62. cuda/cccl/headers/include/cub/block/specializations/block_reduce_warp_reductions.cuh +259 -0
  63. cuda/cccl/headers/include/cub/block/specializations/block_scan_raking.cuh +790 -0
  64. cuda/cccl/headers/include/cub/block/specializations/block_scan_warp_scans.cuh +538 -0
  65. cuda/cccl/headers/include/cub/config.cuh +60 -0
  66. cuda/cccl/headers/include/cub/cub.cuh +112 -0
  67. cuda/cccl/headers/include/cub/detail/array_utils.cuh +77 -0
  68. cuda/cccl/headers/include/cub/detail/choose_offset.cuh +155 -0
  69. cuda/cccl/headers/include/cub/detail/detect_cuda_runtime.cuh +93 -0
  70. cuda/cccl/headers/include/cub/detail/device_double_buffer.cuh +96 -0
  71. cuda/cccl/headers/include/cub/detail/fast_modulo_division.cuh +246 -0
  72. cuda/cccl/headers/include/cub/detail/launcher/cuda_driver.cuh +120 -0
  73. cuda/cccl/headers/include/cub/detail/launcher/cuda_runtime.cuh +74 -0
  74. cuda/cccl/headers/include/cub/detail/mdspan_utils.cuh +118 -0
  75. cuda/cccl/headers/include/cub/detail/ptx-json/README.md +71 -0
  76. cuda/cccl/headers/include/cub/detail/ptx-json/array.h +68 -0
  77. cuda/cccl/headers/include/cub/detail/ptx-json/json.h +61 -0
  78. cuda/cccl/headers/include/cub/detail/ptx-json/object.h +100 -0
  79. cuda/cccl/headers/include/cub/detail/ptx-json/string.h +71 -0
  80. cuda/cccl/headers/include/cub/detail/ptx-json/value.h +93 -0
  81. cuda/cccl/headers/include/cub/detail/ptx-json-parser.h +63 -0
  82. cuda/cccl/headers/include/cub/detail/rfa.cuh +724 -0
  83. cuda/cccl/headers/include/cub/detail/strong_load.cuh +189 -0
  84. cuda/cccl/headers/include/cub/detail/strong_store.cuh +220 -0
  85. cuda/cccl/headers/include/cub/detail/temporary_storage.cuh +355 -0
  86. cuda/cccl/headers/include/cub/detail/type_traits.cuh +206 -0
  87. cuda/cccl/headers/include/cub/detail/uninitialized_copy.cuh +72 -0
  88. cuda/cccl/headers/include/cub/detail/unsafe_bitcast.cuh +56 -0
  89. cuda/cccl/headers/include/cub/device/device_adjacent_difference.cuh +596 -0
  90. cuda/cccl/headers/include/cub/device/device_copy.cuh +187 -0
  91. cuda/cccl/headers/include/cub/device/device_for.cuh +994 -0
  92. cuda/cccl/headers/include/cub/device/device_histogram.cuh +1507 -0
  93. cuda/cccl/headers/include/cub/device/device_memcpy.cuh +195 -0
  94. cuda/cccl/headers/include/cub/device/device_merge.cuh +202 -0
  95. cuda/cccl/headers/include/cub/device/device_merge_sort.cuh +979 -0
  96. cuda/cccl/headers/include/cub/device/device_partition.cuh +664 -0
  97. cuda/cccl/headers/include/cub/device/device_radix_sort.cuh +3431 -0
  98. cuda/cccl/headers/include/cub/device/device_reduce.cuh +1387 -0
  99. cuda/cccl/headers/include/cub/device/device_run_length_encode.cuh +368 -0
  100. cuda/cccl/headers/include/cub/device/device_scan.cuh +1901 -0
  101. cuda/cccl/headers/include/cub/device/device_segmented_radix_sort.cuh +1496 -0
  102. cuda/cccl/headers/include/cub/device/device_segmented_reduce.cuh +1512 -0
  103. cuda/cccl/headers/include/cub/device/device_segmented_sort.cuh +2811 -0
  104. cuda/cccl/headers/include/cub/device/device_select.cuh +1224 -0
  105. cuda/cccl/headers/include/cub/device/device_transform.cuh +313 -0
  106. cuda/cccl/headers/include/cub/device/dispatch/dispatch_adjacent_difference.cuh +314 -0
  107. cuda/cccl/headers/include/cub/device/dispatch/dispatch_advance_iterators.cuh +109 -0
  108. cuda/cccl/headers/include/cub/device/dispatch/dispatch_batch_memcpy.cuh +718 -0
  109. cuda/cccl/headers/include/cub/device/dispatch/dispatch_common.cuh +45 -0
  110. cuda/cccl/headers/include/cub/device/dispatch/dispatch_for.cuh +197 -0
  111. cuda/cccl/headers/include/cub/device/dispatch/dispatch_histogram.cuh +1051 -0
  112. cuda/cccl/headers/include/cub/device/dispatch/dispatch_merge.cuh +305 -0
  113. cuda/cccl/headers/include/cub/device/dispatch/dispatch_merge_sort.cuh +473 -0
  114. cuda/cccl/headers/include/cub/device/dispatch/dispatch_radix_sort.cuh +1748 -0
  115. cuda/cccl/headers/include/cub/device/dispatch/dispatch_reduce.cuh +1316 -0
  116. cuda/cccl/headers/include/cub/device/dispatch/dispatch_reduce_by_key.cuh +625 -0
  117. cuda/cccl/headers/include/cub/device/dispatch/dispatch_reduce_deterministic.cuh +502 -0
  118. cuda/cccl/headers/include/cub/device/dispatch/dispatch_rle.cuh +548 -0
  119. cuda/cccl/headers/include/cub/device/dispatch/dispatch_scan.cuh +497 -0
  120. cuda/cccl/headers/include/cub/device/dispatch/dispatch_scan_by_key.cuh +598 -0
  121. cuda/cccl/headers/include/cub/device/dispatch/dispatch_segmented_sort.cuh +1374 -0
  122. cuda/cccl/headers/include/cub/device/dispatch/dispatch_select_if.cuh +838 -0
  123. cuda/cccl/headers/include/cub/device/dispatch/dispatch_streaming_reduce.cuh +341 -0
  124. cuda/cccl/headers/include/cub/device/dispatch/dispatch_streaming_reduce_by_key.cuh +439 -0
  125. cuda/cccl/headers/include/cub/device/dispatch/dispatch_three_way_partition.cuh +552 -0
  126. cuda/cccl/headers/include/cub/device/dispatch/dispatch_transform.cuh +397 -0
  127. cuda/cccl/headers/include/cub/device/dispatch/dispatch_unique_by_key.cuh +543 -0
  128. cuda/cccl/headers/include/cub/device/dispatch/kernels/for_each.cuh +218 -0
  129. cuda/cccl/headers/include/cub/device/dispatch/kernels/histogram.cuh +505 -0
  130. cuda/cccl/headers/include/cub/device/dispatch/kernels/merge_sort.cuh +338 -0
  131. cuda/cccl/headers/include/cub/device/dispatch/kernels/radix_sort.cuh +799 -0
  132. cuda/cccl/headers/include/cub/device/dispatch/kernels/reduce.cuh +523 -0
  133. cuda/cccl/headers/include/cub/device/dispatch/kernels/scan.cuh +194 -0
  134. cuda/cccl/headers/include/cub/device/dispatch/kernels/segmented_reduce.cuh +330 -0
  135. cuda/cccl/headers/include/cub/device/dispatch/kernels/transform.cuh +437 -0
  136. cuda/cccl/headers/include/cub/device/dispatch/kernels/unique_by_key.cuh +176 -0
  137. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_adjacent_difference.cuh +70 -0
  138. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_batch_memcpy.cuh +121 -0
  139. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_for.cuh +63 -0
  140. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_histogram.cuh +278 -0
  141. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_merge.cuh +91 -0
  142. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_merge_sort.cuh +118 -0
  143. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_radix_sort.cuh +1068 -0
  144. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_reduce.cuh +397 -0
  145. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_reduce_by_key.cuh +945 -0
  146. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_run_length_encode.cuh +675 -0
  147. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_scan.cuh +555 -0
  148. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_scan_by_key.cuh +1013 -0
  149. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_segmented_sort.cuh +249 -0
  150. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_select_if.cuh +1587 -0
  151. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_three_way_partition.cuh +407 -0
  152. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_transform.cuh +283 -0
  153. cuda/cccl/headers/include/cub/device/dispatch/tuning/tuning_unique_by_key.cuh +874 -0
  154. cuda/cccl/headers/include/cub/grid/grid_even_share.cuh +215 -0
  155. cuda/cccl/headers/include/cub/grid/grid_mapping.cuh +106 -0
  156. cuda/cccl/headers/include/cub/grid/grid_queue.cuh +202 -0
  157. cuda/cccl/headers/include/cub/iterator/arg_index_input_iterator.cuh +256 -0
  158. cuda/cccl/headers/include/cub/iterator/cache_modified_input_iterator.cuh +238 -0
  159. cuda/cccl/headers/include/cub/iterator/cache_modified_output_iterator.cuh +252 -0
  160. cuda/cccl/headers/include/cub/iterator/tex_obj_input_iterator.cuh +322 -0
  161. cuda/cccl/headers/include/cub/thread/thread_load.cuh +347 -0
  162. cuda/cccl/headers/include/cub/thread/thread_operators.cuh +629 -0
  163. cuda/cccl/headers/include/cub/thread/thread_reduce.cuh +504 -0
  164. cuda/cccl/headers/include/cub/thread/thread_scan.cuh +340 -0
  165. cuda/cccl/headers/include/cub/thread/thread_search.cuh +198 -0
  166. cuda/cccl/headers/include/cub/thread/thread_simd.cuh +406 -0
  167. cuda/cccl/headers/include/cub/thread/thread_sort.cuh +101 -0
  168. cuda/cccl/headers/include/cub/thread/thread_store.cuh +364 -0
  169. cuda/cccl/headers/include/cub/util_allocator.cuh +921 -0
  170. cuda/cccl/headers/include/cub/util_arch.cuh +163 -0
  171. cuda/cccl/headers/include/cub/util_cpp_dialect.cuh +95 -0
  172. cuda/cccl/headers/include/cub/util_debug.cuh +207 -0
  173. cuda/cccl/headers/include/cub/util_device.cuh +779 -0
  174. cuda/cccl/headers/include/cub/util_macro.cuh +91 -0
  175. cuda/cccl/headers/include/cub/util_math.cuh +115 -0
  176. cuda/cccl/headers/include/cub/util_namespace.cuh +176 -0
  177. cuda/cccl/headers/include/cub/util_policy_wrapper_t.cuh +55 -0
  178. cuda/cccl/headers/include/cub/util_ptx.cuh +513 -0
  179. cuda/cccl/headers/include/cub/util_temporary_storage.cuh +122 -0
  180. cuda/cccl/headers/include/cub/util_type.cuh +1111 -0
  181. cuda/cccl/headers/include/cub/util_vsmem.cuh +251 -0
  182. cuda/cccl/headers/include/cub/version.cuh +89 -0
  183. cuda/cccl/headers/include/cub/warp/specializations/warp_exchange_shfl.cuh +329 -0
  184. cuda/cccl/headers/include/cub/warp/specializations/warp_exchange_smem.cuh +177 -0
  185. cuda/cccl/headers/include/cub/warp/specializations/warp_reduce_shfl.cuh +729 -0
  186. cuda/cccl/headers/include/cub/warp/specializations/warp_reduce_smem.cuh +405 -0
  187. cuda/cccl/headers/include/cub/warp/specializations/warp_scan_shfl.cuh +688 -0
  188. cuda/cccl/headers/include/cub/warp/specializations/warp_scan_smem.cuh +437 -0
  189. cuda/cccl/headers/include/cub/warp/warp_exchange.cuh +405 -0
  190. cuda/cccl/headers/include/cub/warp/warp_load.cuh +614 -0
  191. cuda/cccl/headers/include/cub/warp/warp_merge_sort.cuh +169 -0
  192. cuda/cccl/headers/include/cub/warp/warp_reduce.cuh +822 -0
  193. cuda/cccl/headers/include/cub/warp/warp_scan.cuh +1156 -0
  194. cuda/cccl/headers/include/cub/warp/warp_store.cuh +520 -0
  195. cuda/cccl/headers/include/cuda/__annotated_ptr/access_property.h +169 -0
  196. cuda/cccl/headers/include/cuda/__annotated_ptr/access_property_encoding.h +172 -0
  197. cuda/cccl/headers/include/cuda/__annotated_ptr/annotated_ptr.h +210 -0
  198. cuda/cccl/headers/include/cuda/__annotated_ptr/annotated_ptr_base.h +100 -0
  199. cuda/cccl/headers/include/cuda/__annotated_ptr/apply_access_property.h +84 -0
  200. cuda/cccl/headers/include/cuda/__annotated_ptr/associate_access_property.h +127 -0
  201. cuda/cccl/headers/include/cuda/__annotated_ptr/createpolicy.h +209 -0
  202. cuda/cccl/headers/include/cuda/__atomic/atomic.h +145 -0
  203. cuda/cccl/headers/include/cuda/__barrier/aligned_size.h +61 -0
  204. cuda/cccl/headers/include/cuda/__barrier/async_contract_fulfillment.h +39 -0
  205. cuda/cccl/headers/include/cuda/__barrier/barrier.h +66 -0
  206. cuda/cccl/headers/include/cuda/__barrier/barrier_arrive_tx.h +100 -0
  207. cuda/cccl/headers/include/cuda/__barrier/barrier_block_scope.h +454 -0
  208. cuda/cccl/headers/include/cuda/__barrier/barrier_expect_tx.h +72 -0
  209. cuda/cccl/headers/include/cuda/__barrier/barrier_native_handle.h +45 -0
  210. cuda/cccl/headers/include/cuda/__barrier/barrier_thread_scope.h +61 -0
  211. cuda/cccl/headers/include/cuda/__bit/bit_reverse.h +171 -0
  212. cuda/cccl/headers/include/cuda/__bit/bitfield.h +122 -0
  213. cuda/cccl/headers/include/cuda/__bit/bitmask.h +88 -0
  214. cuda/cccl/headers/include/cuda/__cccl_config +36 -0
  215. cuda/cccl/headers/include/cuda/__cmath/ceil_div.h +126 -0
  216. cuda/cccl/headers/include/cuda/__cmath/ilog.h +195 -0
  217. cuda/cccl/headers/include/cuda/__cmath/ipow.h +107 -0
  218. cuda/cccl/headers/include/cuda/__cmath/isqrt.h +80 -0
  219. cuda/cccl/headers/include/cuda/__cmath/neg.h +47 -0
  220. cuda/cccl/headers/include/cuda/__cmath/pow2.h +74 -0
  221. cuda/cccl/headers/include/cuda/__cmath/round_down.h +104 -0
  222. cuda/cccl/headers/include/cuda/__cmath/round_up.h +106 -0
  223. cuda/cccl/headers/include/cuda/__cmath/uabs.h +57 -0
  224. cuda/cccl/headers/include/cuda/__execution/determinism.h +90 -0
  225. cuda/cccl/headers/include/cuda/__execution/require.h +67 -0
  226. cuda/cccl/headers/include/cuda/__execution/tune.h +62 -0
  227. cuda/cccl/headers/include/cuda/__functional/address_stability.h +131 -0
  228. cuda/cccl/headers/include/cuda/__functional/for_each_canceled.h +279 -0
  229. cuda/cccl/headers/include/cuda/__functional/get_device_address.h +58 -0
  230. cuda/cccl/headers/include/cuda/__functional/maximum.h +58 -0
  231. cuda/cccl/headers/include/cuda/__functional/minimum.h +58 -0
  232. cuda/cccl/headers/include/cuda/__functional/proclaim_return_type.h +108 -0
  233. cuda/cccl/headers/include/cuda/__fwd/barrier.h +38 -0
  234. cuda/cccl/headers/include/cuda/__fwd/barrier_native_handle.h +42 -0
  235. cuda/cccl/headers/include/cuda/__fwd/get_stream.h +38 -0
  236. cuda/cccl/headers/include/cuda/__fwd/pipeline.h +37 -0
  237. cuda/cccl/headers/include/cuda/__iterator/constant_iterator.h +261 -0
  238. cuda/cccl/headers/include/cuda/__iterator/counting_iterator.h +407 -0
  239. cuda/cccl/headers/include/cuda/__iterator/discard_iterator.h +314 -0
  240. cuda/cccl/headers/include/cuda/__iterator/strided_iterator.h +323 -0
  241. cuda/cccl/headers/include/cuda/__iterator/transform_iterator.h +481 -0
  242. cuda/cccl/headers/include/cuda/__latch/latch.h +44 -0
  243. cuda/cccl/headers/include/cuda/__mdspan/host_device_accessor.h +457 -0
  244. cuda/cccl/headers/include/cuda/__mdspan/host_device_mdspan.h +63 -0
  245. cuda/cccl/headers/include/cuda/__mdspan/restrict_accessor.h +123 -0
  246. cuda/cccl/headers/include/cuda/__mdspan/restrict_mdspan.h +51 -0
  247. cuda/cccl/headers/include/cuda/__memcpy_async/check_preconditions.h +79 -0
  248. cuda/cccl/headers/include/cuda/__memcpy_async/completion_mechanism.h +47 -0
  249. cuda/cccl/headers/include/cuda/__memcpy_async/cp_async_bulk_shared_global.h +60 -0
  250. cuda/cccl/headers/include/cuda/__memcpy_async/cp_async_fallback.h +72 -0
  251. cuda/cccl/headers/include/cuda/__memcpy_async/cp_async_shared_global.h +98 -0
  252. cuda/cccl/headers/include/cuda/__memcpy_async/dispatch_memcpy_async.h +162 -0
  253. cuda/cccl/headers/include/cuda/__memcpy_async/is_local_smem_barrier.h +49 -0
  254. cuda/cccl/headers/include/cuda/__memcpy_async/memcpy_async.h +179 -0
  255. cuda/cccl/headers/include/cuda/__memcpy_async/memcpy_async_barrier.h +99 -0
  256. cuda/cccl/headers/include/cuda/__memcpy_async/memcpy_async_tx.h +99 -0
  257. cuda/cccl/headers/include/cuda/__memcpy_async/memcpy_completion.h +170 -0
  258. cuda/cccl/headers/include/cuda/__memcpy_async/try_get_barrier_handle.h +59 -0
  259. cuda/cccl/headers/include/cuda/__memory/address_space.h +86 -0
  260. cuda/cccl/headers/include/cuda/__memory_resource/get_memory_resource.h +94 -0
  261. cuda/cccl/headers/include/cuda/__memory_resource/get_property.h +158 -0
  262. cuda/cccl/headers/include/cuda/__memory_resource/properties.h +73 -0
  263. cuda/cccl/headers/include/cuda/__memory_resource/resource.h +129 -0
  264. cuda/cccl/headers/include/cuda/__memory_resource/resource_ref.h +653 -0
  265. cuda/cccl/headers/include/cuda/__numeric/narrow.h +108 -0
  266. cuda/cccl/headers/include/cuda/__numeric/overflow_cast.h +57 -0
  267. cuda/cccl/headers/include/cuda/__numeric/overflow_result.h +43 -0
  268. cuda/cccl/headers/include/cuda/__nvtx/nvtx.h +101 -0
  269. cuda/cccl/headers/include/cuda/__nvtx/nvtx3.h +2982 -0
  270. cuda/cccl/headers/include/cuda/__ptx/instructions/barrier_cluster.h +43 -0
  271. cuda/cccl/headers/include/cuda/__ptx/instructions/bfind.h +41 -0
  272. cuda/cccl/headers/include/cuda/__ptx/instructions/bmsk.h +41 -0
  273. cuda/cccl/headers/include/cuda/__ptx/instructions/clusterlaunchcontrol.h +41 -0
  274. cuda/cccl/headers/include/cuda/__ptx/instructions/cp_async_bulk.h +44 -0
  275. cuda/cccl/headers/include/cuda/__ptx/instructions/cp_async_bulk_commit_group.h +43 -0
  276. cuda/cccl/headers/include/cuda/__ptx/instructions/cp_async_bulk_tensor.h +45 -0
  277. cuda/cccl/headers/include/cuda/__ptx/instructions/cp_async_bulk_wait_group.h +43 -0
  278. cuda/cccl/headers/include/cuda/__ptx/instructions/cp_async_mbarrier_arrive.h +42 -0
  279. cuda/cccl/headers/include/cuda/__ptx/instructions/cp_reduce_async_bulk.h +60 -0
  280. cuda/cccl/headers/include/cuda/__ptx/instructions/cp_reduce_async_bulk_tensor.h +43 -0
  281. cuda/cccl/headers/include/cuda/__ptx/instructions/elect_sync.h +41 -0
  282. cuda/cccl/headers/include/cuda/__ptx/instructions/exit.h +41 -0
  283. cuda/cccl/headers/include/cuda/__ptx/instructions/fence.h +49 -0
  284. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/barrier_cluster.h +115 -0
  285. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/bfind.h +190 -0
  286. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/bmsk.h +54 -0
  287. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/clusterlaunchcontrol.h +240 -0
  288. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk.h +193 -0
  289. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk_commit_group.h +25 -0
  290. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk_multicast.h +52 -0
  291. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk_tensor.h +957 -0
  292. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk_tensor_gather_scatter.h +288 -0
  293. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk_tensor_multicast.h +596 -0
  294. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_bulk_wait_group.h +46 -0
  295. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_mbarrier_arrive.h +26 -0
  296. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_async_mbarrier_arrive_noinc.h +26 -0
  297. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_reduce_async_bulk.h +1445 -0
  298. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_reduce_async_bulk_bf16.h +132 -0
  299. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_reduce_async_bulk_f16.h +117 -0
  300. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/cp_reduce_async_bulk_tensor.h +601 -0
  301. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/elect_sync.h +36 -0
  302. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/exit.h +25 -0
  303. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence.h +208 -0
  304. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence_mbarrier_init.h +31 -0
  305. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence_proxy_alias.h +25 -0
  306. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence_proxy_async.h +58 -0
  307. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence_proxy_async_generic_sync_restrict.h +62 -0
  308. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence_proxy_tensormap_generic.h +101 -0
  309. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/fence_sync_restrict.h +62 -0
  310. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/get_sreg.h +949 -0
  311. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/getctarank.h +32 -0
  312. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/ld.h +15074 -0
  313. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_arrive.h +385 -0
  314. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_arrive_expect_tx.h +176 -0
  315. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_arrive_no_complete.h +34 -0
  316. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_expect_tx.h +94 -0
  317. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_init.h +27 -0
  318. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_test_wait.h +137 -0
  319. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_test_wait_parity.h +138 -0
  320. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_try_wait.h +280 -0
  321. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/mbarrier_try_wait_parity.h +282 -0
  322. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/multimem_ld_reduce.h +2148 -0
  323. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/multimem_red.h +1272 -0
  324. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/multimem_st.h +228 -0
  325. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/prmt.h +230 -0
  326. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/red_async.h +430 -0
  327. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/shl.h +96 -0
  328. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/shr.h +168 -0
  329. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/st.h +1830 -0
  330. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/st_async.h +123 -0
  331. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/st_bulk.h +31 -0
  332. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_alloc.h +105 -0
  333. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_commit.h +81 -0
  334. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_cp.h +612 -0
  335. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_fence.h +44 -0
  336. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_ld.h +4446 -0
  337. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_mma.h +4061 -0
  338. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_mma_ws.h +6438 -0
  339. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_shift.h +36 -0
  340. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_st.h +4582 -0
  341. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tcgen05_wait.h +44 -0
  342. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tensormap_cp_fenceproxy.h +67 -0
  343. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/tensormap_replace.h +750 -0
  344. cuda/cccl/headers/include/cuda/__ptx/instructions/generated/trap.h +25 -0
  345. cuda/cccl/headers/include/cuda/__ptx/instructions/get_sreg.h +43 -0
  346. cuda/cccl/headers/include/cuda/__ptx/instructions/getctarank.h +43 -0
  347. cuda/cccl/headers/include/cuda/__ptx/instructions/ld.h +41 -0
  348. cuda/cccl/headers/include/cuda/__ptx/instructions/mbarrier_arrive.h +45 -0
  349. cuda/cccl/headers/include/cuda/__ptx/instructions/mbarrier_expect_tx.h +41 -0
  350. cuda/cccl/headers/include/cuda/__ptx/instructions/mbarrier_init.h +43 -0
  351. cuda/cccl/headers/include/cuda/__ptx/instructions/mbarrier_wait.h +46 -0
  352. cuda/cccl/headers/include/cuda/__ptx/instructions/multimem_ld_reduce.h +41 -0
  353. cuda/cccl/headers/include/cuda/__ptx/instructions/multimem_red.h +41 -0
  354. cuda/cccl/headers/include/cuda/__ptx/instructions/multimem_st.h +41 -0
  355. cuda/cccl/headers/include/cuda/__ptx/instructions/prmt.h +41 -0
  356. cuda/cccl/headers/include/cuda/__ptx/instructions/red_async.h +43 -0
  357. cuda/cccl/headers/include/cuda/__ptx/instructions/shfl_sync.h +275 -0
  358. cuda/cccl/headers/include/cuda/__ptx/instructions/shl.h +41 -0
  359. cuda/cccl/headers/include/cuda/__ptx/instructions/shr.h +41 -0
  360. cuda/cccl/headers/include/cuda/__ptx/instructions/st.h +41 -0
  361. cuda/cccl/headers/include/cuda/__ptx/instructions/st_async.h +43 -0
  362. cuda/cccl/headers/include/cuda/__ptx/instructions/st_bulk.h +41 -0
  363. cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_alloc.h +41 -0
  364. cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_commit.h +41 -0
  365. cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_cp.h +41 -0
  366. cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_fence.h +41 -0
  367. cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_ld.h +41 -0
  368. cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_mma.h +41 -0
  369. cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_mma_ws.h +41 -0
  370. cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_shift.h +41 -0
  371. cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_st.h +41 -0
  372. cuda/cccl/headers/include/cuda/__ptx/instructions/tcgen05_wait.h +41 -0
  373. cuda/cccl/headers/include/cuda/__ptx/instructions/tensormap_cp_fenceproxy.h +43 -0
  374. cuda/cccl/headers/include/cuda/__ptx/instructions/tensormap_replace.h +43 -0
  375. cuda/cccl/headers/include/cuda/__ptx/instructions/trap.h +41 -0
  376. cuda/cccl/headers/include/cuda/__ptx/ptx_dot_variants.h +230 -0
  377. cuda/cccl/headers/include/cuda/__ptx/ptx_helper_functions.h +151 -0
  378. cuda/cccl/headers/include/cuda/__semaphore/counting_semaphore.h +53 -0
  379. cuda/cccl/headers/include/cuda/__stream/get_stream.h +97 -0
  380. cuda/cccl/headers/include/cuda/__stream/stream_ref.h +165 -0
  381. cuda/cccl/headers/include/cuda/__type_traits/is_floating_point.h +47 -0
  382. cuda/cccl/headers/include/cuda/__warp/lane_mask.h +326 -0
  383. cuda/cccl/headers/include/cuda/__warp/warp_match_all.h +66 -0
  384. cuda/cccl/headers/include/cuda/__warp/warp_shuffle.h +249 -0
  385. cuda/cccl/headers/include/cuda/access_property +26 -0
  386. cuda/cccl/headers/include/cuda/annotated_ptr +29 -0
  387. cuda/cccl/headers/include/cuda/atomic +27 -0
  388. cuda/cccl/headers/include/cuda/barrier +262 -0
  389. cuda/cccl/headers/include/cuda/bit +29 -0
  390. cuda/cccl/headers/include/cuda/cmath +35 -0
  391. cuda/cccl/headers/include/cuda/discard_memory +61 -0
  392. cuda/cccl/headers/include/cuda/functional +31 -0
  393. cuda/cccl/headers/include/cuda/iterator +31 -0
  394. cuda/cccl/headers/include/cuda/latch +27 -0
  395. cuda/cccl/headers/include/cuda/mdspan +28 -0
  396. cuda/cccl/headers/include/cuda/memory +28 -0
  397. cuda/cccl/headers/include/cuda/memory_resource +41 -0
  398. cuda/cccl/headers/include/cuda/numeric +28 -0
  399. cuda/cccl/headers/include/cuda/pipeline +579 -0
  400. cuda/cccl/headers/include/cuda/ptx +118 -0
  401. cuda/cccl/headers/include/cuda/semaphore +31 -0
  402. cuda/cccl/headers/include/cuda/std/__algorithm/adjacent_find.h +60 -0
  403. cuda/cccl/headers/include/cuda/std/__algorithm/all_of.h +46 -0
  404. cuda/cccl/headers/include/cuda/std/__algorithm/any_of.h +46 -0
  405. cuda/cccl/headers/include/cuda/std/__algorithm/binary_search.h +52 -0
  406. cuda/cccl/headers/include/cuda/std/__algorithm/clamp.h +48 -0
  407. cuda/cccl/headers/include/cuda/std/__algorithm/comp.h +64 -0
  408. cuda/cccl/headers/include/cuda/std/__algorithm/comp_ref_type.h +85 -0
  409. cuda/cccl/headers/include/cuda/std/__algorithm/copy.h +143 -0
  410. cuda/cccl/headers/include/cuda/std/__algorithm/copy_backward.h +79 -0
  411. cuda/cccl/headers/include/cuda/std/__algorithm/copy_if.h +47 -0
  412. cuda/cccl/headers/include/cuda/std/__algorithm/copy_n.h +74 -0
  413. cuda/cccl/headers/include/cuda/std/__algorithm/count.h +49 -0
  414. cuda/cccl/headers/include/cuda/std/__algorithm/count_if.h +49 -0
  415. cuda/cccl/headers/include/cuda/std/__algorithm/equal.h +129 -0
  416. cuda/cccl/headers/include/cuda/std/__algorithm/equal_range.h +101 -0
  417. cuda/cccl/headers/include/cuda/std/__algorithm/fill.h +58 -0
  418. cuda/cccl/headers/include/cuda/std/__algorithm/fill_n.h +51 -0
  419. cuda/cccl/headers/include/cuda/std/__algorithm/find.h +64 -0
  420. cuda/cccl/headers/include/cuda/std/__algorithm/find_end.h +225 -0
  421. cuda/cccl/headers/include/cuda/std/__algorithm/find_first_of.h +73 -0
  422. cuda/cccl/headers/include/cuda/std/__algorithm/find_if.h +46 -0
  423. cuda/cccl/headers/include/cuda/std/__algorithm/find_if_not.h +46 -0
  424. cuda/cccl/headers/include/cuda/std/__algorithm/for_each.h +42 -0
  425. cuda/cccl/headers/include/cuda/std/__algorithm/for_each_n.h +48 -0
  426. cuda/cccl/headers/include/cuda/std/__algorithm/generate.h +41 -0
  427. cuda/cccl/headers/include/cuda/std/__algorithm/generate_n.h +46 -0
  428. cuda/cccl/headers/include/cuda/std/__algorithm/half_positive.h +49 -0
  429. cuda/cccl/headers/include/cuda/std/__algorithm/includes.h +92 -0
  430. cuda/cccl/headers/include/cuda/std/__algorithm/is_heap.h +51 -0
  431. cuda/cccl/headers/include/cuda/std/__algorithm/is_heap_until.h +83 -0
  432. cuda/cccl/headers/include/cuda/std/__algorithm/is_partitioned.h +58 -0
  433. cuda/cccl/headers/include/cuda/std/__algorithm/is_permutation.h +252 -0
  434. cuda/cccl/headers/include/cuda/std/__algorithm/is_sorted.h +50 -0
  435. cuda/cccl/headers/include/cuda/std/__algorithm/is_sorted_until.h +69 -0
  436. cuda/cccl/headers/include/cuda/std/__algorithm/iter_swap.h +82 -0
  437. cuda/cccl/headers/include/cuda/std/__algorithm/iterator_operations.h +188 -0
  438. cuda/cccl/headers/include/cuda/std/__algorithm/lexicographical_compare.h +68 -0
  439. cuda/cccl/headers/include/cuda/std/__algorithm/lower_bound.h +83 -0
  440. cuda/cccl/headers/include/cuda/std/__algorithm/make_heap.h +72 -0
  441. cuda/cccl/headers/include/cuda/std/__algorithm/make_projected.h +96 -0
  442. cuda/cccl/headers/include/cuda/std/__algorithm/max.h +62 -0
  443. cuda/cccl/headers/include/cuda/std/__algorithm/max_element.h +70 -0
  444. cuda/cccl/headers/include/cuda/std/__algorithm/merge.h +89 -0
  445. cuda/cccl/headers/include/cuda/std/__algorithm/min.h +62 -0
  446. cuda/cccl/headers/include/cuda/std/__algorithm/min_element.h +88 -0
  447. cuda/cccl/headers/include/cuda/std/__algorithm/minmax.h +71 -0
  448. cuda/cccl/headers/include/cuda/std/__algorithm/minmax_element.h +141 -0
  449. cuda/cccl/headers/include/cuda/std/__algorithm/mismatch.h +83 -0
  450. cuda/cccl/headers/include/cuda/std/__algorithm/move.h +88 -0
  451. cuda/cccl/headers/include/cuda/std/__algorithm/move_backward.h +84 -0
  452. cuda/cccl/headers/include/cuda/std/__algorithm/next_permutation.h +89 -0
  453. cuda/cccl/headers/include/cuda/std/__algorithm/none_of.h +46 -0
  454. cuda/cccl/headers/include/cuda/std/__algorithm/partial_sort.h +102 -0
  455. cuda/cccl/headers/include/cuda/std/__algorithm/partial_sort_copy.h +122 -0
  456. cuda/cccl/headers/include/cuda/std/__algorithm/partition.h +121 -0
  457. cuda/cccl/headers/include/cuda/std/__algorithm/partition_copy.h +59 -0
  458. cuda/cccl/headers/include/cuda/std/__algorithm/partition_point.h +61 -0
  459. cuda/cccl/headers/include/cuda/std/__algorithm/pop_heap.h +95 -0
  460. cuda/cccl/headers/include/cuda/std/__algorithm/prev_permutation.h +89 -0
  461. cuda/cccl/headers/include/cuda/std/__algorithm/push_heap.h +103 -0
  462. cuda/cccl/headers/include/cuda/std/__algorithm/ranges_iterator_concept.h +65 -0
  463. cuda/cccl/headers/include/cuda/std/__algorithm/ranges_min.h +99 -0
  464. cuda/cccl/headers/include/cuda/std/__algorithm/ranges_min_element.h +69 -0
  465. cuda/cccl/headers/include/cuda/std/__algorithm/remove.h +55 -0
  466. cuda/cccl/headers/include/cuda/std/__algorithm/remove_copy.h +47 -0
  467. cuda/cccl/headers/include/cuda/std/__algorithm/remove_copy_if.h +47 -0
  468. cuda/cccl/headers/include/cuda/std/__algorithm/remove_if.h +56 -0
  469. cuda/cccl/headers/include/cuda/std/__algorithm/replace.h +45 -0
  470. cuda/cccl/headers/include/cuda/std/__algorithm/replace_copy.h +54 -0
  471. cuda/cccl/headers/include/cuda/std/__algorithm/replace_copy_if.h +50 -0
  472. cuda/cccl/headers/include/cuda/std/__algorithm/replace_if.h +45 -0
  473. cuda/cccl/headers/include/cuda/std/__algorithm/reverse.h +81 -0
  474. cuda/cccl/headers/include/cuda/std/__algorithm/reverse_copy.h +43 -0
  475. cuda/cccl/headers/include/cuda/std/__algorithm/rotate.h +264 -0
  476. cuda/cccl/headers/include/cuda/std/__algorithm/rotate_copy.h +40 -0
  477. cuda/cccl/headers/include/cuda/std/__algorithm/search.h +185 -0
  478. cuda/cccl/headers/include/cuda/std/__algorithm/search_n.h +163 -0
  479. cuda/cccl/headers/include/cuda/std/__algorithm/set_difference.h +95 -0
  480. cuda/cccl/headers/include/cuda/std/__algorithm/set_intersection.h +123 -0
  481. cuda/cccl/headers/include/cuda/std/__algorithm/set_symmetric_difference.h +135 -0
  482. cuda/cccl/headers/include/cuda/std/__algorithm/set_union.h +129 -0
  483. cuda/cccl/headers/include/cuda/std/__algorithm/shift_left.h +84 -0
  484. cuda/cccl/headers/include/cuda/std/__algorithm/shift_right.h +144 -0
  485. cuda/cccl/headers/include/cuda/std/__algorithm/sift_down.h +139 -0
  486. cuda/cccl/headers/include/cuda/std/__algorithm/sort_heap.h +72 -0
  487. cuda/cccl/headers/include/cuda/std/__algorithm/swap_ranges.h +78 -0
  488. cuda/cccl/headers/include/cuda/std/__algorithm/transform.h +59 -0
  489. cuda/cccl/headers/include/cuda/std/__algorithm/unique.h +77 -0
  490. cuda/cccl/headers/include/cuda/std/__algorithm/unique_copy.h +156 -0
  491. cuda/cccl/headers/include/cuda/std/__algorithm/unwrap_iter.h +96 -0
  492. cuda/cccl/headers/include/cuda/std/__algorithm/unwrap_range.h +127 -0
  493. cuda/cccl/headers/include/cuda/std/__algorithm/upper_bound.h +83 -0
  494. cuda/cccl/headers/include/cuda/std/__algorithm_ +26 -0
  495. cuda/cccl/headers/include/cuda/std/__atomic/api/common.h +192 -0
  496. cuda/cccl/headers/include/cuda/std/__atomic/api/owned.h +138 -0
  497. cuda/cccl/headers/include/cuda/std/__atomic/api/reference.h +118 -0
  498. cuda/cccl/headers/include/cuda/std/__atomic/functions/common.h +58 -0
  499. cuda/cccl/headers/include/cuda/std/__atomic/functions/cuda_local.h +218 -0
  500. cuda/cccl/headers/include/cuda/std/__atomic/functions/cuda_ptx_derived.h +401 -0
  501. cuda/cccl/headers/include/cuda/std/__atomic/functions/cuda_ptx_generated.h +3971 -0
  502. cuda/cccl/headers/include/cuda/std/__atomic/functions/cuda_ptx_generated_helper.h +177 -0
  503. cuda/cccl/headers/include/cuda/std/__atomic/functions/host.h +211 -0
  504. cuda/cccl/headers/include/cuda/std/__atomic/functions.h +33 -0
  505. cuda/cccl/headers/include/cuda/std/__atomic/order.h +159 -0
  506. cuda/cccl/headers/include/cuda/std/__atomic/platform/msvc_to_builtins.h +654 -0
  507. cuda/cccl/headers/include/cuda/std/__atomic/platform.h +93 -0
  508. cuda/cccl/headers/include/cuda/std/__atomic/scopes.h +105 -0
  509. cuda/cccl/headers/include/cuda/std/__atomic/types/base.h +250 -0
  510. cuda/cccl/headers/include/cuda/std/__atomic/types/common.h +105 -0
  511. cuda/cccl/headers/include/cuda/std/__atomic/types/locked.h +225 -0
  512. cuda/cccl/headers/include/cuda/std/__atomic/types/reference.h +73 -0
  513. cuda/cccl/headers/include/cuda/std/__atomic/types/small.h +228 -0
  514. cuda/cccl/headers/include/cuda/std/__atomic/types.h +52 -0
  515. cuda/cccl/headers/include/cuda/std/__atomic/wait/notify_wait.h +95 -0
  516. cuda/cccl/headers/include/cuda/std/__atomic/wait/polling.h +65 -0
  517. cuda/cccl/headers/include/cuda/std/__barrier/barrier.h +227 -0
  518. cuda/cccl/headers/include/cuda/std/__barrier/empty_completion.h +37 -0
  519. cuda/cccl/headers/include/cuda/std/__barrier/poll_tester.h +84 -0
  520. cuda/cccl/headers/include/cuda/std/__bit/bit_cast.h +77 -0
  521. cuda/cccl/headers/include/cuda/std/__bit/byteswap.h +183 -0
  522. cuda/cccl/headers/include/cuda/std/__bit/countl.h +167 -0
  523. cuda/cccl/headers/include/cuda/std/__bit/countr.h +185 -0
  524. cuda/cccl/headers/include/cuda/std/__bit/endian.h +39 -0
  525. cuda/cccl/headers/include/cuda/std/__bit/has_single_bit.h +43 -0
  526. cuda/cccl/headers/include/cuda/std/__bit/integral.h +124 -0
  527. cuda/cccl/headers/include/cuda/std/__bit/popcount.h +154 -0
  528. cuda/cccl/headers/include/cuda/std/__bit/reference.h +1274 -0
  529. cuda/cccl/headers/include/cuda/std/__bit/rotate.h +94 -0
  530. cuda/cccl/headers/include/cuda/std/__cccl/architecture.h +78 -0
  531. cuda/cccl/headers/include/cuda/std/__cccl/assert.h +146 -0
  532. cuda/cccl/headers/include/cuda/std/__cccl/attributes.h +207 -0
  533. cuda/cccl/headers/include/cuda/std/__cccl/builtin.h +1343 -0
  534. cuda/cccl/headers/include/cuda/std/__cccl/compiler.h +216 -0
  535. cuda/cccl/headers/include/cuda/std/__cccl/cuda_capabilities.h +43 -0
  536. cuda/cccl/headers/include/cuda/std/__cccl/cuda_toolkit.h +53 -0
  537. cuda/cccl/headers/include/cuda/std/__cccl/deprecated.h +69 -0
  538. cuda/cccl/headers/include/cuda/std/__cccl/diagnostic.h +129 -0
  539. cuda/cccl/headers/include/cuda/std/__cccl/dialect.h +124 -0
  540. cuda/cccl/headers/include/cuda/std/__cccl/epilogue.h +326 -0
  541. cuda/cccl/headers/include/cuda/std/__cccl/exceptions.h +35 -0
  542. cuda/cccl/headers/include/cuda/std/__cccl/execution_space.h +68 -0
  543. cuda/cccl/headers/include/cuda/std/__cccl/extended_data_types.h +129 -0
  544. cuda/cccl/headers/include/cuda/std/__cccl/is_non_narrowing_convertible.h +73 -0
  545. cuda/cccl/headers/include/cuda/std/__cccl/os.h +48 -0
  546. cuda/cccl/headers/include/cuda/std/__cccl/preprocessor.h +1234 -0
  547. cuda/cccl/headers/include/cuda/std/__cccl/prologue.h +267 -0
  548. cuda/cccl/headers/include/cuda/std/__cccl/ptx_isa.h +176 -0
  549. cuda/cccl/headers/include/cuda/std/__cccl/rtti.h +72 -0
  550. cuda/cccl/headers/include/cuda/std/__cccl/sequence_access.h +87 -0
  551. cuda/cccl/headers/include/cuda/std/__cccl/system_header.h +38 -0
  552. cuda/cccl/headers/include/cuda/std/__cccl/unreachable.h +31 -0
  553. cuda/cccl/headers/include/cuda/std/__cccl/version.h +26 -0
  554. cuda/cccl/headers/include/cuda/std/__cccl/visibility.h +112 -0
  555. cuda/cccl/headers/include/cuda/std/__charconv/chars_format.h +81 -0
  556. cuda/cccl/headers/include/cuda/std/__charconv/from_chars_result.h +56 -0
  557. cuda/cccl/headers/include/cuda/std/__charconv/to_chars.h +148 -0
  558. cuda/cccl/headers/include/cuda/std/__charconv/to_chars_result.h +56 -0
  559. cuda/cccl/headers/include/cuda/std/__charconv_ +30 -0
  560. cuda/cccl/headers/include/cuda/std/__cmath/abs.h +240 -0
  561. cuda/cccl/headers/include/cuda/std/__cmath/copysign.h +187 -0
  562. cuda/cccl/headers/include/cuda/std/__cmath/exponential_functions.h +620 -0
  563. cuda/cccl/headers/include/cuda/std/__cmath/fpclassify.h +207 -0
  564. cuda/cccl/headers/include/cuda/std/__cmath/gamma.h +181 -0
  565. cuda/cccl/headers/include/cuda/std/__cmath/hyperbolic_functions.h +250 -0
  566. cuda/cccl/headers/include/cuda/std/__cmath/hypot.h +213 -0
  567. cuda/cccl/headers/include/cuda/std/__cmath/inverse_hyperbolic_functions.h +250 -0
  568. cuda/cccl/headers/include/cuda/std/__cmath/inverse_trigonometric_functions.h +323 -0
  569. cuda/cccl/headers/include/cuda/std/__cmath/isfinite.h +163 -0
  570. cuda/cccl/headers/include/cuda/std/__cmath/isinf.h +201 -0
  571. cuda/cccl/headers/include/cuda/std/__cmath/isnan.h +176 -0
  572. cuda/cccl/headers/include/cuda/std/__cmath/isnormal.h +129 -0
  573. cuda/cccl/headers/include/cuda/std/__cmath/lerp.h +106 -0
  574. cuda/cccl/headers/include/cuda/std/__cmath/logarithms.h +503 -0
  575. cuda/cccl/headers/include/cuda/std/__cmath/min_max.h +236 -0
  576. cuda/cccl/headers/include/cuda/std/__cmath/nvbf16.h +58 -0
  577. cuda/cccl/headers/include/cuda/std/__cmath/nvfp16.h +58 -0
  578. cuda/cccl/headers/include/cuda/std/__cmath/roots.h +180 -0
  579. cuda/cccl/headers/include/cuda/std/__cmath/rounding_functions.h +877 -0
  580. cuda/cccl/headers/include/cuda/std/__cmath/signbit.h +155 -0
  581. cuda/cccl/headers/include/cuda/std/__cmath/traits.h +170 -0
  582. cuda/cccl/headers/include/cuda/std/__cmath/trigonometric_functions.h +292 -0
  583. cuda/cccl/headers/include/cuda/std/__complex/nvbf16.h +351 -0
  584. cuda/cccl/headers/include/cuda/std/__complex/nvfp16.h +350 -0
  585. cuda/cccl/headers/include/cuda/std/__complex/vector_support.h +135 -0
  586. cuda/cccl/headers/include/cuda/std/__concepts/arithmetic.h +56 -0
  587. cuda/cccl/headers/include/cuda/std/__concepts/assignable.h +64 -0
  588. cuda/cccl/headers/include/cuda/std/__concepts/boolean_testable.h +63 -0
  589. cuda/cccl/headers/include/cuda/std/__concepts/class_or_enum.h +46 -0
  590. cuda/cccl/headers/include/cuda/std/__concepts/common_reference_with.h +69 -0
  591. cuda/cccl/headers/include/cuda/std/__concepts/common_with.h +82 -0
  592. cuda/cccl/headers/include/cuda/std/__concepts/concept_macros.h +274 -0
  593. cuda/cccl/headers/include/cuda/std/__concepts/constructible.h +107 -0
  594. cuda/cccl/headers/include/cuda/std/__concepts/convertible_to.h +71 -0
  595. cuda/cccl/headers/include/cuda/std/__concepts/copyable.h +60 -0
  596. cuda/cccl/headers/include/cuda/std/__concepts/derived_from.h +57 -0
  597. cuda/cccl/headers/include/cuda/std/__concepts/destructible.h +76 -0
  598. cuda/cccl/headers/include/cuda/std/__concepts/different_from.h +38 -0
  599. cuda/cccl/headers/include/cuda/std/__concepts/equality_comparable.h +100 -0
  600. cuda/cccl/headers/include/cuda/std/__concepts/invocable.h +80 -0
  601. cuda/cccl/headers/include/cuda/std/__concepts/movable.h +58 -0
  602. cuda/cccl/headers/include/cuda/std/__concepts/predicate.h +54 -0
  603. cuda/cccl/headers/include/cuda/std/__concepts/regular.h +54 -0
  604. cuda/cccl/headers/include/cuda/std/__concepts/relation.h +77 -0
  605. cuda/cccl/headers/include/cuda/std/__concepts/same_as.h +42 -0
  606. cuda/cccl/headers/include/cuda/std/__concepts/semiregular.h +54 -0
  607. cuda/cccl/headers/include/cuda/std/__concepts/swappable.h +206 -0
  608. cuda/cccl/headers/include/cuda/std/__concepts/totally_ordered.h +101 -0
  609. cuda/cccl/headers/include/cuda/std/__cstddef/byte.h +113 -0
  610. cuda/cccl/headers/include/cuda/std/__cstddef/types.h +52 -0
  611. cuda/cccl/headers/include/cuda/std/__cstdlib/abs.h +57 -0
  612. cuda/cccl/headers/include/cuda/std/__cstdlib/aligned_alloc.h +66 -0
  613. cuda/cccl/headers/include/cuda/std/__cstdlib/div.h +96 -0
  614. cuda/cccl/headers/include/cuda/std/__cstdlib/malloc.h +69 -0
  615. cuda/cccl/headers/include/cuda/std/__cuda/api_wrapper.h +62 -0
  616. cuda/cccl/headers/include/cuda/std/__cuda/ensure_current_device.h +72 -0
  617. cuda/cccl/headers/include/cuda/std/__exception/cuda_error.h +143 -0
  618. cuda/cccl/headers/include/cuda/std/__exception/terminate.h +73 -0
  619. cuda/cccl/headers/include/cuda/std/__execution/env.h +436 -0
  620. cuda/cccl/headers/include/cuda/std/__expected/bad_expected_access.h +127 -0
  621. cuda/cccl/headers/include/cuda/std/__expected/expected.h +2002 -0
  622. cuda/cccl/headers/include/cuda/std/__expected/expected_base.h +1078 -0
  623. cuda/cccl/headers/include/cuda/std/__expected/unexpect.h +37 -0
  624. cuda/cccl/headers/include/cuda/std/__expected/unexpected.h +178 -0
  625. cuda/cccl/headers/include/cuda/std/__floating_point/arithmetic.h +56 -0
  626. cuda/cccl/headers/include/cuda/std/__floating_point/cast.h +809 -0
  627. cuda/cccl/headers/include/cuda/std/__floating_point/cccl_fp.h +125 -0
  628. cuda/cccl/headers/include/cuda/std/__floating_point/common_type.h +48 -0
  629. cuda/cccl/headers/include/cuda/std/__floating_point/constants.h +172 -0
  630. cuda/cccl/headers/include/cuda/std/__floating_point/conversion_rank_order.h +103 -0
  631. cuda/cccl/headers/include/cuda/std/__floating_point/format.h +162 -0
  632. cuda/cccl/headers/include/cuda/std/__floating_point/fp.h +39 -0
  633. cuda/cccl/headers/include/cuda/std/__floating_point/mask.h +64 -0
  634. cuda/cccl/headers/include/cuda/std/__floating_point/native_type.h +81 -0
  635. cuda/cccl/headers/include/cuda/std/__floating_point/nvfp_types.h +58 -0
  636. cuda/cccl/headers/include/cuda/std/__floating_point/overflow_handler.h +139 -0
  637. cuda/cccl/headers/include/cuda/std/__floating_point/properties.h +229 -0
  638. cuda/cccl/headers/include/cuda/std/__floating_point/storage.h +248 -0
  639. cuda/cccl/headers/include/cuda/std/__floating_point/traits.h +172 -0
  640. cuda/cccl/headers/include/cuda/std/__functional/binary_function.h +63 -0
  641. cuda/cccl/headers/include/cuda/std/__functional/binary_negate.h +65 -0
  642. cuda/cccl/headers/include/cuda/std/__functional/bind.h +352 -0
  643. cuda/cccl/headers/include/cuda/std/__functional/bind_back.h +88 -0
  644. cuda/cccl/headers/include/cuda/std/__functional/bind_front.h +73 -0
  645. cuda/cccl/headers/include/cuda/std/__functional/binder1st.h +75 -0
  646. cuda/cccl/headers/include/cuda/std/__functional/binder2nd.h +75 -0
  647. cuda/cccl/headers/include/cuda/std/__functional/compose.h +69 -0
  648. cuda/cccl/headers/include/cuda/std/__functional/default_searcher.h +75 -0
  649. cuda/cccl/headers/include/cuda/std/__functional/function.h +1277 -0
  650. cuda/cccl/headers/include/cuda/std/__functional/hash.h +650 -0
  651. cuda/cccl/headers/include/cuda/std/__functional/identity.h +61 -0
  652. cuda/cccl/headers/include/cuda/std/__functional/invoke.h +560 -0
  653. cuda/cccl/headers/include/cuda/std/__functional/is_transparent.h +43 -0
  654. cuda/cccl/headers/include/cuda/std/__functional/mem_fn.h +67 -0
  655. cuda/cccl/headers/include/cuda/std/__functional/mem_fun_ref.h +214 -0
  656. cuda/cccl/headers/include/cuda/std/__functional/not_fn.h +121 -0
  657. cuda/cccl/headers/include/cuda/std/__functional/operations.h +534 -0
  658. cuda/cccl/headers/include/cuda/std/__functional/perfect_forward.h +127 -0
  659. cuda/cccl/headers/include/cuda/std/__functional/pointer_to_binary_function.h +65 -0
  660. cuda/cccl/headers/include/cuda/std/__functional/pointer_to_unary_function.h +64 -0
  661. cuda/cccl/headers/include/cuda/std/__functional/ranges_operations.h +113 -0
  662. cuda/cccl/headers/include/cuda/std/__functional/reference_wrapper.h +113 -0
  663. cuda/cccl/headers/include/cuda/std/__functional/unary_function.h +62 -0
  664. cuda/cccl/headers/include/cuda/std/__functional/unary_negate.h +67 -0
  665. cuda/cccl/headers/include/cuda/std/__functional/unwrap_ref.h +56 -0
  666. cuda/cccl/headers/include/cuda/std/__functional/weak_result_type.h +278 -0
  667. cuda/cccl/headers/include/cuda/std/__fwd/allocator.h +35 -0
  668. cuda/cccl/headers/include/cuda/std/__fwd/array.h +36 -0
  669. cuda/cccl/headers/include/cuda/std/__fwd/char_traits.h +49 -0
  670. cuda/cccl/headers/include/cuda/std/__fwd/complex.h +34 -0
  671. cuda/cccl/headers/include/cuda/std/__fwd/fp.h +37 -0
  672. cuda/cccl/headers/include/cuda/std/__fwd/get.h +123 -0
  673. cuda/cccl/headers/include/cuda/std/__fwd/hash.h +34 -0
  674. cuda/cccl/headers/include/cuda/std/__fwd/iterator_traits.h +40 -0
  675. cuda/cccl/headers/include/cuda/std/__fwd/mdspan.h +73 -0
  676. cuda/cccl/headers/include/cuda/std/__fwd/memory_resource.h +37 -0
  677. cuda/cccl/headers/include/cuda/std/__fwd/pair.h +34 -0
  678. cuda/cccl/headers/include/cuda/std/__fwd/reference_wrapper.h +34 -0
  679. cuda/cccl/headers/include/cuda/std/__fwd/span.h +38 -0
  680. cuda/cccl/headers/include/cuda/std/__fwd/string.h +83 -0
  681. cuda/cccl/headers/include/cuda/std/__fwd/string_view.h +59 -0
  682. cuda/cccl/headers/include/cuda/std/__fwd/subrange.h +55 -0
  683. cuda/cccl/headers/include/cuda/std/__fwd/tuple.h +34 -0
  684. cuda/cccl/headers/include/cuda/std/__internal/cpp_dialect.h +44 -0
  685. cuda/cccl/headers/include/cuda/std/__internal/features.h +71 -0
  686. cuda/cccl/headers/include/cuda/std/__internal/namespaces.h +102 -0
  687. cuda/cccl/headers/include/cuda/std/__iterator/access.h +132 -0
  688. cuda/cccl/headers/include/cuda/std/__iterator/advance.h +230 -0
  689. cuda/cccl/headers/include/cuda/std/__iterator/back_insert_iterator.h +103 -0
  690. cuda/cccl/headers/include/cuda/std/__iterator/bounded_iter.h +264 -0
  691. cuda/cccl/headers/include/cuda/std/__iterator/concepts.h +608 -0
  692. cuda/cccl/headers/include/cuda/std/__iterator/counted_iterator.h +469 -0
  693. cuda/cccl/headers/include/cuda/std/__iterator/data.h +63 -0
  694. cuda/cccl/headers/include/cuda/std/__iterator/default_sentinel.h +36 -0
  695. cuda/cccl/headers/include/cuda/std/__iterator/distance.h +126 -0
  696. cuda/cccl/headers/include/cuda/std/__iterator/empty.h +54 -0
  697. cuda/cccl/headers/include/cuda/std/__iterator/erase_if_container.h +53 -0
  698. cuda/cccl/headers/include/cuda/std/__iterator/front_insert_iterator.h +98 -0
  699. cuda/cccl/headers/include/cuda/std/__iterator/incrementable_traits.h +152 -0
  700. cuda/cccl/headers/include/cuda/std/__iterator/indirectly_comparable.h +55 -0
  701. cuda/cccl/headers/include/cuda/std/__iterator/insert_iterator.h +105 -0
  702. cuda/cccl/headers/include/cuda/std/__iterator/istream_iterator.h +141 -0
  703. cuda/cccl/headers/include/cuda/std/__iterator/istreambuf_iterator.h +161 -0
  704. cuda/cccl/headers/include/cuda/std/__iterator/iter_move.h +161 -0
  705. cuda/cccl/headers/include/cuda/std/__iterator/iter_swap.h +163 -0
  706. cuda/cccl/headers/include/cuda/std/__iterator/iterator.h +44 -0
  707. cuda/cccl/headers/include/cuda/std/__iterator/iterator_traits.h +935 -0
  708. cuda/cccl/headers/include/cuda/std/__iterator/mergeable.h +72 -0
  709. cuda/cccl/headers/include/cuda/std/__iterator/move_iterator.h +401 -0
  710. cuda/cccl/headers/include/cuda/std/__iterator/move_sentinel.h +73 -0
  711. cuda/cccl/headers/include/cuda/std/__iterator/next.h +102 -0
  712. cuda/cccl/headers/include/cuda/std/__iterator/ostream_iterator.h +99 -0
  713. cuda/cccl/headers/include/cuda/std/__iterator/ostreambuf_iterator.h +101 -0
  714. cuda/cccl/headers/include/cuda/std/__iterator/permutable.h +54 -0
  715. cuda/cccl/headers/include/cuda/std/__iterator/prev.h +92 -0
  716. cuda/cccl/headers/include/cuda/std/__iterator/projected.h +61 -0
  717. cuda/cccl/headers/include/cuda/std/__iterator/readable_traits.h +185 -0
  718. cuda/cccl/headers/include/cuda/std/__iterator/reverse_access.h +146 -0
  719. cuda/cccl/headers/include/cuda/std/__iterator/reverse_iterator.h +615 -0
  720. cuda/cccl/headers/include/cuda/std/__iterator/size.h +69 -0
  721. cuda/cccl/headers/include/cuda/std/__iterator/sortable.h +55 -0
  722. cuda/cccl/headers/include/cuda/std/__iterator/unreachable_sentinel.h +88 -0
  723. cuda/cccl/headers/include/cuda/std/__iterator/wrap_iter.h +259 -0
  724. cuda/cccl/headers/include/cuda/std/__latch/latch.h +88 -0
  725. cuda/cccl/headers/include/cuda/std/__limits/numeric_limits.h +617 -0
  726. cuda/cccl/headers/include/cuda/std/__limits/numeric_limits_ext.h +781 -0
  727. cuda/cccl/headers/include/cuda/std/__linalg/conj_if_needed.h +78 -0
  728. cuda/cccl/headers/include/cuda/std/__linalg/conjugate_transposed.h +55 -0
  729. cuda/cccl/headers/include/cuda/std/__linalg/conjugated.h +140 -0
  730. cuda/cccl/headers/include/cuda/std/__linalg/scaled.h +134 -0
  731. cuda/cccl/headers/include/cuda/std/__linalg/transposed.h +328 -0
  732. cuda/cccl/headers/include/cuda/std/__mdspan/aligned_accessor.h +100 -0
  733. cuda/cccl/headers/include/cuda/std/__mdspan/concepts.h +139 -0
  734. cuda/cccl/headers/include/cuda/std/__mdspan/default_accessor.h +74 -0
  735. cuda/cccl/headers/include/cuda/std/__mdspan/empty_base.h +363 -0
  736. cuda/cccl/headers/include/cuda/std/__mdspan/extents.h +765 -0
  737. cuda/cccl/headers/include/cuda/std/__mdspan/layout_left.h +317 -0
  738. cuda/cccl/headers/include/cuda/std/__mdspan/layout_right.h +310 -0
  739. cuda/cccl/headers/include/cuda/std/__mdspan/layout_stride.h +615 -0
  740. cuda/cccl/headers/include/cuda/std/__mdspan/mdspan.h +512 -0
  741. cuda/cccl/headers/include/cuda/std/__mdspan/submdspan_extents.h +193 -0
  742. cuda/cccl/headers/include/cuda/std/__mdspan/submdspan_helper.h +190 -0
  743. cuda/cccl/headers/include/cuda/std/__mdspan/submdspan_mapping.h +347 -0
  744. cuda/cccl/headers/include/cuda/std/__memory/addressof.h +64 -0
  745. cuda/cccl/headers/include/cuda/std/__memory/align.h +87 -0
  746. cuda/cccl/headers/include/cuda/std/__memory/allocate_at_least.h +81 -0
  747. cuda/cccl/headers/include/cuda/std/__memory/allocation_guard.h +100 -0
  748. cuda/cccl/headers/include/cuda/std/__memory/allocator.h +320 -0
  749. cuda/cccl/headers/include/cuda/std/__memory/allocator_arg_t.h +84 -0
  750. cuda/cccl/headers/include/cuda/std/__memory/allocator_destructor.h +59 -0
  751. cuda/cccl/headers/include/cuda/std/__memory/allocator_traits.h +569 -0
  752. cuda/cccl/headers/include/cuda/std/__memory/assume_aligned.h +60 -0
  753. cuda/cccl/headers/include/cuda/std/__memory/builtin_new_allocator.h +87 -0
  754. cuda/cccl/headers/include/cuda/std/__memory/compressed_pair.h +231 -0
  755. cuda/cccl/headers/include/cuda/std/__memory/construct_at.h +248 -0
  756. cuda/cccl/headers/include/cuda/std/__memory/destruct_n.h +91 -0
  757. cuda/cccl/headers/include/cuda/std/__memory/is_sufficiently_aligned.h +43 -0
  758. cuda/cccl/headers/include/cuda/std/__memory/pointer_traits.h +260 -0
  759. cuda/cccl/headers/include/cuda/std/__memory/temporary_buffer.h +92 -0
  760. cuda/cccl/headers/include/cuda/std/__memory/uninitialized_algorithms.h +686 -0
  761. cuda/cccl/headers/include/cuda/std/__memory/unique_ptr.h +771 -0
  762. cuda/cccl/headers/include/cuda/std/__memory/uses_allocator.h +55 -0
  763. cuda/cccl/headers/include/cuda/std/__memory/voidify.h +41 -0
  764. cuda/cccl/headers/include/cuda/std/__memory_ +34 -0
  765. cuda/cccl/headers/include/cuda/std/__new/allocate.h +126 -0
  766. cuda/cccl/headers/include/cuda/std/__new/bad_alloc.h +57 -0
  767. cuda/cccl/headers/include/cuda/std/__new/launder.h +49 -0
  768. cuda/cccl/headers/include/cuda/std/__new_ +29 -0
  769. cuda/cccl/headers/include/cuda/std/__numeric/accumulate.h +57 -0
  770. cuda/cccl/headers/include/cuda/std/__numeric/adjacent_difference.h +72 -0
  771. cuda/cccl/headers/include/cuda/std/__numeric/exclusive_scan.h +66 -0
  772. cuda/cccl/headers/include/cuda/std/__numeric/gcd_lcm.h +80 -0
  773. cuda/cccl/headers/include/cuda/std/__numeric/inclusive_scan.h +73 -0
  774. cuda/cccl/headers/include/cuda/std/__numeric/inner_product.h +62 -0
  775. cuda/cccl/headers/include/cuda/std/__numeric/iota.h +42 -0
  776. cuda/cccl/headers/include/cuda/std/__numeric/midpoint.h +100 -0
  777. cuda/cccl/headers/include/cuda/std/__numeric/partial_sum.h +70 -0
  778. cuda/cccl/headers/include/cuda/std/__numeric/reduce.h +61 -0
  779. cuda/cccl/headers/include/cuda/std/__numeric/transform_exclusive_scan.h +51 -0
  780. cuda/cccl/headers/include/cuda/std/__numeric/transform_inclusive_scan.h +65 -0
  781. cuda/cccl/headers/include/cuda/std/__numeric/transform_reduce.h +72 -0
  782. cuda/cccl/headers/include/cuda/std/__ranges/access.h +304 -0
  783. cuda/cccl/headers/include/cuda/std/__ranges/all.h +97 -0
  784. cuda/cccl/headers/include/cuda/std/__ranges/concepts.h +313 -0
  785. cuda/cccl/headers/include/cuda/std/__ranges/counted.h +90 -0
  786. cuda/cccl/headers/include/cuda/std/__ranges/dangling.h +54 -0
  787. cuda/cccl/headers/include/cuda/std/__ranges/data.h +136 -0
  788. cuda/cccl/headers/include/cuda/std/__ranges/empty.h +111 -0
  789. cuda/cccl/headers/include/cuda/std/__ranges/empty_view.h +77 -0
  790. cuda/cccl/headers/include/cuda/std/__ranges/enable_borrowed_range.h +41 -0
  791. cuda/cccl/headers/include/cuda/std/__ranges/enable_view.h +77 -0
  792. cuda/cccl/headers/include/cuda/std/__ranges/from_range.h +36 -0
  793. cuda/cccl/headers/include/cuda/std/__ranges/iota_view.h +271 -0
  794. cuda/cccl/headers/include/cuda/std/__ranges/movable_box.h +410 -0
  795. cuda/cccl/headers/include/cuda/std/__ranges/owning_view.h +161 -0
  796. cuda/cccl/headers/include/cuda/std/__ranges/range_adaptor.h +114 -0
  797. cuda/cccl/headers/include/cuda/std/__ranges/rbegin.h +175 -0
  798. cuda/cccl/headers/include/cuda/std/__ranges/ref_view.h +121 -0
  799. cuda/cccl/headers/include/cuda/std/__ranges/rend.h +182 -0
  800. cuda/cccl/headers/include/cuda/std/__ranges/repeat_view.h +343 -0
  801. cuda/cccl/headers/include/cuda/std/__ranges/single_view.h +156 -0
  802. cuda/cccl/headers/include/cuda/std/__ranges/size.h +200 -0
  803. cuda/cccl/headers/include/cuda/std/__ranges/subrange.h +513 -0
  804. cuda/cccl/headers/include/cuda/std/__ranges/take_while_view.h +263 -0
  805. cuda/cccl/headers/include/cuda/std/__ranges/transform_view.h +531 -0
  806. cuda/cccl/headers/include/cuda/std/__ranges/unwrap_end.h +53 -0
  807. cuda/cccl/headers/include/cuda/std/__ranges/view_interface.h +181 -0
  808. cuda/cccl/headers/include/cuda/std/__ranges/views.h +38 -0
  809. cuda/cccl/headers/include/cuda/std/__semaphore/atomic_semaphore.h +233 -0
  810. cuda/cccl/headers/include/cuda/std/__semaphore/counting_semaphore.h +51 -0
  811. cuda/cccl/headers/include/cuda/std/__string/char_traits.h +191 -0
  812. cuda/cccl/headers/include/cuda/std/__string/constexpr_c_functions.h +591 -0
  813. cuda/cccl/headers/include/cuda/std/__string/helper_functions.h +299 -0
  814. cuda/cccl/headers/include/cuda/std/__string/string_view.h +244 -0
  815. cuda/cccl/headers/include/cuda/std/__string_ +29 -0
  816. cuda/cccl/headers/include/cuda/std/__system_error/errc.h +51 -0
  817. cuda/cccl/headers/include/cuda/std/__system_error_ +26 -0
  818. cuda/cccl/headers/include/cuda/std/__thread/threading_support.h +105 -0
  819. cuda/cccl/headers/include/cuda/std/__thread/threading_support_cuda.h +47 -0
  820. cuda/cccl/headers/include/cuda/std/__thread/threading_support_external.h +41 -0
  821. cuda/cccl/headers/include/cuda/std/__thread/threading_support_pthread.h +144 -0
  822. cuda/cccl/headers/include/cuda/std/__thread/threading_support_win32.h +87 -0
  823. cuda/cccl/headers/include/cuda/std/__tuple_dir/ignore.h +51 -0
  824. cuda/cccl/headers/include/cuda/std/__tuple_dir/make_tuple_types.h +98 -0
  825. cuda/cccl/headers/include/cuda/std/__tuple_dir/sfinae_helpers.h +236 -0
  826. cuda/cccl/headers/include/cuda/std/__tuple_dir/structured_bindings.h +216 -0
  827. cuda/cccl/headers/include/cuda/std/__tuple_dir/tuple_element.h +70 -0
  828. cuda/cccl/headers/include/cuda/std/__tuple_dir/tuple_indices.h +44 -0
  829. cuda/cccl/headers/include/cuda/std/__tuple_dir/tuple_like.h +90 -0
  830. cuda/cccl/headers/include/cuda/std/__tuple_dir/tuple_like_ext.h +73 -0
  831. cuda/cccl/headers/include/cuda/std/__tuple_dir/tuple_size.h +79 -0
  832. cuda/cccl/headers/include/cuda/std/__tuple_dir/tuple_types.h +35 -0
  833. cuda/cccl/headers/include/cuda/std/__tuple_dir/vector_types.h +242 -0
  834. cuda/cccl/headers/include/cuda/std/__type_traits/add_const.h +40 -0
  835. cuda/cccl/headers/include/cuda/std/__type_traits/add_cv.h +40 -0
  836. cuda/cccl/headers/include/cuda/std/__type_traits/add_lvalue_reference.h +62 -0
  837. cuda/cccl/headers/include/cuda/std/__type_traits/add_pointer.h +65 -0
  838. cuda/cccl/headers/include/cuda/std/__type_traits/add_rvalue_reference.h +62 -0
  839. cuda/cccl/headers/include/cuda/std/__type_traits/add_volatile.h +40 -0
  840. cuda/cccl/headers/include/cuda/std/__type_traits/aligned_storage.h +149 -0
  841. cuda/cccl/headers/include/cuda/std/__type_traits/aligned_union.h +62 -0
  842. cuda/cccl/headers/include/cuda/std/__type_traits/alignment_of.h +41 -0
  843. cuda/cccl/headers/include/cuda/std/__type_traits/always_false.h +35 -0
  844. cuda/cccl/headers/include/cuda/std/__type_traits/can_extract_key.h +69 -0
  845. cuda/cccl/headers/include/cuda/std/__type_traits/common_reference.h +262 -0
  846. cuda/cccl/headers/include/cuda/std/__type_traits/common_type.h +174 -0
  847. cuda/cccl/headers/include/cuda/std/__type_traits/conditional.h +65 -0
  848. cuda/cccl/headers/include/cuda/std/__type_traits/conjunction.h +67 -0
  849. cuda/cccl/headers/include/cuda/std/__type_traits/copy_cv.h +50 -0
  850. cuda/cccl/headers/include/cuda/std/__type_traits/copy_cvref.h +148 -0
  851. cuda/cccl/headers/include/cuda/std/__type_traits/decay.h +83 -0
  852. cuda/cccl/headers/include/cuda/std/__type_traits/dependent_type.h +35 -0
  853. cuda/cccl/headers/include/cuda/std/__type_traits/disjunction.h +77 -0
  854. cuda/cccl/headers/include/cuda/std/__type_traits/enable_if.h +43 -0
  855. cuda/cccl/headers/include/cuda/std/__type_traits/extent.h +68 -0
  856. cuda/cccl/headers/include/cuda/std/__type_traits/fold.h +47 -0
  857. cuda/cccl/headers/include/cuda/std/__type_traits/has_unique_object_representation.h +47 -0
  858. cuda/cccl/headers/include/cuda/std/__type_traits/has_virtual_destructor.h +51 -0
  859. cuda/cccl/headers/include/cuda/std/__type_traits/integral_constant.h +62 -0
  860. cuda/cccl/headers/include/cuda/std/__type_traits/is_abstract.h +40 -0
  861. cuda/cccl/headers/include/cuda/std/__type_traits/is_aggregate.h +44 -0
  862. cuda/cccl/headers/include/cuda/std/__type_traits/is_allocator.h +46 -0
  863. cuda/cccl/headers/include/cuda/std/__type_traits/is_arithmetic.h +42 -0
  864. cuda/cccl/headers/include/cuda/std/__type_traits/is_array.h +62 -0
  865. cuda/cccl/headers/include/cuda/std/__type_traits/is_assignable.h +78 -0
  866. cuda/cccl/headers/include/cuda/std/__type_traits/is_base_of.h +83 -0
  867. cuda/cccl/headers/include/cuda/std/__type_traits/is_bounded_array.h +44 -0
  868. cuda/cccl/headers/include/cuda/std/__type_traits/is_callable.h +60 -0
  869. cuda/cccl/headers/include/cuda/std/__type_traits/is_char_like_type.h +38 -0
  870. cuda/cccl/headers/include/cuda/std/__type_traits/is_class.h +68 -0
  871. cuda/cccl/headers/include/cuda/std/__type_traits/is_compound.h +54 -0
  872. cuda/cccl/headers/include/cuda/std/__type_traits/is_const.h +56 -0
  873. cuda/cccl/headers/include/cuda/std/__type_traits/is_constant_evaluated.h +51 -0
  874. cuda/cccl/headers/include/cuda/std/__type_traits/is_constructible.h +174 -0
  875. cuda/cccl/headers/include/cuda/std/__type_traits/is_convertible.h +214 -0
  876. cuda/cccl/headers/include/cuda/std/__type_traits/is_copy_assignable.h +43 -0
  877. cuda/cccl/headers/include/cuda/std/__type_traits/is_copy_constructible.h +43 -0
  878. cuda/cccl/headers/include/cuda/std/__type_traits/is_core_convertible.h +47 -0
  879. cuda/cccl/headers/include/cuda/std/__type_traits/is_corresponding_member.h +43 -0
  880. cuda/cccl/headers/include/cuda/std/__type_traits/is_default_constructible.h +40 -0
  881. cuda/cccl/headers/include/cuda/std/__type_traits/is_destructible.h +115 -0
  882. cuda/cccl/headers/include/cuda/std/__type_traits/is_empty.h +73 -0
  883. cuda/cccl/headers/include/cuda/std/__type_traits/is_enum.h +68 -0
  884. cuda/cccl/headers/include/cuda/std/__type_traits/is_extended_arithmetic.h +38 -0
  885. cuda/cccl/headers/include/cuda/std/__type_traits/is_extended_floating_point.h +81 -0
  886. cuda/cccl/headers/include/cuda/std/__type_traits/is_final.h +56 -0
  887. cuda/cccl/headers/include/cuda/std/__type_traits/is_floating_point.h +53 -0
  888. cuda/cccl/headers/include/cuda/std/__type_traits/is_function.h +61 -0
  889. cuda/cccl/headers/include/cuda/std/__type_traits/is_fundamental.h +56 -0
  890. cuda/cccl/headers/include/cuda/std/__type_traits/is_implicitly_default_constructible.h +57 -0
  891. cuda/cccl/headers/include/cuda/std/__type_traits/is_integer.h +45 -0
  892. cuda/cccl/headers/include/cuda/std/__type_traits/is_integral.h +123 -0
  893. cuda/cccl/headers/include/cuda/std/__type_traits/is_layout_compatible.h +45 -0
  894. cuda/cccl/headers/include/cuda/std/__type_traits/is_literal_type.h +59 -0
  895. cuda/cccl/headers/include/cuda/std/__type_traits/is_member_function_pointer.h +79 -0
  896. cuda/cccl/headers/include/cuda/std/__type_traits/is_member_object_pointer.h +57 -0
  897. cuda/cccl/headers/include/cuda/std/__type_traits/is_member_pointer.h +57 -0
  898. cuda/cccl/headers/include/cuda/std/__type_traits/is_move_assignable.h +43 -0
  899. cuda/cccl/headers/include/cuda/std/__type_traits/is_move_constructible.h +42 -0
  900. cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_assignable.h +70 -0
  901. cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_constructible.h +84 -0
  902. cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_convertible.h +59 -0
  903. cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_copy_assignable.h +60 -0
  904. cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_copy_constructible.h +43 -0
  905. cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_default_constructible.h +54 -0
  906. cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_destructible.h +79 -0
  907. cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_move_assignable.h +60 -0
  908. cuda/cccl/headers/include/cuda/std/__type_traits/is_nothrow_move_constructible.h +42 -0
  909. cuda/cccl/headers/include/cuda/std/__type_traits/is_null_pointer.h +43 -0
  910. cuda/cccl/headers/include/cuda/std/__type_traits/is_object.h +57 -0
  911. cuda/cccl/headers/include/cuda/std/__type_traits/is_one_of.h +37 -0
  912. cuda/cccl/headers/include/cuda/std/__type_traits/is_pod.h +62 -0
  913. cuda/cccl/headers/include/cuda/std/__type_traits/is_pointer.h +60 -0
  914. cuda/cccl/headers/include/cuda/std/__type_traits/is_pointer_interconvertible_base_of.h +87 -0
  915. cuda/cccl/headers/include/cuda/std/__type_traits/is_pointer_interconvertible_with_class.h +43 -0
  916. cuda/cccl/headers/include/cuda/std/__type_traits/is_polymorphic.h +63 -0
  917. cuda/cccl/headers/include/cuda/std/__type_traits/is_primary_template.h +119 -0
  918. cuda/cccl/headers/include/cuda/std/__type_traits/is_reference.h +95 -0
  919. cuda/cccl/headers/include/cuda/std/__type_traits/is_reference_wrapper.h +50 -0
  920. cuda/cccl/headers/include/cuda/std/__type_traits/is_referenceable.h +55 -0
  921. cuda/cccl/headers/include/cuda/std/__type_traits/is_same.h +84 -0
  922. cuda/cccl/headers/include/cuda/std/__type_traits/is_scalar.h +60 -0
  923. cuda/cccl/headers/include/cuda/std/__type_traits/is_scoped_enum.h +49 -0
  924. cuda/cccl/headers/include/cuda/std/__type_traits/is_signed.h +65 -0
  925. cuda/cccl/headers/include/cuda/std/__type_traits/is_signed_integer.h +59 -0
  926. cuda/cccl/headers/include/cuda/std/__type_traits/is_standard_layout.h +57 -0
  927. cuda/cccl/headers/include/cuda/std/__type_traits/is_swappable.h +203 -0
  928. cuda/cccl/headers/include/cuda/std/__type_traits/is_trivial.h +56 -0
  929. cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_assignable.h +70 -0
  930. cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_constructible.h +82 -0
  931. cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_copy_assignable.h +60 -0
  932. cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_copy_constructible.h +61 -0
  933. cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_copyable.h +56 -0
  934. cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_default_constructible.h +55 -0
  935. cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_destructible.h +73 -0
  936. cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_move_assignable.h +60 -0
  937. cuda/cccl/headers/include/cuda/std/__type_traits/is_trivially_move_constructible.h +58 -0
  938. cuda/cccl/headers/include/cuda/std/__type_traits/is_unbounded_array.h +43 -0
  939. cuda/cccl/headers/include/cuda/std/__type_traits/is_union.h +57 -0
  940. cuda/cccl/headers/include/cuda/std/__type_traits/is_unsigned.h +66 -0
  941. cuda/cccl/headers/include/cuda/std/__type_traits/is_unsigned_integer.h +59 -0
  942. cuda/cccl/headers/include/cuda/std/__type_traits/is_valid_expansion.h +41 -0
  943. cuda/cccl/headers/include/cuda/std/__type_traits/is_void.h +55 -0
  944. cuda/cccl/headers/include/cuda/std/__type_traits/is_volatile.h +56 -0
  945. cuda/cccl/headers/include/cuda/std/__type_traits/lazy.h +35 -0
  946. cuda/cccl/headers/include/cuda/std/__type_traits/make_const_lvalue_ref.h +36 -0
  947. cuda/cccl/headers/include/cuda/std/__type_traits/make_nbit_int.h +107 -0
  948. cuda/cccl/headers/include/cuda/std/__type_traits/make_signed.h +140 -0
  949. cuda/cccl/headers/include/cuda/std/__type_traits/make_unsigned.h +151 -0
  950. cuda/cccl/headers/include/cuda/std/__type_traits/maybe_const.h +36 -0
  951. cuda/cccl/headers/include/cuda/std/__type_traits/nat.h +39 -0
  952. cuda/cccl/headers/include/cuda/std/__type_traits/negation.h +44 -0
  953. cuda/cccl/headers/include/cuda/std/__type_traits/num_bits.h +123 -0
  954. cuda/cccl/headers/include/cuda/std/__type_traits/promote.h +163 -0
  955. cuda/cccl/headers/include/cuda/std/__type_traits/rank.h +60 -0
  956. cuda/cccl/headers/include/cuda/std/__type_traits/reference_constructs_from_temporary.h +57 -0
  957. cuda/cccl/headers/include/cuda/std/__type_traits/reference_converts_from_temporary.h +56 -0
  958. cuda/cccl/headers/include/cuda/std/__type_traits/remove_all_extents.h +66 -0
  959. cuda/cccl/headers/include/cuda/std/__type_traits/remove_const.h +59 -0
  960. cuda/cccl/headers/include/cuda/std/__type_traits/remove_const_ref.h +37 -0
  961. cuda/cccl/headers/include/cuda/std/__type_traits/remove_cv.h +57 -0
  962. cuda/cccl/headers/include/cuda/std/__type_traits/remove_cvref.h +57 -0
  963. cuda/cccl/headers/include/cuda/std/__type_traits/remove_extent.h +65 -0
  964. cuda/cccl/headers/include/cuda/std/__type_traits/remove_pointer.h +73 -0
  965. cuda/cccl/headers/include/cuda/std/__type_traits/remove_reference.h +72 -0
  966. cuda/cccl/headers/include/cuda/std/__type_traits/remove_volatile.h +58 -0
  967. cuda/cccl/headers/include/cuda/std/__type_traits/result_of.h +47 -0
  968. cuda/cccl/headers/include/cuda/std/__type_traits/type_identity.h +40 -0
  969. cuda/cccl/headers/include/cuda/std/__type_traits/type_list.h +1069 -0
  970. cuda/cccl/headers/include/cuda/std/__type_traits/type_set.h +132 -0
  971. cuda/cccl/headers/include/cuda/std/__type_traits/underlying_type.h +66 -0
  972. cuda/cccl/headers/include/cuda/std/__type_traits/void_t.h +34 -0
  973. cuda/cccl/headers/include/cuda/std/__utility/as_const.h +52 -0
  974. cuda/cccl/headers/include/cuda/std/__utility/auto_cast.h +32 -0
  975. cuda/cccl/headers/include/cuda/std/__utility/cmp.h +116 -0
  976. cuda/cccl/headers/include/cuda/std/__utility/convert_to_integral.h +103 -0
  977. cuda/cccl/headers/include/cuda/std/__utility/declval.h +63 -0
  978. cuda/cccl/headers/include/cuda/std/__utility/exception_guard.h +162 -0
  979. cuda/cccl/headers/include/cuda/std/__utility/exchange.h +46 -0
  980. cuda/cccl/headers/include/cuda/std/__utility/forward.h +59 -0
  981. cuda/cccl/headers/include/cuda/std/__utility/forward_like.h +56 -0
  982. cuda/cccl/headers/include/cuda/std/__utility/in_place.h +77 -0
  983. cuda/cccl/headers/include/cuda/std/__utility/integer_sequence.h +251 -0
  984. cuda/cccl/headers/include/cuda/std/__utility/monostate.h +99 -0
  985. cuda/cccl/headers/include/cuda/std/__utility/move.h +75 -0
  986. cuda/cccl/headers/include/cuda/std/__utility/pair.h +808 -0
  987. cuda/cccl/headers/include/cuda/std/__utility/piecewise_construct.h +37 -0
  988. cuda/cccl/headers/include/cuda/std/__utility/pod_tuple.h +763 -0
  989. cuda/cccl/headers/include/cuda/std/__utility/priority_tag.h +40 -0
  990. cuda/cccl/headers/include/cuda/std/__utility/rel_ops.h +63 -0
  991. cuda/cccl/headers/include/cuda/std/__utility/swap.h +65 -0
  992. cuda/cccl/headers/include/cuda/std/__utility/to_underlying.h +40 -0
  993. cuda/cccl/headers/include/cuda/std/__utility/typeid.h +425 -0
  994. cuda/cccl/headers/include/cuda/std/__utility/unreachable.h +37 -0
  995. cuda/cccl/headers/include/cuda/std/array +527 -0
  996. cuda/cccl/headers/include/cuda/std/atomic +823 -0
  997. cuda/cccl/headers/include/cuda/std/barrier +43 -0
  998. cuda/cccl/headers/include/cuda/std/bit +35 -0
  999. cuda/cccl/headers/include/cuda/std/bitset +1026 -0
  1000. cuda/cccl/headers/include/cuda/std/cassert +28 -0
  1001. cuda/cccl/headers/include/cuda/std/ccomplex +15 -0
  1002. cuda/cccl/headers/include/cuda/std/cfloat +59 -0
  1003. cuda/cccl/headers/include/cuda/std/chrono +26 -0
  1004. cuda/cccl/headers/include/cuda/std/climits +61 -0
  1005. cuda/cccl/headers/include/cuda/std/cmath +25 -0
  1006. cuda/cccl/headers/include/cuda/std/complex +25 -0
  1007. cuda/cccl/headers/include/cuda/std/concepts +48 -0
  1008. cuda/cccl/headers/include/cuda/std/cstddef +28 -0
  1009. cuda/cccl/headers/include/cuda/std/cstdint +178 -0
  1010. cuda/cccl/headers/include/cuda/std/cstdlib +30 -0
  1011. cuda/cccl/headers/include/cuda/std/cstring +111 -0
  1012. cuda/cccl/headers/include/cuda/std/ctime +147 -0
  1013. cuda/cccl/headers/include/cuda/std/detail/__config +45 -0
  1014. cuda/cccl/headers/include/cuda/std/detail/libcxx/include/__config +258 -0
  1015. cuda/cccl/headers/include/cuda/std/detail/libcxx/include/algorithm +2692 -0
  1016. cuda/cccl/headers/include/cuda/std/detail/libcxx/include/chrono +3689 -0
  1017. cuda/cccl/headers/include/cuda/std/detail/libcxx/include/cmath +685 -0
  1018. cuda/cccl/headers/include/cuda/std/detail/libcxx/include/complex +1610 -0
  1019. cuda/cccl/headers/include/cuda/std/detail/libcxx/include/iosfwd +128 -0
  1020. cuda/cccl/headers/include/cuda/std/detail/libcxx/include/optional +1786 -0
  1021. cuda/cccl/headers/include/cuda/std/detail/libcxx/include/stdexcept +120 -0
  1022. cuda/cccl/headers/include/cuda/std/detail/libcxx/include/tuple +1378 -0
  1023. cuda/cccl/headers/include/cuda/std/detail/libcxx/include/variant +2160 -0
  1024. cuda/cccl/headers/include/cuda/std/execution +27 -0
  1025. cuda/cccl/headers/include/cuda/std/expected +30 -0
  1026. cuda/cccl/headers/include/cuda/std/functional +56 -0
  1027. cuda/cccl/headers/include/cuda/std/initializer_list +36 -0
  1028. cuda/cccl/headers/include/cuda/std/inplace_vector +2171 -0
  1029. cuda/cccl/headers/include/cuda/std/iterator +70 -0
  1030. cuda/cccl/headers/include/cuda/std/latch +34 -0
  1031. cuda/cccl/headers/include/cuda/std/limits +28 -0
  1032. cuda/cccl/headers/include/cuda/std/linalg +30 -0
  1033. cuda/cccl/headers/include/cuda/std/mdspan +38 -0
  1034. cuda/cccl/headers/include/cuda/std/memory +39 -0
  1035. cuda/cccl/headers/include/cuda/std/numbers +335 -0
  1036. cuda/cccl/headers/include/cuda/std/numeric +41 -0
  1037. cuda/cccl/headers/include/cuda/std/optional +25 -0
  1038. cuda/cccl/headers/include/cuda/std/ranges +68 -0
  1039. cuda/cccl/headers/include/cuda/std/ratio +417 -0
  1040. cuda/cccl/headers/include/cuda/std/semaphore +31 -0
  1041. cuda/cccl/headers/include/cuda/std/source_location +83 -0
  1042. cuda/cccl/headers/include/cuda/std/span +640 -0
  1043. cuda/cccl/headers/include/cuda/std/string_view +814 -0
  1044. cuda/cccl/headers/include/cuda/std/tuple +26 -0
  1045. cuda/cccl/headers/include/cuda/std/type_traits +176 -0
  1046. cuda/cccl/headers/include/cuda/std/utility +70 -0
  1047. cuda/cccl/headers/include/cuda/std/variant +25 -0
  1048. cuda/cccl/headers/include/cuda/std/version +245 -0
  1049. cuda/cccl/headers/include/cuda/stream_ref +54 -0
  1050. cuda/cccl/headers/include/cuda/type_traits +27 -0
  1051. cuda/cccl/headers/include/cuda/version +16 -0
  1052. cuda/cccl/headers/include/cuda/warp +28 -0
  1053. cuda/cccl/headers/include/cuda/work_stealing +26 -0
  1054. cuda/cccl/headers/include/nv/detail/__preprocessor +169 -0
  1055. cuda/cccl/headers/include/nv/detail/__target_macros +599 -0
  1056. cuda/cccl/headers/include/nv/target +229 -0
  1057. cuda/cccl/headers/include/thrust/addressof.h +22 -0
  1058. cuda/cccl/headers/include/thrust/adjacent_difference.h +254 -0
  1059. cuda/cccl/headers/include/thrust/advance.h +59 -0
  1060. cuda/cccl/headers/include/thrust/allocate_unique.h +299 -0
  1061. cuda/cccl/headers/include/thrust/binary_search.h +1910 -0
  1062. cuda/cccl/headers/include/thrust/complex.h +859 -0
  1063. cuda/cccl/headers/include/thrust/copy.h +506 -0
  1064. cuda/cccl/headers/include/thrust/count.h +245 -0
  1065. cuda/cccl/headers/include/thrust/detail/adjacent_difference.inl +95 -0
  1066. cuda/cccl/headers/include/thrust/detail/algorithm_wrapper.h +37 -0
  1067. cuda/cccl/headers/include/thrust/detail/alignment.h +81 -0
  1068. cuda/cccl/headers/include/thrust/detail/allocator/allocator_traits.h +350 -0
  1069. cuda/cccl/headers/include/thrust/detail/allocator/allocator_traits.inl +371 -0
  1070. cuda/cccl/headers/include/thrust/detail/allocator/copy_construct_range.h +45 -0
  1071. cuda/cccl/headers/include/thrust/detail/allocator/copy_construct_range.inl +242 -0
  1072. cuda/cccl/headers/include/thrust/detail/allocator/destroy_range.h +39 -0
  1073. cuda/cccl/headers/include/thrust/detail/allocator/destroy_range.inl +137 -0
  1074. cuda/cccl/headers/include/thrust/detail/allocator/fill_construct_range.h +39 -0
  1075. cuda/cccl/headers/include/thrust/detail/allocator/fill_construct_range.inl +99 -0
  1076. cuda/cccl/headers/include/thrust/detail/allocator/malloc_allocator.h +53 -0
  1077. cuda/cccl/headers/include/thrust/detail/allocator/malloc_allocator.inl +68 -0
  1078. cuda/cccl/headers/include/thrust/detail/allocator/no_throw_allocator.h +76 -0
  1079. cuda/cccl/headers/include/thrust/detail/allocator/tagged_allocator.h +102 -0
  1080. cuda/cccl/headers/include/thrust/detail/allocator/tagged_allocator.inl +86 -0
  1081. cuda/cccl/headers/include/thrust/detail/allocator/temporary_allocator.h +79 -0
  1082. cuda/cccl/headers/include/thrust/detail/allocator/temporary_allocator.inl +81 -0
  1083. cuda/cccl/headers/include/thrust/detail/allocator/value_initialize_range.h +39 -0
  1084. cuda/cccl/headers/include/thrust/detail/allocator/value_initialize_range.inl +98 -0
  1085. cuda/cccl/headers/include/thrust/detail/allocator_aware_execution_policy.h +99 -0
  1086. cuda/cccl/headers/include/thrust/detail/binary_search.inl +525 -0
  1087. cuda/cccl/headers/include/thrust/detail/caching_allocator.h +47 -0
  1088. cuda/cccl/headers/include/thrust/detail/complex/arithmetic.h +255 -0
  1089. cuda/cccl/headers/include/thrust/detail/complex/c99math.h +64 -0
  1090. cuda/cccl/headers/include/thrust/detail/complex/catrig.h +875 -0
  1091. cuda/cccl/headers/include/thrust/detail/complex/catrigf.h +589 -0
  1092. cuda/cccl/headers/include/thrust/detail/complex/ccosh.h +233 -0
  1093. cuda/cccl/headers/include/thrust/detail/complex/ccoshf.h +161 -0
  1094. cuda/cccl/headers/include/thrust/detail/complex/cexp.h +195 -0
  1095. cuda/cccl/headers/include/thrust/detail/complex/cexpf.h +173 -0
  1096. cuda/cccl/headers/include/thrust/detail/complex/clog.h +223 -0
  1097. cuda/cccl/headers/include/thrust/detail/complex/clogf.h +210 -0
  1098. cuda/cccl/headers/include/thrust/detail/complex/complex.inl +263 -0
  1099. cuda/cccl/headers/include/thrust/detail/complex/cpow.h +50 -0
  1100. cuda/cccl/headers/include/thrust/detail/complex/cproj.h +81 -0
  1101. cuda/cccl/headers/include/thrust/detail/complex/csinh.h +228 -0
  1102. cuda/cccl/headers/include/thrust/detail/complex/csinhf.h +168 -0
  1103. cuda/cccl/headers/include/thrust/detail/complex/csqrt.h +178 -0
  1104. cuda/cccl/headers/include/thrust/detail/complex/csqrtf.h +174 -0
  1105. cuda/cccl/headers/include/thrust/detail/complex/ctanh.h +208 -0
  1106. cuda/cccl/headers/include/thrust/detail/complex/ctanhf.h +133 -0
  1107. cuda/cccl/headers/include/thrust/detail/complex/math_private.h +138 -0
  1108. cuda/cccl/headers/include/thrust/detail/complex/stream.h +73 -0
  1109. cuda/cccl/headers/include/thrust/detail/config/compiler.h +38 -0
  1110. cuda/cccl/headers/include/thrust/detail/config/config.h +43 -0
  1111. cuda/cccl/headers/include/thrust/detail/config/cpp_dialect.h +78 -0
  1112. cuda/cccl/headers/include/thrust/detail/config/device_system.h +55 -0
  1113. cuda/cccl/headers/include/thrust/detail/config/host_system.h +48 -0
  1114. cuda/cccl/headers/include/thrust/detail/config/memory_resource.h +41 -0
  1115. cuda/cccl/headers/include/thrust/detail/config/namespace.h +162 -0
  1116. cuda/cccl/headers/include/thrust/detail/config/simple_defines.h +48 -0
  1117. cuda/cccl/headers/include/thrust/detail/config.h +36 -0
  1118. cuda/cccl/headers/include/thrust/detail/contiguous_storage.h +228 -0
  1119. cuda/cccl/headers/include/thrust/detail/contiguous_storage.inl +273 -0
  1120. cuda/cccl/headers/include/thrust/detail/copy.h +72 -0
  1121. cuda/cccl/headers/include/thrust/detail/copy.inl +129 -0
  1122. cuda/cccl/headers/include/thrust/detail/copy_if.h +62 -0
  1123. cuda/cccl/headers/include/thrust/detail/copy_if.inl +102 -0
  1124. cuda/cccl/headers/include/thrust/detail/count.h +55 -0
  1125. cuda/cccl/headers/include/thrust/detail/count.inl +89 -0
  1126. cuda/cccl/headers/include/thrust/detail/device_delete.inl +52 -0
  1127. cuda/cccl/headers/include/thrust/detail/device_free.inl +47 -0
  1128. cuda/cccl/headers/include/thrust/detail/device_malloc.inl +60 -0
  1129. cuda/cccl/headers/include/thrust/detail/device_new.inl +61 -0
  1130. cuda/cccl/headers/include/thrust/detail/device_ptr.inl +48 -0
  1131. cuda/cccl/headers/include/thrust/detail/equal.inl +93 -0
  1132. cuda/cccl/headers/include/thrust/detail/event_error.h +160 -0
  1133. cuda/cccl/headers/include/thrust/detail/execute_with_allocator.h +80 -0
  1134. cuda/cccl/headers/include/thrust/detail/execute_with_allocator_fwd.h +61 -0
  1135. cuda/cccl/headers/include/thrust/detail/execution_policy.h +80 -0
  1136. cuda/cccl/headers/include/thrust/detail/extrema.inl +184 -0
  1137. cuda/cccl/headers/include/thrust/detail/fill.inl +86 -0
  1138. cuda/cccl/headers/include/thrust/detail/find.inl +113 -0
  1139. cuda/cccl/headers/include/thrust/detail/for_each.inl +84 -0
  1140. cuda/cccl/headers/include/thrust/detail/function.h +49 -0
  1141. cuda/cccl/headers/include/thrust/detail/functional/actor.h +214 -0
  1142. cuda/cccl/headers/include/thrust/detail/functional/operators.h +386 -0
  1143. cuda/cccl/headers/include/thrust/detail/gather.inl +173 -0
  1144. cuda/cccl/headers/include/thrust/detail/generate.inl +86 -0
  1145. cuda/cccl/headers/include/thrust/detail/get_iterator_value.h +62 -0
  1146. cuda/cccl/headers/include/thrust/detail/inner_product.inl +118 -0
  1147. cuda/cccl/headers/include/thrust/detail/integer_math.h +130 -0
  1148. cuda/cccl/headers/include/thrust/detail/internal_functional.h +285 -0
  1149. cuda/cccl/headers/include/thrust/detail/logical.inl +113 -0
  1150. cuda/cccl/headers/include/thrust/detail/malloc_and_free.h +92 -0
  1151. cuda/cccl/headers/include/thrust/detail/malloc_and_free_fwd.h +45 -0
  1152. cuda/cccl/headers/include/thrust/detail/memory_algorithms.h +209 -0
  1153. cuda/cccl/headers/include/thrust/detail/memory_wrapper.h +40 -0
  1154. cuda/cccl/headers/include/thrust/detail/merge.inl +276 -0
  1155. cuda/cccl/headers/include/thrust/detail/mismatch.inl +94 -0
  1156. cuda/cccl/headers/include/thrust/detail/mpl/math.h +164 -0
  1157. cuda/cccl/headers/include/thrust/detail/numeric_wrapper.h +37 -0
  1158. cuda/cccl/headers/include/thrust/detail/overlapped_copy.h +124 -0
  1159. cuda/cccl/headers/include/thrust/detail/partition.inl +378 -0
  1160. cuda/cccl/headers/include/thrust/detail/pointer.h +217 -0
  1161. cuda/cccl/headers/include/thrust/detail/pointer.inl +172 -0
  1162. cuda/cccl/headers/include/thrust/detail/preprocessor.h +652 -0
  1163. cuda/cccl/headers/include/thrust/detail/random_bijection.h +177 -0
  1164. cuda/cccl/headers/include/thrust/detail/range/head_flags.h +116 -0
  1165. cuda/cccl/headers/include/thrust/detail/range/tail_flags.h +130 -0
  1166. cuda/cccl/headers/include/thrust/detail/raw_pointer_cast.h +52 -0
  1167. cuda/cccl/headers/include/thrust/detail/raw_reference_cast.h +189 -0
  1168. cuda/cccl/headers/include/thrust/detail/reduce.inl +377 -0
  1169. cuda/cccl/headers/include/thrust/detail/reference.h +500 -0
  1170. cuda/cccl/headers/include/thrust/detail/reference_forward_declaration.h +35 -0
  1171. cuda/cccl/headers/include/thrust/detail/remove.inl +213 -0
  1172. cuda/cccl/headers/include/thrust/detail/replace.inl +231 -0
  1173. cuda/cccl/headers/include/thrust/detail/reverse.inl +88 -0
  1174. cuda/cccl/headers/include/thrust/detail/scan.inl +518 -0
  1175. cuda/cccl/headers/include/thrust/detail/scatter.inl +157 -0
  1176. cuda/cccl/headers/include/thrust/detail/seq.h +54 -0
  1177. cuda/cccl/headers/include/thrust/detail/sequence.inl +109 -0
  1178. cuda/cccl/headers/include/thrust/detail/set_operations.inl +981 -0
  1179. cuda/cccl/headers/include/thrust/detail/shuffle.inl +86 -0
  1180. cuda/cccl/headers/include/thrust/detail/sort.inl +373 -0
  1181. cuda/cccl/headers/include/thrust/detail/static_assert.h +58 -0
  1182. cuda/cccl/headers/include/thrust/detail/static_map.h +167 -0
  1183. cuda/cccl/headers/include/thrust/detail/swap_ranges.inl +65 -0
  1184. cuda/cccl/headers/include/thrust/detail/tabulate.inl +62 -0
  1185. cuda/cccl/headers/include/thrust/detail/temporary_array.h +153 -0
  1186. cuda/cccl/headers/include/thrust/detail/temporary_array.inl +138 -0
  1187. cuda/cccl/headers/include/thrust/detail/temporary_buffer.h +81 -0
  1188. cuda/cccl/headers/include/thrust/detail/transform.inl +250 -0
  1189. cuda/cccl/headers/include/thrust/detail/transform_reduce.inl +69 -0
  1190. cuda/cccl/headers/include/thrust/detail/transform_scan.inl +161 -0
  1191. cuda/cccl/headers/include/thrust/detail/trivial_sequence.h +131 -0
  1192. cuda/cccl/headers/include/thrust/detail/tuple_meta_transform.h +61 -0
  1193. cuda/cccl/headers/include/thrust/detail/type_deduction.h +62 -0
  1194. cuda/cccl/headers/include/thrust/detail/type_traits/has_member_function.h +47 -0
  1195. cuda/cccl/headers/include/thrust/detail/type_traits/has_nested_type.h +43 -0
  1196. cuda/cccl/headers/include/thrust/detail/type_traits/is_call_possible.h +167 -0
  1197. cuda/cccl/headers/include/thrust/detail/type_traits/is_commutative.h +69 -0
  1198. cuda/cccl/headers/include/thrust/detail/type_traits/is_metafunction_defined.h +39 -0
  1199. cuda/cccl/headers/include/thrust/detail/type_traits/is_thrust_pointer.h +60 -0
  1200. cuda/cccl/headers/include/thrust/detail/type_traits/iterator/is_discard_iterator.h +44 -0
  1201. cuda/cccl/headers/include/thrust/detail/type_traits/iterator/is_output_iterator.h +46 -0
  1202. cuda/cccl/headers/include/thrust/detail/type_traits/minimum_type.h +89 -0
  1203. cuda/cccl/headers/include/thrust/detail/type_traits/pointer_traits.h +332 -0
  1204. cuda/cccl/headers/include/thrust/detail/type_traits.h +136 -0
  1205. cuda/cccl/headers/include/thrust/detail/uninitialized_copy.inl +90 -0
  1206. cuda/cccl/headers/include/thrust/detail/uninitialized_fill.inl +86 -0
  1207. cuda/cccl/headers/include/thrust/detail/unique.inl +373 -0
  1208. cuda/cccl/headers/include/thrust/detail/use_default.h +34 -0
  1209. cuda/cccl/headers/include/thrust/detail/util/align.h +59 -0
  1210. cuda/cccl/headers/include/thrust/detail/vector_base.h +630 -0
  1211. cuda/cccl/headers/include/thrust/detail/vector_base.inl +1242 -0
  1212. cuda/cccl/headers/include/thrust/device_allocator.h +134 -0
  1213. cuda/cccl/headers/include/thrust/device_delete.h +59 -0
  1214. cuda/cccl/headers/include/thrust/device_free.h +72 -0
  1215. cuda/cccl/headers/include/thrust/device_make_unique.h +56 -0
  1216. cuda/cccl/headers/include/thrust/device_malloc.h +108 -0
  1217. cuda/cccl/headers/include/thrust/device_malloc_allocator.h +190 -0
  1218. cuda/cccl/headers/include/thrust/device_new.h +91 -0
  1219. cuda/cccl/headers/include/thrust/device_new_allocator.h +179 -0
  1220. cuda/cccl/headers/include/thrust/device_ptr.h +202 -0
  1221. cuda/cccl/headers/include/thrust/device_reference.h +986 -0
  1222. cuda/cccl/headers/include/thrust/device_vector.h +574 -0
  1223. cuda/cccl/headers/include/thrust/distance.h +43 -0
  1224. cuda/cccl/headers/include/thrust/equal.h +247 -0
  1225. cuda/cccl/headers/include/thrust/execution_policy.h +384 -0
  1226. cuda/cccl/headers/include/thrust/extrema.h +657 -0
  1227. cuda/cccl/headers/include/thrust/fill.h +201 -0
  1228. cuda/cccl/headers/include/thrust/find.h +382 -0
  1229. cuda/cccl/headers/include/thrust/for_each.h +261 -0
  1230. cuda/cccl/headers/include/thrust/functional.h +396 -0
  1231. cuda/cccl/headers/include/thrust/gather.h +464 -0
  1232. cuda/cccl/headers/include/thrust/generate.h +193 -0
  1233. cuda/cccl/headers/include/thrust/host_vector.h +576 -0
  1234. cuda/cccl/headers/include/thrust/inner_product.h +264 -0
  1235. cuda/cccl/headers/include/thrust/iterator/constant_iterator.h +219 -0
  1236. cuda/cccl/headers/include/thrust/iterator/counting_iterator.h +335 -0
  1237. cuda/cccl/headers/include/thrust/iterator/detail/any_assign.h +48 -0
  1238. cuda/cccl/headers/include/thrust/iterator/detail/any_system_tag.h +43 -0
  1239. cuda/cccl/headers/include/thrust/iterator/detail/device_system_tag.h +38 -0
  1240. cuda/cccl/headers/include/thrust/iterator/detail/host_system_tag.h +38 -0
  1241. cuda/cccl/headers/include/thrust/iterator/detail/iterator_adaptor_base.h +81 -0
  1242. cuda/cccl/headers/include/thrust/iterator/detail/iterator_category_to_system.h +51 -0
  1243. cuda/cccl/headers/include/thrust/iterator/detail/iterator_category_to_traversal.h +62 -0
  1244. cuda/cccl/headers/include/thrust/iterator/detail/iterator_category_with_system_and_traversal.h +57 -0
  1245. cuda/cccl/headers/include/thrust/iterator/detail/iterator_facade_category.h +199 -0
  1246. cuda/cccl/headers/include/thrust/iterator/detail/iterator_traversal_tags.h +50 -0
  1247. cuda/cccl/headers/include/thrust/iterator/detail/minimum_system.h +53 -0
  1248. cuda/cccl/headers/include/thrust/iterator/detail/normal_iterator.h +69 -0
  1249. cuda/cccl/headers/include/thrust/iterator/detail/retag.h +104 -0
  1250. cuda/cccl/headers/include/thrust/iterator/detail/tagged_iterator.h +81 -0
  1251. cuda/cccl/headers/include/thrust/iterator/detail/tuple_of_iterator_references.h +174 -0
  1252. cuda/cccl/headers/include/thrust/iterator/discard_iterator.h +164 -0
  1253. cuda/cccl/headers/include/thrust/iterator/iterator_adaptor.h +251 -0
  1254. cuda/cccl/headers/include/thrust/iterator/iterator_categories.h +215 -0
  1255. cuda/cccl/headers/include/thrust/iterator/iterator_facade.h +660 -0
  1256. cuda/cccl/headers/include/thrust/iterator/iterator_traits.h +245 -0
  1257. cuda/cccl/headers/include/thrust/iterator/offset_iterator.h +192 -0
  1258. cuda/cccl/headers/include/thrust/iterator/permutation_iterator.h +204 -0
  1259. cuda/cccl/headers/include/thrust/iterator/retag.h +74 -0
  1260. cuda/cccl/headers/include/thrust/iterator/reverse_iterator.h +221 -0
  1261. cuda/cccl/headers/include/thrust/iterator/shuffle_iterator.h +184 -0
  1262. cuda/cccl/headers/include/thrust/iterator/strided_iterator.h +152 -0
  1263. cuda/cccl/headers/include/thrust/iterator/tabulate_output_iterator.h +149 -0
  1264. cuda/cccl/headers/include/thrust/iterator/transform_input_output_iterator.h +226 -0
  1265. cuda/cccl/headers/include/thrust/iterator/transform_iterator.h +351 -0
  1266. cuda/cccl/headers/include/thrust/iterator/transform_output_iterator.h +190 -0
  1267. cuda/cccl/headers/include/thrust/iterator/zip_iterator.h +357 -0
  1268. cuda/cccl/headers/include/thrust/logical.h +290 -0
  1269. cuda/cccl/headers/include/thrust/memory.h +395 -0
  1270. cuda/cccl/headers/include/thrust/merge.h +725 -0
  1271. cuda/cccl/headers/include/thrust/mismatch.h +261 -0
  1272. cuda/cccl/headers/include/thrust/mr/allocator.h +229 -0
  1273. cuda/cccl/headers/include/thrust/mr/device_memory_resource.h +41 -0
  1274. cuda/cccl/headers/include/thrust/mr/disjoint_pool.h +526 -0
  1275. cuda/cccl/headers/include/thrust/mr/disjoint_sync_pool.h +118 -0
  1276. cuda/cccl/headers/include/thrust/mr/disjoint_tls_pool.h +68 -0
  1277. cuda/cccl/headers/include/thrust/mr/fancy_pointer_resource.h +67 -0
  1278. cuda/cccl/headers/include/thrust/mr/host_memory_resource.h +38 -0
  1279. cuda/cccl/headers/include/thrust/mr/memory_resource.h +217 -0
  1280. cuda/cccl/headers/include/thrust/mr/new.h +100 -0
  1281. cuda/cccl/headers/include/thrust/mr/polymorphic_adaptor.h +63 -0
  1282. cuda/cccl/headers/include/thrust/mr/pool.h +526 -0
  1283. cuda/cccl/headers/include/thrust/mr/pool_options.h +174 -0
  1284. cuda/cccl/headers/include/thrust/mr/sync_pool.h +114 -0
  1285. cuda/cccl/headers/include/thrust/mr/tls_pool.h +65 -0
  1286. cuda/cccl/headers/include/thrust/mr/universal_memory_resource.h +29 -0
  1287. cuda/cccl/headers/include/thrust/mr/validator.h +56 -0
  1288. cuda/cccl/headers/include/thrust/pair.h +102 -0
  1289. cuda/cccl/headers/include/thrust/partition.h +1383 -0
  1290. cuda/cccl/headers/include/thrust/per_device_resource.h +98 -0
  1291. cuda/cccl/headers/include/thrust/random/detail/discard_block_engine.inl +184 -0
  1292. cuda/cccl/headers/include/thrust/random/detail/linear_congruential_engine.inl +155 -0
  1293. cuda/cccl/headers/include/thrust/random/detail/linear_congruential_engine_discard.h +104 -0
  1294. cuda/cccl/headers/include/thrust/random/detail/linear_feedback_shift_engine.inl +151 -0
  1295. cuda/cccl/headers/include/thrust/random/detail/linear_feedback_shift_engine_wordmask.h +53 -0
  1296. cuda/cccl/headers/include/thrust/random/detail/mod.h +101 -0
  1297. cuda/cccl/headers/include/thrust/random/detail/normal_distribution.inl +187 -0
  1298. cuda/cccl/headers/include/thrust/random/detail/normal_distribution_base.h +160 -0
  1299. cuda/cccl/headers/include/thrust/random/detail/random_core_access.h +63 -0
  1300. cuda/cccl/headers/include/thrust/random/detail/subtract_with_carry_engine.inl +201 -0
  1301. cuda/cccl/headers/include/thrust/random/detail/uniform_int_distribution.inl +198 -0
  1302. cuda/cccl/headers/include/thrust/random/detail/uniform_real_distribution.inl +198 -0
  1303. cuda/cccl/headers/include/thrust/random/detail/xor_combine_engine.inl +183 -0
  1304. cuda/cccl/headers/include/thrust/random/detail/xor_combine_engine_max.h +217 -0
  1305. cuda/cccl/headers/include/thrust/random/discard_block_engine.h +240 -0
  1306. cuda/cccl/headers/include/thrust/random/linear_congruential_engine.h +289 -0
  1307. cuda/cccl/headers/include/thrust/random/linear_feedback_shift_engine.h +217 -0
  1308. cuda/cccl/headers/include/thrust/random/normal_distribution.h +257 -0
  1309. cuda/cccl/headers/include/thrust/random/subtract_with_carry_engine.h +247 -0
  1310. cuda/cccl/headers/include/thrust/random/uniform_int_distribution.h +261 -0
  1311. cuda/cccl/headers/include/thrust/random/uniform_real_distribution.h +258 -0
  1312. cuda/cccl/headers/include/thrust/random/xor_combine_engine.h +255 -0
  1313. cuda/cccl/headers/include/thrust/random.h +120 -0
  1314. cuda/cccl/headers/include/thrust/reduce.h +1112 -0
  1315. cuda/cccl/headers/include/thrust/remove.h +768 -0
  1316. cuda/cccl/headers/include/thrust/replace.h +827 -0
  1317. cuda/cccl/headers/include/thrust/reverse.h +213 -0
  1318. cuda/cccl/headers/include/thrust/scan.h +1671 -0
  1319. cuda/cccl/headers/include/thrust/scatter.h +446 -0
  1320. cuda/cccl/headers/include/thrust/sequence.h +277 -0
  1321. cuda/cccl/headers/include/thrust/set_operations.h +3026 -0
  1322. cuda/cccl/headers/include/thrust/shuffle.h +182 -0
  1323. cuda/cccl/headers/include/thrust/sort.h +1320 -0
  1324. cuda/cccl/headers/include/thrust/swap.h +147 -0
  1325. cuda/cccl/headers/include/thrust/system/cpp/detail/adjacent_difference.h +30 -0
  1326. cuda/cccl/headers/include/thrust/system/cpp/detail/assign_value.h +30 -0
  1327. cuda/cccl/headers/include/thrust/system/cpp/detail/binary_search.h +32 -0
  1328. cuda/cccl/headers/include/thrust/system/cpp/detail/copy.h +30 -0
  1329. cuda/cccl/headers/include/thrust/system/cpp/detail/copy_if.h +30 -0
  1330. cuda/cccl/headers/include/thrust/system/cpp/detail/count.h +29 -0
  1331. cuda/cccl/headers/include/thrust/system/cpp/detail/equal.h +29 -0
  1332. cuda/cccl/headers/include/thrust/system/cpp/detail/execution_policy.h +90 -0
  1333. cuda/cccl/headers/include/thrust/system/cpp/detail/extrema.h +30 -0
  1334. cuda/cccl/headers/include/thrust/system/cpp/detail/fill.h +29 -0
  1335. cuda/cccl/headers/include/thrust/system/cpp/detail/find.h +30 -0
  1336. cuda/cccl/headers/include/thrust/system/cpp/detail/for_each.h +30 -0
  1337. cuda/cccl/headers/include/thrust/system/cpp/detail/gather.h +29 -0
  1338. cuda/cccl/headers/include/thrust/system/cpp/detail/generate.h +29 -0
  1339. cuda/cccl/headers/include/thrust/system/cpp/detail/get_value.h +30 -0
  1340. cuda/cccl/headers/include/thrust/system/cpp/detail/inner_product.h +29 -0
  1341. cuda/cccl/headers/include/thrust/system/cpp/detail/iter_swap.h +30 -0
  1342. cuda/cccl/headers/include/thrust/system/cpp/detail/logical.h +29 -0
  1343. cuda/cccl/headers/include/thrust/system/cpp/detail/malloc_and_free.h +30 -0
  1344. cuda/cccl/headers/include/thrust/system/cpp/detail/memory.inl +60 -0
  1345. cuda/cccl/headers/include/thrust/system/cpp/detail/merge.h +30 -0
  1346. cuda/cccl/headers/include/thrust/system/cpp/detail/mismatch.h +29 -0
  1347. cuda/cccl/headers/include/thrust/system/cpp/detail/par.h +62 -0
  1348. cuda/cccl/headers/include/thrust/system/cpp/detail/partition.h +30 -0
  1349. cuda/cccl/headers/include/thrust/system/cpp/detail/per_device_resource.h +29 -0
  1350. cuda/cccl/headers/include/thrust/system/cpp/detail/reduce.h +30 -0
  1351. cuda/cccl/headers/include/thrust/system/cpp/detail/reduce_by_key.h +30 -0
  1352. cuda/cccl/headers/include/thrust/system/cpp/detail/remove.h +30 -0
  1353. cuda/cccl/headers/include/thrust/system/cpp/detail/replace.h +29 -0
  1354. cuda/cccl/headers/include/thrust/system/cpp/detail/reverse.h +29 -0
  1355. cuda/cccl/headers/include/thrust/system/cpp/detail/scan.h +30 -0
  1356. cuda/cccl/headers/include/thrust/system/cpp/detail/scan_by_key.h +30 -0
  1357. cuda/cccl/headers/include/thrust/system/cpp/detail/scatter.h +29 -0
  1358. cuda/cccl/headers/include/thrust/system/cpp/detail/sequence.h +29 -0
  1359. cuda/cccl/headers/include/thrust/system/cpp/detail/set_operations.h +30 -0
  1360. cuda/cccl/headers/include/thrust/system/cpp/detail/sort.h +30 -0
  1361. cuda/cccl/headers/include/thrust/system/cpp/detail/swap_ranges.h +29 -0
  1362. cuda/cccl/headers/include/thrust/system/cpp/detail/tabulate.h +29 -0
  1363. cuda/cccl/headers/include/thrust/system/cpp/detail/temporary_buffer.h +29 -0
  1364. cuda/cccl/headers/include/thrust/system/cpp/detail/transform.h +29 -0
  1365. cuda/cccl/headers/include/thrust/system/cpp/detail/transform_reduce.h +29 -0
  1366. cuda/cccl/headers/include/thrust/system/cpp/detail/transform_scan.h +29 -0
  1367. cuda/cccl/headers/include/thrust/system/cpp/detail/uninitialized_copy.h +29 -0
  1368. cuda/cccl/headers/include/thrust/system/cpp/detail/uninitialized_fill.h +29 -0
  1369. cuda/cccl/headers/include/thrust/system/cpp/detail/unique.h +30 -0
  1370. cuda/cccl/headers/include/thrust/system/cpp/detail/unique_by_key.h +30 -0
  1371. cuda/cccl/headers/include/thrust/system/cpp/detail/vector.inl +130 -0
  1372. cuda/cccl/headers/include/thrust/system/cpp/execution_policy.h +161 -0
  1373. cuda/cccl/headers/include/thrust/system/cpp/memory.h +109 -0
  1374. cuda/cccl/headers/include/thrust/system/cpp/memory_resource.h +75 -0
  1375. cuda/cccl/headers/include/thrust/system/cpp/pointer.h +119 -0
  1376. cuda/cccl/headers/include/thrust/system/cpp/vector.h +99 -0
  1377. cuda/cccl/headers/include/thrust/system/cuda/config.h +123 -0
  1378. cuda/cccl/headers/include/thrust/system/cuda/detail/adjacent_difference.h +219 -0
  1379. cuda/cccl/headers/include/thrust/system/cuda/detail/assign_value.h +124 -0
  1380. cuda/cccl/headers/include/thrust/system/cuda/detail/binary_search.h +29 -0
  1381. cuda/cccl/headers/include/thrust/system/cuda/detail/cdp_dispatch.h +72 -0
  1382. cuda/cccl/headers/include/thrust/system/cuda/detail/copy.h +129 -0
  1383. cuda/cccl/headers/include/thrust/system/cuda/detail/copy_if.h +255 -0
  1384. cuda/cccl/headers/include/thrust/system/cuda/detail/core/agent_launcher.h +289 -0
  1385. cuda/cccl/headers/include/thrust/system/cuda/detail/core/load_iterator.h +58 -0
  1386. cuda/cccl/headers/include/thrust/system/cuda/detail/core/make_load_iterator.h +60 -0
  1387. cuda/cccl/headers/include/thrust/system/cuda/detail/core/triple_chevron_launch.h +191 -0
  1388. cuda/cccl/headers/include/thrust/system/cuda/detail/core/util.h +630 -0
  1389. cuda/cccl/headers/include/thrust/system/cuda/detail/count.h +75 -0
  1390. cuda/cccl/headers/include/thrust/system/cuda/detail/cross_system.h +243 -0
  1391. cuda/cccl/headers/include/thrust/system/cuda/detail/dispatch.h +210 -0
  1392. cuda/cccl/headers/include/thrust/system/cuda/detail/equal.h +64 -0
  1393. cuda/cccl/headers/include/thrust/system/cuda/detail/error.inl +96 -0
  1394. cuda/cccl/headers/include/thrust/system/cuda/detail/execution_policy.h +113 -0
  1395. cuda/cccl/headers/include/thrust/system/cuda/detail/extrema.h +476 -0
  1396. cuda/cccl/headers/include/thrust/system/cuda/detail/fill.h +82 -0
  1397. cuda/cccl/headers/include/thrust/system/cuda/detail/find.h +272 -0
  1398. cuda/cccl/headers/include/thrust/system/cuda/detail/for_each.h +83 -0
  1399. cuda/cccl/headers/include/thrust/system/cuda/detail/gather.h +91 -0
  1400. cuda/cccl/headers/include/thrust/system/cuda/detail/generate.h +85 -0
  1401. cuda/cccl/headers/include/thrust/system/cuda/detail/get_value.h +65 -0
  1402. cuda/cccl/headers/include/thrust/system/cuda/detail/inner_product.h +75 -0
  1403. cuda/cccl/headers/include/thrust/system/cuda/detail/internal/copy_cross_system.h +204 -0
  1404. cuda/cccl/headers/include/thrust/system/cuda/detail/internal/copy_device_to_device.h +98 -0
  1405. cuda/cccl/headers/include/thrust/system/cuda/detail/iter_swap.h +69 -0
  1406. cuda/cccl/headers/include/thrust/system/cuda/detail/logical.h +29 -0
  1407. cuda/cccl/headers/include/thrust/system/cuda/detail/make_unsigned_special.h +61 -0
  1408. cuda/cccl/headers/include/thrust/system/cuda/detail/malloc_and_free.h +121 -0
  1409. cuda/cccl/headers/include/thrust/system/cuda/detail/memory.inl +57 -0
  1410. cuda/cccl/headers/include/thrust/system/cuda/detail/merge.h +228 -0
  1411. cuda/cccl/headers/include/thrust/system/cuda/detail/mismatch.h +217 -0
  1412. cuda/cccl/headers/include/thrust/system/cuda/detail/par.h +237 -0
  1413. cuda/cccl/headers/include/thrust/system/cuda/detail/par_to_seq.h +95 -0
  1414. cuda/cccl/headers/include/thrust/system/cuda/detail/parallel_for.h +81 -0
  1415. cuda/cccl/headers/include/thrust/system/cuda/detail/partition.h +405 -0
  1416. cuda/cccl/headers/include/thrust/system/cuda/detail/per_device_resource.h +72 -0
  1417. cuda/cccl/headers/include/thrust/system/cuda/detail/reduce.h +961 -0
  1418. cuda/cccl/headers/include/thrust/system/cuda/detail/reduce_by_key.h +1000 -0
  1419. cuda/cccl/headers/include/thrust/system/cuda/detail/remove.h +107 -0
  1420. cuda/cccl/headers/include/thrust/system/cuda/detail/replace.h +164 -0
  1421. cuda/cccl/headers/include/thrust/system/cuda/detail/reverse.h +88 -0
  1422. cuda/cccl/headers/include/thrust/system/cuda/detail/scan.h +342 -0
  1423. cuda/cccl/headers/include/thrust/system/cuda/detail/scan_by_key.h +415 -0
  1424. cuda/cccl/headers/include/thrust/system/cuda/detail/scatter.h +79 -0
  1425. cuda/cccl/headers/include/thrust/system/cuda/detail/sequence.h +29 -0
  1426. cuda/cccl/headers/include/thrust/system/cuda/detail/set_operations.h +1736 -0
  1427. cuda/cccl/headers/include/thrust/system/cuda/detail/sort.h +482 -0
  1428. cuda/cccl/headers/include/thrust/system/cuda/detail/swap_ranges.h +75 -0
  1429. cuda/cccl/headers/include/thrust/system/cuda/detail/tabulate.h +75 -0
  1430. cuda/cccl/headers/include/thrust/system/cuda/detail/temporary_buffer.h +132 -0
  1431. cuda/cccl/headers/include/thrust/system/cuda/detail/terminate.h +53 -0
  1432. cuda/cccl/headers/include/thrust/system/cuda/detail/transform.h +403 -0
  1433. cuda/cccl/headers/include/thrust/system/cuda/detail/transform_reduce.h +143 -0
  1434. cuda/cccl/headers/include/thrust/system/cuda/detail/transform_scan.h +119 -0
  1435. cuda/cccl/headers/include/thrust/system/cuda/detail/uninitialized_copy.h +94 -0
  1436. cuda/cccl/headers/include/thrust/system/cuda/detail/uninitialized_fill.h +91 -0
  1437. cuda/cccl/headers/include/thrust/system/cuda/detail/unique.h +648 -0
  1438. cuda/cccl/headers/include/thrust/system/cuda/detail/unique_by_key.h +311 -0
  1439. cuda/cccl/headers/include/thrust/system/cuda/detail/util.h +251 -0
  1440. cuda/cccl/headers/include/thrust/system/cuda/error.h +175 -0
  1441. cuda/cccl/headers/include/thrust/system/cuda/execution_policy.h +39 -0
  1442. cuda/cccl/headers/include/thrust/system/cuda/memory.h +122 -0
  1443. cuda/cccl/headers/include/thrust/system/cuda/memory_resource.h +122 -0
  1444. cuda/cccl/headers/include/thrust/system/cuda/pointer.h +140 -0
  1445. cuda/cccl/headers/include/thrust/system/cuda/vector.h +108 -0
  1446. cuda/cccl/headers/include/thrust/system/detail/adl/adjacent_difference.h +51 -0
  1447. cuda/cccl/headers/include/thrust/system/detail/adl/assign_value.h +51 -0
  1448. cuda/cccl/headers/include/thrust/system/detail/adl/binary_search.h +51 -0
  1449. cuda/cccl/headers/include/thrust/system/detail/adl/copy.h +51 -0
  1450. cuda/cccl/headers/include/thrust/system/detail/adl/copy_if.h +52 -0
  1451. cuda/cccl/headers/include/thrust/system/detail/adl/count.h +51 -0
  1452. cuda/cccl/headers/include/thrust/system/detail/adl/equal.h +51 -0
  1453. cuda/cccl/headers/include/thrust/system/detail/adl/extrema.h +51 -0
  1454. cuda/cccl/headers/include/thrust/system/detail/adl/fill.h +51 -0
  1455. cuda/cccl/headers/include/thrust/system/detail/adl/find.h +51 -0
  1456. cuda/cccl/headers/include/thrust/system/detail/adl/for_each.h +51 -0
  1457. cuda/cccl/headers/include/thrust/system/detail/adl/gather.h +51 -0
  1458. cuda/cccl/headers/include/thrust/system/detail/adl/generate.h +51 -0
  1459. cuda/cccl/headers/include/thrust/system/detail/adl/get_value.h +51 -0
  1460. cuda/cccl/headers/include/thrust/system/detail/adl/inner_product.h +51 -0
  1461. cuda/cccl/headers/include/thrust/system/detail/adl/iter_swap.h +51 -0
  1462. cuda/cccl/headers/include/thrust/system/detail/adl/logical.h +51 -0
  1463. cuda/cccl/headers/include/thrust/system/detail/adl/malloc_and_free.h +51 -0
  1464. cuda/cccl/headers/include/thrust/system/detail/adl/merge.h +51 -0
  1465. cuda/cccl/headers/include/thrust/system/detail/adl/mismatch.h +51 -0
  1466. cuda/cccl/headers/include/thrust/system/detail/adl/partition.h +51 -0
  1467. cuda/cccl/headers/include/thrust/system/detail/adl/per_device_resource.h +48 -0
  1468. cuda/cccl/headers/include/thrust/system/detail/adl/reduce.h +51 -0
  1469. cuda/cccl/headers/include/thrust/system/detail/adl/reduce_by_key.h +51 -0
  1470. cuda/cccl/headers/include/thrust/system/detail/adl/remove.h +51 -0
  1471. cuda/cccl/headers/include/thrust/system/detail/adl/replace.h +51 -0
  1472. cuda/cccl/headers/include/thrust/system/detail/adl/reverse.h +51 -0
  1473. cuda/cccl/headers/include/thrust/system/detail/adl/scan.h +51 -0
  1474. cuda/cccl/headers/include/thrust/system/detail/adl/scan_by_key.h +51 -0
  1475. cuda/cccl/headers/include/thrust/system/detail/adl/scatter.h +51 -0
  1476. cuda/cccl/headers/include/thrust/system/detail/adl/sequence.h +51 -0
  1477. cuda/cccl/headers/include/thrust/system/detail/adl/set_operations.h +51 -0
  1478. cuda/cccl/headers/include/thrust/system/detail/adl/sort.h +51 -0
  1479. cuda/cccl/headers/include/thrust/system/detail/adl/swap_ranges.h +51 -0
  1480. cuda/cccl/headers/include/thrust/system/detail/adl/tabulate.h +51 -0
  1481. cuda/cccl/headers/include/thrust/system/detail/adl/temporary_buffer.h +51 -0
  1482. cuda/cccl/headers/include/thrust/system/detail/adl/transform.h +51 -0
  1483. cuda/cccl/headers/include/thrust/system/detail/adl/transform_reduce.h +51 -0
  1484. cuda/cccl/headers/include/thrust/system/detail/adl/transform_scan.h +51 -0
  1485. cuda/cccl/headers/include/thrust/system/detail/adl/uninitialized_copy.h +51 -0
  1486. cuda/cccl/headers/include/thrust/system/detail/adl/uninitialized_fill.h +51 -0
  1487. cuda/cccl/headers/include/thrust/system/detail/adl/unique.h +51 -0
  1488. cuda/cccl/headers/include/thrust/system/detail/adl/unique_by_key.h +51 -0
  1489. cuda/cccl/headers/include/thrust/system/detail/bad_alloc.h +64 -0
  1490. cuda/cccl/headers/include/thrust/system/detail/errno.h +125 -0
  1491. cuda/cccl/headers/include/thrust/system/detail/error_category.inl +302 -0
  1492. cuda/cccl/headers/include/thrust/system/detail/error_code.inl +173 -0
  1493. cuda/cccl/headers/include/thrust/system/detail/error_condition.inl +121 -0
  1494. cuda/cccl/headers/include/thrust/system/detail/generic/adjacent_difference.h +59 -0
  1495. cuda/cccl/headers/include/thrust/system/detail/generic/adjacent_difference.inl +85 -0
  1496. cuda/cccl/headers/include/thrust/system/detail/generic/binary_search.h +167 -0
  1497. cuda/cccl/headers/include/thrust/system/detail/generic/binary_search.inl +391 -0
  1498. cuda/cccl/headers/include/thrust/system/detail/generic/copy.h +51 -0
  1499. cuda/cccl/headers/include/thrust/system/detail/generic/copy.inl +70 -0
  1500. cuda/cccl/headers/include/thrust/system/detail/generic/copy_if.h +64 -0
  1501. cuda/cccl/headers/include/thrust/system/detail/generic/copy_if.inl +152 -0
  1502. cuda/cccl/headers/include/thrust/system/detail/generic/count.h +54 -0
  1503. cuda/cccl/headers/include/thrust/system/detail/generic/count.inl +90 -0
  1504. cuda/cccl/headers/include/thrust/system/detail/generic/equal.h +55 -0
  1505. cuda/cccl/headers/include/thrust/system/detail/generic/equal.inl +66 -0
  1506. cuda/cccl/headers/include/thrust/system/detail/generic/extrema.h +72 -0
  1507. cuda/cccl/headers/include/thrust/system/detail/generic/extrema.inl +258 -0
  1508. cuda/cccl/headers/include/thrust/system/detail/generic/fill.h +60 -0
  1509. cuda/cccl/headers/include/thrust/system/detail/generic/find.h +55 -0
  1510. cuda/cccl/headers/include/thrust/system/detail/generic/find.inl +143 -0
  1511. cuda/cccl/headers/include/thrust/system/detail/generic/for_each.h +64 -0
  1512. cuda/cccl/headers/include/thrust/system/detail/generic/gather.h +79 -0
  1513. cuda/cccl/headers/include/thrust/system/detail/generic/gather.inl +102 -0
  1514. cuda/cccl/headers/include/thrust/system/detail/generic/generate.h +51 -0
  1515. cuda/cccl/headers/include/thrust/system/detail/generic/generate.inl +63 -0
  1516. cuda/cccl/headers/include/thrust/system/detail/generic/inner_product.h +66 -0
  1517. cuda/cccl/headers/include/thrust/system/detail/generic/inner_product.inl +78 -0
  1518. cuda/cccl/headers/include/thrust/system/detail/generic/logical.h +65 -0
  1519. cuda/cccl/headers/include/thrust/system/detail/generic/memory.h +70 -0
  1520. cuda/cccl/headers/include/thrust/system/detail/generic/memory.inl +83 -0
  1521. cuda/cccl/headers/include/thrust/system/detail/generic/merge.h +105 -0
  1522. cuda/cccl/headers/include/thrust/system/detail/generic/merge.inl +154 -0
  1523. cuda/cccl/headers/include/thrust/system/detail/generic/mismatch.h +55 -0
  1524. cuda/cccl/headers/include/thrust/system/detail/generic/mismatch.inl +74 -0
  1525. cuda/cccl/headers/include/thrust/system/detail/generic/partition.h +135 -0
  1526. cuda/cccl/headers/include/thrust/system/detail/generic/partition.inl +213 -0
  1527. cuda/cccl/headers/include/thrust/system/detail/generic/per_device_resource.h +49 -0
  1528. cuda/cccl/headers/include/thrust/system/detail/generic/reduce.h +77 -0
  1529. cuda/cccl/headers/include/thrust/system/detail/generic/reduce.inl +106 -0
  1530. cuda/cccl/headers/include/thrust/system/detail/generic/reduce_by_key.h +89 -0
  1531. cuda/cccl/headers/include/thrust/system/detail/generic/reduce_by_key.inl +192 -0
  1532. cuda/cccl/headers/include/thrust/system/detail/generic/remove.h +92 -0
  1533. cuda/cccl/headers/include/thrust/system/detail/generic/remove.inl +127 -0
  1534. cuda/cccl/headers/include/thrust/system/detail/generic/replace.h +101 -0
  1535. cuda/cccl/headers/include/thrust/system/detail/generic/replace.inl +181 -0
  1536. cuda/cccl/headers/include/thrust/system/detail/generic/reverse.h +54 -0
  1537. cuda/cccl/headers/include/thrust/system/detail/generic/reverse.inl +72 -0
  1538. cuda/cccl/headers/include/thrust/system/detail/generic/scalar/binary_search.h +78 -0
  1539. cuda/cccl/headers/include/thrust/system/detail/generic/scalar/binary_search.inl +141 -0
  1540. cuda/cccl/headers/include/thrust/system/detail/generic/scan.h +78 -0
  1541. cuda/cccl/headers/include/thrust/system/detail/generic/scan.inl +91 -0
  1542. cuda/cccl/headers/include/thrust/system/detail/generic/scan_by_key.h +132 -0
  1543. cuda/cccl/headers/include/thrust/system/detail/generic/scan_by_key.inl +238 -0
  1544. cuda/cccl/headers/include/thrust/system/detail/generic/scatter.h +79 -0
  1545. cuda/cccl/headers/include/thrust/system/detail/generic/scatter.inl +91 -0
  1546. cuda/cccl/headers/include/thrust/system/detail/generic/select_system.h +96 -0
  1547. cuda/cccl/headers/include/thrust/system/detail/generic/sequence.h +55 -0
  1548. cuda/cccl/headers/include/thrust/system/detail/generic/sequence.inl +95 -0
  1549. cuda/cccl/headers/include/thrust/system/detail/generic/set_operations.h +288 -0
  1550. cuda/cccl/headers/include/thrust/system/detail/generic/set_operations.inl +482 -0
  1551. cuda/cccl/headers/include/thrust/system/detail/generic/shuffle.h +60 -0
  1552. cuda/cccl/headers/include/thrust/system/detail/generic/shuffle.inl +131 -0
  1553. cuda/cccl/headers/include/thrust/system/detail/generic/sort.h +119 -0
  1554. cuda/cccl/headers/include/thrust/system/detail/generic/sort.inl +181 -0
  1555. cuda/cccl/headers/include/thrust/system/detail/generic/swap_ranges.h +50 -0
  1556. cuda/cccl/headers/include/thrust/system/detail/generic/swap_ranges.inl +82 -0
  1557. cuda/cccl/headers/include/thrust/system/detail/generic/tabulate.h +47 -0
  1558. cuda/cccl/headers/include/thrust/system/detail/generic/tabulate.inl +60 -0
  1559. cuda/cccl/headers/include/thrust/system/detail/generic/tag.h +53 -0
  1560. cuda/cccl/headers/include/thrust/system/detail/generic/temporary_buffer.h +60 -0
  1561. cuda/cccl/headers/include/thrust/system/detail/generic/temporary_buffer.inl +88 -0
  1562. cuda/cccl/headers/include/thrust/system/detail/generic/transform.h +109 -0
  1563. cuda/cccl/headers/include/thrust/system/detail/generic/transform.inl +185 -0
  1564. cuda/cccl/headers/include/thrust/system/detail/generic/transform_reduce.h +56 -0
  1565. cuda/cccl/headers/include/thrust/system/detail/generic/transform_reduce.inl +62 -0
  1566. cuda/cccl/headers/include/thrust/system/detail/generic/transform_scan.h +86 -0
  1567. cuda/cccl/headers/include/thrust/system/detail/generic/transform_scan.inl +119 -0
  1568. cuda/cccl/headers/include/thrust/system/detail/generic/uninitialized_copy.h +51 -0
  1569. cuda/cccl/headers/include/thrust/system/detail/generic/uninitialized_copy.inl +172 -0
  1570. cuda/cccl/headers/include/thrust/system/detail/generic/uninitialized_fill.h +51 -0
  1571. cuda/cccl/headers/include/thrust/system/detail/generic/uninitialized_fill.inl +121 -0
  1572. cuda/cccl/headers/include/thrust/system/detail/generic/unique.h +77 -0
  1573. cuda/cccl/headers/include/thrust/system/detail/generic/unique.inl +119 -0
  1574. cuda/cccl/headers/include/thrust/system/detail/generic/unique_by_key.h +87 -0
  1575. cuda/cccl/headers/include/thrust/system/detail/generic/unique_by_key.inl +132 -0
  1576. cuda/cccl/headers/include/thrust/system/detail/internal/decompose.h +123 -0
  1577. cuda/cccl/headers/include/thrust/system/detail/sequential/adjacent_difference.h +76 -0
  1578. cuda/cccl/headers/include/thrust/system/detail/sequential/assign_value.h +48 -0
  1579. cuda/cccl/headers/include/thrust/system/detail/sequential/binary_search.h +142 -0
  1580. cuda/cccl/headers/include/thrust/system/detail/sequential/copy.h +55 -0
  1581. cuda/cccl/headers/include/thrust/system/detail/sequential/copy.inl +125 -0
  1582. cuda/cccl/headers/include/thrust/system/detail/sequential/copy_backward.h +55 -0
  1583. cuda/cccl/headers/include/thrust/system/detail/sequential/copy_if.h +77 -0
  1584. cuda/cccl/headers/include/thrust/system/detail/sequential/count.h +29 -0
  1585. cuda/cccl/headers/include/thrust/system/detail/sequential/equal.h +29 -0
  1586. cuda/cccl/headers/include/thrust/system/detail/sequential/execution_policy.h +78 -0
  1587. cuda/cccl/headers/include/thrust/system/detail/sequential/extrema.h +116 -0
  1588. cuda/cccl/headers/include/thrust/system/detail/sequential/fill.h +29 -0
  1589. cuda/cccl/headers/include/thrust/system/detail/sequential/find.h +68 -0
  1590. cuda/cccl/headers/include/thrust/system/detail/sequential/for_each.h +80 -0
  1591. cuda/cccl/headers/include/thrust/system/detail/sequential/gather.h +29 -0
  1592. cuda/cccl/headers/include/thrust/system/detail/sequential/general_copy.h +129 -0
  1593. cuda/cccl/headers/include/thrust/system/detail/sequential/generate.h +29 -0
  1594. cuda/cccl/headers/include/thrust/system/detail/sequential/get_value.h +49 -0
  1595. cuda/cccl/headers/include/thrust/system/detail/sequential/inner_product.h +29 -0
  1596. cuda/cccl/headers/include/thrust/system/detail/sequential/insertion_sort.h +147 -0
  1597. cuda/cccl/headers/include/thrust/system/detail/sequential/iter_swap.h +51 -0
  1598. cuda/cccl/headers/include/thrust/system/detail/sequential/logical.h +29 -0
  1599. cuda/cccl/headers/include/thrust/system/detail/sequential/malloc_and_free.h +56 -0
  1600. cuda/cccl/headers/include/thrust/system/detail/sequential/merge.h +81 -0
  1601. cuda/cccl/headers/include/thrust/system/detail/sequential/merge.inl +151 -0
  1602. cuda/cccl/headers/include/thrust/system/detail/sequential/mismatch.h +29 -0
  1603. cuda/cccl/headers/include/thrust/system/detail/sequential/partition.h +309 -0
  1604. cuda/cccl/headers/include/thrust/system/detail/sequential/per_device_resource.h +29 -0
  1605. cuda/cccl/headers/include/thrust/system/detail/sequential/reduce.h +70 -0
  1606. cuda/cccl/headers/include/thrust/system/detail/sequential/reduce_by_key.h +104 -0
  1607. cuda/cccl/headers/include/thrust/system/detail/sequential/remove.h +185 -0
  1608. cuda/cccl/headers/include/thrust/system/detail/sequential/replace.h +29 -0
  1609. cuda/cccl/headers/include/thrust/system/detail/sequential/reverse.h +29 -0
  1610. cuda/cccl/headers/include/thrust/system/detail/sequential/scan.h +160 -0
  1611. cuda/cccl/headers/include/thrust/system/detail/sequential/scan_by_key.h +151 -0
  1612. cuda/cccl/headers/include/thrust/system/detail/sequential/scatter.h +29 -0
  1613. cuda/cccl/headers/include/thrust/system/detail/sequential/sequence.h +29 -0
  1614. cuda/cccl/headers/include/thrust/system/detail/sequential/set_operations.h +212 -0
  1615. cuda/cccl/headers/include/thrust/system/detail/sequential/sort.h +65 -0
  1616. cuda/cccl/headers/include/thrust/system/detail/sequential/sort.inl +187 -0
  1617. cuda/cccl/headers/include/thrust/system/detail/sequential/stable_merge_sort.h +61 -0
  1618. cuda/cccl/headers/include/thrust/system/detail/sequential/stable_merge_sort.inl +362 -0
  1619. cuda/cccl/headers/include/thrust/system/detail/sequential/stable_primitive_sort.h +54 -0
  1620. cuda/cccl/headers/include/thrust/system/detail/sequential/stable_primitive_sort.inl +130 -0
  1621. cuda/cccl/headers/include/thrust/system/detail/sequential/stable_radix_sort.h +54 -0
  1622. cuda/cccl/headers/include/thrust/system/detail/sequential/stable_radix_sort.inl +592 -0
  1623. cuda/cccl/headers/include/thrust/system/detail/sequential/swap_ranges.h +29 -0
  1624. cuda/cccl/headers/include/thrust/system/detail/sequential/tabulate.h +29 -0
  1625. cuda/cccl/headers/include/thrust/system/detail/sequential/temporary_buffer.h +29 -0
  1626. cuda/cccl/headers/include/thrust/system/detail/sequential/transform.h +29 -0
  1627. cuda/cccl/headers/include/thrust/system/detail/sequential/transform_reduce.h +29 -0
  1628. cuda/cccl/headers/include/thrust/system/detail/sequential/transform_scan.h +29 -0
  1629. cuda/cccl/headers/include/thrust/system/detail/sequential/trivial_copy.h +64 -0
  1630. cuda/cccl/headers/include/thrust/system/detail/sequential/uninitialized_copy.h +29 -0
  1631. cuda/cccl/headers/include/thrust/system/detail/sequential/uninitialized_fill.h +29 -0
  1632. cuda/cccl/headers/include/thrust/system/detail/sequential/unique.h +121 -0
  1633. cuda/cccl/headers/include/thrust/system/detail/sequential/unique_by_key.h +112 -0
  1634. cuda/cccl/headers/include/thrust/system/detail/system_error.inl +108 -0
  1635. cuda/cccl/headers/include/thrust/system/error_code.h +512 -0
  1636. cuda/cccl/headers/include/thrust/system/omp/detail/adjacent_difference.h +54 -0
  1637. cuda/cccl/headers/include/thrust/system/omp/detail/assign_value.h +30 -0
  1638. cuda/cccl/headers/include/thrust/system/omp/detail/binary_search.h +77 -0
  1639. cuda/cccl/headers/include/thrust/system/omp/detail/copy.h +50 -0
  1640. cuda/cccl/headers/include/thrust/system/omp/detail/copy.inl +74 -0
  1641. cuda/cccl/headers/include/thrust/system/omp/detail/copy_if.h +56 -0
  1642. cuda/cccl/headers/include/thrust/system/omp/detail/copy_if.inl +59 -0
  1643. cuda/cccl/headers/include/thrust/system/omp/detail/count.h +30 -0
  1644. cuda/cccl/headers/include/thrust/system/omp/detail/default_decomposition.h +50 -0
  1645. cuda/cccl/headers/include/thrust/system/omp/detail/default_decomposition.inl +65 -0
  1646. cuda/cccl/headers/include/thrust/system/omp/detail/equal.h +30 -0
  1647. cuda/cccl/headers/include/thrust/system/omp/detail/execution_policy.h +113 -0
  1648. cuda/cccl/headers/include/thrust/system/omp/detail/extrema.h +66 -0
  1649. cuda/cccl/headers/include/thrust/system/omp/detail/fill.h +30 -0
  1650. cuda/cccl/headers/include/thrust/system/omp/detail/find.h +53 -0
  1651. cuda/cccl/headers/include/thrust/system/omp/detail/for_each.h +56 -0
  1652. cuda/cccl/headers/include/thrust/system/omp/detail/for_each.inl +87 -0
  1653. cuda/cccl/headers/include/thrust/system/omp/detail/gather.h +30 -0
  1654. cuda/cccl/headers/include/thrust/system/omp/detail/generate.h +30 -0
  1655. cuda/cccl/headers/include/thrust/system/omp/detail/get_value.h +30 -0
  1656. cuda/cccl/headers/include/thrust/system/omp/detail/inner_product.h +30 -0
  1657. cuda/cccl/headers/include/thrust/system/omp/detail/iter_swap.h +30 -0
  1658. cuda/cccl/headers/include/thrust/system/omp/detail/logical.h +30 -0
  1659. cuda/cccl/headers/include/thrust/system/omp/detail/malloc_and_free.h +30 -0
  1660. cuda/cccl/headers/include/thrust/system/omp/detail/memory.inl +93 -0
  1661. cuda/cccl/headers/include/thrust/system/omp/detail/merge.h +30 -0
  1662. cuda/cccl/headers/include/thrust/system/omp/detail/mismatch.h +30 -0
  1663. cuda/cccl/headers/include/thrust/system/omp/detail/par.h +62 -0
  1664. cuda/cccl/headers/include/thrust/system/omp/detail/partition.h +88 -0
  1665. cuda/cccl/headers/include/thrust/system/omp/detail/partition.inl +102 -0
  1666. cuda/cccl/headers/include/thrust/system/omp/detail/per_device_resource.h +29 -0
  1667. cuda/cccl/headers/include/thrust/system/omp/detail/pragma_omp.h +54 -0
  1668. cuda/cccl/headers/include/thrust/system/omp/detail/reduce.h +54 -0
  1669. cuda/cccl/headers/include/thrust/system/omp/detail/reduce.inl +78 -0
  1670. cuda/cccl/headers/include/thrust/system/omp/detail/reduce_by_key.h +64 -0
  1671. cuda/cccl/headers/include/thrust/system/omp/detail/reduce_by_key.inl +65 -0
  1672. cuda/cccl/headers/include/thrust/system/omp/detail/reduce_intervals.h +59 -0
  1673. cuda/cccl/headers/include/thrust/system/omp/detail/reduce_intervals.inl +103 -0
  1674. cuda/cccl/headers/include/thrust/system/omp/detail/remove.h +72 -0
  1675. cuda/cccl/headers/include/thrust/system/omp/detail/remove.inl +87 -0
  1676. cuda/cccl/headers/include/thrust/system/omp/detail/replace.h +30 -0
  1677. cuda/cccl/headers/include/thrust/system/omp/detail/reverse.h +30 -0
  1678. cuda/cccl/headers/include/thrust/system/omp/detail/scan.h +30 -0
  1679. cuda/cccl/headers/include/thrust/system/omp/detail/scan_by_key.h +30 -0
  1680. cuda/cccl/headers/include/thrust/system/omp/detail/scatter.h +30 -0
  1681. cuda/cccl/headers/include/thrust/system/omp/detail/sequence.h +30 -0
  1682. cuda/cccl/headers/include/thrust/system/omp/detail/set_operations.h +30 -0
  1683. cuda/cccl/headers/include/thrust/system/omp/detail/sort.h +60 -0
  1684. cuda/cccl/headers/include/thrust/system/omp/detail/sort.inl +259 -0
  1685. cuda/cccl/headers/include/thrust/system/omp/detail/swap_ranges.h +30 -0
  1686. cuda/cccl/headers/include/thrust/system/omp/detail/tabulate.h +30 -0
  1687. cuda/cccl/headers/include/thrust/system/omp/detail/temporary_buffer.h +29 -0
  1688. cuda/cccl/headers/include/thrust/system/omp/detail/transform.h +30 -0
  1689. cuda/cccl/headers/include/thrust/system/omp/detail/transform_reduce.h +30 -0
  1690. cuda/cccl/headers/include/thrust/system/omp/detail/transform_scan.h +30 -0
  1691. cuda/cccl/headers/include/thrust/system/omp/detail/uninitialized_copy.h +30 -0
  1692. cuda/cccl/headers/include/thrust/system/omp/detail/uninitialized_fill.h +30 -0
  1693. cuda/cccl/headers/include/thrust/system/omp/detail/unique.h +60 -0
  1694. cuda/cccl/headers/include/thrust/system/omp/detail/unique.inl +71 -0
  1695. cuda/cccl/headers/include/thrust/system/omp/detail/unique_by_key.h +67 -0
  1696. cuda/cccl/headers/include/thrust/system/omp/detail/unique_by_key.inl +75 -0
  1697. cuda/cccl/headers/include/thrust/system/omp/execution_policy.h +160 -0
  1698. cuda/cccl/headers/include/thrust/system/omp/memory.h +111 -0
  1699. cuda/cccl/headers/include/thrust/system/omp/memory_resource.h +75 -0
  1700. cuda/cccl/headers/include/thrust/system/omp/pointer.h +120 -0
  1701. cuda/cccl/headers/include/thrust/system/omp/vector.h +99 -0
  1702. cuda/cccl/headers/include/thrust/system/system_error.h +184 -0
  1703. cuda/cccl/headers/include/thrust/system/tbb/detail/adjacent_difference.h +54 -0
  1704. cuda/cccl/headers/include/thrust/system/tbb/detail/assign_value.h +30 -0
  1705. cuda/cccl/headers/include/thrust/system/tbb/detail/binary_search.h +30 -0
  1706. cuda/cccl/headers/include/thrust/system/tbb/detail/copy.h +50 -0
  1707. cuda/cccl/headers/include/thrust/system/tbb/detail/copy.inl +73 -0
  1708. cuda/cccl/headers/include/thrust/system/tbb/detail/copy_if.h +47 -0
  1709. cuda/cccl/headers/include/thrust/system/tbb/detail/copy_if.inl +136 -0
  1710. cuda/cccl/headers/include/thrust/system/tbb/detail/count.h +30 -0
  1711. cuda/cccl/headers/include/thrust/system/tbb/detail/equal.h +30 -0
  1712. cuda/cccl/headers/include/thrust/system/tbb/detail/execution_policy.h +92 -0
  1713. cuda/cccl/headers/include/thrust/system/tbb/detail/extrema.h +66 -0
  1714. cuda/cccl/headers/include/thrust/system/tbb/detail/fill.h +30 -0
  1715. cuda/cccl/headers/include/thrust/system/tbb/detail/find.h +49 -0
  1716. cuda/cccl/headers/include/thrust/system/tbb/detail/for_each.h +51 -0
  1717. cuda/cccl/headers/include/thrust/system/tbb/detail/for_each.inl +91 -0
  1718. cuda/cccl/headers/include/thrust/system/tbb/detail/gather.h +30 -0
  1719. cuda/cccl/headers/include/thrust/system/tbb/detail/generate.h +30 -0
  1720. cuda/cccl/headers/include/thrust/system/tbb/detail/get_value.h +30 -0
  1721. cuda/cccl/headers/include/thrust/system/tbb/detail/inner_product.h +30 -0
  1722. cuda/cccl/headers/include/thrust/system/tbb/detail/iter_swap.h +30 -0
  1723. cuda/cccl/headers/include/thrust/system/tbb/detail/logical.h +30 -0
  1724. cuda/cccl/headers/include/thrust/system/tbb/detail/malloc_and_free.h +30 -0
  1725. cuda/cccl/headers/include/thrust/system/tbb/detail/memory.inl +94 -0
  1726. cuda/cccl/headers/include/thrust/system/tbb/detail/merge.h +77 -0
  1727. cuda/cccl/headers/include/thrust/system/tbb/detail/merge.inl +327 -0
  1728. cuda/cccl/headers/include/thrust/system/tbb/detail/mismatch.h +30 -0
  1729. cuda/cccl/headers/include/thrust/system/tbb/detail/par.h +62 -0
  1730. cuda/cccl/headers/include/thrust/system/tbb/detail/partition.h +84 -0
  1731. cuda/cccl/headers/include/thrust/system/tbb/detail/partition.inl +98 -0
  1732. cuda/cccl/headers/include/thrust/system/tbb/detail/per_device_resource.h +29 -0
  1733. cuda/cccl/headers/include/thrust/system/tbb/detail/reduce.h +54 -0
  1734. cuda/cccl/headers/include/thrust/system/tbb/detail/reduce.inl +137 -0
  1735. cuda/cccl/headers/include/thrust/system/tbb/detail/reduce_by_key.h +61 -0
  1736. cuda/cccl/headers/include/thrust/system/tbb/detail/reduce_by_key.inl +400 -0
  1737. cuda/cccl/headers/include/thrust/system/tbb/detail/reduce_intervals.h +140 -0
  1738. cuda/cccl/headers/include/thrust/system/tbb/detail/remove.h +76 -0
  1739. cuda/cccl/headers/include/thrust/system/tbb/detail/remove.inl +87 -0
  1740. cuda/cccl/headers/include/thrust/system/tbb/detail/replace.h +30 -0
  1741. cuda/cccl/headers/include/thrust/system/tbb/detail/reverse.h +30 -0
  1742. cuda/cccl/headers/include/thrust/system/tbb/detail/scan.h +59 -0
  1743. cuda/cccl/headers/include/thrust/system/tbb/detail/scan.inl +312 -0
  1744. cuda/cccl/headers/include/thrust/system/tbb/detail/scan_by_key.h +30 -0
  1745. cuda/cccl/headers/include/thrust/system/tbb/detail/scatter.h +30 -0
  1746. cuda/cccl/headers/include/thrust/system/tbb/detail/sequence.h +30 -0
  1747. cuda/cccl/headers/include/thrust/system/tbb/detail/set_operations.h +30 -0
  1748. cuda/cccl/headers/include/thrust/system/tbb/detail/sort.h +60 -0
  1749. cuda/cccl/headers/include/thrust/system/tbb/detail/sort.inl +295 -0
  1750. cuda/cccl/headers/include/thrust/system/tbb/detail/swap_ranges.h +30 -0
  1751. cuda/cccl/headers/include/thrust/system/tbb/detail/tabulate.h +30 -0
  1752. cuda/cccl/headers/include/thrust/system/tbb/detail/temporary_buffer.h +29 -0
  1753. cuda/cccl/headers/include/thrust/system/tbb/detail/transform.h +30 -0
  1754. cuda/cccl/headers/include/thrust/system/tbb/detail/transform_reduce.h +30 -0
  1755. cuda/cccl/headers/include/thrust/system/tbb/detail/transform_scan.h +30 -0
  1756. cuda/cccl/headers/include/thrust/system/tbb/detail/uninitialized_copy.h +30 -0
  1757. cuda/cccl/headers/include/thrust/system/tbb/detail/uninitialized_fill.h +30 -0
  1758. cuda/cccl/headers/include/thrust/system/tbb/detail/unique.h +60 -0
  1759. cuda/cccl/headers/include/thrust/system/tbb/detail/unique.inl +71 -0
  1760. cuda/cccl/headers/include/thrust/system/tbb/detail/unique_by_key.h +67 -0
  1761. cuda/cccl/headers/include/thrust/system/tbb/detail/unique_by_key.inl +75 -0
  1762. cuda/cccl/headers/include/thrust/system/tbb/execution_policy.h +160 -0
  1763. cuda/cccl/headers/include/thrust/system/tbb/memory.h +111 -0
  1764. cuda/cccl/headers/include/thrust/system/tbb/memory_resource.h +75 -0
  1765. cuda/cccl/headers/include/thrust/system/tbb/pointer.h +120 -0
  1766. cuda/cccl/headers/include/thrust/system/tbb/vector.h +99 -0
  1767. cuda/cccl/headers/include/thrust/system_error.h +57 -0
  1768. cuda/cccl/headers/include/thrust/tabulate.h +125 -0
  1769. cuda/cccl/headers/include/thrust/transform.h +903 -0
  1770. cuda/cccl/headers/include/thrust/transform_reduce.h +190 -0
  1771. cuda/cccl/headers/include/thrust/transform_scan.h +442 -0
  1772. cuda/cccl/headers/include/thrust/tuple.h +142 -0
  1773. cuda/cccl/headers/include/thrust/type_traits/integer_sequence.h +261 -0
  1774. cuda/cccl/headers/include/thrust/type_traits/is_contiguous_iterator.h +182 -0
  1775. cuda/cccl/headers/include/thrust/type_traits/is_execution_policy.h +65 -0
  1776. cuda/cccl/headers/include/thrust/type_traits/is_operator_less_or_greater_function_object.h +184 -0
  1777. cuda/cccl/headers/include/thrust/type_traits/is_operator_plus_function_object.h +116 -0
  1778. cuda/cccl/headers/include/thrust/type_traits/is_trivially_relocatable.h +306 -0
  1779. cuda/cccl/headers/include/thrust/type_traits/logical_metafunctions.h +42 -0
  1780. cuda/cccl/headers/include/thrust/type_traits/unwrap_contiguous_iterator.h +93 -0
  1781. cuda/cccl/headers/include/thrust/uninitialized_copy.h +300 -0
  1782. cuda/cccl/headers/include/thrust/uninitialized_fill.h +268 -0
  1783. cuda/cccl/headers/include/thrust/unique.h +1090 -0
  1784. cuda/cccl/headers/include/thrust/universal_allocator.h +90 -0
  1785. cuda/cccl/headers/include/thrust/universal_ptr.h +34 -0
  1786. cuda/cccl/headers/include/thrust/universal_vector.h +71 -0
  1787. cuda/cccl/headers/include/thrust/version.h +93 -0
  1788. cuda/cccl/headers/include/thrust/zip_function.h +176 -0
  1789. cuda/cccl/headers/include_paths.py +72 -0
  1790. cuda/cccl/parallel/__init__.py +3 -0
  1791. cuda/cccl/parallel/experimental/__init__.py +3 -0
  1792. cuda/cccl/parallel/experimental/_bindings.py +24 -0
  1793. cuda/cccl/parallel/experimental/_bindings.pyi +388 -0
  1794. cuda/cccl/parallel/experimental/_bindings_impl.cpython-313-x86_64-linux-gnu.so +0 -0
  1795. cuda/cccl/parallel/experimental/_bindings_impl.pyx +2158 -0
  1796. cuda/cccl/parallel/experimental/_caching.py +71 -0
  1797. cuda/cccl/parallel/experimental/_cccl_interop.py +371 -0
  1798. cuda/cccl/parallel/experimental/_utils/__init__.py +0 -0
  1799. cuda/cccl/parallel/experimental/_utils/protocols.py +132 -0
  1800. cuda/cccl/parallel/experimental/algorithms/__init__.py +28 -0
  1801. cuda/cccl/parallel/experimental/algorithms/_merge_sort.py +172 -0
  1802. cuda/cccl/parallel/experimental/algorithms/_radix_sort.py +244 -0
  1803. cuda/cccl/parallel/experimental/algorithms/_reduce.py +136 -0
  1804. cuda/cccl/parallel/experimental/algorithms/_scan.py +179 -0
  1805. cuda/cccl/parallel/experimental/algorithms/_segmented_reduce.py +183 -0
  1806. cuda/cccl/parallel/experimental/algorithms/_transform.py +213 -0
  1807. cuda/cccl/parallel/experimental/algorithms/_unique_by_key.py +179 -0
  1808. cuda/cccl/parallel/experimental/cccl/.gitkeep +0 -0
  1809. cuda/cccl/parallel/experimental/cccl/libcccl.c.parallel.so +0 -0
  1810. cuda/cccl/parallel/experimental/iterators/__init__.py +157 -0
  1811. cuda/cccl/parallel/experimental/iterators/_iterators.py +650 -0
  1812. cuda/cccl/parallel/experimental/numba_utils.py +6 -0
  1813. cuda/cccl/parallel/experimental/struct.py +150 -0
  1814. cuda/cccl/parallel/experimental/typing.py +27 -0
  1815. cuda/cccl/py.typed +0 -0
  1816. cuda_cccl-0.1.3.1.0.dev1486.dist-info/METADATA +29 -0
  1817. cuda_cccl-0.1.3.1.0.dev1486.dist-info/RECORD +1819 -0
  1818. cuda_cccl-0.1.3.1.0.dev1486.dist-info/WHEEL +6 -0
  1819. cuda_cccl-0.1.3.1.0.dev1486.dist-info/licenses/LICENSE +1 -0
@@ -0,0 +1,3689 @@
1
+ // -*- C++ -*-
2
+ //===---------------------------- chrono ----------------------------------===//
3
+ //
4
+ // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5
+ // See https://llvm.org/LICENSE.txt for license information.
6
+ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7
+ //
8
+ //===----------------------------------------------------------------------===//
9
+
10
+ #ifndef _LIBCUDACXX_CHRONO
11
+ #define _LIBCUDACXX_CHRONO
12
+
13
+ /*
14
+ chrono synopsis
15
+
16
+ namespace std
17
+ {
18
+ namespace chrono
19
+ {
20
+
21
+ template <class ToDuration, class Rep, class Period>
22
+ constexpr
23
+ ToDuration
24
+ duration_cast(const duration<Rep, Period>& fd);
25
+
26
+ template <class Rep> struct treat_as_floating_point : is_floating_point<Rep> {};
27
+
28
+ template <class Rep> inline constexpr bool treat_as_floating_point_v
29
+ = treat_as_floating_point<Rep>::value; // C++17
30
+
31
+ template <class Rep>
32
+ struct duration_values
33
+ {
34
+ public:
35
+ static constexpr Rep zero(); // noexcept in C++20
36
+ static constexpr Rep max(); // noexcept in C++20
37
+ static constexpr Rep min(); // noexcept in C++20
38
+ };
39
+
40
+ // duration
41
+
42
+ template <class Rep, class Period = ratio<1>>
43
+ class duration
44
+ {
45
+ static_assert(!__is_duration<Rep>::value, "A duration representation can not be a duration");
46
+ static_assert(__is_ratio<Period>::value, "Second template parameter of duration must be a std::ratio");
47
+ static_assert(Period::num > 0, "duration period must be positive");
48
+ public:
49
+ typedef Rep rep;
50
+ typedef typename _Period::type period;
51
+
52
+ constexpr duration() = default;
53
+ template <class Rep2>
54
+ constexpr explicit duration(const Rep2& r,
55
+ typename enable_if
56
+ <
57
+ is_convertible<Rep2, rep>::value &&
58
+ (treat_as_floating_point<rep>::value ||
59
+ !treat_as_floating_point<rep>::value && !treat_as_floating_point<Rep2>::value)
60
+ >::type* = 0);
61
+
62
+ // conversions
63
+ template <class Rep2, class Period2>
64
+ constexpr duration(const duration<Rep2, Period2>& d,
65
+ typename enable_if
66
+ <
67
+ treat_as_floating_point<rep>::value ||
68
+ ratio_divide<Period2, period>::type::den == 1
69
+ >::type* = 0);
70
+
71
+ // observer
72
+
73
+ constexpr rep count() const;
74
+
75
+ // arithmetic
76
+
77
+ constexpr common_type<duration>::type operator+() const;
78
+ constexpr common_type<duration>::type operator-() const;
79
+ constexpr duration& operator++(); // constexpr in C++17
80
+ constexpr duration operator++(int); // constexpr in C++17
81
+ constexpr duration& operator--(); // constexpr in C++17
82
+ constexpr duration operator--(int); // constexpr in C++17
83
+
84
+ constexpr duration& operator+=(const duration& d); // constexpr in C++17
85
+ constexpr duration& operator-=(const duration& d); // constexpr in C++17
86
+
87
+ duration& operator*=(const rep& rhs); // constexpr in C++17
88
+ duration& operator/=(const rep& rhs); // constexpr in C++17
89
+ duration& operator%=(const rep& rhs); // constexpr in C++17
90
+ duration& operator%=(const duration& rhs); // constexpr in C++17
91
+
92
+ // special values
93
+
94
+ static constexpr duration zero(); // noexcept in C++20
95
+ static constexpr duration min(); // noexcept in C++20
96
+ static constexpr duration max(); // noexcept in C++20
97
+ };
98
+
99
+ typedef duration<long long, nano> nanoseconds;
100
+ typedef duration<long long, micro> microseconds;
101
+ typedef duration<long long, milli> milliseconds;
102
+ typedef duration<long long > seconds;
103
+ typedef duration< long, ratio< 60> > minutes;
104
+ typedef duration< long, ratio<3600> > hours;
105
+
106
+ template <class Clock, class Duration = typename Clock::duration>
107
+ class time_point
108
+ {
109
+ public:
110
+ typedef Clock clock;
111
+ typedef Duration duration;
112
+ typedef typename duration::rep rep;
113
+ typedef typename duration::period period;
114
+ private:
115
+ duration d_; // exposition only
116
+
117
+ public:
118
+ time_point(); // has value "epoch" // constexpr in C++14
119
+ explicit time_point(const duration& d); // same as time_point() + d // constexpr in C++14
120
+
121
+ // conversions
122
+ template <class Duration2>
123
+ time_point(const time_point<clock, Duration2>& t); // constexpr in C++14
124
+
125
+ // observer
126
+
127
+ duration time_since_epoch() const; // constexpr in C++14
128
+
129
+ // arithmetic
130
+
131
+ time_point& operator+=(const duration& d); // constexpr in C++17
132
+ time_point& operator-=(const duration& d); // constexpr in C++17
133
+
134
+ // special values
135
+
136
+ static constexpr time_point min(); // noexcept in C++20
137
+ static constexpr time_point max(); // noexcept in C++20
138
+ };
139
+
140
+ } // chrono
141
+
142
+ // common_type traits
143
+ template <class Rep1, class Period1, class Rep2, class Period2>
144
+ struct common_type<chrono::duration<Rep1, Period1>, chrono::duration<Rep2, Period2>>;
145
+
146
+ template <class Clock, class Duration1, class Duration2>
147
+ struct common_type<chrono::time_point<Clock, Duration1>, chrono::time_point<Clock, Duration2>>;
148
+
149
+ namespace chrono {
150
+
151
+
152
+ template<class T> struct is_clock; // C++20
153
+ template<class T> inline constexpr bool is_clock_v = is_clock<T>::value; // C++20
154
+
155
+
156
+ // duration arithmetic
157
+ template <class Rep1, class Period1, class Rep2, class Period2>
158
+ constexpr
159
+ typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2>>::type
160
+ operator+(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
161
+ template <class Rep1, class Period1, class Rep2, class Period2>
162
+ constexpr
163
+ typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2>>::type
164
+ operator-(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
165
+ template <class Rep1, class Period, class Rep2>
166
+ constexpr
167
+ duration<typename common_type<Rep1, Rep2>::type, Period>
168
+ operator*(const duration<Rep1, Period>& d, const Rep2& s);
169
+ template <class Rep1, class Period, class Rep2>
170
+ constexpr
171
+ duration<typename common_type<Rep1, Rep2>::type, Period>
172
+ operator*(const Rep1& s, const duration<Rep2, Period>& d);
173
+ template <class Rep1, class Period, class Rep2>
174
+ constexpr
175
+ duration<typename common_type<Rep1, Rep2>::type, Period>
176
+ operator/(const duration<Rep1, Period>& d, const Rep2& s);
177
+ template <class Rep1, class Period1, class Rep2, class Period2>
178
+ constexpr
179
+ typename common_type<Rep1, Rep2>::type
180
+ operator/(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
181
+
182
+ // duration comparisons
183
+ template <class Rep1, class Period1, class Rep2, class Period2>
184
+ constexpr
185
+ bool operator==(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
186
+ template <class Rep1, class Period1, class Rep2, class Period2>
187
+ constexpr
188
+ bool operator!=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
189
+ template <class Rep1, class Period1, class Rep2, class Period2>
190
+ constexpr
191
+ bool operator< (const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
192
+ template <class Rep1, class Period1, class Rep2, class Period2>
193
+ constexpr
194
+ bool operator<=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
195
+ template <class Rep1, class Period1, class Rep2, class Period2>
196
+ constexpr
197
+ bool operator> (const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
198
+ template <class Rep1, class Period1, class Rep2, class Period2>
199
+ constexpr
200
+ bool operator>=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
201
+
202
+ // duration_cast
203
+ template <class ToDuration, class Rep, class Period>
204
+ ToDuration duration_cast(const duration<Rep, Period>& d);
205
+
206
+ template <class ToDuration, class Rep, class Period>
207
+ constexpr ToDuration floor(const duration<Rep, Period>& d); // C++17
208
+ template <class ToDuration, class Rep, class Period>
209
+ constexpr ToDuration ceil(const duration<Rep, Period>& d); // C++17
210
+ template <class ToDuration, class Rep, class Period>
211
+ constexpr ToDuration round(const duration<Rep, Period>& d); // C++17
212
+
213
+ // duration I/O is elsewhere
214
+
215
+ // time_point arithmetic (all constexpr in C++14)
216
+ template <class Clock, class Duration1, class Rep2, class Period2>
217
+ time_point<Clock, typename common_type<Duration1, duration<Rep2, Period2>>::type>
218
+ operator+(const time_point<Clock, Duration1>& lhs, const duration<Rep2, Period2>& rhs);
219
+ template <class Rep1, class Period1, class Clock, class Duration2>
220
+ time_point<Clock, typename common_type<duration<Rep1, Period1>, Duration2>::type>
221
+ operator+(const duration<Rep1, Period1>& lhs, const time_point<Clock, Duration2>& rhs);
222
+ template <class Clock, class Duration1, class Rep2, class Period2>
223
+ time_point<Clock, typename common_type<Duration1, duration<Rep2, Period2>>::type>
224
+ operator-(const time_point<Clock, Duration1>& lhs, const duration<Rep2, Period2>& rhs);
225
+ template <class Clock, class Duration1, class Duration2>
226
+ typename common_type<Duration1, Duration2>::type
227
+ operator-(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs);
228
+
229
+ // time_point comparisons (all constexpr in C++14)
230
+ template <class Clock, class Duration1, class Duration2>
231
+ bool operator==(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs);
232
+ template <class Clock, class Duration1, class Duration2>
233
+ bool operator!=(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs);
234
+ template <class Clock, class Duration1, class Duration2>
235
+ bool operator< (const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs);
236
+ template <class Clock, class Duration1, class Duration2>
237
+ bool operator<=(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs);
238
+ template <class Clock, class Duration1, class Duration2>
239
+ bool operator> (const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs);
240
+ template <class Clock, class Duration1, class Duration2>
241
+ bool operator>=(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs);
242
+
243
+ // time_point_cast (constexpr in C++14)
244
+
245
+ template <class ToDuration, class Clock, class Duration>
246
+ time_point<Clock, ToDuration> time_point_cast(const time_point<Clock, Duration>& t);
247
+
248
+ template <class ToDuration, class Clock, class Duration>
249
+ constexpr time_point<Clock, ToDuration>
250
+ floor(const time_point<Clock, Duration>& tp); // C++17
251
+
252
+ template <class ToDuration, class Clock, class Duration>
253
+ constexpr time_point<Clock, ToDuration>
254
+ ceil(const time_point<Clock, Duration>& tp); // C++17
255
+
256
+ template <class ToDuration, class Clock, class Duration>
257
+ constexpr time_point<Clock, ToDuration>
258
+ round(const time_point<Clock, Duration>& tp); // C++17
259
+
260
+ template <class Rep, class Period>
261
+ constexpr duration<Rep, Period> abs(duration<Rep, Period> d); // C++17
262
+
263
+ // Clocks
264
+
265
+ class system_clock
266
+ {
267
+ public:
268
+ typedef microseconds duration;
269
+ typedef duration::rep rep;
270
+ typedef duration::period period;
271
+ typedef chrono::time_point<system_clock> time_point;
272
+ static const bool is_steady = false; // constexpr in C++14
273
+
274
+ static time_point now() noexcept;
275
+ static time_t to_time_t (const time_point& __t) noexcept;
276
+ static time_point from_time_t(time_t __t) noexcept;
277
+ };
278
+
279
+ template <class Duration>
280
+ using sys_time = time_point<system_clock, Duration>; // C++20
281
+ using sys_seconds = sys_time<seconds>; // C++20
282
+ using sys_days = sys_time<days>; // C++20
283
+
284
+ class utc_clock; // C++20
285
+
286
+ template <class Duration>
287
+ using utc_time = time_point<utc_clock, Duration>; // C++20
288
+ using utc_seconds = utc_time<seconds>; // C++20
289
+
290
+ class tai_clock; // C++20
291
+
292
+ template <class Duration>
293
+ using tai_time = time_point<tai_clock, Duration>; // C++20
294
+ using tai_seconds = tai_time<seconds>; // C++20
295
+
296
+ class file_clock; // C++20
297
+
298
+ template<class Duration>
299
+ using file_time = time_point<file_clock, Duration>; // C++20
300
+
301
+ class steady_clock
302
+ {
303
+ public:
304
+ typedef nanoseconds duration;
305
+ typedef duration::rep rep;
306
+ typedef duration::period period;
307
+ typedef chrono::time_point<steady_clock, duration> time_point;
308
+ static const bool is_steady = true; // constexpr in C++14
309
+
310
+ static time_point now() noexcept;
311
+ };
312
+
313
+ typedef steady_clock high_resolution_clock;
314
+
315
+ // 25.7.8, local time // C++20
316
+ struct local_t {};
317
+ template<class Duration>
318
+ using local_time = time_point<local_t, Duration>;
319
+ using local_seconds = local_time<seconds>;
320
+ using local_days = local_time<days>;
321
+
322
+ // 25.7.9, time_point conversions template<class DestClock, class SourceClock> // C++20
323
+ struct clock_time_conversion;
324
+
325
+ template<class DestClock, class SourceClock, class Duration>
326
+ auto clock_cast(const time_point<SourceClock, Duration>& t);
327
+
328
+ // 25.8.2, class last_spec // C++20
329
+ struct last_spec;
330
+
331
+ // 25.8.3, class day // C++20
332
+
333
+ class day;
334
+ constexpr bool operator==(const day& x, const day& y) noexcept;
335
+ constexpr bool operator!=(const day& x, const day& y) noexcept;
336
+ constexpr bool operator< (const day& x, const day& y) noexcept;
337
+ constexpr bool operator> (const day& x, const day& y) noexcept;
338
+ constexpr bool operator<=(const day& x, const day& y) noexcept;
339
+ constexpr bool operator>=(const day& x, const day& y) noexcept;
340
+ constexpr day operator+(const day& x, const days& y) noexcept;
341
+ constexpr day operator+(const days& x, const day& y) noexcept;
342
+ constexpr day operator-(const day& x, const days& y) noexcept;
343
+ constexpr days operator-(const day& x, const day& y) noexcept;
344
+
345
+ // 25.8.4, class month // C++20
346
+ class month;
347
+ constexpr bool operator==(const month& x, const month& y) noexcept;
348
+ constexpr bool operator!=(const month& x, const month& y) noexcept;
349
+ constexpr bool operator< (const month& x, const month& y) noexcept;
350
+ constexpr bool operator> (const month& x, const month& y) noexcept;
351
+ constexpr bool operator<=(const month& x, const month& y) noexcept;
352
+ constexpr bool operator>=(const month& x, const month& y) noexcept;
353
+ constexpr month operator+(const month& x, const months& y) noexcept;
354
+ constexpr month operator+(const months& x, const month& y) noexcept;
355
+ constexpr month operator-(const month& x, const months& y) noexcept;
356
+ constexpr months operator-(const month& x, const month& y) noexcept;
357
+
358
+ // 25.8.5, class year // C++20
359
+ class year;
360
+ constexpr bool operator==(const year& x, const year& y) noexcept;
361
+ constexpr bool operator!=(const year& x, const year& y) noexcept;
362
+ constexpr bool operator< (const year& x, const year& y) noexcept;
363
+ constexpr bool operator> (const year& x, const year& y) noexcept;
364
+ constexpr bool operator<=(const year& x, const year& y) noexcept;
365
+ constexpr bool operator>=(const year& x, const year& y) noexcept;
366
+ constexpr year operator+(const year& x, const years& y) noexcept;
367
+ constexpr year operator+(const years& x, const year& y) noexcept;
368
+ constexpr year operator-(const year& x, const years& y) noexcept;
369
+ constexpr years operator-(const year& x, const year& y) noexcept;
370
+
371
+ // 25.8.6, class weekday // C++20
372
+ class weekday;
373
+
374
+ constexpr bool operator==(const weekday& x, const weekday& y) noexcept;
375
+ constexpr bool operator!=(const weekday& x, const weekday& y) noexcept;
376
+ constexpr weekday operator+(const weekday& x, const days& y) noexcept;
377
+ constexpr weekday operator+(const days& x, const weekday& y) noexcept;
378
+ constexpr weekday operator-(const weekday& x, const days& y) noexcept;
379
+ constexpr days operator-(const weekday& x, const weekday& y) noexcept;
380
+
381
+ // 25.8.7, class weekday_indexed // C++20
382
+
383
+ class weekday_indexed;
384
+ constexpr bool operator==(const weekday_indexed& x, const weekday_indexed& y) noexcept;
385
+ constexpr bool operator!=(const weekday_indexed& x, const weekday_indexed& y) noexcept;
386
+
387
+ // 25.8.8, class weekday_last // C++20
388
+ class weekday_last;
389
+
390
+ constexpr bool operator==(const weekday_last& x, const weekday_last& y) noexcept;
391
+ constexpr bool operator!=(const weekday_last& x, const weekday_last& y) noexcept;
392
+
393
+ // 25.8.9, class month_day // C++20
394
+ class month_day;
395
+
396
+ constexpr bool operator==(const month_day& x, const month_day& y) noexcept;
397
+ constexpr bool operator!=(const month_day& x, const month_day& y) noexcept;
398
+ constexpr bool operator< (const month_day& x, const month_day& y) noexcept;
399
+ constexpr bool operator> (const month_day& x, const month_day& y) noexcept;
400
+ constexpr bool operator<=(const month_day& x, const month_day& y) noexcept;
401
+ constexpr bool operator>=(const month_day& x, const month_day& y) noexcept;
402
+
403
+
404
+ // 25.8.10, class month_day_last // C++20
405
+ class month_day_last;
406
+
407
+ constexpr bool operator==(const month_day_last& x, const month_day_last& y) noexcept;
408
+ constexpr bool operator!=(const month_day_last& x, const month_day_last& y) noexcept;
409
+ constexpr bool operator< (const month_day_last& x, const month_day_last& y) noexcept;
410
+ constexpr bool operator> (const month_day_last& x, const month_day_last& y) noexcept;
411
+ constexpr bool operator<=(const month_day_last& x, const month_day_last& y) noexcept;
412
+ constexpr bool operator>=(const month_day_last& x, const month_day_last& y) noexcept;
413
+
414
+ // 25.8.11, class month_weekday // C++20
415
+ class month_weekday;
416
+
417
+ constexpr bool operator==(const month_weekday& x, const month_weekday& y) noexcept;
418
+ constexpr bool operator!=(const month_weekday& x, const month_weekday& y) noexcept;
419
+
420
+ // 25.8.12, class month_weekday_last // C++20
421
+ class month_weekday_last;
422
+
423
+ constexpr bool operator==(const month_weekday_last& x, const month_weekday_last& y) noexcept;
424
+ constexpr bool operator!=(const month_weekday_last& x, const month_weekday_last& y) noexcept;
425
+
426
+
427
+ // 25.8.13, class year_month // C++20
428
+ class year_month;
429
+
430
+ constexpr bool operator==(const year_month& x, const year_month& y) noexcept;
431
+ constexpr bool operator!=(const year_month& x, const year_month& y) noexcept;
432
+ constexpr bool operator< (const year_month& x, const year_month& y) noexcept;
433
+ constexpr bool operator> (const year_month& x, const year_month& y) noexcept;
434
+ constexpr bool operator<=(const year_month& x, const year_month& y) noexcept;
435
+ constexpr bool operator>=(const year_month& x, const year_month& y) noexcept;
436
+
437
+ constexpr year_month operator+(const year_month& ym, const months& dm) noexcept;
438
+ constexpr year_month operator+(const months& dm, const year_month& ym) noexcept;
439
+ constexpr year_month operator-(const year_month& ym, const months& dm) noexcept;
440
+ constexpr months operator-(const year_month& x, const year_month& y) noexcept;
441
+ constexpr year_month operator+(const year_month& ym, const years& dy) noexcept;
442
+ constexpr year_month operator+(const years& dy, const year_month& ym) noexcept;
443
+ constexpr year_month operator-(const year_month& ym, const years& dy) noexcept;
444
+
445
+ // 25.8.14, class year_month_day class // C++20
446
+ year_month_day;
447
+
448
+ constexpr bool operator==(const year_month_day& x, const year_month_day& y) noexcept;
449
+ constexpr bool operator!=(const year_month_day& x, const year_month_day& y) noexcept;
450
+ constexpr bool operator< (const year_month_day& x, const year_month_day& y) noexcept;
451
+ constexpr bool operator> (const year_month_day& x, const year_month_day& y) noexcept;
452
+ constexpr bool operator<=(const year_month_day& x, const year_month_day& y) noexcept;
453
+ constexpr bool operator>=(const year_month_day& x, const year_month_day& y) noexcept;
454
+
455
+ constexpr year_month_day operator+(const year_month_day& ymd, const months& dm) noexcept;
456
+ constexpr year_month_day operator+(const months& dm, const year_month_day& ymd) noexcept;
457
+ constexpr year_month_day operator+(const year_month_day& ymd, const years& dy) noexcept;
458
+ constexpr year_month_day operator+(const years& dy, const year_month_day& ymd) noexcept;
459
+ constexpr year_month_day operator-(const year_month_day& ymd, const months& dm) noexcept;
460
+ constexpr year_month_day operator-(const year_month_day& ymd, const years& dy) noexcept;
461
+
462
+
463
+ // 25.8.15, class year_month_day_last // C++20
464
+ class year_month_day_last;
465
+
466
+ constexpr bool operator==(const year_month_day_last& x,
467
+ const year_month_day_last& y) noexcept;
468
+ constexpr bool operator!=(const year_month_day_last& x,
469
+ const year_month_day_last& y) noexcept;
470
+ constexpr bool operator< (const year_month_day_last& x,
471
+ const year_month_day_last& y) noexcept;
472
+ constexpr bool operator> (const year_month_day_last& x,
473
+ const year_month_day_last& y) noexcept;
474
+ constexpr bool operator<=(const year_month_day_last& x,
475
+ const year_month_day_last& y) noexcept;
476
+ constexpr bool operator>=(const year_month_day_last& x,
477
+ const year_month_day_last& y) noexcept;
478
+
479
+ constexpr year_month_day_last
480
+ operator+(const year_month_day_last& ymdl, const months& dm) noexcept;
481
+ constexpr year_month_day_last
482
+ operator+(const months& dm, const year_month_day_last& ymdl) noexcept;
483
+ constexpr year_month_day_last
484
+ operator+(const year_month_day_last& ymdl, const years& dy) noexcept;
485
+ constexpr year_month_day_last
486
+ operator+(const years& dy, const year_month_day_last& ymdl) noexcept;
487
+ constexpr year_month_day_last
488
+ operator-(const year_month_day_last& ymdl, const months& dm) noexcept;
489
+ constexpr year_month_day_last
490
+ operator-(const year_month_day_last& ymdl, const years& dy) noexcept;
491
+
492
+ // 25.8.16, class year_month_weekday // C++20
493
+ class year_month_weekday;
494
+
495
+ constexpr bool operator==(const year_month_weekday& x,
496
+ const year_month_weekday& y) noexcept;
497
+ constexpr bool operator!=(const year_month_weekday& x,
498
+ const year_month_weekday& y) noexcept;
499
+
500
+ constexpr year_month_weekday
501
+ operator+(const year_month_weekday& ymwd, const months& dm) noexcept;
502
+ constexpr year_month_weekday
503
+ operator+(const months& dm, const year_month_weekday& ymwd) noexcept;
504
+ constexpr year_month_weekday
505
+ operator+(const year_month_weekday& ymwd, const years& dy) noexcept;
506
+ constexpr year_month_weekday
507
+ operator+(const years& dy, const year_month_weekday& ymwd) noexcept;
508
+ constexpr year_month_weekday
509
+ operator-(const year_month_weekday& ymwd, const months& dm) noexcept;
510
+ constexpr year_month_weekday
511
+ operator-(const year_month_weekday& ymwd, const years& dy) noexcept;
512
+
513
+ // 25.8.17, class year_month_weekday_last // C++20
514
+ class year_month_weekday_last;
515
+
516
+ constexpr bool operator==(const year_month_weekday_last& x,
517
+ const year_month_weekday_last& y) noexcept;
518
+ constexpr bool operator!=(const year_month_weekday_last& x,
519
+ const year_month_weekday_last& y) noexcept;
520
+ constexpr year_month_weekday_last
521
+ operator+(const year_month_weekday_last& ymwdl, const months& dm) noexcept;
522
+ constexpr year_month_weekday_last
523
+ operator+(const months& dm, const year_month_weekday_last& ymwdl) noexcept;
524
+ constexpr year_month_weekday_last
525
+ operator+(const year_month_weekday_last& ymwdl, const years& dy) noexcept;
526
+ constexpr year_month_weekday_last
527
+ operator+(const years& dy, const year_month_weekday_last& ymwdl) noexcept;
528
+ constexpr year_month_weekday_last
529
+ operator-(const year_month_weekday_last& ymwdl, const months& dm) noexcept;
530
+ constexpr year_month_weekday_last
531
+ operator-(const year_month_weekday_last& ymwdl, const years& dy) noexcept;
532
+
533
+ // 25.8.18, civil calendar conventional syntax operators // C++20
534
+ constexpr year_month
535
+ operator/(const year& y, const month& m) noexcept;
536
+ constexpr year_month
537
+ operator/(const year& y, int m) noexcept;
538
+ constexpr month_day
539
+ operator/(const month& m, const day& d) noexcept;
540
+ constexpr month_day
541
+ operator/(const month& m, int d) noexcept;
542
+ constexpr month_day
543
+ operator/(int m, const day& d) noexcept;
544
+ constexpr month_day
545
+ operator/(const day& d, const month& m) noexcept;
546
+ constexpr month_day
547
+ operator/(const day& d, int m) noexcept;
548
+ constexpr month_day_last
549
+ operator/(const month& m, last_spec) noexcept;
550
+ constexpr month_day_last
551
+ operator/(int m, last_spec) noexcept;
552
+ constexpr month_day_last
553
+ operator/(last_spec, const month& m) noexcept;
554
+ constexpr month_day_last
555
+ operator/(last_spec, int m) noexcept;
556
+ constexpr month_weekday
557
+ operator/(const month& m, const weekday_indexed& wdi) noexcept;
558
+ constexpr month_weekday
559
+ operator/(int m, const weekday_indexed& wdi) noexcept;
560
+ constexpr month_weekday
561
+ operator/(const weekday_indexed& wdi, const month& m) noexcept;
562
+ constexpr month_weekday
563
+ operator/(const weekday_indexed& wdi, int m) noexcept;
564
+ constexpr month_weekday_last
565
+ operator/(const month& m, const weekday_last& wdl) noexcept;
566
+ constexpr month_weekday_last
567
+ operator/(int m, const weekday_last& wdl) noexcept;
568
+ constexpr month_weekday_last
569
+ operator/(const weekday_last& wdl, const month& m) noexcept;
570
+ constexpr month_weekday_last
571
+ operator/(const weekday_last& wdl, int m) noexcept;
572
+ constexpr year_month_day
573
+ operator/(const year_month& ym, const day& d) noexcept;
574
+ constexpr year_month_day
575
+ operator/(const year_month& ym, int d) noexcept;
576
+ constexpr year_month_day
577
+ operator/(const year& y, const month_day& md) noexcept;
578
+ constexpr year_month_day
579
+ operator/(int y, const month_day& md) noexcept;
580
+ constexpr year_month_day
581
+ operator/(const month_day& md, const year& y) noexcept;
582
+ constexpr year_month_day
583
+ operator/(const month_day& md, int y) noexcept;
584
+ constexpr year_month_day_last
585
+ operator/(const year_month& ym, last_spec) noexcept;
586
+ constexpr year_month_day_last
587
+ operator/(const year& y, const month_day_last& mdl) noexcept;
588
+ constexpr year_month_day_last
589
+ operator/(int y, const month_day_last& mdl) noexcept;
590
+ constexpr year_month_day_last
591
+ operator/(const month_day_last& mdl, const year& y) noexcept;
592
+ constexpr year_month_day_last
593
+ operator/(const month_day_last& mdl, int y) noexcept;
594
+ constexpr year_month_weekday
595
+ operator/(const year_month& ym, const weekday_indexed& wdi) noexcept;
596
+ constexpr year_month_weekday
597
+ operator/(const year& y, const month_weekday& mwd) noexcept;
598
+ constexpr year_month_weekday
599
+ operator/(int y, const month_weekday& mwd) noexcept;
600
+ constexpr year_month_weekday
601
+ operator/(const month_weekday& mwd, const year& y) noexcept;
602
+ constexpr year_month_weekday
603
+ operator/(const month_weekday& mwd, int y) noexcept;
604
+ constexpr year_month_weekday_last
605
+ operator/(const year_month& ym, const weekday_last& wdl) noexcept;
606
+ constexpr year_month_weekday_last
607
+ operator/(const year& y, const month_weekday_last& mwdl) noexcept;
608
+ constexpr year_month_weekday_last
609
+ operator/(int y, const month_weekday_last& mwdl) noexcept;
610
+ constexpr year_month_weekday_last
611
+ operator/(const month_weekday_last& mwdl, const year& y) noexcept;
612
+ constexpr year_month_weekday_last
613
+ operator/(const month_weekday_last& mwdl, int y) noexcept;
614
+
615
+ // 26.9, class template hh_mm_ss
616
+ template <class Duration>
617
+ class hh_mm_ss
618
+ {
619
+ bool is_neg; // exposition only
620
+ chrono::hours h; // exposition only
621
+ chrono::minutes m; // exposition only
622
+ chrono::seconds s; // exposition only
623
+ precision ss; // exposition only
624
+
625
+ public:
626
+ static unsigned constexpr fractional_width = see below;
627
+ using precision = see below;
628
+
629
+ constexpr hh_mm_ss() noexcept : hh_mm_ss{Duration::zero()} {}
630
+ constexpr explicit hh_mm_ss(Duration d) noexcept;
631
+
632
+ constexpr bool is_negative() const noexcept;
633
+ constexpr chrono::hours hours() const noexcept;
634
+ constexpr chrono::minutes minutes() const noexcept;
635
+ constexpr chrono::seconds seconds() const noexcept;
636
+ constexpr precision subseconds() const noexcept;
637
+
638
+ constexpr explicit operator precision() const noexcept;
639
+ constexpr precision to_duration() const noexcept;
640
+ };
641
+
642
+ template <class charT, class traits, class Duration>
643
+ basic_ostream<charT, traits>&
644
+ operator<<(basic_ostream<charT, traits>& os, hh_mm_ss<Duration> const& hms);
645
+
646
+ // 26.10, 12/24 hour functions
647
+ constexpr bool is_am(hours const& h) noexcept;
648
+ constexpr bool is_pm(hours const& h) noexcept;
649
+ constexpr hours make12(const hours& h) noexcept;
650
+ constexpr hours make24(const hours& h, bool is_pm) noexcept;
651
+
652
+
653
+ // 25.10.2, time zone database // C++20
654
+ struct tzdb;
655
+ class tzdb_list;
656
+
657
+ // 25.10.2.3, time zone database access // C++20
658
+ const tzdb& get_tzdb();
659
+ tzdb_list& get_tzdb_list();
660
+ const time_zone* locate_zone(string_view tz_name);
661
+ const time_zone* current_zone();
662
+
663
+ // 25.10.2.4, remote time zone database support // C++20
664
+ const tzdb& reload_tzdb();
665
+ string remote_version();
666
+
667
+ // 25.10.3, exception classes // C++20
668
+ class nonexistent_local_time;
669
+ class ambiguous_local_time;
670
+
671
+ // 25.10.4, information classes // C++20
672
+ struct sys_info;
673
+ struct local_info;
674
+
675
+ // 25.10.5, class time_zone // C++20
676
+ enum class choose {earliest, latest};
677
+ class time_zone;
678
+ bool operator==(const time_zone& x, const time_zone& y) noexcept;
679
+ bool operator!=(const time_zone& x, const time_zone& y) noexcept;
680
+ bool operator<(const time_zone& x, const time_zone& y) noexcept;
681
+ bool operator>(const time_zone& x, const time_zone& y) noexcept;
682
+ bool operator<=(const time_zone& x, const time_zone& y) noexcept;
683
+ bool operator>=(const time_zone& x, const time_zone& y) noexcept;
684
+
685
+ // 25.10.6, class template zoned_traits // C++20
686
+ template<class T> struct zoned_traits;
687
+
688
+ // 25.10.7, class template zoned_time // C++20
689
+ template<class Duration, class TimeZonePtr = const time_zone*> class zoned_time;
690
+ using zoned_seconds = zoned_time<seconds>;
691
+
692
+ template<class Duration1, class Duration2, class TimeZonePtr>
693
+ bool operator==(const zoned_time<Duration1, TimeZonePtr>& x,
694
+ const zoned_time<Duration2, TimeZonePtr>& y);
695
+ template<class Duration1, class Duration2, class TimeZonePtr>
696
+ bool operator!=(const zoned_time<Duration1, TimeZonePtr>& x,
697
+ const zoned_time<Duration2, TimeZonePtr>& y);
698
+
699
+ // 25.10.8, leap second support // C++20
700
+ class leap;
701
+
702
+ bool operator==(const leap& x, const leap& y);
703
+ bool operator!=(const leap& x, const leap& y);
704
+ bool operator< (const leap& x, const leap& y);
705
+ bool operator> (const leap& x, const leap& y);
706
+ bool operator<=(const leap& x, const leap& y);
707
+ bool operator>=(const leap& x, const leap& y);
708
+ template<class Duration>
709
+ bool operator==(const leap& x, const sys_time<Duration>& y);
710
+ template<class Duration>
711
+ bool operator==(const sys_time<Duration>& x, const leap& y);
712
+ template<class Duration>
713
+ bool operator!=(const leap& x, const sys_time<Duration>& y);
714
+ template<class Duration>
715
+ bool operator!=(const sys_time<Duration>& x, const leap& y);
716
+ template<class Duration>
717
+ bool operator< (const leap& x, const sys_time<Duration>& y);
718
+ template<class Duration>
719
+ bool operator< (const sys_time<Duration>& x, const leap& y);
720
+ template<class Duration>
721
+ bool operator> (const leap& x, const sys_time<Duration>& y);
722
+ template<class Duration>
723
+ bool operator> (const sys_time<Duration>& x, const leap& y);
724
+ template<class Duration>
725
+ bool operator<=(const leap& x, const sys_time<Duration>& y);
726
+ template<class Duration>
727
+ bool operator<=(const sys_time<Duration>& x, const leap& y);
728
+ template<class Duration>
729
+ bool operator>=(const leap& x, const sys_time<Duration>& y);
730
+ template<class Duration>
731
+ bool operator>=(const sys_time<Duration>& x, const leap& y);
732
+
733
+ // 25.10.9, class link // C++20
734
+ class link;
735
+ bool operator==(const link& x, const link& y);
736
+ bool operator!=(const link& x, const link& y);
737
+ bool operator< (const link& x, const link& y);
738
+ bool operator> (const link& x, const link& y);
739
+ bool operator<=(const link& x, const link& y);
740
+ bool operator>=(const link& x, const link& y);
741
+
742
+ // 25.11, formatting // C++20
743
+ template<class charT, class Streamable>
744
+ basic_string<charT>
745
+ format(const charT* fmt, const Streamable& s);
746
+
747
+ template<class charT, class Streamable>
748
+ basic_string<charT>
749
+ format(const locale& loc, const charT* fmt, const Streamable& s);
750
+
751
+ template<class charT, class traits, class Alloc, class Streamable>
752
+ basic_string<charT, traits, Alloc>
753
+ format(const basic_string<charT, traits, Alloc>& fmt, const Streamable& s);
754
+
755
+ template<class charT, class traits, class Alloc, class Streamable>
756
+ basic_string<charT, traits, Alloc>
757
+ format(const locale& loc, const basic_string<charT, traits, Alloc>& fmt,
758
+ const Streamable& s);
759
+
760
+ // 25.12, parsing // C++20
761
+ template<class charT, class traits, class Alloc, class Parsable>
762
+ unspecified
763
+ parse(const basic_string<charT, traits, Alloc>& format, Parsable& tp);
764
+
765
+ template<class charT, class traits, class Alloc, class Parsable>
766
+ unspecified
767
+ parse(const basic_string<charT, traits, Alloc>& format, Parsable& tp,
768
+ basic_string<charT, traits, Alloc>& abbrev);
769
+
770
+ template<class charT, class traits, class Alloc, class Parsable>
771
+ unspecified
772
+ parse(const basic_string<charT, traits, Alloc>& format, Parsable& tp,
773
+ minutes& offset);
774
+
775
+ template<class charT, class traits, class Alloc, class Parsable>
776
+ unspecified
777
+ parse(const basic_string<charT, traits, Alloc>& format, Parsable& tp,
778
+ basic_string<charT, traits, Alloc>& abbrev, minutes& offset);
779
+
780
+ // calendrical constants
781
+ inline constexpr last_spec last{}; // C++20
782
+ inline constexpr chrono::weekday Sunday{0}; // C++20
783
+ inline constexpr chrono::weekday Monday{1}; // C++20
784
+ inline constexpr chrono::weekday Tuesday{2}; // C++20
785
+ inline constexpr chrono::weekday Wednesday{3}; // C++20
786
+ inline constexpr chrono::weekday Thursday{4}; // C++20
787
+ inline constexpr chrono::weekday Friday{5}; // C++20
788
+ inline constexpr chrono::weekday Saturday{6}; // C++20
789
+
790
+ inline constexpr chrono::month January{1}; // C++20
791
+ inline constexpr chrono::month February{2}; // C++20
792
+ inline constexpr chrono::month March{3}; // C++20
793
+ inline constexpr chrono::month April{4}; // C++20
794
+ inline constexpr chrono::month May{5}; // C++20
795
+ inline constexpr chrono::month June{6}; // C++20
796
+ inline constexpr chrono::month July{7}; // C++20
797
+ inline constexpr chrono::month August{8}; // C++20
798
+ inline constexpr chrono::month September{9}; // C++20
799
+ inline constexpr chrono::month October{10}; // C++20
800
+ inline constexpr chrono::month November{11}; // C++20
801
+ inline constexpr chrono::month December{12}; // C++20
802
+ } // chrono
803
+
804
+ inline namespace literals {
805
+ inline namespace chrono_literals {
806
+ constexpr chrono::hours operator ""h(unsigned long long); // C++14
807
+ constexpr chrono::duration<unspecified , ratio<3600,1>> operator ""h(long double); // C++14
808
+ constexpr chrono::minutes operator ""min(unsigned long long); // C++14
809
+ constexpr chrono::duration<unspecified , ratio<60,1>> operator ""min(long double); // C++14
810
+ constexpr chrono::seconds operator ""s(unsigned long long); // C++14
811
+ constexpr chrono::duration<unspecified > operator ""s(long double); // C++14
812
+ constexpr chrono::milliseconds operator ""ms(unsigned long long); // C++14
813
+ constexpr chrono::duration<unspecified , milli> operator ""ms(long double); // C++14
814
+ constexpr chrono::microseconds operator ""us(unsigned long long); // C++14
815
+ constexpr chrono::duration<unspecified , micro> operator ""us(long double); // C++14
816
+ constexpr chrono::nanoseconds operator ""ns(unsigned long long); // C++14
817
+ constexpr chrono::duration<unspecified , nano> operator ""ns(long double); // C++14
818
+ constexpr chrono::day operator ""d(unsigned long long d) noexcept; // C++20
819
+ constexpr chrono::year operator ""y(unsigned long long y) noexcept; // C++20
820
+ } // chrono_literals
821
+ } // literals
822
+
823
+ } // std
824
+ */
825
+
826
+ #include <cuda/std/detail/__config>
827
+
828
+ #if defined(_CCCL_IMPLICIT_SYSTEM_HEADER_GCC)
829
+ # pragma GCC system_header
830
+ #elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_CLANG)
831
+ # pragma clang system_header
832
+ #elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_MSVC)
833
+ # pragma system_header
834
+ #endif // no system header
835
+
836
+ #ifdef __cuda_std__
837
+ # if !_CCCL_COMPILER(NVRTC)
838
+ # include <chrono>
839
+ # endif // _CCCL_COMPILER(NVRTC)
840
+ #endif // __cuda_std__
841
+
842
+ #include <cuda/__ptx/instructions/get_sreg.h>
843
+ #include <cuda/std/__type_traits/common_type.h>
844
+ #include <cuda/std/__type_traits/enable_if.h>
845
+ #include <cuda/std/__type_traits/integral_constant.h>
846
+ #include <cuda/std/__type_traits/is_convertible.h>
847
+ #include <cuda/std/__type_traits/is_floating_point.h>
848
+ #include <cuda/std/ctime>
849
+ #include <cuda/std/limits>
850
+ #include <cuda/std/ratio>
851
+
852
+ // standard-mandated includes
853
+ // TODO: Fix CPOs in split H/D compilation or inform users of what may happen
854
+ // #include <cuda/std/concepts>
855
+ #include <cuda/std/version>
856
+
857
+ #include <cuda/std/__cccl/prologue.h>
858
+
859
+ // Silence NVCC warnings `long double` arising from chrono floating pointer
860
+ // user-defined literals which are defined in terms of `long double`.
861
+
862
+ // FIXME: There is currently no way to disable this diagnostic in a fine-grained
863
+ // fashion; if you include this header, the diagnostic will be suppressed
864
+ // throughout the translation unit. The alternative is loosing (conforming)
865
+ // chrono user-defined literals; this seems like the lesser of two evils, so...
866
+ _CCCL_NV_DIAG_SUPPRESS(cuda_demote_unsupported_floating_point)
867
+
868
+ _LIBCUDACXX_BEGIN_NAMESPACE_FILESYSTEM
869
+ struct _FilesystemClock;
870
+ _LIBCUDACXX_END_NAMESPACE_FILESYSTEM
871
+
872
+ #define _LIBCUDACXX_CHRONO_LITERAL_INTERNAL_T double
873
+
874
+ _LIBCUDACXX_BEGIN_NAMESPACE_STD
875
+
876
+ namespace chrono
877
+ {
878
+
879
+ template <class _Rep, class _Period = ratio<1>>
880
+ class _CCCL_TYPE_VISIBILITY_DEFAULT duration;
881
+
882
+ template <class _Tp>
883
+ struct __is_duration : false_type
884
+ {};
885
+
886
+ template <class _Rep, class _Period>
887
+ struct __is_duration<duration<_Rep, _Period>> : true_type
888
+ {};
889
+
890
+ template <class _Rep, class _Period>
891
+ struct __is_duration<const duration<_Rep, _Period>> : true_type
892
+ {};
893
+
894
+ template <class _Rep, class _Period>
895
+ struct __is_duration<volatile duration<_Rep, _Period>> : true_type
896
+ {};
897
+
898
+ template <class _Rep, class _Period>
899
+ struct __is_duration<const volatile duration<_Rep, _Period>> : true_type
900
+ {};
901
+
902
+ } // namespace chrono
903
+
904
+ template <class _Rep1, class _Period1, class _Rep2, class _Period2>
905
+ struct _CCCL_TYPE_VISIBILITY_DEFAULT common_type<chrono::duration<_Rep1, _Period1>, chrono::duration<_Rep2, _Period2>>
906
+ {
907
+ using type =
908
+ chrono::duration<typename common_type<_Rep1, _Rep2>::type, typename __ratio_gcd<_Period1, _Period2>::type>;
909
+ };
910
+
911
+ namespace chrono
912
+ {
913
+
914
+ // duration_cast
915
+
916
+ template <class _FromDuration,
917
+ class _ToDuration,
918
+ class _Period = typename ratio_divide<typename _FromDuration::period, typename _ToDuration::period>::type,
919
+ bool = _Period::num == 1,
920
+ bool = _Period::den == 1>
921
+ struct __duration_cast;
922
+
923
+ template <class _FromDuration, class _ToDuration, class _Period>
924
+ struct __duration_cast<_FromDuration, _ToDuration, _Period, true, true>
925
+ {
926
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr _ToDuration operator()(const _FromDuration& __fd) const
927
+ {
928
+ return _ToDuration(static_cast<typename _ToDuration::rep>(__fd.count()));
929
+ }
930
+ };
931
+
932
+ template <class _FromDuration, class _ToDuration, class _Period>
933
+ struct __duration_cast<_FromDuration, _ToDuration, _Period, true, false>
934
+ {
935
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr _ToDuration operator()(const _FromDuration& __fd) const
936
+ {
937
+ using _Ct = typename common_type<typename _ToDuration::rep, typename _FromDuration::rep, intmax_t>::type;
938
+ return _ToDuration(
939
+ static_cast<typename _ToDuration::rep>(static_cast<_Ct>(__fd.count()) / static_cast<_Ct>(_Period::den)));
940
+ }
941
+ };
942
+
943
+ template <class _FromDuration, class _ToDuration, class _Period>
944
+ struct __duration_cast<_FromDuration, _ToDuration, _Period, false, true>
945
+ {
946
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr _ToDuration operator()(const _FromDuration& __fd) const
947
+ {
948
+ using _Ct = typename common_type<typename _ToDuration::rep, typename _FromDuration::rep, intmax_t>::type;
949
+ return _ToDuration(
950
+ static_cast<typename _ToDuration::rep>(static_cast<_Ct>(__fd.count()) * static_cast<_Ct>(_Period::num)));
951
+ }
952
+ };
953
+
954
+ template <class _FromDuration, class _ToDuration, class _Period>
955
+ struct __duration_cast<_FromDuration, _ToDuration, _Period, false, false>
956
+ {
957
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr _ToDuration operator()(const _FromDuration& __fd) const
958
+ {
959
+ using _Ct = typename common_type<typename _ToDuration::rep, typename _FromDuration::rep, intmax_t>::type;
960
+ return _ToDuration(static_cast<typename _ToDuration::rep>(
961
+ static_cast<_Ct>(__fd.count()) * static_cast<_Ct>(_Period::num) / static_cast<_Ct>(_Period::den)));
962
+ }
963
+ };
964
+
965
+ template <class _ToDuration, class _Rep, class _Period>
966
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<__is_duration<_ToDuration>::value, _ToDuration>
967
+ duration_cast(const duration<_Rep, _Period>& __fd)
968
+ {
969
+ return __duration_cast<duration<_Rep, _Period>, _ToDuration>()(__fd);
970
+ }
971
+
972
+ template <class _Rep>
973
+ struct _CCCL_TYPE_VISIBILITY_DEFAULT treat_as_floating_point : is_floating_point<_Rep>
974
+ {};
975
+
976
+ template <class _Rep>
977
+ inline constexpr bool treat_as_floating_point_v = treat_as_floating_point<_Rep>::value;
978
+
979
+ template <class _Rep>
980
+ struct _CCCL_TYPE_VISIBILITY_DEFAULT duration_values
981
+ {
982
+ public:
983
+ _LIBCUDACXX_HIDE_FROM_ABI static constexpr _Rep zero() noexcept
984
+ {
985
+ return _Rep(0);
986
+ }
987
+ _LIBCUDACXX_HIDE_FROM_ABI static constexpr _Rep max() noexcept
988
+ {
989
+ return numeric_limits<_Rep>::max();
990
+ }
991
+ _LIBCUDACXX_HIDE_FROM_ABI static constexpr _Rep min() noexcept
992
+ {
993
+ return numeric_limits<_Rep>::lowest();
994
+ }
995
+ };
996
+
997
+ template <class _ToDuration, class _Rep, class _Period>
998
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<__is_duration<_ToDuration>::value, _ToDuration>
999
+ floor(const duration<_Rep, _Period>& __d)
1000
+ {
1001
+ _ToDuration __t = duration_cast<_ToDuration>(__d);
1002
+ if (__t > __d)
1003
+ {
1004
+ __t = __t - _ToDuration{1};
1005
+ }
1006
+ return __t;
1007
+ }
1008
+
1009
+ template <class _ToDuration, class _Rep, class _Period>
1010
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<__is_duration<_ToDuration>::value, _ToDuration>
1011
+ ceil(const duration<_Rep, _Period>& __d)
1012
+ {
1013
+ _ToDuration __t = duration_cast<_ToDuration>(__d);
1014
+ if (__t < __d)
1015
+ {
1016
+ __t = __t + _ToDuration{1};
1017
+ }
1018
+ return __t;
1019
+ }
1020
+
1021
+ template <class _ToDuration, class _Rep, class _Period>
1022
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<__is_duration<_ToDuration>::value, _ToDuration>
1023
+ round(const duration<_Rep, _Period>& __d)
1024
+ {
1025
+ _ToDuration __lower = floor<_ToDuration>(__d);
1026
+ _ToDuration __upper = __lower + _ToDuration{1};
1027
+ auto __lowerDiff = __d - __lower;
1028
+ auto __upperDiff = __upper - __d;
1029
+ if (__lowerDiff < __upperDiff)
1030
+ {
1031
+ return __lower;
1032
+ }
1033
+ if (__lowerDiff > __upperDiff)
1034
+ {
1035
+ return __upper;
1036
+ }
1037
+ return __lower.count() & 1 ? __upper : __lower;
1038
+ }
1039
+
1040
+ // duration
1041
+
1042
+ template <class _Rep, class _Period>
1043
+ class _CCCL_TYPE_VISIBILITY_DEFAULT duration
1044
+ {
1045
+ static_assert(!__is_duration<_Rep>::value, "A duration representation can not be a duration");
1046
+ static_assert(__is_ratio<_Period>::value, "Second template parameter of duration must be a std::ratio");
1047
+ static_assert(_Period::num > 0, "duration period must be positive");
1048
+
1049
+ template <class _R1, class _R2>
1050
+ struct __no_overflow
1051
+ {
1052
+ private:
1053
+ static const intmax_t __gcd_n1_n2 = __static_gcd<_R1::num, _R2::num>::value;
1054
+ static const intmax_t __gcd_d1_d2 = __static_gcd<_R1::den, _R2::den>::value;
1055
+ static const intmax_t __n1 = _R1::num / __gcd_n1_n2;
1056
+ static const intmax_t __d1 = _R1::den / __gcd_d1_d2;
1057
+ static const intmax_t __n2 = _R2::num / __gcd_n1_n2;
1058
+ static const intmax_t __d2 = _R2::den / __gcd_d1_d2;
1059
+ static const intmax_t max = -((intmax_t(1) << (sizeof(intmax_t) * CHAR_BIT - 1)) + 1);
1060
+
1061
+ template <intmax_t _Xp, intmax_t _Yp, bool __overflow>
1062
+ struct __mul // __overflow == false
1063
+ {
1064
+ static const intmax_t value = _Xp * _Yp;
1065
+ };
1066
+
1067
+ template <intmax_t _Xp, intmax_t _Yp>
1068
+ struct __mul<_Xp, _Yp, true>
1069
+ {
1070
+ static const intmax_t value = 1;
1071
+ };
1072
+
1073
+ public:
1074
+ static const bool value = (__n1 <= max / __d2) && (__n2 <= max / __d1);
1075
+ using type = ratio<__mul<__n1, __d2, !value>::value, __mul<__n2, __d1, !value>::value>;
1076
+ };
1077
+
1078
+ public:
1079
+ using rep = _Rep;
1080
+ using period = typename _Period::type;
1081
+
1082
+ private:
1083
+ rep __rep_;
1084
+
1085
+ public:
1086
+ _CCCL_HIDE_FROM_ABI constexpr duration() = default;
1087
+
1088
+ template <class _Rep2>
1089
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr explicit duration(
1090
+ const _Rep2& __r,
1091
+ enable_if_t<is_convertible<_Rep2, rep>::value
1092
+ && (treat_as_floating_point<rep>::value || !treat_as_floating_point<_Rep2>::value)>* = 0)
1093
+ : __rep_(static_cast<rep>(__r))
1094
+ {}
1095
+
1096
+ // conversions
1097
+ template <class _Rep2, class _Period2>
1098
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr duration(
1099
+ const duration<_Rep2, _Period2>& __d,
1100
+ enable_if_t<__no_overflow<_Period2, period>::value
1101
+ && (treat_as_floating_point<rep>::value
1102
+ || (__no_overflow<_Period2, period>::type::den == 1 && !treat_as_floating_point<_Rep2>::value))>* =
1103
+ 0)
1104
+ : __rep_(_CUDA_VSTD::chrono::duration_cast<duration>(__d).count())
1105
+ {}
1106
+
1107
+ // observer
1108
+
1109
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr rep count() const
1110
+ {
1111
+ return __rep_;
1112
+ }
1113
+
1114
+ // arithmetic
1115
+
1116
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr typename common_type<duration>::type operator+() const
1117
+ {
1118
+ return typename common_type<duration>::type(*this);
1119
+ }
1120
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr typename common_type<duration>::type operator-() const
1121
+ {
1122
+ return typename common_type<duration>::type(-__rep_);
1123
+ }
1124
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr duration& operator++()
1125
+ {
1126
+ ++__rep_;
1127
+ return *this;
1128
+ }
1129
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr duration operator++(int)
1130
+ {
1131
+ return duration(__rep_++);
1132
+ }
1133
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr duration& operator--()
1134
+ {
1135
+ --__rep_;
1136
+ return *this;
1137
+ }
1138
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr duration operator--(int)
1139
+ {
1140
+ return duration(__rep_--);
1141
+ }
1142
+
1143
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr duration& operator+=(const duration& __d)
1144
+ {
1145
+ __rep_ += __d.count();
1146
+ return *this;
1147
+ }
1148
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr duration& operator-=(const duration& __d)
1149
+ {
1150
+ __rep_ -= __d.count();
1151
+ return *this;
1152
+ }
1153
+
1154
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr duration& operator*=(const rep& rhs)
1155
+ {
1156
+ __rep_ *= rhs;
1157
+ return *this;
1158
+ }
1159
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr duration& operator/=(const rep& rhs)
1160
+ {
1161
+ __rep_ /= rhs;
1162
+ return *this;
1163
+ }
1164
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr duration& operator%=(const rep& rhs)
1165
+ {
1166
+ __rep_ %= rhs;
1167
+ return *this;
1168
+ }
1169
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr duration& operator%=(const duration& rhs)
1170
+ {
1171
+ __rep_ %= rhs.count();
1172
+ return *this;
1173
+ }
1174
+
1175
+ // special values
1176
+
1177
+ _LIBCUDACXX_HIDE_FROM_ABI static constexpr duration zero() noexcept
1178
+ {
1179
+ return duration(duration_values<rep>::zero());
1180
+ }
1181
+ _LIBCUDACXX_HIDE_FROM_ABI static constexpr duration min() noexcept
1182
+ {
1183
+ return duration(duration_values<rep>::min());
1184
+ }
1185
+ _LIBCUDACXX_HIDE_FROM_ABI static constexpr duration max() noexcept
1186
+ {
1187
+ return duration(duration_values<rep>::max());
1188
+ }
1189
+ };
1190
+
1191
+ using nanoseconds = duration<long long, nano>;
1192
+ using microseconds = duration<long long, micro>;
1193
+ using milliseconds = duration<long long, milli>;
1194
+ using seconds = duration<long long>;
1195
+ using minutes = duration<long, ratio<60>>;
1196
+ using hours = duration<long, ratio<3600>>;
1197
+
1198
+ using days = duration<int, ratio_multiply<ratio<24>, hours::period>>;
1199
+ using weeks = duration<int, ratio_multiply<ratio<7>, days::period>>;
1200
+ using years = duration<int, ratio_multiply<ratio<146097, 400>, days::period>>;
1201
+ using months = duration<int, ratio_divide<years::period, ratio<12>>>;
1202
+
1203
+ // Duration ==
1204
+
1205
+ template <class _LhsDuration, class _RhsDuration>
1206
+ struct __duration_eq
1207
+ {
1208
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator()(const _LhsDuration& __lhs, const _RhsDuration& __rhs) const
1209
+ {
1210
+ using _Ct = typename common_type<_LhsDuration, _RhsDuration>::type;
1211
+ return _Ct(__lhs).count() == _Ct(__rhs).count();
1212
+ }
1213
+ };
1214
+
1215
+ template <class _LhsDuration>
1216
+ struct __duration_eq<_LhsDuration, _LhsDuration>
1217
+ {
1218
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator()(const _LhsDuration& __lhs, const _LhsDuration& __rhs) const
1219
+ {
1220
+ return __lhs.count() == __rhs.count();
1221
+ }
1222
+ };
1223
+
1224
+ template <class _Rep1, class _Period1, class _Rep2, class _Period2>
1225
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
1226
+ operator==(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
1227
+ {
1228
+ return __duration_eq<duration<_Rep1, _Period1>, duration<_Rep2, _Period2>>()(__lhs, __rhs);
1229
+ }
1230
+
1231
+ // Duration !=
1232
+
1233
+ template <class _Rep1, class _Period1, class _Rep2, class _Period2>
1234
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
1235
+ operator!=(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
1236
+ {
1237
+ return !(__lhs == __rhs);
1238
+ }
1239
+
1240
+ // Duration <
1241
+
1242
+ template <class _LhsDuration, class _RhsDuration>
1243
+ struct __duration_lt
1244
+ {
1245
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator()(const _LhsDuration& __lhs, const _RhsDuration& __rhs) const
1246
+ {
1247
+ using _Ct = typename common_type<_LhsDuration, _RhsDuration>::type;
1248
+ return _Ct(__lhs).count() < _Ct(__rhs).count();
1249
+ }
1250
+ };
1251
+
1252
+ template <class _LhsDuration>
1253
+ struct __duration_lt<_LhsDuration, _LhsDuration>
1254
+ {
1255
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator()(const _LhsDuration& __lhs, const _LhsDuration& __rhs) const
1256
+ {
1257
+ return __lhs.count() < __rhs.count();
1258
+ }
1259
+ };
1260
+
1261
+ template <class _Rep1, class _Period1, class _Rep2, class _Period2>
1262
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
1263
+ operator<(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
1264
+ {
1265
+ return __duration_lt<duration<_Rep1, _Period1>, duration<_Rep2, _Period2>>()(__lhs, __rhs);
1266
+ }
1267
+
1268
+ // Duration >
1269
+
1270
+ template <class _Rep1, class _Period1, class _Rep2, class _Period2>
1271
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
1272
+ operator>(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
1273
+ {
1274
+ return __rhs < __lhs;
1275
+ }
1276
+
1277
+ // Duration <=
1278
+
1279
+ template <class _Rep1, class _Period1, class _Rep2, class _Period2>
1280
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
1281
+ operator<=(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
1282
+ {
1283
+ return !(__rhs < __lhs);
1284
+ }
1285
+
1286
+ // Duration >=
1287
+
1288
+ template <class _Rep1, class _Period1, class _Rep2, class _Period2>
1289
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
1290
+ operator>=(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
1291
+ {
1292
+ return !(__lhs < __rhs);
1293
+ }
1294
+
1295
+ // Duration +
1296
+
1297
+ template <class _Rep1, class _Period1, class _Rep2, class _Period2>
1298
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr typename common_type<duration<_Rep1, _Period1>, duration<_Rep2, _Period2>>::type
1299
+ operator+(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
1300
+ {
1301
+ using _Cd = typename common_type<duration<_Rep1, _Period1>, duration<_Rep2, _Period2>>::type;
1302
+ return _Cd(_Cd(__lhs).count() + _Cd(__rhs).count());
1303
+ }
1304
+
1305
+ // Duration -
1306
+
1307
+ template <class _Rep1, class _Period1, class _Rep2, class _Period2>
1308
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr typename common_type<duration<_Rep1, _Period1>, duration<_Rep2, _Period2>>::type
1309
+ operator-(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
1310
+ {
1311
+ using _Cd = typename common_type<duration<_Rep1, _Period1>, duration<_Rep2, _Period2>>::type;
1312
+ return _Cd(_Cd(__lhs).count() - _Cd(__rhs).count());
1313
+ }
1314
+
1315
+ // Duration *
1316
+
1317
+ template <class _Rep1, class _Period, class _Rep2>
1318
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<is_convertible<_Rep2, typename common_type<_Rep1, _Rep2>::type>::value,
1319
+ duration<typename common_type<_Rep1, _Rep2>::type, _Period>>
1320
+ operator*(const duration<_Rep1, _Period>& __d, const _Rep2& __s)
1321
+ {
1322
+ using _Cr = typename common_type<_Rep1, _Rep2>::type;
1323
+ using _Cd = duration<_Cr, _Period>;
1324
+ return _Cd(_Cd(__d).count() * static_cast<_Cr>(__s));
1325
+ }
1326
+
1327
+ template <class _Rep1, class _Period, class _Rep2>
1328
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<is_convertible<_Rep1, typename common_type<_Rep1, _Rep2>::type>::value,
1329
+ duration<typename common_type<_Rep1, _Rep2>::type, _Period>>
1330
+ operator*(const _Rep1& __s, const duration<_Rep2, _Period>& __d)
1331
+ {
1332
+ return __d * __s;
1333
+ }
1334
+
1335
+ // Duration /
1336
+
1337
+ template <class _Rep1, class _Period, class _Rep2>
1338
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<
1339
+ !__is_duration<_Rep2>::value && is_convertible<_Rep2, typename common_type<_Rep1, _Rep2>::type>::value,
1340
+ duration<typename common_type<_Rep1, _Rep2>::type, _Period>>
1341
+ operator/(const duration<_Rep1, _Period>& __d, const _Rep2& __s)
1342
+ {
1343
+ using _Cr = typename common_type<_Rep1, _Rep2>::type;
1344
+ using _Cd = duration<_Cr, _Period>;
1345
+ return _Cd(_Cd(__d).count() / static_cast<_Cr>(__s));
1346
+ }
1347
+
1348
+ template <class _Rep1, class _Period1, class _Rep2, class _Period2>
1349
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr typename common_type<_Rep1, _Rep2>::type
1350
+ operator/(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
1351
+ {
1352
+ using _Ct = typename common_type<duration<_Rep1, _Period1>, duration<_Rep2, _Period2>>::type;
1353
+ return _Ct(__lhs).count() / _Ct(__rhs).count();
1354
+ }
1355
+
1356
+ // Duration %
1357
+
1358
+ template <class _Rep1, class _Period, class _Rep2>
1359
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<
1360
+ !__is_duration<_Rep2>::value && is_convertible<_Rep2, typename common_type<_Rep1, _Rep2>::type>::value,
1361
+ duration<typename common_type<_Rep1, _Rep2>::type, _Period>>
1362
+ operator%(const duration<_Rep1, _Period>& __d, const _Rep2& __s)
1363
+ {
1364
+ using _Cr = typename common_type<_Rep1, _Rep2>::type;
1365
+ using _Cd = duration<_Cr, _Period>;
1366
+ return _Cd(_Cd(__d).count() % static_cast<_Cr>(__s));
1367
+ }
1368
+
1369
+ template <class _Rep1, class _Period1, class _Rep2, class _Period2>
1370
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr typename common_type<duration<_Rep1, _Period1>, duration<_Rep2, _Period2>>::type
1371
+ operator%(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
1372
+ {
1373
+ using _Cr = typename common_type<_Rep1, _Rep2>::type;
1374
+ using _Cd = typename common_type<duration<_Rep1, _Period1>, duration<_Rep2, _Period2>>::type;
1375
+ return _Cd(static_cast<_Cr>(_Cd(__lhs).count()) % static_cast<_Cr>(_Cd(__rhs).count()));
1376
+ }
1377
+
1378
+ //////////////////////////////////////////////////////////
1379
+ ///////////////////// time_point /////////////////////////
1380
+ //////////////////////////////////////////////////////////
1381
+
1382
+ template <class _Clock, class _Duration = typename _Clock::duration>
1383
+ class _CCCL_TYPE_VISIBILITY_DEFAULT time_point
1384
+ {
1385
+ static_assert(__is_duration<_Duration>::value,
1386
+ "Second template parameter of time_point must be a std::chrono::duration");
1387
+
1388
+ public:
1389
+ using clock = _Clock;
1390
+ using duration = _Duration;
1391
+ using rep = typename duration::rep;
1392
+ using period = typename duration::period;
1393
+
1394
+ private:
1395
+ duration __d_;
1396
+
1397
+ public:
1398
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr time_point()
1399
+ : __d_(duration::zero())
1400
+ {}
1401
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr explicit time_point(const duration& __d)
1402
+ : __d_(__d)
1403
+ {}
1404
+
1405
+ // conversions
1406
+ template <class _Duration2>
1407
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr time_point(const time_point<clock, _Duration2>& t,
1408
+ enable_if_t<is_convertible<_Duration2, duration>::value>* = 0)
1409
+ : __d_(t.time_since_epoch())
1410
+ {}
1411
+
1412
+ // observer
1413
+
1414
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr duration time_since_epoch() const
1415
+ {
1416
+ return __d_;
1417
+ }
1418
+
1419
+ // arithmetic
1420
+
1421
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr time_point& operator+=(const duration& __d)
1422
+ {
1423
+ __d_ += __d;
1424
+ return *this;
1425
+ }
1426
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr time_point& operator-=(const duration& __d)
1427
+ {
1428
+ __d_ -= __d;
1429
+ return *this;
1430
+ }
1431
+
1432
+ // special values
1433
+
1434
+ _LIBCUDACXX_HIDE_FROM_ABI static constexpr time_point min() noexcept
1435
+ {
1436
+ return time_point(duration::min());
1437
+ }
1438
+ _LIBCUDACXX_HIDE_FROM_ABI static constexpr time_point max() noexcept
1439
+ {
1440
+ return time_point(duration::max());
1441
+ }
1442
+ };
1443
+
1444
+ } // namespace chrono
1445
+
1446
+ template <class _Clock, class _Duration1, class _Duration2>
1447
+ struct _CCCL_TYPE_VISIBILITY_DEFAULT
1448
+ common_type<chrono::time_point<_Clock, _Duration1>, chrono::time_point<_Clock, _Duration2>>
1449
+ {
1450
+ using type = chrono::time_point<_Clock, typename common_type<_Duration1, _Duration2>::type>;
1451
+ };
1452
+
1453
+ namespace chrono
1454
+ {
1455
+
1456
+ template <class _ToDuration, class _Clock, class _Duration>
1457
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr time_point<_Clock, _ToDuration>
1458
+ time_point_cast(const time_point<_Clock, _Duration>& __t)
1459
+ {
1460
+ return time_point<_Clock, _ToDuration>(_CUDA_VSTD::chrono::duration_cast<_ToDuration>(__t.time_since_epoch()));
1461
+ }
1462
+
1463
+ template <class _ToDuration, class _Clock, class _Duration>
1464
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<__is_duration<_ToDuration>::value, time_point<_Clock, _ToDuration>>
1465
+ floor(const time_point<_Clock, _Duration>& __t)
1466
+ {
1467
+ return time_point<_Clock, _ToDuration>{floor<_ToDuration>(__t.time_since_epoch())};
1468
+ }
1469
+
1470
+ template <class _ToDuration, class _Clock, class _Duration>
1471
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<__is_duration<_ToDuration>::value, time_point<_Clock, _ToDuration>>
1472
+ ceil(const time_point<_Clock, _Duration>& __t)
1473
+ {
1474
+ return time_point<_Clock, _ToDuration>{ceil<_ToDuration>(__t.time_since_epoch())};
1475
+ }
1476
+
1477
+ template <class _ToDuration, class _Clock, class _Duration>
1478
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<__is_duration<_ToDuration>::value, time_point<_Clock, _ToDuration>>
1479
+ round(const time_point<_Clock, _Duration>& __t)
1480
+ {
1481
+ return time_point<_Clock, _ToDuration>{round<_ToDuration>(__t.time_since_epoch())};
1482
+ }
1483
+
1484
+ template <class _Rep, class _Period>
1485
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr enable_if_t<numeric_limits<_Rep>::is_signed, duration<_Rep, _Period>>
1486
+ abs(duration<_Rep, _Period> __d)
1487
+ {
1488
+ return __d >= __d.zero() ? +__d : -__d;
1489
+ }
1490
+
1491
+ // time_point ==
1492
+
1493
+ template <class _Clock, class _Duration1, class _Duration2>
1494
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
1495
+ operator==(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs)
1496
+ {
1497
+ return __lhs.time_since_epoch() == __rhs.time_since_epoch();
1498
+ }
1499
+
1500
+ // time_point !=
1501
+
1502
+ template <class _Clock, class _Duration1, class _Duration2>
1503
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
1504
+ operator!=(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs)
1505
+ {
1506
+ return !(__lhs == __rhs);
1507
+ }
1508
+
1509
+ // time_point <
1510
+
1511
+ template <class _Clock, class _Duration1, class _Duration2>
1512
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
1513
+ operator<(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs)
1514
+ {
1515
+ return __lhs.time_since_epoch() < __rhs.time_since_epoch();
1516
+ }
1517
+
1518
+ // time_point >
1519
+
1520
+ template <class _Clock, class _Duration1, class _Duration2>
1521
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
1522
+ operator>(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs)
1523
+ {
1524
+ return __rhs < __lhs;
1525
+ }
1526
+
1527
+ // time_point <=
1528
+
1529
+ template <class _Clock, class _Duration1, class _Duration2>
1530
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
1531
+ operator<=(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs)
1532
+ {
1533
+ return !(__rhs < __lhs);
1534
+ }
1535
+
1536
+ // time_point >=
1537
+
1538
+ template <class _Clock, class _Duration1, class _Duration2>
1539
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
1540
+ operator>=(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs)
1541
+ {
1542
+ return !(__lhs < __rhs);
1543
+ }
1544
+
1545
+ // time_point operator+(time_point x, duration y);
1546
+
1547
+ template <class _Clock, class _Duration1, class _Rep2, class _Period2>
1548
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2>>::type>
1549
+ operator+(const time_point<_Clock, _Duration1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
1550
+ {
1551
+ using _Tr = time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2>>::type>;
1552
+ return _Tr(__lhs.time_since_epoch() + __rhs);
1553
+ }
1554
+
1555
+ // time_point operator+(duration x, time_point y);
1556
+
1557
+ template <class _Rep1, class _Period1, class _Clock, class _Duration2>
1558
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr time_point<_Clock, typename common_type<duration<_Rep1, _Period1>, _Duration2>::type>
1559
+ operator+(const duration<_Rep1, _Period1>& __lhs, const time_point<_Clock, _Duration2>& __rhs)
1560
+ {
1561
+ return __rhs + __lhs;
1562
+ }
1563
+
1564
+ // time_point operator-(time_point x, duration y);
1565
+
1566
+ template <class _Clock, class _Duration1, class _Rep2, class _Period2>
1567
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2>>::type>
1568
+ operator-(const time_point<_Clock, _Duration1>& __lhs, const duration<_Rep2, _Period2>& __rhs)
1569
+ {
1570
+ using _Ret = time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2>>::type>;
1571
+ return _Ret(__lhs.time_since_epoch() - __rhs);
1572
+ }
1573
+
1574
+ // duration operator-(time_point x, time_point y);
1575
+
1576
+ template <class _Clock, class _Duration1, class _Duration2>
1577
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr typename common_type<_Duration1, _Duration2>::type
1578
+ operator-(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs)
1579
+ {
1580
+ return __lhs.time_since_epoch() - __rhs.time_since_epoch();
1581
+ }
1582
+
1583
+ //////////////////////////////////////////////////////////
1584
+ /////////////////////// clocks ///////////////////////////
1585
+ //////////////////////////////////////////////////////////
1586
+ class _CCCL_TYPE_VISIBILITY_DEFAULT system_clock
1587
+ {
1588
+ public:
1589
+ using duration = _LIBCUDACXX_SYS_CLOCK_DURATION;
1590
+ using rep = duration::rep;
1591
+ using period = duration::period;
1592
+ using time_point = chrono::time_point<system_clock>;
1593
+ static constexpr const bool is_steady = false;
1594
+
1595
+ [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI static time_point now() noexcept
1596
+ {
1597
+ NV_IF_ELSE_TARGET(
1598
+ NV_IS_HOST,
1599
+ (return time_point(duration_cast<duration>(nanoseconds(
1600
+ ::std::chrono::duration_cast<::std::chrono::nanoseconds>(::std::chrono::system_clock::now().time_since_epoch())
1601
+ .count())));),
1602
+ (return time_point(duration_cast<duration>(nanoseconds(_CUDA_VPTX::get_sreg_globaltimer())));))
1603
+ }
1604
+
1605
+ [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI static time_t to_time_t(const time_point& __t) noexcept
1606
+ {
1607
+ return time_t(duration_cast<seconds>(__t.time_since_epoch()).count());
1608
+ }
1609
+
1610
+ [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI static time_point from_time_t(time_t __t) noexcept
1611
+ {
1612
+ return time_point(seconds(__t));
1613
+ }
1614
+ };
1615
+
1616
+ #if _LIBCUDACXX_HAS_MONOTONIC_CLOCK()
1617
+ class _CCCL_TYPE_VISIBILITY_DEFAULT steady_clock
1618
+ {
1619
+ public:
1620
+ using duration = nanoseconds;
1621
+ using rep = duration::rep;
1622
+ using period = duration::period;
1623
+ using time_point = chrono::time_point<steady_clock, duration>;
1624
+ static constexpr const bool is_steady = true;
1625
+
1626
+ static time_point now() noexcept;
1627
+ };
1628
+
1629
+ using high_resolution_clock = steady_clock;
1630
+ #else // ^^^ _LIBCUDACXX_HAS_MONOTONIC_CLOCK() ^^^ / vvv !_LIBCUDACXX_HAS_MONOTONIC_CLOCK() vvv
1631
+ using high_resolution_clock = system_clock;
1632
+ #endif // !_LIBCUDACXX_HAS_MONOTONIC_CLOCK()
1633
+
1634
+ // [time.clock.file], type file_clock
1635
+ using file_clock = _CUDA_VSTD_FS::_FilesystemClock;
1636
+
1637
+ template <class _Duration>
1638
+ using file_time = time_point<file_clock, _Duration>;
1639
+
1640
+ template <class _Duration>
1641
+ using sys_time = time_point<system_clock, _Duration>;
1642
+ using sys_seconds = sys_time<seconds>;
1643
+ using sys_days = sys_time<days>;
1644
+
1645
+ struct local_t
1646
+ {};
1647
+ template <class Duration>
1648
+ using local_time = time_point<local_t, Duration>;
1649
+ using local_seconds = local_time<seconds>;
1650
+ using local_days = local_time<days>;
1651
+
1652
+ struct last_spec
1653
+ {
1654
+ _CCCL_HIDE_FROM_ABI explicit last_spec() = default;
1655
+ };
1656
+
1657
+ class day
1658
+ {
1659
+ private:
1660
+ unsigned char __d;
1661
+
1662
+ public:
1663
+ _CCCL_HIDE_FROM_ABI day() = default;
1664
+ _LIBCUDACXX_HIDE_FROM_ABI explicit constexpr day(unsigned __val) noexcept
1665
+ : __d(static_cast<unsigned char>(__val))
1666
+ {}
1667
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr day& operator++() noexcept
1668
+ {
1669
+ ++__d;
1670
+ return *this;
1671
+ }
1672
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr day operator++(int) noexcept
1673
+ {
1674
+ day __tmp = *this;
1675
+ ++(*this);
1676
+ return __tmp;
1677
+ }
1678
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr day& operator--() noexcept
1679
+ {
1680
+ --__d;
1681
+ return *this;
1682
+ }
1683
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr day operator--(int) noexcept
1684
+ {
1685
+ day __tmp = *this;
1686
+ --(*this);
1687
+ return __tmp;
1688
+ }
1689
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr day& operator+=(const days& __dd) noexcept;
1690
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr day& operator-=(const days& __dd) noexcept;
1691
+ _LIBCUDACXX_HIDE_FROM_ABI explicit constexpr operator unsigned() const noexcept
1692
+ {
1693
+ return __d;
1694
+ }
1695
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool ok() const noexcept
1696
+ {
1697
+ return __d >= 1 && __d <= 31;
1698
+ }
1699
+ };
1700
+
1701
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator==(const day& __lhs, const day& __rhs) noexcept
1702
+ {
1703
+ return static_cast<unsigned>(__lhs) == static_cast<unsigned>(__rhs);
1704
+ }
1705
+
1706
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator!=(const day& __lhs, const day& __rhs) noexcept
1707
+ {
1708
+ return !(__lhs == __rhs);
1709
+ }
1710
+
1711
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator<(const day& __lhs, const day& __rhs) noexcept
1712
+ {
1713
+ return static_cast<unsigned>(__lhs) < static_cast<unsigned>(__rhs);
1714
+ }
1715
+
1716
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator>(const day& __lhs, const day& __rhs) noexcept
1717
+ {
1718
+ return __rhs < __lhs;
1719
+ }
1720
+
1721
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator<=(const day& __lhs, const day& __rhs) noexcept
1722
+ {
1723
+ return !(__rhs < __lhs);
1724
+ }
1725
+
1726
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator>=(const day& __lhs, const day& __rhs) noexcept
1727
+ {
1728
+ return !(__lhs < __rhs);
1729
+ }
1730
+
1731
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr day operator+(const day& __lhs, const days& __rhs) noexcept
1732
+ {
1733
+ return day(static_cast<unsigned>(__lhs) + static_cast<unsigned>(__rhs.count()));
1734
+ }
1735
+
1736
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr day operator+(const days& __lhs, const day& __rhs) noexcept
1737
+ {
1738
+ return __rhs + __lhs;
1739
+ }
1740
+
1741
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr day operator-(const day& __lhs, const days& __rhs) noexcept
1742
+ {
1743
+ return __lhs + -__rhs;
1744
+ }
1745
+
1746
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr days operator-(const day& __lhs, const day& __rhs) noexcept
1747
+ {
1748
+ return days(static_cast<int>(static_cast<unsigned>(__lhs)) - static_cast<int>(static_cast<unsigned>(__rhs)));
1749
+ }
1750
+
1751
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr day& day::operator+=(const days& __dd) noexcept
1752
+ {
1753
+ *this = *this + __dd;
1754
+ return *this;
1755
+ }
1756
+
1757
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr day& day::operator-=(const days& __dd) noexcept
1758
+ {
1759
+ *this = *this - __dd;
1760
+ return *this;
1761
+ }
1762
+
1763
+ class month
1764
+ {
1765
+ private:
1766
+ unsigned char __m;
1767
+
1768
+ public:
1769
+ _CCCL_HIDE_FROM_ABI month() = default;
1770
+ _LIBCUDACXX_HIDE_FROM_ABI explicit constexpr month(unsigned __val) noexcept
1771
+ : __m(static_cast<unsigned char>(__val))
1772
+ {}
1773
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month& operator++() noexcept
1774
+ {
1775
+ ++__m;
1776
+ return *this;
1777
+ }
1778
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month operator++(int) noexcept
1779
+ {
1780
+ month __tmp = *this;
1781
+ ++(*this);
1782
+ return __tmp;
1783
+ }
1784
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month& operator--() noexcept
1785
+ {
1786
+ --__m;
1787
+ return *this;
1788
+ }
1789
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month operator--(int) noexcept
1790
+ {
1791
+ month __tmp = *this;
1792
+ --(*this);
1793
+ return __tmp;
1794
+ }
1795
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month& operator+=(const months& __m1) noexcept;
1796
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month& operator-=(const months& __m1) noexcept;
1797
+ _LIBCUDACXX_HIDE_FROM_ABI explicit constexpr operator unsigned() const noexcept
1798
+ {
1799
+ return __m;
1800
+ }
1801
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool ok() const noexcept
1802
+ {
1803
+ return __m >= 1 && __m <= 12;
1804
+ }
1805
+ };
1806
+
1807
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator==(const month& __lhs, const month& __rhs) noexcept
1808
+ {
1809
+ return static_cast<unsigned>(__lhs) == static_cast<unsigned>(__rhs);
1810
+ }
1811
+
1812
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator!=(const month& __lhs, const month& __rhs) noexcept
1813
+ {
1814
+ return !(__lhs == __rhs);
1815
+ }
1816
+
1817
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator<(const month& __lhs, const month& __rhs) noexcept
1818
+ {
1819
+ return static_cast<unsigned>(__lhs) < static_cast<unsigned>(__rhs);
1820
+ }
1821
+
1822
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator>(const month& __lhs, const month& __rhs) noexcept
1823
+ {
1824
+ return __rhs < __lhs;
1825
+ }
1826
+
1827
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator<=(const month& __lhs, const month& __rhs) noexcept
1828
+ {
1829
+ return !(__rhs < __lhs);
1830
+ }
1831
+
1832
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator>=(const month& __lhs, const month& __rhs) noexcept
1833
+ {
1834
+ return !(__lhs < __rhs);
1835
+ }
1836
+
1837
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month operator+(const month& __lhs, const months& __rhs) noexcept
1838
+ {
1839
+ auto const __mu = static_cast<long long>(static_cast<unsigned>(__lhs)) + (__rhs.count() - 1);
1840
+ auto const __yr = (__mu >= 0 ? __mu : __mu - 11) / 12;
1841
+ return month{static_cast<unsigned>(__mu - __yr * 12 + 1)};
1842
+ }
1843
+
1844
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month operator+(const months& __lhs, const month& __rhs) noexcept
1845
+ {
1846
+ return __rhs + __lhs;
1847
+ }
1848
+
1849
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month operator-(const month& __lhs, const months& __rhs) noexcept
1850
+ {
1851
+ return __lhs + -__rhs;
1852
+ }
1853
+
1854
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr months operator-(const month& __lhs, const month& __rhs) noexcept
1855
+ {
1856
+ auto const __dm = static_cast<unsigned>(__lhs) - static_cast<unsigned>(__rhs);
1857
+ return months(__dm <= 11 ? __dm : __dm + 12);
1858
+ }
1859
+
1860
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month& month::operator+=(const months& __dm) noexcept
1861
+ {
1862
+ *this = *this + __dm;
1863
+ return *this;
1864
+ }
1865
+
1866
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month& month::operator-=(const months& __dm) noexcept
1867
+ {
1868
+ *this = *this - __dm;
1869
+ return *this;
1870
+ }
1871
+
1872
+ class year
1873
+ {
1874
+ private:
1875
+ short __y;
1876
+
1877
+ public:
1878
+ _CCCL_HIDE_FROM_ABI year() = default;
1879
+ _LIBCUDACXX_HIDE_FROM_ABI explicit constexpr year(int __val) noexcept
1880
+ : __y(static_cast<short>(__val))
1881
+ {}
1882
+
1883
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year& operator++() noexcept
1884
+ {
1885
+ ++__y;
1886
+ return *this;
1887
+ }
1888
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year operator++(int) noexcept
1889
+ {
1890
+ year __tmp = *this;
1891
+ ++(*this);
1892
+ return __tmp;
1893
+ }
1894
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year& operator--() noexcept
1895
+ {
1896
+ --__y;
1897
+ return *this;
1898
+ }
1899
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year operator--(int) noexcept
1900
+ {
1901
+ year __tmp = *this;
1902
+ --(*this);
1903
+ return __tmp;
1904
+ }
1905
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year& operator+=(const years& __dy) noexcept;
1906
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year& operator-=(const years& __dy) noexcept;
1907
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year operator+() const noexcept
1908
+ {
1909
+ return *this;
1910
+ }
1911
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year operator-() const noexcept
1912
+ {
1913
+ return year{-__y};
1914
+ }
1915
+
1916
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool is_leap() const noexcept
1917
+ {
1918
+ return __y % 4 == 0 && (__y % 100 != 0 || __y % 400 == 0);
1919
+ }
1920
+ _LIBCUDACXX_HIDE_FROM_ABI explicit constexpr operator int() const noexcept
1921
+ {
1922
+ return __y;
1923
+ }
1924
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool ok() const noexcept;
1925
+ _LIBCUDACXX_HIDE_FROM_ABI static constexpr year min() noexcept
1926
+ {
1927
+ return year{-32767};
1928
+ }
1929
+ _LIBCUDACXX_HIDE_FROM_ABI static constexpr year max() noexcept
1930
+ {
1931
+ return year{32767};
1932
+ }
1933
+ };
1934
+
1935
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator==(const year& __lhs, const year& __rhs) noexcept
1936
+ {
1937
+ return static_cast<int>(__lhs) == static_cast<int>(__rhs);
1938
+ }
1939
+
1940
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator!=(const year& __lhs, const year& __rhs) noexcept
1941
+ {
1942
+ return !(__lhs == __rhs);
1943
+ }
1944
+
1945
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator<(const year& __lhs, const year& __rhs) noexcept
1946
+ {
1947
+ return static_cast<int>(__lhs) < static_cast<int>(__rhs);
1948
+ }
1949
+
1950
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator>(const year& __lhs, const year& __rhs) noexcept
1951
+ {
1952
+ return __rhs < __lhs;
1953
+ }
1954
+
1955
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator<=(const year& __lhs, const year& __rhs) noexcept
1956
+ {
1957
+ return !(__rhs < __lhs);
1958
+ }
1959
+
1960
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator>=(const year& __lhs, const year& __rhs) noexcept
1961
+ {
1962
+ return !(__lhs < __rhs);
1963
+ }
1964
+
1965
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year operator+(const year& __lhs, const years& __rhs) noexcept
1966
+ {
1967
+ return year(static_cast<int>(__lhs) + __rhs.count());
1968
+ }
1969
+
1970
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year operator+(const years& __lhs, const year& __rhs) noexcept
1971
+ {
1972
+ return __rhs + __lhs;
1973
+ }
1974
+
1975
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year operator-(const year& __lhs, const years& __rhs) noexcept
1976
+ {
1977
+ return __lhs + -__rhs;
1978
+ }
1979
+
1980
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr years operator-(const year& __lhs, const year& __rhs) noexcept
1981
+ {
1982
+ return years{static_cast<int>(__lhs) - static_cast<int>(__rhs)};
1983
+ }
1984
+
1985
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year& year::operator+=(const years& __dy) noexcept
1986
+ {
1987
+ *this = *this + __dy;
1988
+ return *this;
1989
+ }
1990
+
1991
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year& year::operator-=(const years& __dy) noexcept
1992
+ {
1993
+ *this = *this - __dy;
1994
+ return *this;
1995
+ }
1996
+
1997
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool year::ok() const noexcept
1998
+ {
1999
+ return static_cast<int>(min()) <= __y && __y <= static_cast<int>(max());
2000
+ }
2001
+
2002
+ class weekday_indexed;
2003
+ class weekday_last;
2004
+
2005
+ class weekday
2006
+ {
2007
+ private:
2008
+ unsigned char __wd;
2009
+
2010
+ public:
2011
+ _CCCL_HIDE_FROM_ABI weekday() = default;
2012
+ _LIBCUDACXX_HIDE_FROM_ABI explicit constexpr weekday(unsigned __val) noexcept
2013
+ : __wd(static_cast<unsigned char>(__val == 7 ? 0 : __val))
2014
+ {}
2015
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr weekday(const sys_days& __sysd) noexcept
2016
+ : __wd(__weekday_from_days(__sysd.time_since_epoch().count()))
2017
+ {}
2018
+ _LIBCUDACXX_HIDE_FROM_ABI explicit constexpr weekday(const local_days& __locd) noexcept
2019
+ : __wd(__weekday_from_days(__locd.time_since_epoch().count()))
2020
+ {}
2021
+
2022
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr weekday& operator++() noexcept
2023
+ {
2024
+ __wd = (__wd == 6 ? 0 : __wd + 1);
2025
+ return *this;
2026
+ }
2027
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr weekday operator++(int) noexcept
2028
+ {
2029
+ weekday __tmp = *this;
2030
+ ++(*this);
2031
+ return __tmp;
2032
+ }
2033
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr weekday& operator--() noexcept
2034
+ {
2035
+ __wd = (__wd == 0 ? 6 : __wd - 1);
2036
+ return *this;
2037
+ }
2038
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr weekday operator--(int) noexcept
2039
+ {
2040
+ weekday __tmp = *this;
2041
+ --(*this);
2042
+ return __tmp;
2043
+ }
2044
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr weekday& operator+=(const days& __dd) noexcept;
2045
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr weekday& operator-=(const days& __dd) noexcept;
2046
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr unsigned c_encoding() const noexcept
2047
+ {
2048
+ return __wd;
2049
+ }
2050
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr unsigned iso_encoding() const noexcept
2051
+ {
2052
+ return __wd == 0u ? 7 : __wd;
2053
+ }
2054
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool ok() const noexcept
2055
+ {
2056
+ return __wd <= 6;
2057
+ }
2058
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr weekday_indexed operator[](unsigned __index) const noexcept;
2059
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr weekday_last operator[](last_spec) const noexcept;
2060
+
2061
+ _LIBCUDACXX_HIDE_FROM_ABI static constexpr unsigned char __weekday_from_days(int __days) noexcept;
2062
+ };
2063
+
2064
+ // https://howardhinnant.github.io/date_algorithms.html#weekday_from_days
2065
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr unsigned char weekday::__weekday_from_days(int __days) noexcept
2066
+ {
2067
+ return static_cast<unsigned char>(static_cast<unsigned>(__days >= -4 ? (__days + 4) % 7 : (__days + 5) % 7 + 6));
2068
+ }
2069
+
2070
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator==(const weekday& __lhs, const weekday& __rhs) noexcept
2071
+ {
2072
+ return __lhs.c_encoding() == __rhs.c_encoding();
2073
+ }
2074
+
2075
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator!=(const weekday& __lhs, const weekday& __rhs) noexcept
2076
+ {
2077
+ return !(__lhs == __rhs);
2078
+ }
2079
+
2080
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator<(const weekday& __lhs, const weekday& __rhs) noexcept
2081
+ {
2082
+ return __lhs.c_encoding() < __rhs.c_encoding();
2083
+ }
2084
+
2085
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator>(const weekday& __lhs, const weekday& __rhs) noexcept
2086
+ {
2087
+ return __rhs < __lhs;
2088
+ }
2089
+
2090
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator<=(const weekday& __lhs, const weekday& __rhs) noexcept
2091
+ {
2092
+ return !(__rhs < __lhs);
2093
+ }
2094
+
2095
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator>=(const weekday& __lhs, const weekday& __rhs) noexcept
2096
+ {
2097
+ return !(__lhs < __rhs);
2098
+ }
2099
+
2100
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr weekday operator+(const weekday& __lhs, const days& __rhs) noexcept
2101
+ {
2102
+ auto const __mu = static_cast<long long>(__lhs.c_encoding()) + __rhs.count();
2103
+ auto const __yr = (__mu >= 0 ? __mu : __mu - 6) / 7;
2104
+ return weekday{static_cast<unsigned>(__mu - __yr * 7)};
2105
+ }
2106
+
2107
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr weekday operator+(const days& __lhs, const weekday& __rhs) noexcept
2108
+ {
2109
+ return __rhs + __lhs;
2110
+ }
2111
+
2112
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr weekday operator-(const weekday& __lhs, const days& __rhs) noexcept
2113
+ {
2114
+ return __lhs + -__rhs;
2115
+ }
2116
+
2117
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr days operator-(const weekday& __lhs, const weekday& __rhs) noexcept
2118
+ {
2119
+ // casts are required to work around nvcc bug 3145483
2120
+ const int __wdu = static_cast<int>(__lhs.c_encoding()) - static_cast<int>(__rhs.c_encoding());
2121
+ const int __wk = (__wdu >= 0 ? __wdu : __wdu - 6) / 7;
2122
+ return days{__wdu - __wk * 7};
2123
+ }
2124
+
2125
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr weekday& weekday::operator+=(const days& __dd) noexcept
2126
+ {
2127
+ *this = *this + __dd;
2128
+ return *this;
2129
+ }
2130
+
2131
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr weekday& weekday::operator-=(const days& __dd) noexcept
2132
+ {
2133
+ *this = *this - __dd;
2134
+ return *this;
2135
+ }
2136
+
2137
+ class weekday_indexed
2138
+ {
2139
+ private:
2140
+ _CUDA_VSTD::chrono::weekday __wd;
2141
+ unsigned char __idx;
2142
+
2143
+ public:
2144
+ _CCCL_HIDE_FROM_ABI weekday_indexed() = default;
2145
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr weekday_indexed(
2146
+ const _CUDA_VSTD::chrono::weekday& __wdval, unsigned __idxval) noexcept
2147
+ : __wd{__wdval}
2148
+ , __idx(static_cast<unsigned char>(__idxval))
2149
+ {}
2150
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr _CUDA_VSTD::chrono::weekday weekday() const noexcept
2151
+ {
2152
+ return __wd;
2153
+ }
2154
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr unsigned index() const noexcept
2155
+ {
2156
+ return __idx;
2157
+ }
2158
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool ok() const noexcept
2159
+ {
2160
+ return __wd.ok() && __idx >= 1 && __idx <= 5;
2161
+ }
2162
+ };
2163
+
2164
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator==(const weekday_indexed& __lhs, const weekday_indexed& __rhs) noexcept
2165
+ {
2166
+ return __lhs.weekday() == __rhs.weekday() && __lhs.index() == __rhs.index();
2167
+ }
2168
+
2169
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator!=(const weekday_indexed& __lhs, const weekday_indexed& __rhs) noexcept
2170
+ {
2171
+ return !(__lhs == __rhs);
2172
+ }
2173
+
2174
+ class weekday_last
2175
+ {
2176
+ private:
2177
+ _CUDA_VSTD::chrono::weekday __wd;
2178
+
2179
+ public:
2180
+ _LIBCUDACXX_HIDE_FROM_ABI explicit constexpr weekday_last(const _CUDA_VSTD::chrono::weekday& __val) noexcept
2181
+ : __wd{__val}
2182
+ {}
2183
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr _CUDA_VSTD::chrono::weekday weekday() const noexcept
2184
+ {
2185
+ return __wd;
2186
+ }
2187
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool ok() const noexcept
2188
+ {
2189
+ return __wd.ok();
2190
+ }
2191
+ };
2192
+
2193
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator==(const weekday_last& __lhs, const weekday_last& __rhs) noexcept
2194
+ {
2195
+ return __lhs.weekday() == __rhs.weekday();
2196
+ }
2197
+
2198
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator!=(const weekday_last& __lhs, const weekday_last& __rhs) noexcept
2199
+ {
2200
+ return !(__lhs == __rhs);
2201
+ }
2202
+
2203
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr weekday_indexed weekday::operator[](unsigned __index) const noexcept
2204
+ {
2205
+ return weekday_indexed{*this, __index};
2206
+ }
2207
+
2208
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr weekday_last weekday::operator[](last_spec) const noexcept
2209
+ {
2210
+ return weekday_last{*this};
2211
+ }
2212
+
2213
+ inline constexpr last_spec last{};
2214
+ inline constexpr weekday Sunday{0};
2215
+ inline constexpr weekday Monday{1};
2216
+ inline constexpr weekday Tuesday{2};
2217
+ inline constexpr weekday Wednesday{3};
2218
+ inline constexpr weekday Thursday{4};
2219
+ inline constexpr weekday Friday{5};
2220
+ inline constexpr weekday Saturday{6};
2221
+
2222
+ inline constexpr month January{1};
2223
+ inline constexpr month February{2};
2224
+ inline constexpr month March{3};
2225
+ inline constexpr month April{4};
2226
+ inline constexpr month May{5};
2227
+ inline constexpr month June{6};
2228
+ inline constexpr month July{7};
2229
+ inline constexpr month August{8};
2230
+ inline constexpr month September{9};
2231
+ inline constexpr month October{10};
2232
+ inline constexpr month November{11};
2233
+ inline constexpr month December{12};
2234
+
2235
+ class month_day
2236
+ {
2237
+ private:
2238
+ chrono::month __m;
2239
+ chrono::day __d;
2240
+
2241
+ public:
2242
+ _CCCL_HIDE_FROM_ABI month_day() = default;
2243
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month_day(const chrono::month& __mval, const chrono::day& __dval) noexcept
2244
+ : __m{__mval}
2245
+ , __d{__dval}
2246
+ {}
2247
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::month month() const noexcept
2248
+ {
2249
+ return __m;
2250
+ }
2251
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::day day() const noexcept
2252
+ {
2253
+ return __d;
2254
+ }
2255
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool ok() const noexcept;
2256
+ };
2257
+
2258
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool month_day::ok() const noexcept
2259
+ {
2260
+ if (!__m.ok())
2261
+ {
2262
+ return false;
2263
+ }
2264
+ const unsigned __dval = static_cast<unsigned>(__d);
2265
+ if (__dval < 1 || __dval > 31)
2266
+ {
2267
+ return false;
2268
+ }
2269
+ if (__dval <= 29)
2270
+ {
2271
+ return true;
2272
+ }
2273
+ // Now we've got either 30 or 31
2274
+ const unsigned __mval = static_cast<unsigned>(__m);
2275
+ if (__mval == 2)
2276
+ {
2277
+ return false;
2278
+ }
2279
+ if (__mval == 4 || __mval == 6 || __mval == 9 || __mval == 11)
2280
+ {
2281
+ return __dval == 30;
2282
+ }
2283
+ return true;
2284
+ }
2285
+
2286
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator==(const month_day& __lhs, const month_day& __rhs) noexcept
2287
+ {
2288
+ return __lhs.month() == __rhs.month() && __lhs.day() == __rhs.day();
2289
+ }
2290
+
2291
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator!=(const month_day& __lhs, const month_day& __rhs) noexcept
2292
+ {
2293
+ return !(__lhs == __rhs);
2294
+ }
2295
+
2296
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month_day operator/(const month& __lhs, const day& __rhs) noexcept
2297
+ {
2298
+ return month_day{__lhs, __rhs};
2299
+ }
2300
+
2301
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month_day operator/(const day& __lhs, const month& __rhs) noexcept
2302
+ {
2303
+ return __rhs / __lhs;
2304
+ }
2305
+
2306
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month_day operator/(const month& __lhs, int __rhs) noexcept
2307
+ {
2308
+ return __lhs / day(__rhs);
2309
+ }
2310
+
2311
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month_day operator/(int __lhs, const day& __rhs) noexcept
2312
+ {
2313
+ return month(__lhs) / __rhs;
2314
+ }
2315
+
2316
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month_day operator/(const day& __lhs, int __rhs) noexcept
2317
+ {
2318
+ return month(__rhs) / __lhs;
2319
+ }
2320
+
2321
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator<(const month_day& __lhs, const month_day& __rhs) noexcept
2322
+ {
2323
+ return __lhs.month() != __rhs.month() ? __lhs.month() < __rhs.month() : __lhs.day() < __rhs.day();
2324
+ }
2325
+
2326
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator>(const month_day& __lhs, const month_day& __rhs) noexcept
2327
+ {
2328
+ return __rhs < __lhs;
2329
+ }
2330
+
2331
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator<=(const month_day& __lhs, const month_day& __rhs) noexcept
2332
+ {
2333
+ return !(__rhs < __lhs);
2334
+ }
2335
+
2336
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator>=(const month_day& __lhs, const month_day& __rhs) noexcept
2337
+ {
2338
+ return !(__lhs < __rhs);
2339
+ }
2340
+
2341
+ class month_day_last
2342
+ {
2343
+ private:
2344
+ chrono::month __m;
2345
+
2346
+ public:
2347
+ _LIBCUDACXX_HIDE_FROM_ABI explicit constexpr month_day_last(const chrono::month& __val) noexcept
2348
+ : __m{__val}
2349
+ {}
2350
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::month month() const noexcept
2351
+ {
2352
+ return __m;
2353
+ }
2354
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool ok() const noexcept
2355
+ {
2356
+ return __m.ok();
2357
+ }
2358
+ };
2359
+
2360
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator==(const month_day_last& __lhs, const month_day_last& __rhs) noexcept
2361
+ {
2362
+ return __lhs.month() == __rhs.month();
2363
+ }
2364
+
2365
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator!=(const month_day_last& __lhs, const month_day_last& __rhs) noexcept
2366
+ {
2367
+ return !(__lhs == __rhs);
2368
+ }
2369
+
2370
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator<(const month_day_last& __lhs, const month_day_last& __rhs) noexcept
2371
+ {
2372
+ return __lhs.month() < __rhs.month();
2373
+ }
2374
+
2375
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator>(const month_day_last& __lhs, const month_day_last& __rhs) noexcept
2376
+ {
2377
+ return __rhs < __lhs;
2378
+ }
2379
+
2380
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator<=(const month_day_last& __lhs, const month_day_last& __rhs) noexcept
2381
+ {
2382
+ return !(__rhs < __lhs);
2383
+ }
2384
+
2385
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator>=(const month_day_last& __lhs, const month_day_last& __rhs) noexcept
2386
+ {
2387
+ return !(__lhs < __rhs);
2388
+ }
2389
+
2390
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month_day_last operator/(const month& __lhs, last_spec) noexcept
2391
+ {
2392
+ return month_day_last{__lhs};
2393
+ }
2394
+
2395
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month_day_last operator/(last_spec, const month& __rhs) noexcept
2396
+ {
2397
+ return month_day_last{__rhs};
2398
+ }
2399
+
2400
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month_day_last operator/(int __lhs, last_spec) noexcept
2401
+ {
2402
+ return month_day_last{month(__lhs)};
2403
+ }
2404
+
2405
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month_day_last operator/(last_spec, int __rhs) noexcept
2406
+ {
2407
+ return month_day_last{month(__rhs)};
2408
+ }
2409
+
2410
+ class month_weekday
2411
+ {
2412
+ private:
2413
+ chrono::month __m;
2414
+ chrono::weekday_indexed __wdi;
2415
+
2416
+ public:
2417
+ _CCCL_HIDE_FROM_ABI month_weekday() = default;
2418
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month_weekday(const chrono::month& __mval,
2419
+ const chrono::weekday_indexed& __wdival) noexcept
2420
+ : __m{__mval}
2421
+ , __wdi{__wdival}
2422
+ {}
2423
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::month month() const noexcept
2424
+ {
2425
+ return __m;
2426
+ }
2427
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::weekday_indexed weekday_indexed() const noexcept
2428
+ {
2429
+ return __wdi;
2430
+ }
2431
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool ok() const noexcept
2432
+ {
2433
+ return __m.ok() && __wdi.ok();
2434
+ }
2435
+ };
2436
+
2437
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator==(const month_weekday& __lhs, const month_weekday& __rhs) noexcept
2438
+ {
2439
+ return __lhs.month() == __rhs.month() && __lhs.weekday_indexed() == __rhs.weekday_indexed();
2440
+ }
2441
+
2442
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator!=(const month_weekday& __lhs, const month_weekday& __rhs) noexcept
2443
+ {
2444
+ return !(__lhs == __rhs);
2445
+ }
2446
+
2447
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month_weekday operator/(const month& __lhs, const weekday_indexed& __rhs) noexcept
2448
+ {
2449
+ return month_weekday{__lhs, __rhs};
2450
+ }
2451
+
2452
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month_weekday operator/(int __lhs, const weekday_indexed& __rhs) noexcept
2453
+ {
2454
+ return month_weekday{month(__lhs), __rhs};
2455
+ }
2456
+
2457
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month_weekday operator/(const weekday_indexed& __lhs, const month& __rhs) noexcept
2458
+ {
2459
+ return month_weekday{__rhs, __lhs};
2460
+ }
2461
+
2462
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month_weekday operator/(const weekday_indexed& __lhs, int __rhs) noexcept
2463
+ {
2464
+ return month_weekday{month(__rhs), __lhs};
2465
+ }
2466
+
2467
+ class month_weekday_last
2468
+ {
2469
+ chrono::month __m;
2470
+ chrono::weekday_last __wdl;
2471
+
2472
+ public:
2473
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month_weekday_last(
2474
+ const chrono::month& __mval, const chrono::weekday_last& __wdlval) noexcept
2475
+ : __m{__mval}
2476
+ , __wdl{__wdlval}
2477
+ {}
2478
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::month month() const noexcept
2479
+ {
2480
+ return __m;
2481
+ }
2482
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::weekday_last weekday_last() const noexcept
2483
+ {
2484
+ return __wdl;
2485
+ }
2486
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool ok() const noexcept
2487
+ {
2488
+ return __m.ok() && __wdl.ok();
2489
+ }
2490
+ };
2491
+
2492
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
2493
+ operator==(const month_weekday_last& __lhs, const month_weekday_last& __rhs) noexcept
2494
+ {
2495
+ return __lhs.month() == __rhs.month() && __lhs.weekday_last() == __rhs.weekday_last();
2496
+ }
2497
+
2498
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
2499
+ operator!=(const month_weekday_last& __lhs, const month_weekday_last& __rhs) noexcept
2500
+ {
2501
+ return !(__lhs == __rhs);
2502
+ }
2503
+
2504
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month_weekday_last operator/(const month& __lhs, const weekday_last& __rhs) noexcept
2505
+ {
2506
+ return month_weekday_last{__lhs, __rhs};
2507
+ }
2508
+
2509
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month_weekday_last operator/(int __lhs, const weekday_last& __rhs) noexcept
2510
+ {
2511
+ return month_weekday_last{month(__lhs), __rhs};
2512
+ }
2513
+
2514
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month_weekday_last operator/(const weekday_last& __lhs, const month& __rhs) noexcept
2515
+ {
2516
+ return month_weekday_last{__rhs, __lhs};
2517
+ }
2518
+
2519
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr month_weekday_last operator/(const weekday_last& __lhs, int __rhs) noexcept
2520
+ {
2521
+ return month_weekday_last{month(__rhs), __lhs};
2522
+ }
2523
+
2524
+ class year_month
2525
+ {
2526
+ chrono::year __y;
2527
+ chrono::month __m;
2528
+
2529
+ public:
2530
+ _CCCL_HIDE_FROM_ABI year_month() = default;
2531
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month(const chrono::year& __yval, const chrono::month& __mval) noexcept
2532
+ : __y{__yval}
2533
+ , __m{__mval}
2534
+ {}
2535
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::year year() const noexcept
2536
+ {
2537
+ return __y;
2538
+ }
2539
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::month month() const noexcept
2540
+ {
2541
+ return __m;
2542
+ }
2543
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month& operator+=(const months& __dm) noexcept
2544
+ {
2545
+ this->__m += __dm;
2546
+ return *this;
2547
+ }
2548
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month& operator-=(const months& __dm) noexcept
2549
+ {
2550
+ this->__m -= __dm;
2551
+ return *this;
2552
+ }
2553
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month& operator+=(const years& __dy) noexcept
2554
+ {
2555
+ this->__y += __dy;
2556
+ return *this;
2557
+ }
2558
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month& operator-=(const years& __dy) noexcept
2559
+ {
2560
+ this->__y -= __dy;
2561
+ return *this;
2562
+ }
2563
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool ok() const noexcept
2564
+ {
2565
+ return __y.ok() && __m.ok();
2566
+ }
2567
+ };
2568
+
2569
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month operator/(const year& __y, const month& __m) noexcept
2570
+ {
2571
+ return year_month{__y, __m};
2572
+ }
2573
+
2574
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month operator/(const year& __y, int __m) noexcept
2575
+ {
2576
+ return year_month{__y, month(__m)};
2577
+ }
2578
+
2579
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator==(const year_month& __lhs, const year_month& __rhs) noexcept
2580
+ {
2581
+ return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month();
2582
+ }
2583
+
2584
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator!=(const year_month& __lhs, const year_month& __rhs) noexcept
2585
+ {
2586
+ return !(__lhs == __rhs);
2587
+ }
2588
+
2589
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator<(const year_month& __lhs, const year_month& __rhs) noexcept
2590
+ {
2591
+ return __lhs.year() != __rhs.year() ? __lhs.year() < __rhs.year() : __lhs.month() < __rhs.month();
2592
+ }
2593
+
2594
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator>(const year_month& __lhs, const year_month& __rhs) noexcept
2595
+ {
2596
+ return __rhs < __lhs;
2597
+ }
2598
+
2599
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator<=(const year_month& __lhs, const year_month& __rhs) noexcept
2600
+ {
2601
+ return !(__rhs < __lhs);
2602
+ }
2603
+
2604
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator>=(const year_month& __lhs, const year_month& __rhs) noexcept
2605
+ {
2606
+ return !(__lhs < __rhs);
2607
+ }
2608
+
2609
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month operator+(const year_month& __lhs, const months& __rhs) noexcept
2610
+ {
2611
+ int __dmi = static_cast<int>(static_cast<unsigned>(__lhs.month())) - 1 + __rhs.count();
2612
+ const int __dy = (__dmi >= 0 ? __dmi : __dmi - 11) / 12;
2613
+ __dmi = __dmi - __dy * 12 + 1;
2614
+ return (__lhs.year() + years(__dy)) / month(static_cast<unsigned>(__dmi));
2615
+ }
2616
+
2617
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month operator+(const months& __lhs, const year_month& __rhs) noexcept
2618
+ {
2619
+ return __rhs + __lhs;
2620
+ }
2621
+
2622
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month operator+(const year_month& __lhs, const years& __rhs) noexcept
2623
+ {
2624
+ return (__lhs.year() + __rhs) / __lhs.month();
2625
+ }
2626
+
2627
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month operator+(const years& __lhs, const year_month& __rhs) noexcept
2628
+ {
2629
+ return __rhs + __lhs;
2630
+ }
2631
+
2632
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr months operator-(const year_month& __lhs, const year_month& __rhs) noexcept
2633
+ {
2634
+ return (__lhs.year() - __rhs.year())
2635
+ + months(static_cast<unsigned>(__lhs.month()) - static_cast<unsigned>(__rhs.month()));
2636
+ }
2637
+
2638
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month operator-(const year_month& __lhs, const months& __rhs) noexcept
2639
+ {
2640
+ return __lhs + -__rhs;
2641
+ }
2642
+
2643
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month operator-(const year_month& __lhs, const years& __rhs) noexcept
2644
+ {
2645
+ return __lhs + -__rhs;
2646
+ }
2647
+
2648
+ class year_month_day_last;
2649
+
2650
+ class year_month_day
2651
+ {
2652
+ private:
2653
+ chrono::year __y;
2654
+ chrono::month __m;
2655
+ chrono::day __d;
2656
+
2657
+ public:
2658
+ _CCCL_HIDE_FROM_ABI year_month_day() = default;
2659
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day(
2660
+ const chrono::year& __yval, const chrono::month& __mval, const chrono::day& __dval) noexcept
2661
+ : __y{__yval}
2662
+ , __m{__mval}
2663
+ , __d{__dval}
2664
+ {}
2665
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day(const year_month_day_last& __ymdl) noexcept;
2666
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day(const sys_days& __sysd) noexcept
2667
+ : year_month_day(__from_days(__sysd.time_since_epoch()))
2668
+ {}
2669
+ _LIBCUDACXX_HIDE_FROM_ABI explicit constexpr year_month_day(const local_days& __locd) noexcept
2670
+ : year_month_day(__from_days(__locd.time_since_epoch()))
2671
+ {}
2672
+
2673
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day& operator+=(const months& __dm) noexcept;
2674
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day& operator-=(const months& __dm) noexcept;
2675
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day& operator+=(const years& __dy) noexcept;
2676
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day& operator-=(const years& __dy) noexcept;
2677
+
2678
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::year year() const noexcept
2679
+ {
2680
+ return __y;
2681
+ }
2682
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::month month() const noexcept
2683
+ {
2684
+ return __m;
2685
+ }
2686
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::day day() const noexcept
2687
+ {
2688
+ return __d;
2689
+ }
2690
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr operator sys_days() const noexcept
2691
+ {
2692
+ return sys_days{__to_days()};
2693
+ }
2694
+ _LIBCUDACXX_HIDE_FROM_ABI explicit constexpr operator local_days() const noexcept
2695
+ {
2696
+ return local_days{__to_days()};
2697
+ }
2698
+
2699
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool ok() const noexcept;
2700
+
2701
+ _LIBCUDACXX_HIDE_FROM_ABI static constexpr year_month_day __from_days(days __d) noexcept;
2702
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr days __to_days() const noexcept;
2703
+ };
2704
+
2705
+ // https://howardhinnant.github.io/date_algorithms.html#civil_from_days
2706
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day year_month_day::__from_days(days __d) noexcept
2707
+ {
2708
+ static_assert(std::numeric_limits<unsigned>::digits >= 18, "");
2709
+ static_assert(std::numeric_limits<int>::digits >= 20, "");
2710
+ const int __z = __d.count() + 719468;
2711
+ const int __era = (__z >= 0 ? __z : __z - 146096) / 146097;
2712
+ const unsigned __doe = static_cast<unsigned>(__z - __era * 146097); // [0, 146096]
2713
+ const unsigned __yoe = (__doe - __doe / 1460 + __doe / 36524 - __doe / 146096) / 365; // [0, 399]
2714
+ const int __yr = static_cast<int>(__yoe) + __era * 400;
2715
+ const unsigned __doy = __doe - (365 * __yoe + __yoe / 4 - __yoe / 100); // [0, 365]
2716
+ const unsigned __mp = (5 * __doy + 2) / 153; // [0, 11]
2717
+ const unsigned __dy = __doy - (153 * __mp + 2) / 5 + 1; // [1, 31]
2718
+ const unsigned __mth = __mp + static_cast<unsigned>(__mp < 10 ? 3 : -9); // [1, 12]
2719
+ return year_month_day{chrono::year{__yr + (__mth <= 2)}, chrono::month{__mth}, chrono::day{__dy}};
2720
+ }
2721
+
2722
+ // https://howardhinnant.github.io/date_algorithms.html#days_from_civil
2723
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr days year_month_day::__to_days() const noexcept
2724
+ {
2725
+ static_assert(std::numeric_limits<unsigned>::digits >= 18, "");
2726
+ static_assert(std::numeric_limits<int>::digits >= 20, "");
2727
+
2728
+ // nvcc doesn't allow ODR using constexpr globals. Therefore,
2729
+ // make a temporary initialized from the global
2730
+ auto constexpr __Feb = February;
2731
+ const int __yr = static_cast<int>(__y) - (__m <= __Feb);
2732
+ const unsigned __mth = static_cast<unsigned>(__m);
2733
+ const unsigned __dy = static_cast<unsigned>(__d);
2734
+
2735
+ const int __era = (__yr >= 0 ? __yr : __yr - 399) / 400;
2736
+ const unsigned __yoe = static_cast<unsigned>(__yr - __era * 400); // [0, 399]
2737
+ const unsigned __doy =
2738
+ static_cast<unsigned>((153 * (__mth + static_cast<unsigned>(__mth > 2 ? -3 : 9)) + 2) / 5 + __dy - 1); // [0, 365]
2739
+ const unsigned __doe = __yoe * 365 + __yoe / 4 - __yoe / 100 + __doy; // [0, 146096]
2740
+ return days{__era * 146097 + static_cast<int>(__doe) - 719468};
2741
+ }
2742
+
2743
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator==(const year_month_day& __lhs, const year_month_day& __rhs) noexcept
2744
+ {
2745
+ return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month() && __lhs.day() == __rhs.day();
2746
+ }
2747
+
2748
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator!=(const year_month_day& __lhs, const year_month_day& __rhs) noexcept
2749
+ {
2750
+ return !(__lhs == __rhs);
2751
+ }
2752
+
2753
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator<(const year_month_day& __lhs, const year_month_day& __rhs) noexcept
2754
+ {
2755
+ if (__lhs.year() < __rhs.year())
2756
+ {
2757
+ return true;
2758
+ }
2759
+ if (__lhs.year() > __rhs.year())
2760
+ {
2761
+ return false;
2762
+ }
2763
+ if (__lhs.month() < __rhs.month())
2764
+ {
2765
+ return true;
2766
+ }
2767
+ if (__lhs.month() > __rhs.month())
2768
+ {
2769
+ return false;
2770
+ }
2771
+ return __lhs.day() < __rhs.day();
2772
+ }
2773
+
2774
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator>(const year_month_day& __lhs, const year_month_day& __rhs) noexcept
2775
+ {
2776
+ return __rhs < __lhs;
2777
+ }
2778
+
2779
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator<=(const year_month_day& __lhs, const year_month_day& __rhs) noexcept
2780
+ {
2781
+ return !(__rhs < __lhs);
2782
+ }
2783
+
2784
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool operator>=(const year_month_day& __lhs, const year_month_day& __rhs) noexcept
2785
+ {
2786
+ return !(__lhs < __rhs);
2787
+ }
2788
+
2789
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day operator/(const year_month& __lhs, const day& __rhs) noexcept
2790
+ {
2791
+ return year_month_day{__lhs.year(), __lhs.month(), __rhs};
2792
+ }
2793
+
2794
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day operator/(const year_month& __lhs, int __rhs) noexcept
2795
+ {
2796
+ return __lhs / day(__rhs);
2797
+ }
2798
+
2799
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day operator/(const year& __lhs, const month_day& __rhs) noexcept
2800
+ {
2801
+ return __lhs / __rhs.month() / __rhs.day();
2802
+ }
2803
+
2804
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day operator/(int __lhs, const month_day& __rhs) noexcept
2805
+ {
2806
+ return year(__lhs) / __rhs;
2807
+ }
2808
+
2809
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day operator/(const month_day& __lhs, const year& __rhs) noexcept
2810
+ {
2811
+ return __rhs / __lhs;
2812
+ }
2813
+
2814
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day operator/(const month_day& __lhs, int __rhs) noexcept
2815
+ {
2816
+ return year(__rhs) / __lhs;
2817
+ }
2818
+
2819
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day operator+(const year_month_day& __lhs, const months& __rhs) noexcept
2820
+ {
2821
+ return (__lhs.year() / __lhs.month() + __rhs) / __lhs.day();
2822
+ }
2823
+
2824
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day operator+(const months& __lhs, const year_month_day& __rhs) noexcept
2825
+ {
2826
+ return __rhs + __lhs;
2827
+ }
2828
+
2829
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day operator-(const year_month_day& __lhs, const months& __rhs) noexcept
2830
+ {
2831
+ return __lhs + -__rhs;
2832
+ }
2833
+
2834
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day operator+(const year_month_day& __lhs, const years& __rhs) noexcept
2835
+ {
2836
+ return (__lhs.year() + __rhs) / __lhs.month() / __lhs.day();
2837
+ }
2838
+
2839
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day operator+(const years& __lhs, const year_month_day& __rhs) noexcept
2840
+ {
2841
+ return __rhs + __lhs;
2842
+ }
2843
+
2844
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day operator-(const year_month_day& __lhs, const years& __rhs) noexcept
2845
+ {
2846
+ return __lhs + -__rhs;
2847
+ }
2848
+
2849
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day& year_month_day::operator+=(const months& __dm) noexcept
2850
+ {
2851
+ *this = *this + __dm;
2852
+ return *this;
2853
+ }
2854
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day& year_month_day::operator-=(const months& __dm) noexcept
2855
+ {
2856
+ *this = *this - __dm;
2857
+ return *this;
2858
+ }
2859
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day& year_month_day::operator+=(const years& __dy) noexcept
2860
+ {
2861
+ *this = *this + __dy;
2862
+ return *this;
2863
+ }
2864
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day& year_month_day::operator-=(const years& __dy) noexcept
2865
+ {
2866
+ *this = *this - __dy;
2867
+ return *this;
2868
+ }
2869
+
2870
+ class year_month_day_last
2871
+ {
2872
+ private:
2873
+ chrono::year __y;
2874
+ chrono::month_day_last __mdl;
2875
+
2876
+ public:
2877
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day_last(const year& __yval, const month_day_last& __mdlval) noexcept
2878
+ : __y{__yval}
2879
+ , __mdl{__mdlval}
2880
+ {}
2881
+
2882
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day_last& operator+=(const months& __m) noexcept;
2883
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day_last& operator-=(const months& __m) noexcept;
2884
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day_last& operator+=(const years& __y) noexcept;
2885
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day_last& operator-=(const years& __y) noexcept;
2886
+
2887
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::year year() const noexcept
2888
+ {
2889
+ return __y;
2890
+ }
2891
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::month month() const noexcept
2892
+ {
2893
+ return __mdl.month();
2894
+ }
2895
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::month_day_last month_day_last() const noexcept
2896
+ {
2897
+ return __mdl;
2898
+ }
2899
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::day day() const noexcept;
2900
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr operator sys_days() const noexcept
2901
+ {
2902
+ return sys_days{year() / month() / day()};
2903
+ }
2904
+ _LIBCUDACXX_HIDE_FROM_ABI explicit constexpr operator local_days() const noexcept
2905
+ {
2906
+ return local_days{year() / month() / day()};
2907
+ }
2908
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool ok() const noexcept
2909
+ {
2910
+ return __y.ok() && __mdl.ok();
2911
+ }
2912
+ };
2913
+
2914
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::day year_month_day_last::day() const noexcept
2915
+ {
2916
+ constexpr chrono::day __d[] = {
2917
+ chrono::day(31),
2918
+ chrono::day(28),
2919
+ chrono::day(31),
2920
+ chrono::day(30),
2921
+ chrono::day(31),
2922
+ chrono::day(30),
2923
+ chrono::day(31),
2924
+ chrono::day(31),
2925
+ chrono::day(30),
2926
+ chrono::day(31),
2927
+ chrono::day(30),
2928
+ chrono::day(31)};
2929
+
2930
+ // nvcc doesn't allow ODR using constexpr globals. Therefore,
2931
+ // make a temporary initialized from the global
2932
+ auto constexpr __Feb = February;
2933
+ return month() != __Feb || !__y.is_leap() ? __d[static_cast<unsigned>(month()) - 1] : chrono::day{29};
2934
+ }
2935
+
2936
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
2937
+ operator==(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept
2938
+ {
2939
+ return __lhs.year() == __rhs.year() && __lhs.month_day_last() == __rhs.month_day_last();
2940
+ }
2941
+
2942
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
2943
+ operator!=(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept
2944
+ {
2945
+ return !(__lhs == __rhs);
2946
+ }
2947
+
2948
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
2949
+ operator<(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept
2950
+ {
2951
+ if (__lhs.year() < __rhs.year())
2952
+ {
2953
+ return true;
2954
+ }
2955
+ if (__lhs.year() > __rhs.year())
2956
+ {
2957
+ return false;
2958
+ }
2959
+ return __lhs.month_day_last() < __rhs.month_day_last();
2960
+ }
2961
+
2962
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
2963
+ operator>(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept
2964
+ {
2965
+ return __rhs < __lhs;
2966
+ }
2967
+
2968
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
2969
+ operator<=(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept
2970
+ {
2971
+ return !(__rhs < __lhs);
2972
+ }
2973
+
2974
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
2975
+ operator>=(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept
2976
+ {
2977
+ return !(__lhs < __rhs);
2978
+ }
2979
+
2980
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day_last operator/(const year_month& __lhs, last_spec) noexcept
2981
+ {
2982
+ return year_month_day_last{__lhs.year(), month_day_last{__lhs.month()}};
2983
+ }
2984
+
2985
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day_last
2986
+ operator/(const year& __lhs, const month_day_last& __rhs) noexcept
2987
+ {
2988
+ return year_month_day_last{__lhs, __rhs};
2989
+ }
2990
+
2991
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day_last operator/(int __lhs, const month_day_last& __rhs) noexcept
2992
+ {
2993
+ return year_month_day_last{year{__lhs}, __rhs};
2994
+ }
2995
+
2996
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day_last
2997
+ operator/(const month_day_last& __lhs, const year& __rhs) noexcept
2998
+ {
2999
+ return __rhs / __lhs;
3000
+ }
3001
+
3002
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day_last operator/(const month_day_last& __lhs, int __rhs) noexcept
3003
+ {
3004
+ return year{__rhs} / __lhs;
3005
+ }
3006
+
3007
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day_last
3008
+ operator+(const year_month_day_last& __lhs, const months& __rhs) noexcept
3009
+ {
3010
+ return (__lhs.year() / __lhs.month() + __rhs) / last;
3011
+ }
3012
+
3013
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day_last
3014
+ operator+(const months& __lhs, const year_month_day_last& __rhs) noexcept
3015
+ {
3016
+ return __rhs + __lhs;
3017
+ }
3018
+
3019
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day_last
3020
+ operator-(const year_month_day_last& __lhs, const months& __rhs) noexcept
3021
+ {
3022
+ return __lhs + (-__rhs);
3023
+ }
3024
+
3025
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day_last
3026
+ operator+(const year_month_day_last& __lhs, const years& __rhs) noexcept
3027
+ {
3028
+ return year_month_day_last{__lhs.year() + __rhs, __lhs.month_day_last()};
3029
+ }
3030
+
3031
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day_last
3032
+ operator+(const years& __lhs, const year_month_day_last& __rhs) noexcept
3033
+ {
3034
+ return __rhs + __lhs;
3035
+ }
3036
+
3037
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day_last
3038
+ operator-(const year_month_day_last& __lhs, const years& __rhs) noexcept
3039
+ {
3040
+ return __lhs + (-__rhs);
3041
+ }
3042
+
3043
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day_last& year_month_day_last::operator+=(const months& __dm) noexcept
3044
+ {
3045
+ *this = *this + __dm;
3046
+ return *this;
3047
+ }
3048
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day_last& year_month_day_last::operator-=(const months& __dm) noexcept
3049
+ {
3050
+ *this = *this - __dm;
3051
+ return *this;
3052
+ }
3053
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day_last& year_month_day_last::operator+=(const years& __dy) noexcept
3054
+ {
3055
+ *this = *this + __dy;
3056
+ return *this;
3057
+ }
3058
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day_last& year_month_day_last::operator-=(const years& __dy) noexcept
3059
+ {
3060
+ *this = *this - __dy;
3061
+ return *this;
3062
+ }
3063
+
3064
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_day::year_month_day(const year_month_day_last& __ymdl) noexcept
3065
+ : __y{__ymdl.year()}
3066
+ , __m{__ymdl.month()}
3067
+ , __d{__ymdl.day()}
3068
+ {}
3069
+
3070
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool year_month_day::ok() const noexcept
3071
+ {
3072
+ if (!__y.ok() || !__m.ok())
3073
+ {
3074
+ return false;
3075
+ }
3076
+ return chrono::day{1} <= __d && __d <= (__y / __m / last).day();
3077
+ }
3078
+
3079
+ class year_month_weekday
3080
+ {
3081
+ chrono::year __y;
3082
+ chrono::month __m;
3083
+ chrono::weekday_indexed __wdi;
3084
+
3085
+ public:
3086
+ _CCCL_HIDE_FROM_ABI year_month_weekday() = default;
3087
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday(
3088
+ const chrono::year& __yval, const chrono::month& __mval, const chrono::weekday_indexed& __wdival) noexcept
3089
+ : __y{__yval}
3090
+ , __m{__mval}
3091
+ , __wdi{__wdival}
3092
+ {}
3093
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday(const sys_days& __sysd) noexcept
3094
+ : year_month_weekday(__from_days(__sysd.time_since_epoch()))
3095
+ {}
3096
+ _LIBCUDACXX_HIDE_FROM_ABI explicit constexpr year_month_weekday(const local_days& __locd) noexcept
3097
+ : year_month_weekday(__from_days(__locd.time_since_epoch()))
3098
+ {}
3099
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday& operator+=(const months& m) noexcept;
3100
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday& operator-=(const months& m) noexcept;
3101
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday& operator+=(const years& y) noexcept;
3102
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday& operator-=(const years& y) noexcept;
3103
+
3104
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::year year() const noexcept
3105
+ {
3106
+ return __y;
3107
+ }
3108
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::month month() const noexcept
3109
+ {
3110
+ return __m;
3111
+ }
3112
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::weekday weekday() const noexcept
3113
+ {
3114
+ return __wdi.weekday();
3115
+ }
3116
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr unsigned index() const noexcept
3117
+ {
3118
+ return __wdi.index();
3119
+ }
3120
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::weekday_indexed weekday_indexed() const noexcept
3121
+ {
3122
+ return __wdi;
3123
+ }
3124
+
3125
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr operator sys_days() const noexcept
3126
+ {
3127
+ return sys_days{__to_days()};
3128
+ }
3129
+ _LIBCUDACXX_HIDE_FROM_ABI explicit constexpr operator local_days() const noexcept
3130
+ {
3131
+ return local_days{__to_days()};
3132
+ }
3133
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool ok() const noexcept
3134
+ {
3135
+ if (!__y.ok() || !__m.ok() || !__wdi.ok())
3136
+ {
3137
+ return false;
3138
+ }
3139
+ // TODO: make sure it's a valid date
3140
+ return true;
3141
+ }
3142
+
3143
+ _LIBCUDACXX_HIDE_FROM_ABI static constexpr year_month_weekday __from_days(days __d) noexcept;
3144
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr days __to_days() const noexcept;
3145
+ };
3146
+
3147
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday year_month_weekday::__from_days(days __d) noexcept
3148
+ {
3149
+ const sys_days __sysd{__d};
3150
+ const chrono::weekday __wd = chrono::weekday(__sysd);
3151
+ const year_month_day __ymd = year_month_day(__sysd);
3152
+ return year_month_weekday{__ymd.year(), __ymd.month(), __wd[(static_cast<unsigned>(__ymd.day()) - 1) / 7 + 1]};
3153
+ }
3154
+
3155
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr days year_month_weekday::__to_days() const noexcept
3156
+ {
3157
+ const sys_days __sysd = sys_days(__y / __m / 1);
3158
+ return (__sysd + (__wdi.weekday() - chrono::weekday(__sysd) + days{(__wdi.index() - 1) * 7})).time_since_epoch();
3159
+ }
3160
+
3161
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
3162
+ operator==(const year_month_weekday& __lhs, const year_month_weekday& __rhs) noexcept
3163
+ {
3164
+ return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month()
3165
+ && __lhs.weekday_indexed() == __rhs.weekday_indexed();
3166
+ }
3167
+
3168
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
3169
+ operator!=(const year_month_weekday& __lhs, const year_month_weekday& __rhs) noexcept
3170
+ {
3171
+ return !(__lhs == __rhs);
3172
+ }
3173
+
3174
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday
3175
+ operator/(const year_month& __lhs, const weekday_indexed& __rhs) noexcept
3176
+ {
3177
+ return year_month_weekday{__lhs.year(), __lhs.month(), __rhs};
3178
+ }
3179
+
3180
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday operator/(const year& __lhs, const month_weekday& __rhs) noexcept
3181
+ {
3182
+ return year_month_weekday{__lhs, __rhs.month(), __rhs.weekday_indexed()};
3183
+ }
3184
+
3185
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday operator/(int __lhs, const month_weekday& __rhs) noexcept
3186
+ {
3187
+ return year(__lhs) / __rhs;
3188
+ }
3189
+
3190
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday operator/(const month_weekday& __lhs, const year& __rhs) noexcept
3191
+ {
3192
+ return __rhs / __lhs;
3193
+ }
3194
+
3195
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday operator/(const month_weekday& __lhs, int __rhs) noexcept
3196
+ {
3197
+ return year(__rhs) / __lhs;
3198
+ }
3199
+
3200
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday
3201
+ operator+(const year_month_weekday& __lhs, const months& __rhs) noexcept
3202
+ {
3203
+ return (__lhs.year() / __lhs.month() + __rhs) / __lhs.weekday_indexed();
3204
+ }
3205
+
3206
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday
3207
+ operator+(const months& __lhs, const year_month_weekday& __rhs) noexcept
3208
+ {
3209
+ return __rhs + __lhs;
3210
+ }
3211
+
3212
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday
3213
+ operator-(const year_month_weekday& __lhs, const months& __rhs) noexcept
3214
+ {
3215
+ return __lhs + (-__rhs);
3216
+ }
3217
+
3218
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday
3219
+ operator+(const year_month_weekday& __lhs, const years& __rhs) noexcept
3220
+ {
3221
+ return year_month_weekday{__lhs.year() + __rhs, __lhs.month(), __lhs.weekday_indexed()};
3222
+ }
3223
+
3224
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday
3225
+ operator+(const years& __lhs, const year_month_weekday& __rhs) noexcept
3226
+ {
3227
+ return __rhs + __lhs;
3228
+ }
3229
+
3230
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday
3231
+ operator-(const year_month_weekday& __lhs, const years& __rhs) noexcept
3232
+ {
3233
+ return __lhs + (-__rhs);
3234
+ }
3235
+
3236
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday& year_month_weekday::operator+=(const months& __dm) noexcept
3237
+ {
3238
+ *this = *this + __dm;
3239
+ return *this;
3240
+ }
3241
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday& year_month_weekday::operator-=(const months& __dm) noexcept
3242
+ {
3243
+ *this = *this - __dm;
3244
+ return *this;
3245
+ }
3246
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday& year_month_weekday::operator+=(const years& __dy) noexcept
3247
+ {
3248
+ *this = *this + __dy;
3249
+ return *this;
3250
+ }
3251
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday& year_month_weekday::operator-=(const years& __dy) noexcept
3252
+ {
3253
+ *this = *this - __dy;
3254
+ return *this;
3255
+ }
3256
+
3257
+ class year_month_weekday_last
3258
+ {
3259
+ private:
3260
+ chrono::year __y;
3261
+ chrono::month __m;
3262
+ chrono::weekday_last __wdl;
3263
+
3264
+ public:
3265
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday_last(
3266
+ const chrono::year& __yval, const chrono::month& __mval, const chrono::weekday_last& __wdlval) noexcept
3267
+ : __y{__yval}
3268
+ , __m{__mval}
3269
+ , __wdl{__wdlval}
3270
+ {}
3271
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday_last& operator+=(const months& __dm) noexcept;
3272
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday_last& operator-=(const months& __dm) noexcept;
3273
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday_last& operator+=(const years& __dy) noexcept;
3274
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday_last& operator-=(const years& __dy) noexcept;
3275
+
3276
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::year year() const noexcept
3277
+ {
3278
+ return __y;
3279
+ }
3280
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::month month() const noexcept
3281
+ {
3282
+ return __m;
3283
+ }
3284
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::weekday weekday() const noexcept
3285
+ {
3286
+ return __wdl.weekday();
3287
+ }
3288
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::weekday_last weekday_last() const noexcept
3289
+ {
3290
+ return __wdl;
3291
+ }
3292
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr operator sys_days() const noexcept
3293
+ {
3294
+ return sys_days{__to_days()};
3295
+ }
3296
+ _LIBCUDACXX_HIDE_FROM_ABI explicit constexpr operator local_days() const noexcept
3297
+ {
3298
+ return local_days{__to_days()};
3299
+ }
3300
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool ok() const noexcept
3301
+ {
3302
+ return __y.ok() && __m.ok() && __wdl.ok();
3303
+ }
3304
+
3305
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr days __to_days() const noexcept;
3306
+ };
3307
+
3308
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr days year_month_weekday_last::__to_days() const noexcept
3309
+ {
3310
+ const sys_days __last = sys_days{__y / __m / last};
3311
+ return (__last - (chrono::weekday{__last} - __wdl.weekday())).time_since_epoch();
3312
+ }
3313
+
3314
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
3315
+ operator==(const year_month_weekday_last& __lhs, const year_month_weekday_last& __rhs) noexcept
3316
+ {
3317
+ return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month() && __lhs.weekday_last() == __rhs.weekday_last();
3318
+ }
3319
+
3320
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool
3321
+ operator!=(const year_month_weekday_last& __lhs, const year_month_weekday_last& __rhs) noexcept
3322
+ {
3323
+ return !(__lhs == __rhs);
3324
+ }
3325
+
3326
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday_last
3327
+ operator/(const year_month& __lhs, const weekday_last& __rhs) noexcept
3328
+ {
3329
+ return year_month_weekday_last{__lhs.year(), __lhs.month(), __rhs};
3330
+ }
3331
+
3332
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday_last
3333
+ operator/(const year& __lhs, const month_weekday_last& __rhs) noexcept
3334
+ {
3335
+ return year_month_weekday_last{__lhs, __rhs.month(), __rhs.weekday_last()};
3336
+ }
3337
+
3338
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday_last
3339
+ operator/(int __lhs, const month_weekday_last& __rhs) noexcept
3340
+ {
3341
+ return year(__lhs) / __rhs;
3342
+ }
3343
+
3344
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday_last
3345
+ operator/(const month_weekday_last& __lhs, const year& __rhs) noexcept
3346
+ {
3347
+ return __rhs / __lhs;
3348
+ }
3349
+
3350
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday_last
3351
+ operator/(const month_weekday_last& __lhs, int __rhs) noexcept
3352
+ {
3353
+ return year(__rhs) / __lhs;
3354
+ }
3355
+
3356
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday_last
3357
+ operator+(const year_month_weekday_last& __lhs, const months& __rhs) noexcept
3358
+ {
3359
+ return (__lhs.year() / __lhs.month() + __rhs) / __lhs.weekday_last();
3360
+ }
3361
+
3362
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday_last
3363
+ operator+(const months& __lhs, const year_month_weekday_last& __rhs) noexcept
3364
+ {
3365
+ return __rhs + __lhs;
3366
+ }
3367
+
3368
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday_last
3369
+ operator-(const year_month_weekday_last& __lhs, const months& __rhs) noexcept
3370
+ {
3371
+ return __lhs + (-__rhs);
3372
+ }
3373
+
3374
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday_last
3375
+ operator+(const year_month_weekday_last& __lhs, const years& __rhs) noexcept
3376
+ {
3377
+ return year_month_weekday_last{__lhs.year() + __rhs, __lhs.month(), __lhs.weekday_last()};
3378
+ }
3379
+
3380
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday_last
3381
+ operator+(const years& __lhs, const year_month_weekday_last& __rhs) noexcept
3382
+ {
3383
+ return __rhs + __lhs;
3384
+ }
3385
+
3386
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday_last
3387
+ operator-(const year_month_weekday_last& __lhs, const years& __rhs) noexcept
3388
+ {
3389
+ return __lhs + (-__rhs);
3390
+ }
3391
+
3392
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday_last&
3393
+ year_month_weekday_last::operator+=(const months& __dm) noexcept
3394
+ {
3395
+ *this = *this + __dm;
3396
+ return *this;
3397
+ }
3398
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday_last&
3399
+ year_month_weekday_last::operator-=(const months& __dm) noexcept
3400
+ {
3401
+ *this = *this - __dm;
3402
+ return *this;
3403
+ }
3404
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday_last&
3405
+ year_month_weekday_last::operator+=(const years& __dy) noexcept
3406
+ {
3407
+ *this = *this + __dy;
3408
+ return *this;
3409
+ }
3410
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr year_month_weekday_last&
3411
+ year_month_weekday_last::operator-=(const years& __dy) noexcept
3412
+ {
3413
+ *this = *this - __dy;
3414
+ return *this;
3415
+ }
3416
+
3417
+ [[nodiscard]] _LIBCUDACXX_HIDE_FROM_ABI constexpr unsigned
3418
+ __hh_mm_ss_width(uint64_t __n, uint64_t __d = 10, unsigned __w = 0)
3419
+ {
3420
+ if (__n >= 2 && __d != 0 && __w < 19)
3421
+ {
3422
+ return 1 + __hh_mm_ss_width(__n, __d % __n * 10, __w + 1);
3423
+ }
3424
+ return 0;
3425
+ }
3426
+
3427
+ template <class _Duration>
3428
+ class hh_mm_ss
3429
+ {
3430
+ private:
3431
+ static_assert(__is_duration<_Duration>::value, "template parameter of hh_mm_ss must be a std::chrono::duration");
3432
+ using __CommonType = typename common_type<_Duration, chrono::seconds>::type;
3433
+
3434
+ _LIBCUDACXX_HIDE_FROM_ABI static constexpr uint64_t __pow10(unsigned __exp)
3435
+ {
3436
+ uint64_t __ret = 1;
3437
+ for (unsigned __i = 0; __i < __exp; ++__i)
3438
+ {
3439
+ __ret *= 10U;
3440
+ }
3441
+ return __ret;
3442
+ }
3443
+
3444
+ public:
3445
+ static unsigned constexpr fractional_width =
3446
+ __hh_mm_ss_width(__CommonType::period::den) < 19 ? __hh_mm_ss_width(__CommonType::period::den) : 6u;
3447
+ using precision = duration<typename __CommonType::rep, ratio<1, __pow10(fractional_width)>>;
3448
+
3449
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr hh_mm_ss() noexcept
3450
+ : hh_mm_ss{_Duration::zero()}
3451
+ {}
3452
+
3453
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr explicit hh_mm_ss(_Duration __d) noexcept
3454
+ : __is_neg(__d < _Duration(0))
3455
+ , __h(duration_cast<chrono::hours>(abs(__d)))
3456
+ , __m(duration_cast<chrono::minutes>(abs(__d) - hours()))
3457
+ , __s(duration_cast<chrono::seconds>(abs(__d) - hours() - minutes()))
3458
+ , __f(duration_cast<precision>(abs(__d) - hours() - minutes() - seconds()))
3459
+ {}
3460
+
3461
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool is_negative() const noexcept
3462
+ {
3463
+ return __is_neg;
3464
+ }
3465
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::hours hours() const noexcept
3466
+ {
3467
+ return __h;
3468
+ }
3469
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::minutes minutes() const noexcept
3470
+ {
3471
+ return __m;
3472
+ }
3473
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::seconds seconds() const noexcept
3474
+ {
3475
+ return __s;
3476
+ }
3477
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr precision subseconds() const noexcept
3478
+ {
3479
+ return __f;
3480
+ }
3481
+
3482
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr precision to_duration() const noexcept
3483
+ {
3484
+ auto __dur = __h + __m + __s + __f;
3485
+ return __is_neg ? -__dur : __dur;
3486
+ }
3487
+
3488
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr explicit operator precision() const noexcept
3489
+ {
3490
+ return to_duration();
3491
+ }
3492
+
3493
+ private:
3494
+ bool __is_neg;
3495
+ chrono::hours __h;
3496
+ chrono::minutes __m;
3497
+ chrono::seconds __s;
3498
+ precision __f;
3499
+ };
3500
+
3501
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool is_am(const hours& __h) noexcept
3502
+ {
3503
+ return __h >= hours(0) && __h < hours(12);
3504
+ }
3505
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr bool is_pm(const hours& __h) noexcept
3506
+ {
3507
+ return __h >= hours(12) && __h < hours(24);
3508
+ }
3509
+
3510
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr hours make12(const hours& __h) noexcept
3511
+ {
3512
+ if (__h == hours(0))
3513
+ {
3514
+ return hours(12);
3515
+ }
3516
+ else if (__h <= hours(12))
3517
+ {
3518
+ return __h;
3519
+ }
3520
+ else
3521
+ {
3522
+ return __h - hours(12);
3523
+ }
3524
+ }
3525
+
3526
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr hours make24(const hours& __h, bool __is_pm) noexcept
3527
+ {
3528
+ if (__is_pm)
3529
+ {
3530
+ return __h == hours(12) ? __h : __h + hours(12);
3531
+ }
3532
+ else
3533
+ {
3534
+ return __h == hours(12) ? hours(0) : __h;
3535
+ }
3536
+ }
3537
+
3538
+ } // namespace chrono
3539
+
3540
+ // GCC 5 and 6 warn (and then error) on us using the standard reserved UDL names,
3541
+ // but have no way of disabling that. Use the system_header pragma on those GCC versions
3542
+ // for the remainder of this file, even if it has been requested to disable the pragma
3543
+ // earlier.
3544
+ #if _CCCL_COMPILER(GCC, >=, 5) && _CCCL_COMPILER(GCC, <, 7)
3545
+ # pragma GCC system_header
3546
+ #endif
3547
+
3548
+ _CCCL_DIAG_PUSH
3549
+ _CCCL_DIAG_SUPPRESS_GCC("-Wliteral-suffix")
3550
+ _CCCL_DIAG_SUPPRESS_CLANG("-Wuser-defined-literals")
3551
+ _CCCL_DIAG_SUPPRESS_NVHPC(lit_suffix_no_underscore)
3552
+ _CCCL_DIAG_SUPPRESS_MSVC(4455) // literal suffix identifiers that do not start with an underscore are reserved
3553
+ _CCCL_NV_DIAG_SUPPRESS(2506) // a user-provided literal suffix must begin with "_"
3554
+
3555
+ // Suffixes for duration literals [time.duration.literals]
3556
+ inline namespace literals
3557
+ {
3558
+ inline namespace chrono_literals
3559
+ {
3560
+
3561
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::hours operator""h(unsigned long long __h)
3562
+ {
3563
+ return chrono::hours(static_cast<chrono::hours::rep>(__h));
3564
+ }
3565
+
3566
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::duration<_LIBCUDACXX_CHRONO_LITERAL_INTERNAL_T, ratio<3600, 1>>
3567
+ operator""h(long double __h)
3568
+ {
3569
+ return chrono::duration<_LIBCUDACXX_CHRONO_LITERAL_INTERNAL_T, ratio<3600, 1>>(__h);
3570
+ }
3571
+
3572
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::minutes operator""min(unsigned long long __m)
3573
+ {
3574
+ return chrono::minutes(static_cast<chrono::minutes::rep>(__m));
3575
+ }
3576
+
3577
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::duration<_LIBCUDACXX_CHRONO_LITERAL_INTERNAL_T, ratio<60, 1>>
3578
+ operator""min(long double __m)
3579
+ {
3580
+ return chrono::duration<_LIBCUDACXX_CHRONO_LITERAL_INTERNAL_T, ratio<60, 1>>(__m);
3581
+ }
3582
+
3583
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::seconds operator""s(unsigned long long __s)
3584
+ {
3585
+ return chrono::seconds(static_cast<chrono::seconds::rep>(__s));
3586
+ }
3587
+
3588
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::duration<_LIBCUDACXX_CHRONO_LITERAL_INTERNAL_T> operator""s(long double __s)
3589
+ {
3590
+ return chrono::duration<_LIBCUDACXX_CHRONO_LITERAL_INTERNAL_T>(__s);
3591
+ }
3592
+
3593
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::milliseconds operator""ms(unsigned long long __ms)
3594
+ {
3595
+ return chrono::milliseconds(static_cast<chrono::milliseconds::rep>(__ms));
3596
+ }
3597
+
3598
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::duration<_LIBCUDACXX_CHRONO_LITERAL_INTERNAL_T, milli>
3599
+ operator""ms(long double __ms)
3600
+ {
3601
+ return chrono::duration<_LIBCUDACXX_CHRONO_LITERAL_INTERNAL_T, milli>(__ms);
3602
+ }
3603
+
3604
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::microseconds operator""us(unsigned long long __us)
3605
+ {
3606
+ return chrono::microseconds(static_cast<chrono::microseconds::rep>(__us));
3607
+ }
3608
+
3609
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::duration<_LIBCUDACXX_CHRONO_LITERAL_INTERNAL_T, micro>
3610
+ operator""us(long double __us)
3611
+ {
3612
+ return chrono::duration<_LIBCUDACXX_CHRONO_LITERAL_INTERNAL_T, micro>(__us);
3613
+ }
3614
+
3615
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::nanoseconds operator""ns(unsigned long long __ns)
3616
+ {
3617
+ return chrono::nanoseconds(static_cast<chrono::nanoseconds::rep>(__ns));
3618
+ }
3619
+
3620
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::duration<_LIBCUDACXX_CHRONO_LITERAL_INTERNAL_T, nano>
3621
+ operator""ns(long double __ns)
3622
+ {
3623
+ return chrono::duration<_LIBCUDACXX_CHRONO_LITERAL_INTERNAL_T, nano>(__ns);
3624
+ }
3625
+
3626
+ #if _LIBCUDACXX_HAS_CXX20_CHRONO_LITERALS()
3627
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::day operator""d(unsigned long long __d) noexcept
3628
+ {
3629
+ return chrono::day(static_cast<unsigned>(__d));
3630
+ }
3631
+
3632
+ _LIBCUDACXX_HIDE_FROM_ABI constexpr chrono::year operator""y(unsigned long long __y) noexcept
3633
+ {
3634
+ return chrono::year(static_cast<int>(__y));
3635
+ }
3636
+ #endif // _LIBCUDACXX_HAS_CXX20_CHRONO_LITERALS()
3637
+ } // namespace chrono_literals
3638
+ } // namespace literals
3639
+
3640
+ _CCCL_NV_DIAG_DEFAULT(2506)
3641
+ _CCCL_DIAG_POP
3642
+
3643
+ namespace chrono
3644
+ { // hoist the literals into namespace std::chrono
3645
+ using namespace literals::chrono_literals;
3646
+ }
3647
+
3648
+ _LIBCUDACXX_END_NAMESPACE_STD
3649
+
3650
+ #ifndef __cuda_std__
3651
+
3652
+ _LIBCUDACXX_BEGIN_NAMESPACE_FILESYSTEM
3653
+ struct _FilesystemClock
3654
+ {
3655
+ # if _CCCL_HAS_INT128()
3656
+ using rep = __int128_t;
3657
+ using period = nano;
3658
+ # else // ^^^ _CCCL_HAS_INT128() ^^^ / vvv !_CCCL_HAS_INT128() vvv
3659
+ using rep = long long;
3660
+ using period = nano;
3661
+ # endif // !_CCCL_HAS_INT128()
3662
+
3663
+ using duration = chrono::duration<rep, period>;
3664
+ using time_point = chrono::time_point<_FilesystemClock>;
3665
+
3666
+ _CCCL_VISIBILITY_DEFAULT static constexpr const bool is_steady = false;
3667
+
3668
+ _LIBCUDACXX_HIDE_FROM_ABI static time_point now() noexcept;
3669
+
3670
+ _LIBCUDACXX_HIDE_FROM_ABI static time_t to_time_t(const time_point& __t) noexcept
3671
+ {
3672
+ using __secs = chrono::duration<rep>;
3673
+ return time_t(chrono::duration_cast<__secs>(__t.time_since_epoch()).count());
3674
+ }
3675
+
3676
+ _LIBCUDACXX_HIDE_FROM_ABI static time_point from_time_t(time_t __t) noexcept
3677
+ {
3678
+ using __secs = chrono::duration<rep>;
3679
+ return time_point(__secs(__t));
3680
+ }
3681
+ };
3682
+ _LIBCUDACXX_END_NAMESPACE_FILESYSTEM
3683
+ #endif // __cuda_std__
3684
+
3685
+ _CCCL_NV_DIAG_DEFAULT(cuda_demote_unsupported_floating_point)
3686
+
3687
+ #include <cuda/std/__cccl/epilogue.h>
3688
+
3689
+ #endif // _LIBCUDACXX_CHRONO