1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00
Go to file
Fraser Cormack 1540d39c62 [RISCV] Pattern-match more vector-splatted constants
This patch extends the pattern-matching capability of vector-splatted
constants. When illegally-typed constants are legalized they are
canonically sign-extended to XLenVT. This preserves the sign and allows
us to match simm5. If they were zero-extended for whatever reason we'd
lose that ability: e.g. `(i8 -1) -> (XLenVT 255)` would not be matched
under the current logic.

To address this we first manually sign-extend the splatted constant from
the vector element type to int64_t. This preserves the semantics while
removing any implicitly-truncated bits.

The corresponding logic for uimm5 was not updated, the rationale being
that neither sign- nor zero-extending a legal uimm5 immediate should
change that (unless we expect actual "garbage" upper bits).

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D93837
2020-12-28 07:11:10 +00:00
benchmarks
bindings
cmake
docs [AMDGPU] Use MUBUF instructions for global address space access 2020-12-24 10:13:04 +00:00
examples [NFC] Reduce include files dependency and AA header cleanup (part 2). 2020-12-17 14:04:48 +03:00
include [RS4GC] Lazily set changed flag when folding single entry phis 2020-12-28 10:54:21 +07:00
lib [RISCV] Pattern-match more vector-splatted constants 2020-12-28 07:11:10 +00:00
projects
resources
runtimes [OpenMP] Fixed the issue that CMake variables for OpenMP were not passed through when building OpenMP with LLVM_ENABLE_RUNTIMES 2020-12-20 18:40:12 -05:00
test [InstCombine] use poison as placeholder for undemanded elems 2020-12-28 08:58:15 +09:00
tools [llvm-cov] Use is_contained (NFC) 2020-12-27 09:57:25 -08:00
unittests [ValueTracking] Use m_LogicalAnd/Or to look into conditions 2020-12-28 08:32:45 +09:00
utils [TableGen] Use llvm::erase_if (NFC) 2020-12-26 12:06:26 -08:00
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt Remove Python2 fallback and only advertise Python3 in the doc 2020-12-17 15:40:16 +01:00
CODE_OWNERS.TXT
configure
CREDITS.TXT
LICENSE.TXT
llvm.spec.in
README.txt
RELEASE_TESTERS.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.