llvm-project/llvm/lib/Target/RISCV
Fraser Cormack 15141cd115 [RISCV] Add RVV insertelt/extractelt scalable-vector patterns
Original patch by @rogfer01.

This patch adds support for insertelt and extractelt operations on
scalable vectors.

Special care must be taken on RV32 when dealing with i64 vectors as
there are no straightforward ways to insert a 64-bit element without a
register of that size. To that end, both are custom-lowered to different
sequences.

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/D94615
2021-01-25 22:03:52 +00:00
..
AsmParser [RISCV] Add attribute support for all supported extensions 2021-01-25 08:58:53 +00:00
Disassembler [RISCV] Merge Utils library into MCTargetDesc 2021-01-14 11:47:30 -08:00
MCTargetDesc [RISCV] Add attribute support for all supported extensions 2021-01-25 08:58:53 +00:00
TargetInfo llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
CMakeLists.txt [RISCV] Merge Utils library into MCTargetDesc 2021-01-14 11:47:30 -08:00
RISCV.h [RISCV] Merge Utils library into MCTargetDesc 2021-01-14 11:47:30 -08:00
RISCV.td [RISCV] Fix name of Zba extension (NFC) 2021-01-24 21:02:34 +00:00
RISCVAsmPrinter.cpp [RISCV] Add -mtune support 2020-10-16 13:55:08 +08:00
RISCVCallLowering.cpp [GlobalISel] Base implementation for sret demotion. 2021-01-06 10:30:50 +05:30
RISCVCallLowering.h [GlobalISel] Base implementation for sret demotion. 2021-01-06 10:30:50 +05:30
RISCVCallingConv.td
RISCVCleanupVSETVLI.cpp [RISCV] Add a pass to remove duplicate VSETVLI instructions in a basic block. 2020-12-11 10:35:37 -08:00
RISCVExpandAtomicPseudoInsts.cpp [RISCV] Fix RISCVInstrInfo::getInstSizeInBytes for atomics pseudos 2020-07-15 10:50:55 +01:00
RISCVExpandPseudoInsts.cpp [RISCV] Define vmclr.m/vmset.m intrinsics. 2020-12-28 18:57:17 -08:00
RISCVFrameLowering.cpp [RISCV] Do not grow the stack a second time when we need to realign the stack 2021-01-09 16:51:09 +00:00
RISCVFrameLowering.h [SVE] Return StackOffset for TargetFrameLowering::getFrameIndexReference. 2020-11-05 11:02:18 +00:00
RISCVISelDAGToDAG.cpp [RISCV] Make the code in MatchSLLIUW ignore the lower bits of the AND mask where the shift has guaranteed zeros. 2021-01-24 00:34:45 -08:00
RISCVISelDAGToDAG.h [RISCV] Implement vsoxseg/vsuxseg intrinsics. 2021-01-23 08:54:56 +08:00
RISCVISelLowering.cpp [RISCV] Add RVV insertelt/extractelt scalable-vector patterns 2021-01-25 22:03:52 +00:00
RISCVISelLowering.h [RISCV] Add RVV insertelt/extractelt scalable-vector patterns 2021-01-25 22:03:52 +00:00
RISCVInstrFormats.td [RISCV] Update V instructions constraints to conform to v1.0 2021-01-22 01:15:55 +08:00
RISCVInstrFormatsC.td
RISCVInstrFormatsV.td [RISCV] New vector load/store in V extension v1.0 2021-01-22 07:30:09 +08:00
RISCVInstrInfo.cpp [RISCV] Merge Utils library into MCTargetDesc 2021-01-14 11:47:30 -08:00
RISCVInstrInfo.h [RISCV] Don't include CodeGen layer files in MC layer 2020-11-12 07:45:38 -08:00
RISCVInstrInfo.td [RISCV] Use bitsLE instead of strict == MVT::i32 in assertsexti32 and assertzexti32. 2021-01-24 13:58:14 -08:00
RISCVInstrInfoA.td RISCV: Avoid GlobalISel build break in a future patch 2020-07-13 14:01:57 -04:00
RISCVInstrInfoB.td [RISCV] Use SRLIWPat in the PACKUW pattern. 2021-01-24 10:41:58 -08:00
RISCVInstrInfoC.td [RISCV] Add way to mark CompressPats that should only be used for compressing. 2021-01-20 09:20:15 -08:00
RISCVInstrInfoD.td [RISCV][LegalizeDAG] Expand SETO and SETUO comparisons. Teach LegalizeDAG to expand SETUO expansion when UNE isn't legal. 2020-12-10 09:15:52 -08:00
RISCVInstrInfoF.td [RISCV][LegalizeDAG] Expand SETO and SETUO comparisons. Teach LegalizeDAG to expand SETUO expansion when UNE isn't legal. 2020-12-10 09:15:52 -08:00
RISCVInstrInfoM.td [RISCV] Don't remove (and X, 0xffffffff) from inputs when matching RISCVISD::DIVUW/REMUW to 64-bit DIVU/REMU. 2020-11-26 23:15:41 -08:00
RISCVInstrInfoV.td [RISCV] New vector load/store in V extension v1.0 2021-01-22 07:30:09 +08:00
RISCVInstrInfoVPseudos.td [RISCV] Implement vsoxseg/vsuxseg intrinsics. 2021-01-23 08:54:56 +08:00
RISCVInstrInfoVSDPatterns.td [RISCV] Add RVV insertelt/extractelt scalable-vector patterns 2021-01-25 22:03:52 +00:00
RISCVInstrInfoZfh.td [RISCV][LegalizeDAG] Expand SETO and SETUO comparisons. Teach LegalizeDAG to expand SETUO expansion when UNE isn't legal. 2020-12-10 09:15:52 -08:00
RISCVInstructionSelector.cpp RISCV: Avoid GlobalISel build break in a future patch 2020-07-13 14:01:57 -04:00
RISCVLegalizerInfo.cpp
RISCVLegalizerInfo.h
RISCVMCInstLower.cpp [RISCV] Add a VL output to vleff intrinsics. 2021-01-21 17:19:58 -08:00
RISCVMachineFunctionInfo.h [Alignment][NFC] Migrate MachineFrameInfo::CreateStackObject to Align 2020-07-01 07:28:11 +00:00
RISCVMergeBaseOffset.cpp [RISCV] Support Zfh half-precision floating-point extension. 2020-12-03 09:16:33 +08:00
RISCVRegisterBankInfo.cpp
RISCVRegisterBankInfo.h
RISCVRegisterBanks.td
RISCVRegisterInfo.cpp [RISCV] Define the remaining vector fixed-point arithmetic intrinsics. 2020-12-20 22:57:07 -08:00
RISCVRegisterInfo.h
RISCVRegisterInfo.td [RISCV] Correct DWARF number for vector registers. 2021-01-22 11:33:42 +08:00
RISCVSchedRocket.td [RISCV] Fix formatting (NFC) 2020-09-25 18:15:04 -05:00
RISCVSchedSiFive7.td [RISCV] Use the commercial name for scheduling model (NFC) 2020-10-23 16:33:27 -05:00
RISCVSchedule.td [RISCV] Fix formatting (NFC) 2020-09-25 18:15:04 -05:00
RISCVSubtarget.cpp [RISCV] Add -mtune support 2020-10-16 13:55:08 +08:00
RISCVSubtarget.h [RISCV] Add Zba feature and move add.uw and slli.uw to it. 2021-01-22 12:49:10 -08:00
RISCVSystemOperands.td [RISCV] Enable the use of the old mucounteren name 2020-08-17 13:11:49 +01:00
RISCVTargetMachine.cpp [RISCV] Merge Utils library into MCTargetDesc 2021-01-14 11:47:30 -08:00
RISCVTargetMachine.h [RISCV] Address clang-tidy warnings in RISCVTargetMachine. NFC. 2020-12-18 21:50:55 +00:00
RISCVTargetObjectFile.cpp [Target] Use Align in TargetLoweringObjectFile::getSectionForConstant. 2020-05-21 15:23:29 -07:00
RISCVTargetObjectFile.h [Target] Use Align in TargetLoweringObjectFile::getSectionForConstant. 2020-05-21 15:23:29 -07:00
RISCVTargetTransformInfo.cpp [RISCV] Merge Utils library into MCTargetDesc 2021-01-14 11:47:30 -08:00
RISCVTargetTransformInfo.h [ARM][TTI] Prevents constants in a min(max) or max(min) pattern from being hoisted when in a loop 2020-09-22 11:54:10 +00:00