diff options
author | Paul Walker <paul.walker@arm.com> | 2024-09-25 11:19:05 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-25 11:19:05 +0100 |
commit | 0c31ea5a09d854d5891eac40629f6a17a66fdcf7 (patch) | |
tree | b66a99ad7b32c655e1aeb9edb604ee6588cec590 /clang/lib/CodeGen/CodeGenFunction.h | |
parent | 0ef24aa549536e65fc3b23c4d21b6b76190d416e (diff) | |
download | llvm-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.h | 8 |
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, |