diff options
author | Sander de Smalen <sander.desmalen@arm.com> | 2024-01-23 12:35:16 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-23 12:35:16 +0100 |
commit | 1652d44d8da83b0a01d5f0b378f10882f5ec8d22 (patch) | |
tree | e70c058cc4c8a3e9d2a7e8da170f9164e190b4b4 /clang/lib/CodeGen/CGCall.cpp | |
parent | 5c7bbe383bf2de0c1de36c7231bbd7f75bfccb1e (diff) | |
download | llvm-1652d44d8da83b0a01d5f0b378f10882f5ec8d22.zip llvm-1652d44d8da83b0a01d5f0b378f10882f5ec8d22.tar.gz llvm-1652d44d8da83b0a01d5f0b378f10882f5ec8d22.tar.bz2 |
[Clang] Amend SME attributes with support for ZT0. (#77941)
This patch builds on top of #76971 and implements support for:
* __arm_new("zt0")
* __arm_in("zt0")
* __arm_out("zt0")
* __arm_inout("zt0")
* __arm_preserves("zt0")
Diffstat (limited to 'clang/lib/CodeGen/CGCall.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGCall.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp index acf6cba..28c211a 100644 --- a/clang/lib/CodeGen/CGCall.cpp +++ b/clang/lib/CodeGen/CGCall.cpp @@ -1782,6 +1782,16 @@ static void AddAttributesFromFunctionProtoType(ASTContext &Ctx, FuncAttrs.addAttribute("aarch64_pstate_za_shared"); FuncAttrs.addAttribute("aarch64_pstate_za_preserved"); } + + // ZT0 + if (FunctionType::getArmZT0State(SMEBits) == FunctionType::ARM_Preserves) + FuncAttrs.addAttribute("aarch64_preserves_zt0"); + if (FunctionType::getArmZT0State(SMEBits) == FunctionType::ARM_In) + FuncAttrs.addAttribute("aarch64_in_zt0"); + if (FunctionType::getArmZT0State(SMEBits) == FunctionType::ARM_Out) + FuncAttrs.addAttribute("aarch64_out_zt0"); + if (FunctionType::getArmZT0State(SMEBits) == FunctionType::ARM_InOut) + FuncAttrs.addAttribute("aarch64_inout_zt0"); } static void AddAttributesFromAssumes(llvm::AttrBuilder &FuncAttrs, |