[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