azwolski wrote:
```diff
diff --git a/clang/include/clang/Options/Options.td
b/clang/include/clang/Options/Options.td
index a6bb68476148..f4c1af9ecf49 100644
--- a/clang/include/clang/Options/Options.td
+++ b/clang/include/clang/Options/Options.td
@@ -7017,6 +7017,8 @@ def mapx_features_EQ : CommaJoined<["-"],
"mapx-features=">, Group<m_x86_Feature
HelpText<"Enable features of APX">,
Values<"egpr,push2pop2,ppx,ndd,ccmp,nf,cf,zu">, Visibility<[ClangOption,
CLOption, FlangOption]>;
def mno_apx_features_EQ : CommaJoined<["-"], "mno-apx-features=">,
Group<m_x86_Features_Group>,
HelpText<"Disable features of APX">,
Values<"egpr,push2pop2,ppx,ndd,ccmp,nf,cf,zu">, Visibility<[ClangOption,
CLOption, FlangOption]>;
+def mapx_features_egpr_nv_EQ : Joined<["-"], "mapx-features=egpr-nv:">,
Group<m_x86_Features_Group>,
+ HelpText<"Set number of non-volatile registers of APX EGPR feature">;
def mapxf : Flag<["-"], "mapxf">, Group<m_x86_Features_Group>;
def mno_apxf : Flag<["-"], "mno-apxf">, Group<m_x86_Features_Group>;
def mapx_inline_asm_use_gpr32 : Flag<["-"], "mapx-inline-asm-use-gpr32">,
Group<m_Group>,
diff --git a/clang/lib/Driver/ToolChains/Arch/X86.cpp
b/clang/lib/Driver/ToolChains/Arch/X86.cpp
index a208dad9c022..f530f3f83ae1 100644
--- a/clang/lib/Driver/ToolChains/Arch/X86.cpp
+++ b/clang/lib/Driver/ToolChains/Arch/X86.cpp
@@ -294,9 +294,17 @@ void x86::getX86TargetFeatures(const Driver &D, const
llvm::Triple &Triple,
}
continue;
}
+
+ // Handle -mapx-features=egpr-nv:N
+ if (A->getOption().matches(options::OPT_mapx_features_egpr_nv_EQ)) {
+ Features.push_back("+egpr");
+ continue;
+ }
+
Features.push_back(Args.MakeArgString((IsNegative ? "-" : "+") + Name));
}
+ // Handle Windows-style /apx-features=egpr-nv:N option
if (Args.hasArgNoClaim(options::OPT__SLASH_apx_features_egprnv))
Features.push_back("+egpr");
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp
b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index 686eeb8bee2f..0a0af043a35c 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -923,7 +923,8 @@ void tools::getTargetFeatures(const Driver &D, const
llvm::Triple &Triple,
CmdArgs.push_back(Feature.data());
}
- if (Arg *A = Args.getLastArg(options::OPT__SLASH_apx_features_egprnv)) {
+ if (Arg *A = Args.getLastArg(options::OPT__SLASH_apx_features_egprnv,
+ options::OPT_mapx_features_egpr_nv_EQ)) {
StringRef Value = A->getValue();
CmdArgs.push_back("-mllvm");
CmdArgs.push_back(Args.MakeArgString("-apx-egpr-csr=" + Value));
```
https://github.com/llvm/llvm-project/pull/173224
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits