================
@@ -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