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

Reply via email to