[llvm] 0505e37 - [llvm] Add triples for managarm (#87845)
via llvm-commits
llvm-commits at lists.llvm.org
Tue May 6 23:21:26 PDT 2025
Author: no92
Date: 2025-05-06T23:21:22-07:00
New Revision: 0505e3761b3f686765a9deef0e41fbf31bed986a
URL: https://github.com/llvm/llvm-project/commit/0505e3761b3f686765a9deef0e41fbf31bed986a
DIFF: https://github.com/llvm/llvm-project/commit/0505e3761b3f686765a9deef0e41fbf31bed986a.diff
LOG: [llvm] Add triples for managarm (#87845)
This PRĀ aims to add a target for
[managarm](https://github.com/managarm/managarm). The targets
`{x86_64,aarch64,riscv64}-pc-managarm-{kernel,mlibc}` will be supported.
Discourse RFC:
[discourse.llvm.org/t/rfc-new-proposed-managarm-support-for-llvm-and-clang-87845/85884](https://discourse.llvm.org/t/rfc-new-proposed-managarm-support-for-llvm-and-clang-87845/85884)
Added:
Modified:
llvm/include/llvm/TargetParser/Triple.h
llvm/lib/TargetParser/Triple.cpp
llvm/unittests/TargetParser/TripleTest.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/TargetParser/Triple.h b/llvm/include/llvm/TargetParser/Triple.h
index dae6cdab0d964..7fd5278f1ed53 100644
--- a/llvm/include/llvm/TargetParser/Triple.h
+++ b/llvm/include/llvm/TargetParser/Triple.h
@@ -208,6 +208,7 @@ class Triple {
Linux,
Lv2, // PS3
MacOSX,
+ Managarm,
NetBSD,
OpenBSD,
Solaris,
@@ -299,6 +300,7 @@ class Triple {
Amplification,
OpenCL,
OpenHOS,
+ Mlibc,
PAuthTest,
@@ -846,6 +848,8 @@ class Triple {
bool isVulkanOS() const { return getOS() == Triple::Vulkan; }
+ bool isOSManagarm() const { return getOS() == Triple::Managarm; }
+
bool isShaderStageEnvironment() const {
EnvironmentType Env = getEnvironment();
return Env == Triple::Pixel || Env == Triple::Vertex ||
diff --git a/llvm/lib/TargetParser/Triple.cpp b/llvm/lib/TargetParser/Triple.cpp
index 74363f8d71b65..6a559ff023caa 100644
--- a/llvm/lib/TargetParser/Triple.cpp
+++ b/llvm/lib/TargetParser/Triple.cpp
@@ -299,6 +299,8 @@ StringRef Triple::getOSTypeName(OSType Kind) {
case Linux: return "linux";
case Lv2: return "lv2";
case MacOSX: return "macosx";
+ case Managarm:
+ return "managarm";
case Mesa3D: return "mesa3d";
case NVCL: return "nvcl";
case NaCl: return "nacl";
@@ -384,6 +386,8 @@ StringRef Triple::getEnvironmentTypeName(EnvironmentType Kind) {
return "pauthtest";
case LLVM:
return "llvm";
+ case Mlibc:
+ return "mlibc";
}
llvm_unreachable("Invalid EnvironmentType!");
@@ -678,6 +682,7 @@ static Triple::OSType parseOS(StringRef OSName) {
.StartsWith("linux", Triple::Linux)
.StartsWith("lv2", Triple::Lv2)
.StartsWith("macos", Triple::MacOSX)
+ .StartsWith("managarm", Triple::Managarm)
.StartsWith("netbsd", Triple::NetBSD)
.StartsWith("openbsd", Triple::OpenBSD)
.StartsWith("solaris", Triple::Solaris)
@@ -766,6 +771,7 @@ static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) {
.StartsWith("ohos", Triple::OpenHOS)
.StartsWith("pauthtest", Triple::PAuthTest)
.StartsWith("llvm", Triple::LLVM)
+ .StartsWith("mlibc", Triple::Mlibc)
.Default(Triple::UnknownEnvironment);
}
diff --git a/llvm/unittests/TargetParser/TripleTest.cpp b/llvm/unittests/TargetParser/TripleTest.cpp
index e409a3b6a62c5..bbd12e6d0e412 100644
--- a/llvm/unittests/TargetParser/TripleTest.cpp
+++ b/llvm/unittests/TargetParser/TripleTest.cpp
@@ -1354,6 +1354,24 @@ TEST(TripleTest, ParsedIDs) {
EXPECT_EQ(Triple::UnknownOS, T.getOS());
EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment());
+ T = Triple("aarch64-unknown-managarm-mlibc");
+ EXPECT_EQ(Triple::aarch64, T.getArch());
+ EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
+ EXPECT_EQ(Triple::Managarm, T.getOS());
+ EXPECT_EQ(Triple::Mlibc, T.getEnvironment());
+
+ T = Triple("x86_64-unknown-managarm-mlibc");
+ EXPECT_EQ(Triple::x86_64, T.getArch());
+ EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
+ EXPECT_EQ(Triple::Managarm, T.getOS());
+ EXPECT_EQ(Triple::Mlibc, T.getEnvironment());
+
+ T = Triple("riscv64-unknown-managarm-mlibc");
+ EXPECT_EQ(Triple::riscv64, T.getArch());
+ EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
+ EXPECT_EQ(Triple::Managarm, T.getOS());
+ EXPECT_EQ(Triple::Mlibc, T.getEnvironment());
+
T = Triple("huh");
EXPECT_EQ(Triple::UnknownArch, T.getArch());
}
More information about the llvm-commits
mailing list