================
@@ -250,26 +336,39 @@ void RISCVTargetInfo::getTargetDefines(const LangOptions 
&Opts,
   for (const auto *Ext : ImplicitList)
     Builder.defineMacro(Twine("__riscv_v_intrinsic_") + Ext);
 
-  // Define macros for shorthand extensions when all of intrinsics of its
-  // extensions are presented.
-  auto DefineSuperExt = [&](const char *Name, ArrayRef<const char *> Required) 
{
-    assert(Required.size() > 0);
+  // Define macros for scalar RISC-V extensions that have builtins.
+  // These indicate toolchain support for scalar intrinsics.
+  llvm::SmallSet<std::string, 16> UniqueScalarExtensions =
+      getUniqueScalarExtensions();
+  for (const auto &Ext : UniqueScalarExtensions)
+    Builder.defineMacro(Twine("__riscv_intrinsic_") + Ext);
+
+  // Helper to define composite extension macros when all required extensions
+  // are present. Works for both scalar and vector intrinsics.
+  auto DefineSuperExt = [&](StringRef Prefix, const char *Name,
+                            ArrayRef<const char *> Required) {
+    assert(!Required.empty());
     std::string Condition =
-        std::string("#if defined(__riscv_v_intrinsic_") + Required[0] + ")";
+        std::string("#if defined(") + Prefix.str() + Required[0] + ")";
     for (size_t i = 1; i < Required.size(); ++i)
       Condition +=
-          std::string(" && defined(__riscv_v_intrinsic_") + Required[i] + ")";
+          std::string(" && defined(") + Prefix.str() + Required[i] + ")";
     Builder.append(Condition);
-    Builder.defineMacro(Twine("__riscv_v_intrinsic_") + Name);
+    Builder.defineMacro(Twine(Prefix) + Name);
     Builder.append("#endif");
   };
 
-  DefineSuperExt("zvkn", {"zvkned", "zvknhb", "zvkb"});
-  DefineSuperExt("zvknc", {"zvkn", "zvbc"});
-  DefineSuperExt("zvkng", {"zvkn", "zvkg"});
-  DefineSuperExt("zvks", {"zvksed", "zvksh", "zvkb"});
-  DefineSuperExt("zvksc", {"zvks", "zvbc"});
-  DefineSuperExt("zvksg", {"zvks", "zvkg"});
+  // Vector crypto composite extensions
+  DefineSuperExt("__riscv_v_intrinsic_", "zvkn", {"zvkned", "zvknhb", "zvkb"});
----------------
topperc wrote:

We should be getting this information from RISCVISAInfo.cpp somehow.

https://github.com/llvm/llvm-project/pull/187197
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to