llvm-project/llvm
Fraser Cormack b02eab9058 [RISCV] Add scalable vector icmp ISel patterns
Original patch by @rogfer01.

The RVV integer comparison instructions are defined in such a way that
many LLVM operations are defined by using the "opposite" comparison
instruction and swapping the operands. This is done in this patch in
most cases, except for the mappings where the immediate range must be
adjusted to accomodate:

    va < i --> vmsle{u}.vi vd, va, i-1, vm
    va >= i --> vmsgt{u}.vi vd, va, i-1, vm

That is left for future optimization; this patch supports all operations
but in the case of the missing mappings the immediate will be moved to
a scalar register first.

Since there are so many condition codes and operand cases to check, it
was decided to reduce the test burden by only testing the "vscale x 8"
vector types.

Authored-by: Roger Ferrer Ibanez <rofirrim@gmail.com>
Co-Authored-by: Fraser Cormack <fraser@codeplay.com>

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D94168
2021-01-09 20:54:34 +00:00
..
benchmarks
bindings [Go] Fix bindings/go/llvm/IRBindings.cpp 2020-12-16 10:09:58 -08:00
cmake [CMake] Fix incorrect rpath for tests if LLVM_LOCAL_RPATH isn't set 2021-01-08 21:24:18 +02:00
docs [SimplifyCFG] Keep !dgb metadata of moved instruction, if they match. 2021-01-09 19:15:16 +00:00
examples [NFC] Reduce include files dependency and AA header cleanup (part 2). 2020-12-17 14:04:48 +03:00
include [SCEV] Remove unused getOrInsertCanonicalInductionVariable (NFC) 2021-01-09 09:24:56 -08:00
lib [RISCV] Add scalable vector icmp ISel patterns 2021-01-09 20:54:34 +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 [RISCV] Add scalable vector icmp ISel patterns 2021-01-09 20:54:34 +00:00
tools [llvm] Drop unnecessary make_range (NFC) 2021-01-09 09:25:00 -08:00
unittests [WebAssembly] Update basic EH instructions for the new spec 2021-01-09 01:48:06 -08:00
utils [gn build] Make an explicit `use_lld = true` on mac use lld.darwinnew 2021-01-09 14:03:52 -05: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
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.