aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CodeGenFunction.h
diff options
context:
space:
mode:
authorPaul Walker <paul.walker@arm.com>2024-09-25 11:19:05 +0100
committerGitHub <noreply@github.com>2024-09-25 11:19:05 +0100
commit0c31ea5a09d854d5891eac40629f6a17a66fdcf7 (patch)
treeb66a99ad7b32c655e1aeb9edb604ee6588cec590 /clang/lib/CodeGen/CodeGenFunction.h
parent0ef24aa549536e65fc3b23c4d21b6b76190d416e (diff)
downloadllvm-0c31ea5a09d854d5891eac40629f6a17a66fdcf7.zip
llvm-0c31ea5a09d854d5891eac40629f6a17a66fdcf7.tar.gz
llvm-0c31ea5a09d854d5891eac40629f6a17a66fdcf7.tar.bz2
[Clang][SME2] Use tuple result of SME builtins directly. (#109423)
I missed a codepath during PR108008 so SME2/SVE2p1 builtins are converting their struct return type into a large vector, which is causing unnecessary casting via memory.
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.h')
-rw-r--r--clang/lib/CodeGen/CodeGenFunction.h8
1 files changed, 2 insertions, 6 deletions
diff --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h
index 8a1f6ff..3e2abbd 100644
--- a/clang/lib/CodeGen/CodeGenFunction.h
+++ b/clang/lib/CodeGen/CodeGenFunction.h
@@ -4646,6 +4646,8 @@ public:
unsigned BuiltinID);
llvm::Value *EmitSVEPredicateCast(llvm::Value *Pred,
llvm::ScalableVectorType *VTy);
+ llvm::Value *EmitSVEPredicateTupleCast(llvm::Value *PredTuple,
+ llvm::StructType *Ty);
llvm::Value *EmitSVEGatherLoad(const SVETypeFlags &TypeFlags,
llvm::SmallVectorImpl<llvm::Value *> &Ops,
unsigned IntID);
@@ -4670,12 +4672,6 @@ public:
llvm::Value *EmitSVEStructStore(const SVETypeFlags &TypeFlags,
SmallVectorImpl<llvm::Value *> &Ops,
unsigned IntID);
- /// FormSVEBuiltinResult - Returns the struct of scalable vectors as a wider
- /// vector. It extracts the scalable vector from the struct and inserts into
- /// the wider vector. This avoids the error when allocating space in llvm
- /// for struct of scalable vectors if a function returns struct.
- llvm::Value *FormSVEBuiltinResult(llvm::Value *Call);
-
llvm::Value *EmitAArch64SVEBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
llvm::Value *EmitSMELd1St1(const SVETypeFlags &TypeFlags,