llvm-project/llvm/utils/TableGen
Cullen Rhodes 2ba5d64a80 [IntrinsicEmitter] Support scalable vectors in intrinsics
Summary:
This patch adds support for scalable vectors in intrinsics, enabling
intrinsics such as the following to be defined:

    declare <vscale x 4 x i32> @llvm.something.nxv4i32(<vscale x 4 x i32>)

Support for this is implemented by defining a new type descriptor for
scalable vectors and adding mangling support for scalable vector types
in the name mangling scheme used by 'any' types in intrinsic signatures.

Tests have been added for IRBuilder to test scalable vectors work as
expected when using intrinsics through this interface. This required
implementing an intrinsic that is explicitly defined with scalable
vectors, e.g.  LLVMType<nxv4i32>, an SVE floating-point convert
intrinsic was used for this.  The behaviour of the overloaded type
LLVMScalarOrSameVectorWidth with scalable vectors is tested using the
existing masked load intrinsic. Also added an .ll test to test the
Verifier catches a bad intrinsic argument when passing a fixed-width
predicate (mask) to the masked.load intrinsic where a scalable is
expected.

Patch by Paul Walker

Reviewed By: sdesmalen

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

llvm-svn: 370053
2019-08-27 12:57:09 +00:00
..
AsmMatcherEmitter.cpp [TableGen] Correct comments for end of namespace. NFC 2019-08-25 10:47:30 +00:00
AsmWriterEmitter.cpp [llvm-objdump] Implement -Mreg-names-raw/-std options. 2019-02-26 12:15:14 +00:00
AsmWriterInst.cpp [tablegen] Add locations to many PrintFatalError() calls 2019-02-12 17:36:57 +00:00
AsmWriterInst.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Attributes.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CMakeLists.txt [MCSched] Bind PFM Counters to the CPUs instead of the SchedModel. 2018-10-25 07:44:01 +00:00
CTagsEmitter.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CallingConvEmitter.cpp [tablegen] Add locations to many PrintFatalError() calls 2019-02-12 17:36:57 +00:00
CodeEmitterGen.cpp Use a bit of relaxed constexpr to make FeatureBitset costant intializable 2019-08-24 15:02:44 +00:00
CodeGenDAGPatterns.cpp Retire llvm::less/equal in favor of C++14 std::less<>/equal_to<>. 2019-08-22 17:31:59 +00:00
CodeGenDAGPatterns.h TableGen: Add MinAlignment predicate 2019-07-31 00:14:43 +00:00
CodeGenHwModes.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CodeGenHwModes.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CodeGenInstruction.cpp Allow target to handle STRICT floating-point nodes 2019-06-05 22:33:10 +00:00
CodeGenInstruction.h Allow target to handle STRICT floating-point nodes 2019-06-05 22:33:10 +00:00
CodeGenIntrinsics.h Teach GlobalISelEmitter to treat used iPTRAny operands as pointer operands 2019-08-20 22:04:10 +00:00
CodeGenMapTable.cpp [TableGen] Correct comments for end of namespace. NFC 2019-08-25 10:47:30 +00:00
CodeGenRegisters.cpp Retire llvm::less/equal in favor of C++14 std::less<>/equal_to<>. 2019-08-22 17:31:59 +00:00
CodeGenRegisters.h Retire llvm::less/equal in favor of C++14 std::less<>/equal_to<>. 2019-08-22 17:31:59 +00:00
CodeGenSchedule.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
CodeGenSchedule.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CodeGenTarget.cpp [GlobalISel] Import patterns containing INSERT_SUBREG 2019-08-26 21:38:57 +00:00
CodeGenTarget.h [GlobalISel] Import patterns containing INSERT_SUBREG 2019-08-26 21:38:57 +00:00
DAGISelEmitter.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
DAGISelMatcher.cpp [TableGen] Replace a dyn_cast with isa to avoid an unused variable warning introduced in r355785. NFC 2019-03-11 16:51:37 +00:00
DAGISelMatcher.h TableGen: Support physical register inputs > 255 2019-07-22 15:02:34 +00:00
DAGISelMatcherEmitter.cpp TableGen: Support physical register inputs > 255 2019-07-22 15:02:34 +00:00
DAGISelMatcherGen.cpp [TableGen] Correct comments for end of namespace. NFC 2019-08-25 10:47:30 +00:00
DAGISelMatcherOpt.cpp [SelectionDAG] Add a OPC_CheckChild2CondCode to SelectionDAGISel to remove a MoveChild and MoveParent pair. 2019-02-25 03:11:44 +00:00
DFAPacketizerEmitter.cpp [TableGen] Correct comments for end of namespace. NFC 2019-08-25 10:47:30 +00:00
DisassemblerEmitter.cpp [TableGen] Correct comments for end of namespace. NFC 2019-08-25 10:47:30 +00:00
ExegesisEmitter.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
FastISelEmitter.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
FixedLenDecoderEmitter.cpp [TableGen] Correct comments for end of namespace. NFC 2019-08-25 10:47:30 +00:00
GlobalISelEmitter.cpp [GlobalISel] Import patterns containing INSERT_SUBREG 2019-08-26 21:38:57 +00:00
InfoByHwMode.cpp Add support for pointer types in patterns 2019-02-20 19:43:47 +00:00
InfoByHwMode.h Add support for pointer types in patterns 2019-02-20 19:43:47 +00:00
InstrDocsEmitter.cpp [TableGen] Correct comments for end of namespace. NFC 2019-08-25 10:47:30 +00:00
InstrInfoEmitter.cpp [TableGen] Correct comments for end of namespace. NFC 2019-08-25 10:47:30 +00:00
IntrinsicEmitter.cpp [IntrinsicEmitter] Support scalable vectors in intrinsics 2019-08-27 12:57:09 +00:00
LLVMBuild.txt Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
OptParserEmitter.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
PredicateExpander.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
PredicateExpander.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
PseudoLoweringEmitter.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
RISCVCompressInstEmitter.cpp [RISCV] Replace map with set in getReqFeatures 2019-06-10 17:15:45 +00:00
RegisterBankEmitter.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
RegisterInfoEmitter.cpp Retire llvm::less/equal in favor of C++14 std::less<>/equal_to<>. 2019-08-22 17:31:59 +00:00
SDNodeProperties.cpp [tablegen] Add locations to many PrintFatalError() calls 2019-02-12 17:36:57 +00:00
SDNodeProperties.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SearchableTableEmitter.cpp Use a bit of relaxed constexpr to make FeatureBitset costant intializable 2019-08-24 15:02:44 +00:00
SequenceToOffsetTable.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SubtargetEmitter.cpp [TableGen] Correct comments for end of namespace. NFC 2019-08-25 10:47:30 +00:00
SubtargetFeatureInfo.cpp Use a bit of relaxed constexpr to make FeatureBitset costant intializable 2019-08-24 15:02:44 +00:00
SubtargetFeatureInfo.h Use bitset for assembler predicates 2019-03-11 17:04:35 +00:00
TableGen.cpp [tblgen] Add a timer covering the time spent reading the Instruction defs 2019-02-11 23:02:02 +00:00
TableGenBackends.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Types.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Types.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
WebAssemblyDisassemblerEmitter.cpp [TableGen] Correct comments for end of namespace. NFC 2019-08-25 10:47:30 +00:00
WebAssemblyDisassemblerEmitter.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
X86DisassemblerShared.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
X86DisassemblerTables.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
X86DisassemblerTables.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
X86EVEX2VEXTablesEmitter.cpp [X86] Remove check on isAsmParserOnly from EVEX2VEX tablegenerator. NFCI 2019-04-09 07:40:19 +00:00
X86FoldTablesEmitter.cpp [X86] Make the X86FoldTablesEmitter functional again. Fix the spacing in the output to make it easier to diff. 2019-06-01 06:20:55 +00:00
X86ModRMFilters.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
X86ModRMFilters.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
X86RecognizableInstr.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
X86RecognizableInstr.h [X86] Split the VEX_WPrefix in X86Inst tablegen class into 3 separate fields with clear meanings. 2019-04-09 07:40:06 +00:00
tdtags Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00