1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 11:13:28 +01:00
llvm-mirror/include/llvm/IR
Simon Tatham fa3bb1ebe7 [ARM,MVE] Add predicated intrinsics for many unary functions.
Summary:
This commit adds the predicated MVE intrinsics for the same set of
unary operations that I added in their unpredicated forms in

* D74333 (vrint)
* D74334 (vrev)
* D74335 (vclz, vcls)
* D74336 (vmovl)
* D74337 (vmovn)

but since the predicated versions are a lot more similar to each
other, I've kept them all together in a single big patch. Everything
here is done in the standard way we've been doing other predicated
operations: an IR intrinsic called `@llvm.arm.mve.foo.predicated` and
some isel rules that match that alongside whatever they accept for the
unpredicated version of the same instruction.

In order to write the isel rules conveniently, I've refactored the
existing isel rules for the affected instructions into multiclasses
parametrised by a vector-type class, in the usual way. All those
refactorings are intended to leave the existing isel rules unchanged:
the only difference should be that new ones for the predicated
intrinsics are introduced.

The only tiny infrastructure change I needed in this commit was to
change the implementation of `IntrinsicMX` in `arm_mve_defs.td` so
that the records it defines are anonymous rather than named (and use
`NameOverride` to set the output intrinsic name), which allows me to
call it twice in two multiclasses with the same `NAME` without a
tablegen-time error.

Reviewers: dmgreen, MarkMurrayARM, miyuki, ostannard

Reviewed By: MarkMurrayARM

Subscribers: kristof.beyls, hiraditya, cfe-commits, llvm-commits

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D75165
2020-02-26 15:12:07 +00:00
..
Argument.h
AssemblyAnnotationWriter.h
Attributes.h [NFC] Factor out function to detect if an attribute has an argument. 2020-02-03 22:27:24 +01:00
Attributes.td
AutoUpgrade.h Ignore "no-frame-pointer-elim" and "no-frame-pointer-elim-non-leaf" in favor of "frame-pointer" 2019-12-30 09:46:19 -08:00
BasicBlock.h [IR] Update BasicBlock::validateInstrOrdering comments, NFC 2020-02-21 12:33:16 -08:00
CallingConv.h
CallSite.h [Attributor] Use abstract call sites to determine associated arguments 2019-12-31 01:33:22 -06:00
CFG.h
CFGDiff.h
CMakeLists.txt
Comdat.h
Constant.h
ConstantFolder.h Reapply "[IRBuilder] Virtualize IRBuilder" 2020-02-17 19:04:11 +01:00
ConstantRange.h
Constants.h Use std::foo_t rather than std::foo in LLVM. 2020-02-11 15:12:51 -08:00
ConstrainedOps.def [FPEnv] Add pragma FP_CONTRACT support under strict FP. 2020-01-28 20:43:43 +08:00
DataLayout.h [Alignment][NFC] Use Align with CreateAlignedStore 2020-01-23 17:34:32 +01:00
DebugInfo.h [DebugInfo] Merge DebugInfoFinder::{processDeclare,processValue} into processVariable 2020-02-01 23:00:21 -08:00
DebugInfoFlags.def
DebugInfoMetadata.h Move the sysroot attribute from DIModule to DICompileUnit 2020-01-17 12:55:40 -08:00
DebugLoc.h
DerivedTypes.h Use std::foo_t rather than std::foo in LLVM. 2020-02-11 15:12:51 -08:00
DerivedUser.h
DiagnosticHandler.h
DiagnosticInfo.h Use std::foo_t rather than std::foo in LLVM. 2020-02-11 15:12:51 -08:00
DiagnosticPrinter.h
DIBuilder.h Move the sysroot attribute from DIModule to DICompileUnit 2020-01-17 12:55:40 -08:00
Dominators.h
FixedMetadataKinds.def
FPEnv.h
Function.h
GetElementPtrTypeIterator.h
GlobalAlias.h
GlobalIFunc.h
GlobalIndirectSymbol.h
GlobalObject.h [WPD/VFE] Always emit vcall_visibility metadata for -fwhole-program-vtables 2020-01-23 11:36:01 -08:00
GlobalValue.h [IR] Change maybeSetDSOLocal to isImplicitDSOLocal 2020-02-16 13:14:15 -08:00
GlobalVariable.h
GVMaterializer.h
InlineAsm.h
InstIterator.h
InstrTypes.h Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
Instruction.def
Instruction.h [IR] Lazily number instructions for local dominance queries 2020-02-18 14:44:24 -08:00
Instructions.h Reapply: [SVE] Fix bug in simplification of scalable vector instructions 2020-02-05 10:00:09 -08:00
InstVisitor.h
IntrinsicInst.h [instrinsics] Add @llvm.memcpy.inline instrinsics 2020-01-28 09:42:01 +01:00
Intrinsics.h
Intrinsics.td [Intrinsic] Add fixed point saturating division intrinsics. 2020-02-24 10:50:52 +01:00
IntrinsicsAArch64.td [AArch64][SVE] Add SVE2 intrinsics for bit permutation & table lookup 2020-02-26 11:22:23 +00:00
IntrinsicsAMDGPU.td Make __builtin_amdgcn_dispatch_ptr dereferenceable and align at 4 2020-02-25 13:58:20 -05:00
IntrinsicsARM.td [ARM,MVE] Add predicated intrinsics for many unary functions. 2020-02-26 15:12:07 +00:00
IntrinsicsBPF.td
IntrinsicsHexagon.td [Hexagon] Introduce noop intrinsic to cast between vector predicate types 2020-02-21 07:37:59 -06:00
IntrinsicsHexagonDep.td [Hexagon] Change HVX vector predicate types from v512/1024i1 to v64/128i1 2020-02-19 14:14:56 -06:00
IntrinsicsMips.td [Mips] Add intrinsics for 4-byte and 8-byte MSA loads/stores. 2020-02-11 11:47:30 +01:00
IntrinsicsNVVM.td
IntrinsicsPowerPC.td [PowerPC] Add support for intrinsic llvm.ppc.eieio 2020-02-12 09:02:17 -06:00
IntrinsicsRISCV.td [RISCV][NFC] Deduplicate Atomic Intrinsic Definitions 2020-01-14 13:18:06 +00:00
IntrinsicsSystemZ.td
IntrinsicsWebAssembly.td [WebAssembly] Add avgr_u intrinsics and require nuw in patterns 2019-12-18 15:31:38 -08:00
IntrinsicsX86.td [X86] Add back fmaddsub intrinsics to work towards fixing the strict fp implementation 2020-02-24 12:07:21 -08:00
IntrinsicsXCore.td
IRBuilder.h [SimplifyLibCalls][IRBuilder] Accept any IRBuilder in SimplifyLibCalls 2020-02-21 18:26:05 +01:00
IRBuilderFolder.h Reapply "[IRBuilder] Virtualize IRBuilder" 2020-02-17 19:04:11 +01:00
IRPrintingPasses.h
LegacyPassManager.h
LegacyPassManagers.h
LegacyPassNameParser.h
LLVMContext.h [Remarks] Fix gcc build 2020-02-04 17:43:59 -08:00
LLVMRemarkStreamer.h [Remarks] Extend the RemarkStreamer to support other emitters 2020-02-04 17:16:02 -08:00
Mangler.h
MDBuilder.h
Metadata.def
Metadata.h Use std::foo_t rather than std::foo in LLVM. 2020-02-11 15:12:51 -08:00
Module.h RNG: Take pass name as argument instead of pass pointer. 2020-01-31 14:21:40 -05:00
ModuleSlotTracker.h
ModuleSummaryIndex.h [Assembler] Emit summary index flags 2020-02-18 17:49:54 +03:00
ModuleSummaryIndexYAML.h Restore "[WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP" 2020-02-11 10:48:05 -08:00
NoFolder.h Reapply "[IRBuilder] Virtualize IRBuilder" 2020-02-17 19:04:11 +01:00
OperandTraits.h
Operator.h [SCEV] get more accurate range for AddExpr with wrap flag. 2020-01-07 20:58:04 -05:00
OptBisect.h
PassInstrumentation.h
PassManager.h Add PassManagerImpl.h to hide implementation details 2020-02-03 11:15:55 -08:00
PassManagerImpl.h Add PassManagerImpl.h to hide implementation details 2020-02-03 11:15:55 -08:00
PassManagerInternal.h
PassTimingInfo.h
PatternMatch.h Recommit "[PatternMatch] Match XOR variant of unsigned-add overflow check." 2020-02-23 18:33:18 +00:00
PredIteratorCache.h
ProfileSummary.h
RuntimeLibcalls.def [TargetLowering][ARM][Mips][WebAssembly] Remove the ordered FP compare from RunttimeLibcalls.def and all associated usages 2020-01-10 19:30:08 -08:00
SafepointIRVerifier.h
Statepoint.h
SymbolTableListTraits.h
TrackingMDRef.h
Type.h
TypeFinder.h
Use.h PointerLikeTypeTraits: Standardize NumLowBitsAvailable on static constexpr rather than anonymous enum 2020-01-16 15:30:50 -08:00
UseListOrder.h
User.h
Value.def
Value.h
ValueHandle.h [LoopUnroll] Avoid UB when converting from WeakVH to Value * 2020-01-23 10:36:39 -08:00
ValueMap.h Use std::foo_t rather than std::foo in LLVM. 2020-02-11 15:12:51 -08:00
ValueSymbolTable.h
Verifier.h