[llvm] [llvm] Add triples for managarm (PR #87845)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 18 04:18:52 PDT 2025
https://github.com/no92 updated https://github.com/llvm/llvm-project/pull/87845
>From 3327ff1db33c173cec21930abfad5ac8904d1f64 Mon Sep 17 00:00:00 2001
From: no92 <no92.mail at gmail.com>
Date: Fri, 18 Apr 2025 12:16:37 +0200
Subject: [PATCH] [llvm] Add managarm OS and mlibc environment target
---
llvm/include/llvm/TargetParser/Triple.h | 4 ++++
llvm/lib/TargetParser/Triple.cpp | 6 ++++++
llvm/unittests/TargetParser/TripleTest.cpp | 18 ++++++++++++++++++
3 files changed, 28 insertions(+)
diff --git a/llvm/include/llvm/TargetParser/Triple.h b/llvm/include/llvm/TargetParser/Triple.h
index fb6bbc0163701..659cb4f52f08a 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,
@@ -849,6 +851,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 e9e6f130f757c..7ab150264cdac 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 61b3637bb48e2..f04af95f6d8bc 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