]> granicus.if.org Git - clang/commitdiff
Add missing __builtin_bitreverse8
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Wed, 23 Mar 2016 22:14:43 +0000 (22:14 +0000)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Wed, 23 Mar 2016 22:14:43 +0000 (22:14 +0000)
Also add documentation for bitreverse builtins

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@264203 91177308-0d34-0410-b5e6-96231b3b80d8

docs/LanguageExtensions.rst
include/clang/Basic/Builtins.def
lib/CodeGen/CGBuiltin.cpp
test/CodeGen/builtins.c

index baca28e8dc716006f885b3c19f80b96ac3b06028..1f2bc2938702d40b72f325cec2e18a6a28e95efc 100644 (file)
@@ -1505,6 +1505,33 @@ C-style cast applied to each element of the first argument.
 
 Query for this feature with ``__has_builtin(__builtin_convertvector)``.
 
+``__builtin_bitreverse``
+---------------------
+
+* ``__builtin_bitreverse8``
+* ``__builtin_bitreverse16``
+* ``__builtin_bitreverse32``
+* ``__builtin_bitreverse64``
+
+**Syntax**:
+
+.. code-block:: c++
+     __builtin_bitreverse32(x)
+
+**Examples**:
+
+.. code-block:: c++
+      uint8_t rev_x = __builtin_bitreverse8(x);
+      uint16_t rev_x = __builtin_bitreverse16(x);
+      uint32_t rev_y = __builtin_bitreverse32(y);
+      uint64_t rev_z = __builtin_bitreverse64(z);
+
+**Description**:
+
+The '``__builtin_bitreverse``' family of builtins is used to reverse
+the bitpattern of an integer value; for example ``0b10110110`` becomes
+``0b01101101``.
+
 ``__builtin_unreachable``
 -------------------------
 
index 21a90ade05ac5012749a8b82f49dc0bd6abf2dd0..7a440cc708215af7bb0d2ec68a375f6dd19a72ec 100644 (file)
@@ -409,6 +409,7 @@ BUILTIN(__builtin_bswap16, "UsUs", "nc")
 BUILTIN(__builtin_bswap32, "UiUi", "nc")
 BUILTIN(__builtin_bswap64, "ULLiULLi", "nc")
 
+BUILTIN(__builtin_bitreverse8, "UcUc", "nc")
 BUILTIN(__builtin_bitreverse16, "UsUs", "nc")
 BUILTIN(__builtin_bitreverse32, "UiUi", "nc")
 BUILTIN(__builtin_bitreverse64, "ULLiULLi", "nc")
index bebd78c2937be67031406cbc16e11fb3427233dd..e9eea1921dc92faf47d6c181af3af4e16cf7be43 100644 (file)
@@ -681,6 +681,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const FunctionDecl *FD,
   case Builtin::BI__builtin_bswap64: {
     return RValue::get(emitUnaryBuiltin(*this, E, Intrinsic::bswap));
   }
+  case Builtin::BI__builtin_bitreverse8:
   case Builtin::BI__builtin_bitreverse16:
   case Builtin::BI__builtin_bitreverse32:
   case Builtin::BI__builtin_bitreverse64: {
index 62741ee8034a02dde7136f5a24a56877e3dd9cc1..ac6edcef39e5f404e08d54f3b52502a418fd5207 100644 (file)
@@ -117,9 +117,11 @@ int main() {
   P(bswap32, (N));
   P(bswap64, (N));
 
+  // CHECK: @llvm.bitreverse.i8
   // CHECK: @llvm.bitreverse.i16
   // CHECK: @llvm.bitreverse.i32
   // CHECK: @llvm.bitreverse.i64
+  P(bitreverse8, (N));
   P(bitreverse16, (N));
   P(bitreverse32, (N));
   P(bitreverse64, (N));