summaryrefslogtreecommitdiffstats
path: root/clang/docs
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2015-09-02 20:01:30 +0000
committerSanjay Patel <spatel@rotateright.com>2015-09-02 20:01:30 +0000
commita24296b459660924f4c9f50321c0c0bf6ca1ee89 (patch)
treef976b50ecdfe9b8bc14b2ce8a6c30905277146f8 /clang/docs
parentd428e203a01aa22a2f7d5c5f2954caed7f4888a6 (diff)
downloadbcm5719-llvm-a24296b459660924f4c9f50321c0c0bf6ca1ee89.tar.gz
bcm5719-llvm-a24296b459660924f4c9f50321c0c0bf6ca1ee89.zip
add __builtin_unpredictable and convert to metadata
This patch depends on r246688 (D12341). The goal is to make LLVM generate different code for these functions for a target that has cheap branches (see PR23827 for more details): int foo(); int normal(int x, int y, int z) { if (x != 0 && y != 0) return foo(); return 1; } int crazy(int x, int y) { if (__builtin_unpredictable(x != 0 && y != 0)) return foo(); return 1; } Differential Revision: http://reviews.llvm.org/D12458 llvm-svn: 246699
Diffstat (limited to 'clang/docs')
-rw-r--r--clang/docs/LanguageExtensions.rst27
1 files changed, 27 insertions, 0 deletions
diff --git a/clang/docs/LanguageExtensions.rst b/clang/docs/LanguageExtensions.rst
index ca2e177b368..af235808cd4 100644
--- a/clang/docs/LanguageExtensions.rst
+++ b/clang/docs/LanguageExtensions.rst
@@ -1540,6 +1540,33 @@ takes no arguments and produces a void result.
Query for this feature with ``__has_builtin(__builtin_unreachable)``.
+``__builtin_unpredictable``
+---------------------------
+
+``__builtin_unpredictable`` is used to indicate that a branch condition is
+unpredictable by hardware mechanisms such as branch prediction logic.
+
+**Syntax**:
+
+.. code-block:: c++
+
+ __builtin_unpredictable(long long)
+
+**Example of use**:
+
+.. code-block:: c++
+
+ if (__builtin_unpredictable(x > 0)) {
+ foo();
+ }
+
+**Description**:
+
+The ``__builtin_unpredictable()`` builtin is expected to be used with control
+flow conditions such as in ``if`` and ``switch`` statements.
+
+Query for this feature with ``__has_builtin(__builtin_unpredictable)``.
+
``__sync_swap``
---------------
OpenPOWER on IntegriCloud