diff options
author | Pavel Iliin <Pavel.Iliin@arm.com> | 2021-12-15 02:12:37 +0000 |
---|---|---|
committer | Pavel Iliin <Pavel.Iliin@arm.com> | 2022-12-20 15:42:25 +0000 |
commit | e43924a75145d2f9e722f74b673145c3e62bfd07 (patch) | |
tree | b1e75d388206af5bf7a9c7a19951941a87136eb7 /clang/lib/CodeGen/CodeGenFunction.h | |
parent | daa022ca5707d8ddde987d3c8c2aea6bd9954e3f (diff) | |
download | llvm-e43924a75145d2f9e722f74b673145c3e62bfd07.zip llvm-e43924a75145d2f9e722f74b673145c3e62bfd07.tar.gz llvm-e43924a75145d2f9e722f74b673145c3e62bfd07.tar.bz2 |
[AArch64] FMV support and necessary target features dependencies.
This is Function Multi Versioning (FMV) implementation for AArch64 target in
accordance with Beta Arm C Language Extensions specification
https://github.com/ARM-software/acle/blob/main/main/acle.md#function-multi-versioning
It supports new "target_version" function attribute and extends existing
"target_clones" one. Also missing dependencies for target features were added.
Differential Revision: https://reviews.llvm.org/D127812
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.h')
-rw-r--r-- | clang/lib/CodeGen/CodeGenFunction.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h index d1ea27a..f1d7cc7 100644 --- a/clang/lib/CodeGen/CodeGenFunction.h +++ b/clang/lib/CodeGen/CodeGenFunction.h @@ -4813,6 +4813,12 @@ public: // last (if it exists). void EmitMultiVersionResolver(llvm::Function *Resolver, ArrayRef<MultiVersionResolverOption> Options); + void + EmitX86MultiVersionResolver(llvm::Function *Resolver, + ArrayRef<MultiVersionResolverOption> Options); + void + EmitAArch64MultiVersionResolver(llvm::Function *Resolver, + ArrayRef<MultiVersionResolverOption> Options); private: QualType getVarArgType(const Expr *Arg); @@ -4831,7 +4837,11 @@ private: llvm::Value *EmitX86CpuSupports(ArrayRef<StringRef> FeatureStrs); llvm::Value *EmitX86CpuSupports(uint64_t Mask); llvm::Value *EmitX86CpuInit(); - llvm::Value *FormResolverCondition(const MultiVersionResolverOption &RO); + llvm::Value *FormX86ResolverCondition(const MultiVersionResolverOption &RO); + llvm::Value *EmitAArch64CpuInit(); + llvm::Value * + FormAArch64ResolverCondition(const MultiVersionResolverOption &RO); + llvm::Value *EmitAArch64CpuSupports(ArrayRef<StringRef> FeatureStrs); }; |