Go to file
Alex Bradbury 2146e8fb1e [RISCV] Constant materialisation for RV64I
This commit introduces support for materialising 64-bit constants for RV64I,
making use of the RISCVMatInt::generateInstSeq helper in order to share logic
for immediate materialisation with the MC layer (where it's used for the li
pseudoinstruction).

test/CodeGen/RISCV/imm.ll is updated to test RV64, and gains new 64-bit
constant tests. It would be preferable if anyext constant returns were sign
rather than zero extended (see PR39092). This patch simply adds an explicit
signext to the returns in imm.ll.

Further optimisations for constant materialisation are possible, most notably
for mask-like values which can be generated my loading -1 and shifting right.
A future patch will standardise on the C++ codepath for immediate selection on
RV32 as well as RV64, and then add further such optimisations to
RISCVMatInt::generateInstSeq in order to benefit both RV32 and RV64 for
codegen and li expansion.

Differential Revision: https://reviews.llvm.org/D52962

llvm-svn: 347042
2018-11-16 10:14:16 +00:00
clang [clang] - Simplify tools::SplitDebugName. 2018-11-16 07:59:24 +00:00
clang-tools-extra [clangd] Fix a compiler warning and test crashes caused in rL347038. 2018-11-16 09:41:14 +00:00
compiler-rt [compiler-rt] Use exact spelling when building for default target 2018-11-16 04:14:23 +00:00
debuginfo-tests Set config.lit_tools_dir, which is needed by lit.llvm.initialize. 2018-11-06 21:54:27 +00:00
libclc r600: Add datalayout to image builtin implementation 2018-11-10 21:43:40 +00:00
libcxx Disable filesystem benchmark when libstdc++ doesn't support it 2018-11-15 19:53:43 +00:00
libcxxabi [CMake] Passthrough CFLAGS when checking the compiler-rt path 2018-11-14 00:09:26 +00:00
libunwind [CMake] Passthrough CFLAGS when checking the compiler-rt path 2018-11-14 00:09:26 +00:00
lld [ELF][MIPS] Use MIPS R6 `sigrie` as a trap instruction 2018-11-16 05:30:47 +00:00
lldb Don't use uniform initialization syntax. 2018-11-16 03:16:27 +00:00
llgo Update copyright year to 2018. 2018-06-18 12:22:17 +00:00
llvm [RISCV] Constant materialisation for RV64I 2018-11-16 10:14:16 +00:00
openmp Fix for bugzilla https://bugs.llvm.org/show_bug.cgi?id=39137. 2018-11-14 13:49:41 +00:00
parallel-libs Update copyright year to 2018. 2018-06-18 12:22:17 +00:00
polly [CMake] Fix generation of exported targets in build directory 2018-11-06 15:18:17 +00:00
README.md Update the project name in README.md 2018-10-19 00:03:01 +00:00

README.md

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.