[AArch64] FMV support and necessary target features dependencies.
authorPavel Iliin <Pavel.Iliin@arm.com>
Wed, 15 Dec 2021 02:12:37 +0000 (02:12 +0000)
committerPavel Iliin <Pavel.Iliin@arm.com>
Tue, 20 Dec 2022 15:42:25 +0000 (15:42 +0000)
commite43924a75145d2f9e722f74b673145c3e62bfd07
treeb1e75d388206af5bf7a9c7a19951941a87136eb7
parentdaa022ca5707d8ddde987d3c8c2aea6bd9954e3f
[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
41 files changed:
clang/include/clang/AST/ASTContext.h
clang/include/clang/AST/Decl.h
clang/include/clang/Basic/Attr.td
clang/include/clang/Basic/AttrDocs.td
clang/include/clang/Basic/DiagnosticSemaKinds.td
clang/include/clang/Basic/TargetInfo.h
clang/include/clang/Driver/Options.td
clang/include/clang/Sema/Sema.h
clang/lib/AST/ASTContext.cpp
clang/lib/AST/Decl.cpp
clang/lib/Basic/Targets/AArch64.cpp
clang/lib/Basic/Targets/AArch64.h
clang/lib/CodeGen/CGBuiltin.cpp
clang/lib/CodeGen/CGOpenMPRuntime.cpp
clang/lib/CodeGen/CodeGenFunction.cpp
clang/lib/CodeGen/CodeGenFunction.h
clang/lib/CodeGen/CodeGenModule.cpp
clang/lib/Driver/ToolChains/Clang.cpp
clang/lib/Sema/Sema.cpp
clang/lib/Sema/SemaDecl.cpp
clang/lib/Sema/SemaDeclAttr.cpp
clang/lib/Sema/SemaOverload.cpp
clang/test/AST/attr-target-version.c [new file with mode: 0644]
clang/test/CodeGen/aarch64-targetattr.c
clang/test/CodeGen/attr-target-clones-aarch64.c [new file with mode: 0644]
clang/test/CodeGen/attr-target-version.c [new file with mode: 0644]
clang/test/CodeGenCXX/attr-target-clones-aarch64.cpp [new file with mode: 0644]
clang/test/CodeGenCXX/attr-target-version.cpp [new file with mode: 0644]
clang/test/Driver/aarch64-features.c
clang/test/Misc/pragma-attribute-supported-attributes-list.test
clang/test/Preprocessor/aarch64-target-features.c
clang/test/Preprocessor/init-aarch64.c
clang/test/Sema/attr-target-clones-aarch64.c [new file with mode: 0644]
clang/test/Sema/attr-target-version.c [new file with mode: 0644]
clang/test/SemaCXX/attr-target-clones-aarch64.cpp [new file with mode: 0644]
clang/test/SemaCXX/attr-target-version.cpp [new file with mode: 0644]
compiler-rt/lib/builtins/cpu_model.c
llvm/include/llvm/TargetParser/AArch64TargetParser.def
llvm/include/llvm/TargetParser/AArch64TargetParser.h
llvm/lib/Target/AArch64/AArch64.td
llvm/lib/TargetParser/AArch64TargetParser.cpp