From 3327ff1db33c173cec21930abfad5ac8904d1f64 Mon Sep 17 00:00:00 2001 From: no92 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()); }