<div dir="ltr">Thank you!</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, 23 Aug 2020 at 02:55, Simon Pilgrim via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
Author: Simon Pilgrim<br>
Date: 2020-08-23T10:55:14+01:00<br>
New Revision: f76adc2603f6cc466dd809142388ffb56a1c3e31<br>
<br>
URL: <a href="https://github.com/llvm/llvm-project/commit/f76adc2603f6cc466dd809142388ffb56a1c3e31" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/f76adc2603f6cc466dd809142388ffb56a1c3e31</a><br>
DIFF: <a href="https://github.com/llvm/llvm-project/commit/f76adc2603f6cc466dd809142388ffb56a1c3e31.diff" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/f76adc2603f6cc466dd809142388ffb56a1c3e31.diff</a><br>
<br>
LOG: [docs] Add an initial (non-exhaustive) list of intrinsics that can be used in constant expressions<br>
<br>
As suggested by @rsmith on D86398 - we should try to document the intrinsics that can be used in constexpr<br>
<br>
Added: <br>
<br>
<br>
Modified: <br>
    clang/docs/LanguageExtensions.rst<br>
<br>
Removed: <br>
<br>
<br>
<br>
################################################################################<br>
diff  --git a/clang/docs/LanguageExtensions.rst b/clang/docs/LanguageExtensions.rst<br>
index a431239f887b..970c75ffafee 100644<br>
--- a/clang/docs/LanguageExtensions.rst<br>
+++ b/clang/docs/LanguageExtensions.rst<br>
@@ -3603,3 +3603,76 @@ and alignment as the smallest basic type that can contain them. Types that are l<br>
 than 64 bits are handled in the same way as _int128 is handled; they are conceptually<br>
 treated as struct of register size chunks. They number of chunks are the smallest<br>
 number that can contain the types which does not necessarily mean a power-of-2 size.<br>
+<br>
+Intrinsics Support within Constant Expressions<br>
+==============================================<br>
+<br>
+The following builtin intrinsics can be used in constant expressions:<br>
+<br>
+* ``__builtin_bitreverse8``<br>
+* ``__builtin_bitreverse16``<br>
+* ``__builtin_bitreverse32``<br>
+* ``__builtin_bitreverse64``<br>
+* ``__builtin_bswap16``<br>
+* ``__builtin_bswap32``<br>
+* ``__builtin_bswap64``<br>
+* ``__builtin_clrsb``<br>
+* ``__builtin_clrsbl``<br>
+* ``__builtin_clrsbll``<br>
+* ``__builtin_clz``<br>
+* ``__builtin_clzl``<br>
+* ``__builtin_clzll``<br>
+* ``__builtin_clzs``<br>
+* ``__builtin_ctz``<br>
+* ``__builtin_ctzl``<br>
+* ``__builtin_ctzll``<br>
+* ``__builtin_ctzs``<br>
+* ``__builtin_ffs``<br>
+* ``__builtin_ffsl``<br>
+* ``__builtin_ffsll``<br>
+* ``__builtin_fpclassify``<br>
+* ``__builtin_inf``<br>
+* ``__builtin_isinf``<br>
+* ``__builtin_isinf_sign``<br>
+* ``__builtin_isfinite``<br>
+* ``__builtin_isnan``<br>
+* ``__builtin_isnormal``<br>
+* ``__builtin_nan``<br>
+* ``__builtin_nans``<br>
+* ``__builtin_parity``<br>
+* ``__builtin_parityl``<br>
+* ``__builtin_parityll``<br>
+* ``__builtin_popcount``<br>
+* ``__builtin_popcountl``<br>
+* ``__builtin_popcountll``<br>
+* ``__builtin_rotateleft8``<br>
+* ``__builtin_rotateleft16``<br>
+* ``__builtin_rotateleft32``<br>
+* ``__builtin_rotateleft64``<br>
+* ``__builtin_rotateright8``<br>
+* ``__builtin_rotateright16``<br>
+* ``__builtin_rotateright32``<br>
+* ``__builtin_rotateright64``<br>
+<br>
+The following x86-specific intrinsics can be used in constant expressions:<br>
+<br>
+* ``_bit_scan_forward``<br>
+* ``_bit_scan_reverse``<br>
+* ``__bsfd``<br>
+* ``__bsfq``<br>
+* ``__bsrd``<br>
+* ``__bsrq``<br>
+* ``__bswap``<br>
+* ``__bswapd``<br>
+* ``__bswap64``<br>
+* ``__bswapq``<br>
+* ``_castf32_u32``<br>
+* ``_castf64_u64``<br>
+* ``_castu32_f32``<br>
+* ``_castu64_f64``<br>
+* ``_mm_popcnt_u32``<br>
+* ``_mm_popcnt_u64``<br>
+* ``_popcnt32``<br>
+* ``_popcnt64``<br>
+* ``__popcntd``<br>
+* ``__popcntq``<br>
\ No newline at end of file<br>
<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
</blockquote></div>