[libc++] Implement P0154R1 (Hardware inference size)

`__GCC_CONSTRUCTIVE_SIZE` and `__GCC_DESTRUCTIVE_SIZE` are available since GCC 12. I'm assuming clang will also implement these for compatability with libstdc++.

Reviewed By: ldionne, #libc

Spies: h-vetinari, libcxx-commits, arichardson

Differential Revision: https://reviews.llvm.org/D122276

NOKEYCHECK=True
GitOrigin-RevId: 56a33ba3dd2bfd411e77946871814e98d92ec2fa
diff --git a/docs/FeatureTestMacroTable.rst b/docs/FeatureTestMacroTable.rst
index 020ef2a..f615b40 100644
--- a/docs/FeatureTestMacroTable.rst
+++ b/docs/FeatureTestMacroTable.rst
@@ -100,7 +100,7 @@
     ------------------------------------------------- -----------------
     ``__cpp_lib_gcd_lcm``                             ``201606L``
     ------------------------------------------------- -----------------
-    ``__cpp_lib_hardware_interference_size``          *unimplemented*
+    ``__cpp_lib_hardware_interference_size``          ``201703L``
     ------------------------------------------------- -----------------
     ``__cpp_lib_has_unique_object_representations``   ``201606L``
     ------------------------------------------------- -----------------
diff --git a/docs/ReleaseNotes.rst b/docs/ReleaseNotes.rst
index c5d1907..c7f9cb3 100644
--- a/docs/ReleaseNotes.rst
+++ b/docs/ReleaseNotes.rst
@@ -45,6 +45,7 @@
 - P2216R3 (std::format improvements)
 - P0174R2 (Deprecating Vestigial Library Parts in C++17)
 - N4190 (Removing auto_ptr, random_shuffle(), And Old <functional> Stuff)
+- P0154R1 (Hardware inference size)
 
 - Marked the following papers as "Complete" (note that some of those might have
   been implemented in a previous release but not marked as such):
diff --git a/docs/Status/Cxx17.rst b/docs/Status/Cxx17.rst
index 26bf0ad..96c010c 100644
--- a/docs/Status/Cxx17.rst
+++ b/docs/Status/Cxx17.rst
@@ -42,7 +42,7 @@
 
    .. [#note-P0067] P0067: ``std::(to|from)_chars`` for integrals has been available since version 7.0. ``std::to_chars`` for ``float`` and ``double`` since version 14.0 ``std::to_chars`` for ``long double`` uses the implementation for ``double``.
    .. [#note-P0607] P0607: The parts of P0607 that are not done are the ``<regex>`` bits.
-
+   .. [#note-P0154] P0154: This is currently not implemented for clang because clang does not implement the required macros.
 
 .. _issues-status-cxx17:
 
diff --git a/docs/Status/Cxx17Papers.csv b/docs/Status/Cxx17Papers.csv
index 2a996ce..84904ac 100644
--- a/docs/Status/Cxx17Papers.csv
+++ b/docs/Status/Cxx17Papers.csv
@@ -35,7 +35,7 @@
 "`P0185R1 <https://wg21.link/P0185R1>`__","LWG","Adding [nothrow-]swappable traits","Jacksonville","|Complete|","3.9"
 "`P0253R1 <https://wg21.link/P0253R1>`__","LWG","Fixing a design mistake in the searchers interface","Jacksonville","|Complete|","3.9"
 "`P0025R0 <https://wg21.link/P0025R0>`__","LWG","An algorithm to ""clamp"" a value between a pair of boundary values","Jacksonville","|Complete|","3.9"
-"`P0154R1 <https://wg21.link/P0154R1>`__","LWG","constexpr std::hardware_{constructive,destructive}_interference_size","Jacksonville","",""
+"`P0154R1 <https://wg21.link/P0154R1>`__","LWG","constexpr std::hardware_{constructive,destructive}_interference_size","Jacksonville","|Partial| [#note-P0154]_","15.0"
 "`P0030R1 <https://wg21.link/P0030R1>`__","LWG","Proposal to Introduce a 3-Argument Overload to std::hypot","Jacksonville","|Complete|","3.9"
 "`P0031R0 <https://wg21.link/P0031R0>`__","LWG","A Proposal to Add Constexpr Modifiers to reverse_iterator, move_iterator, array and Range Access","Jacksonville","|Complete|","4.0"
 "`P0272R1 <https://wg21.link/P0272R1>`__","LWG","Give ``std::string``\  a non-const ``.data()``\  member function","Jacksonville","|Complete|","3.9"