llvm-project/llvm/lib/IR
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
..
AbstractCallSite.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AsmWriter.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
AttributeImpl.h Extend function attributes bitset size from 64 to 96. 2019-07-13 00:29:03 +00:00
Attributes.cpp [LLVM][Alignment] Introduce Alignment In Attributes 2019-08-06 09:16:33 +00:00
AttributesCompatFunc.td
AutoUpgrade.cpp [AutoUpgrader] Make ArcRuntime Autoupgrader more conservative 2019-08-13 17:52:21 +00:00
BasicBlock.cpp [NFC] BasicBlock: generalize replaceSuccessorsPhiUsesWith(), take Old bb 2019-05-05 18:59:45 +00:00
CMakeLists.txt Link libpthread into LLVMCore.so 2019-08-15 18:06:30 +00:00
Comdat.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ConstantFold.cpp Add FNeg IR constant folding support 2019-05-05 16:07:09 +00:00
ConstantFold.h Add FNeg IR constant folding support 2019-05-05 16:07:09 +00:00
ConstantRange.cpp [ConstantRange] Add sdiv() support 2019-06-03 18:19:54 +00:00
Constants.cpp [Constant] Add 'isElementWiseEqual()' method 2019-08-24 06:49:51 +00:00
ConstantsContext.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Core.cpp Revert "Expose TailCallKind via the LLVM C API" 2019-08-15 03:49:51 +00:00
DIBuilder.cpp Do a sweep of symbol internalization. NFC. 2019-08-23 19:59:23 +00:00
DataLayout.cpp [LLVM][NFC] Removing unused functions 2019-08-23 23:19:25 +00:00
DebugInfo.cpp [DebugInfo] Delete TypedDINodeRef 2019-05-07 02:06:37 +00:00
DebugInfoMetadata.cpp Reland "[DwarfDebug] Dump call site debug info" 2019-07-31 16:51:28 +00:00
DebugLoc.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DiagnosticHandler.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DiagnosticInfo.cpp [Remarks][NFC] Move the serialization to lib/Remarks 2019-05-30 21:45:59 +00:00
DiagnosticPrinter.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Dominators.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Function.cpp [IntrinsicEmitter] Support scalable vectors in intrinsics 2019-08-27 12:57:09 +00:00
GVMaterializer.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Globals.cpp Use parenthses to silence warning. 2019-08-06 22:47:47 +00:00
IRBuilder.cpp Improve reduction intrinsics by overloading result value. 2019-06-13 09:37:38 +00:00
IRPrintingPasses.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
InlineAsm.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Instruction.cpp Add a transform pass to make the executable semantics of poison explicit in the IR 2019-07-09 18:49:29 +00:00
Instructions.cpp Force check prof branch_weights consistency in SwitchInstProfUpdateWrapper 2019-08-07 07:17:45 +00:00
IntrinsicInst.cpp Added unit tests to check supported rounding modes 2019-08-13 05:21:18 +00:00
LLVMBuild.txt [Remarks] Add string deduplication using a string table 2019-04-24 00:06:24 +00:00
LLVMContext.cpp [IR] Consolidate fixed metadata kind definitions (NFC) 2019-07-29 20:24:20 +00:00
LLVMContextImpl.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
LLVMContextImpl.h Scalable Vector IR Type with further LTO fixes 2019-07-05 12:48:16 +00:00
LegacyPassManager.cpp Fix parameter name comments using clang-tidy. NFC. 2019-07-16 04:46:31 +00:00
MDBuilder.cpp Use llvm::stable_sort 2019-04-23 14:51:27 +00:00
Mangler.cpp Standardize on MSVC behavior for triples with no environment 2019-07-08 21:05:20 +00:00
Metadata.cpp Use llvm::stable_sort 2019-04-23 14:51:27 +00:00
MetadataImpl.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Module.cpp IR. Change strip* family of functions to not look through aliases. 2019-08-22 19:56:14 +00:00
ModuleSummaryIndex.cpp [ThinLTO] Attempt to recommit r365188 after alignment fix 2019-07-05 15:25:05 +00:00
Operator.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
OptBisect.cpp Fix IR/Analysis layering issue with OptBisect 2019-02-28 04:00:55 +00:00
Pass.cpp [IR] Refactor attribute methods in Function class (NFC) 2019-04-04 22:40:06 +00:00
PassInstrumentation.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
PassManager.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
PassRegistry.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
PassTimingInfo.cpp [Legacy][TimePasses] allow -time-passes reporting into a custom stream 2019-03-22 23:11:08 +00:00
ProfileSummary.cpp [PGO] Context sensitive PGO (part 2) 2019-02-28 19:55:07 +00:00
RemarkStreamer.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
SafepointIRVerifier.cpp SafepointIRVerifier port to new Pass Manager 2019-03-31 10:15:39 +00:00
Statepoint.cpp [CallSite removal] Migrate the statepoint GC infrastructure to use the 2019-02-11 07:42:30 +00:00
SymbolTableListTraitsImpl.h [ADT] Notify ilist traits about in-list transfers 2019-01-23 22:59:52 +00:00
Type.cpp Scalable Vector IR Type with further LTO fixes 2019-07-05 12:48:16 +00:00
TypeFinder.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Use.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
User.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Value.cpp IR. Change strip* family of functions to not look through aliases. 2019-08-22 19:56:14 +00:00
ValueSymbolTable.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Verifier.cpp IR. Change strip* family of functions to not look through aliases. 2019-08-22 19:56:14 +00:00