llvm-project/llvm
James Molloy 90111f79f9 [SDAG] Introduce a new BITREVERSE node along with a corresponding LLVM intrinsic
Several backends have instructions to reverse the order of bits in an integer. Conceptually matching such patterns is similar to @llvm.bswap, and it was mentioned in http://reviews.llvm.org/D14234 that it would be best if these patterns were matched in InstCombine instead of reimplemented in every different target.

This patch introduces an intrinsic @llvm.bitreverse.i* that operates similarly to @llvm.bswap. For plumbing purposes there is also a new ISD node ISD::BITREVERSE, with simple expansion and promotion support.

The intention is that InstCombine's BSWAP detection logic will be extended to support BITREVERSE too, and @llvm.bitreverse intrinsics emitted (if the backend supports lowering it efficiently).

llvm-svn: 252878
2015-11-12 12:29:09 +00:00
..
autoconf Add AVR backend skeleton 2015-11-12 09:26:44 +00:00
bindings Fix `llvm-config` to adapt to the install environment. 2015-11-09 23:15:38 +00:00
cmake [CMake] Fixing passthrough for variables starting with the sub-project name 2015-11-11 21:54:31 +00:00
docs [SDAG] Introduce a new BITREVERSE node along with a corresponding LLVM intrinsic 2015-11-12 12:29:09 +00:00
examples examples: Remove implicit ilist iterator conversions, NFC 2015-11-07 00:55:46 +00:00
include [SDAG] Introduce a new BITREVERSE node along with a corresponding LLVM intrinsic 2015-11-12 12:29:09 +00:00
lib [SDAG] Introduce a new BITREVERSE node along with a corresponding LLVM intrinsic 2015-11-12 12:29:09 +00:00
projects [CMake] Disable adding the test suite as a projects subdirectory 2015-10-28 18:36:56 +00:00
resources
test [SDAG] Introduce a new BITREVERSE node along with a corresponding LLVM intrinsic 2015-11-12 12:29:09 +00:00
tools [Object, MachO] Mark symbols from DATA and BSS sections as ST_Data 2015-11-12 09:40:29 +00:00
unittests ADT: Avoid relying on UB in ilist_node::getNextNode() 2015-11-11 02:26:42 +00:00
utils Move the enum attributes defined in Attributes.h to a table-gen file. 2015-11-11 20:35:42 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt [CMake] Add support for building the llvm test-suite as part of an LLVM build using clang and lld 2015-11-11 16:14:03 +00:00
CODE_OWNERS.TXT Add myself as the the code owner for the AVR backend 2015-10-28 00:24:54 +00:00
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in
Makefile.rules Create Makefile variables for 'share' and 'libexec' 2015-11-09 16:10:00 +00:00
README.txt Test commit after password reset 2015-11-11 19:24:08 +00:00
configure Add AVR backend skeleton 2015-11-12 09:26:44 +00:00
llvm.spec.in

README.txt

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for LLVM,
a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.