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()); }