aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CodeGenFunction.h
diff options
context:
space:
mode:
authorAndrzej Warzynski <andrzej.warzynski@arm.com>2020-04-07 11:09:01 +0100
committerAndrzej Warzynski <andrzej.warzynski@arm.com>2020-04-22 13:21:39 +0100
commit72f565899dd4bf1fcb183555ba9089b7452b3f8a (patch)
tree6890ca23fc29a6a41025ada5a6142a2a528ada73 /clang/lib/CodeGen/CodeGenFunction.h
parent67266d879c715cdcfb790acf0153da757dafd195 (diff)
downloadllvm-72f565899dd4bf1fcb183555ba9089b7452b3f8a.zip
llvm-72f565899dd4bf1fcb183555ba9089b7452b3f8a.tar.gz
llvm-72f565899dd4bf1fcb183555ba9089b7452b3f8a.tar.bz2
[SveEmitter] Implement builtins for gathers/scatters
This patch adds builtins for: * regular, first-faulting and non-temporal gather loads * regular and non-temporal scatter stores Differential Revision: https://reviews.llvm.org/D77735
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.h')
-rw-r--r--clang/lib/CodeGen/CodeGenFunction.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h
index 2429f5d..786117a 100644
--- a/clang/lib/CodeGen/CodeGenFunction.h
+++ b/clang/lib/CodeGen/CodeGenFunction.h
@@ -3903,9 +3903,21 @@ public:
llvm::Value *EmitNeonRShiftImm(llvm::Value *Vec, llvm::Value *Amt,
llvm::Type *Ty, bool usgn, const char *name);
llvm::Value *vectorWrapScalar16(llvm::Value *Op);
+ /// SVEBuiltinMemEltTy - Returns the memory element type for this memory
+ /// access builtin. Only required if it can't be inferred from the base
+ /// pointer operand.
+ llvm::Type *SVEBuiltinMemEltTy(SVETypeFlags TypeFlags);
- llvm::Type *getSVEType(const SVETypeFlags &TypeFlags);
+ llvm::Type *getEltType(SVETypeFlags TypeFlags);
+
+ llvm::VectorType *getSVEType(const SVETypeFlags &TypeFlags);
llvm::Value *EmitSVEPredicateCast(llvm::Value *Pred, llvm::VectorType *VTy);
+ llvm::Value *EmitSVEGatherLoad(SVETypeFlags TypeFlags,
+ llvm::SmallVectorImpl<llvm::Value *> &Ops,
+ unsigned IntID);
+ llvm::Value *EmitSVEScatterStore(SVETypeFlags TypeFlags,
+ llvm::SmallVectorImpl<llvm::Value *> &Ops,
+ unsigned IntID);
llvm::Value *EmitSVEMaskedLoad(const CallExpr *, llvm::Type *ReturnTy,
SmallVectorImpl<llvm::Value *> &Ops,
unsigned BuiltinID, bool IsZExtReturn);