[libc-commits] [libc] [libc][docs] add `builtin_compatibility` (PR #200539)
via libc-commits
libc-commits at lists.llvm.org
Fri May 29 18:56:41 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libc
Author: hulxv (hulxv)
<details>
<summary>Changes</summary>
Document the built-in compatibility for different GCC versions since GCC-5
---
Patch is 58.08 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/200539.diff
2 Files Affected:
- (added) libc/docs/dev/builtin_compatibility.rst (+349)
- (modified) libc/docs/dev/index.rst (+1)
``````````diff
diff --git a/libc/docs/dev/builtin_compatibility.rst b/libc/docs/dev/builtin_compatibility.rst
new file mode 100644
index 0000000000000..b29e9a9213708
--- /dev/null
+++ b/libc/docs/dev/builtin_compatibility.rst
@@ -0,0 +1,349 @@
+.. _builtin_compatibility:
+
+==============================
+GCC Compatibility of Builtins
+==============================
+
+LLVM-libc is written with Clang as the reference compiler but is expected to
+build under GCC as well. Many headers reach for compiler intrinsics
+(``__builtin_*``) for fast paths and for IEEE-754 semantics. Not every
+``__builtin_*`` exists in every compiler. a large family is Clang-only,
+and several others were added in specific GCC releases. This page records
+which builtins the libc code base references today and the minimum GCC
+basepoint that ships each one.
+
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| Builtin | gcc-5 | gcc-6 | gcc-7 | gcc-8 | gcc-9 | gcc-10 | gcc-11 | gcc-12 | gcc-13 | gcc-14 | gcc-15 | gcc-16 | gcc-17 |
++========================================+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+
+| ``__builtin_aarch64_get_fpcr`` | | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_aarch64_get_fpsr`` | | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_aarch64_set_fpcr`` | | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_aarch64_set_fpsr`` | | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_aarch64_wsr64`` | | | | | | | | | | | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_abs`` | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_addc`` | | | | | | | | | | | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_addcb`` | | | | | | | | | | | | | |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_addcl`` | | | | | | | | | | | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_addcll`` | | | | | | | | | | | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_addcs`` | | | | | | | | | | | | | |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_add_overflow`` | | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_addressof`` | | | | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_align_down`` | | | | | | | | | | | | | |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_align_up`` | | | | | | | | | | | | | |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_alloca`` | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_amdgcn_ldexp`` | | | | | | | | | | | | | |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_amdgcn_ldexpf`` | | | | | | | | | | | | | |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_amdgcn_s_sendmsg`` | | | | | | | | | | | | | |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_amdgcn_s_sleep`` | | | | | | | | | | | | | |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_amdgcn_workitem_id_x`` | | | | | | | | | | | | | |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_arm_get_fpscr`` | | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_arm_isb`` | | | | | | | | | | | | | |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_arm_set_fpscr`` | | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_arm_wsr64`` | | | | | | | | | | | | | |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_assume`` | | | | | | | | | | | | | |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_assume_aligned`` | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_bcmp`` | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_bit_cast`` | | | | | | | | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_bswap16`` | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_bswap32`` | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_bswap64`` | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_ceil`` | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_ceilf`` | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_clear_padding`` | | | | | | | | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_clz`` | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_clzg`` | | | | | | | | | | | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_clzl`` | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_clzll`` | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_clzs`` | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_complex`` | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_convertvector`` | | | | | | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_copysign`` | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_copysignf`` | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_copysignf16`` | | | | | | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_ctz`` | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_ctzg`` | | | | | | | | | | | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_ctzl`` | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_ctzll`` | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_ctzs`` | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_elementwise_abs`` | | | | | | | | | | | | | |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_elementwise_canonicalize`` | | | | | | | | | | | | | |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_elementwise_ceil`` | | | | | | | | | | | | | |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_elementwise_copysign`` | | | | | | | | | | | | | |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
+| ``__builtin_elementwise_floor`` | | | | | | | | | | | | | |
++----------------------------------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+-------...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/200539
More information about the libc-commits
mailing list