llvm-project/llvm/test/CodeGen
Craig Topper 5baef6353e [RISCV] Initial infrastructure for code generation of the RISC-V V-extension
The companion RFC (http://lists.llvm.org/pipermail/llvm-dev/2020-October/145850.html) gives lots of details on the overall strategy, but we summarize it here:

LLVM IR involving vector types is going to be selected using pseudo instructions (only MachineInstr). These pseudo instructions contain dummy operands to represent the vector type being operated and the vector length for the operation.
These two dummy operands, as set by instruction selection, will be used by the custom inserter to prepend every operation with an appropriate vsetvli instruction that ensures the vector architecture is properly configured for the operation. Not in this patch: later passes will remove the redundant vsetvli instructions.
Register classes of tuples of vector registers are used to represent vector register groups (LMUL > 1).
Those pseudos are eventually lowered into the actual instructions when emitting the MCInsts.
About the patch:

Because there is a bit of initial infrastructure required, this is the minimal patch that allows us to select instructions for 3 LLVM IR instructions: load, add and store vectors of integers. LLVM IR operations have "whole-vector" semantics (as in they generate values for all the elements).

Later patches will extend the information represented in TableGen.

Authored-by: Roger Ferrer Ibanez <rofirrim@gmail.com>
Co-Authored-by: Evandro Menezes <evandro.menezes@sifive.com>
Co-Authored-by: Craig Topper <craig.topper@sifive.com>

Differential Revision: https://reviews.llvm.org/D89449
2020-12-04 11:39:30 -08:00
..
AArch64 [AArch64] Add custom lowering for ISD::ABS 2020-12-04 10:45:31 -08:00
AMDGPU [AMDGPU] Extend and reorganize memory legalizer tests 2020-12-03 19:36:33 +00:00
ARC
ARM Attempt to fix buildbot after rG993eaf2d69d8 2020-12-04 22:10:36 +03:00
AVR [AVR] Optimize the 16-bit NEGW pseudo instruction 2020-11-17 17:51:58 +08:00
BPF [BPF] support atomic instructions 2020-12-03 07:38:00 -08:00
Generic [NewPM] Support --print-before/after in NPM 2020-12-03 16:52:14 -08:00
Hexagon [Hexagon] Improve check for HVX types 2020-11-27 13:33:10 -06:00
Inputs
Lanai
MIR OpaquePtr: Bulk update tests to use typed sret 2020-11-20 17:58:26 -05:00
MSP430 OpaquePtr: Bulk update tests to use typed sret 2020-11-20 17:58:26 -05:00
Mips Revert "[FastISel] Flush local value map on ever instruction" and dependent patches 2020-12-01 14:26:23 -08:00
NVPTX OpaquePtr: Bulk update tests to use typed byval 2020-11-20 14:00:46 -05:00
PowerPC [PowerPC] Regenerate p10-vector-rotate.ll 2020-12-04 15:33:01 +00:00
RISCV [RISCV] Initial infrastructure for code generation of the RISC-V V-extension 2020-12-04 11:39:30 -08:00
SPARC OpaquePtr: Bulk update tests to use typed sret 2020-11-20 17:58:26 -05:00
SystemZ OpaquePtr: Bulk update tests to use typed sret 2020-11-20 17:58:26 -05:00
Thumb OpaquePtr: Update more tests to use typed sret 2020-11-20 20:08:43 -05:00
Thumb2 [Thumb2] Regenerate predicated-liveout-unknown-lanes.ll test 2020-12-02 18:00:42 +00:00
VE [VE] Add vfadd, vfsub, vfmul, and vfdiv intrinsic instructions 2020-12-04 21:58:51 +09:00
WebAssembly OpaquePtr: Bulk update tests to use typed sret 2020-11-20 17:58:26 -05:00
WinCFGuard [CFGuard] Add address-taken IAT tables and delay-load support 2020-11-17 18:24:45 -08:00
WinEH
X86 [X86] LowerRotate - enable custom lowering of ROTL/ROTR vXi16 on VBMI2 targets. 2020-12-04 12:16:59 +00:00
XCore OpaquePtr: Bulk update tests to use typed byval 2020-11-20 14:00:46 -05:00