diff options
author | Sander de Smalen <sander.desmalen@arm.com> | 2020-03-15 14:29:45 +0000 |
---|---|---|
committer | Sander de Smalen <sander.desmalen@arm.com> | 2020-03-15 14:34:52 +0000 |
commit | 5087ace65197471c07b78d16e3d599187c442cbf (patch) | |
tree | a6487441d9c464420d3e93231f6ad62c83f8dc29 /clang/lib/CodeGen/CodeGenFunction.h | |
parent | 8105935d3aa98089f24b356ae782771d024d9174 (diff) | |
download | llvm-5087ace65197471c07b78d16e3d599187c442cbf.zip llvm-5087ace65197471c07b78d16e3d599187c442cbf.tar.gz llvm-5087ace65197471c07b78d16e3d599187c442cbf.tar.bz2 |
[Clang][SVE] Parse builtin type string for scalable vectors
This patch adds 'q' to mean 'scalable vector' in the builtin
type string, and for SVE will return the matching builtin
type as defined in the C/C++ language extensions for SVE.
This patch also adds some scaffolding to generate the arm_sve.h
header file, and some builtin definitions (+CodeGen) to be able
to implement some simple masked load intrinsics that use the
ACLE types, such as:
svint8_t test_svld1_s8(svbool_t pg, const int8_t *base) {
return svld1_s8(pg, base);
}
Reviewers: efriedma, rjmccall, rovka, rsandifo-arm, rengolin
Reviewed By: efriedma
Tags: #clang
Differential Revision: https://reviews.llvm.org/D75298
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.h')
-rw-r--r-- | clang/lib/CodeGen/CodeGenFunction.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h index f82e489..e470bec 100644 --- a/clang/lib/CodeGen/CodeGenFunction.h +++ b/clang/lib/CodeGen/CodeGenFunction.h @@ -3900,6 +3900,11 @@ public: llvm::Value *EmitNeonRShiftImm(llvm::Value *Vec, llvm::Value *Amt, llvm::Type *Ty, bool usgn, const char *name); llvm::Value *vectorWrapScalar16(llvm::Value *Op); + + llvm::Value *EmitSVEPredicateCast(llvm::Value *Pred, llvm::VectorType *VTy); + llvm::Value *EmitSVEMaskedLoad(llvm::Type *ReturnTy, + SmallVectorImpl<llvm::Value *> &Ops); + llvm::Value *EmitAArch64BuiltinExpr(unsigned BuiltinID, const CallExpr *E, llvm::Triple::ArchType Arch); llvm::Value *EmitBPFBuiltinExpr(unsigned BuiltinID, const CallExpr *E); |