llvm-project/llvm
Jingu Kang 73a196a11c Recommit "[AArch64] Split bitmask immediate of bitwise AND operation"
This reverts the revert commit f85d8a5bed
with bug fixes.

Original message:

    MOVi32imm + ANDWrr ==> ANDWri + ANDWri
    MOVi64imm + ANDXrr ==> ANDXri + ANDXri

    The mov pseudo instruction could be expanded to multiple mov instructions later.
    In this case, try to split the constant operand of mov instruction into two
    bitmask immediates. It makes only two AND instructions intead of multiple
    mov + and instructions.

    Added a peephole optimization pass on MIR level to implement it.

    Differential Revision: https://reviews.llvm.org/D109963
2021-09-28 15:26:29 +01:00
..
benchmarks
bindings [NFC][C API] Make LLVMSetInstrParamAlignment's index param type LLVMAttributeIndex 2021-09-07 15:13:45 -07:00
cmake [CMake] Add detection for the mold linker in AddLLVM.cmake. 2021-09-28 17:46:52 +05:30
docs Fix URLs to the prod/staging buildbot master in the doc 2021-09-28 06:18:26 +00:00
examples [ORC] Fix the LLJITWithRemoteDebugging example. 2021-09-27 20:06:00 -07:00
include [SLP]Improve vectorization of phi nodes by trying wider vectors. 2021-09-28 07:20:36 -07:00
lib Recommit "[AArch64] Split bitmask immediate of bitwise AND operation" 2021-09-28 15:26:29 +01:00
projects
resources
runtimes
test Recommit "[AArch64] Split bitmask immediate of bitwise AND operation" 2021-09-28 15:26:29 +01:00
tools clang-format 2021-09-27 18:02:06 -07:00
unittests [IR] Change the default value of InstertElement to poison (1/4) 2021-09-28 22:29:16 +09:00
utils [gn build] Port 864b206796 2021-09-28 10:58:48 +00:00
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt [llvm] Disable LLVM_ENABLE_PER_TARGET_RUNTIME_DIR by default on Arm Linux 2021-09-27 09:03:26 +00:00
CODE_OWNERS.TXT
CREDITS.TXT
LICENSE.TXT
README.txt
RELEASE_TESTERS.TXT
configure
llvm.spec.in

README.txt

The LLVM Compiler Infrastructure
================================

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.