Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 0505e37

Browse filesBrowse files
authored
[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)
1 parent 194a4a3 commit 0505e37
Copy full SHA for 0505e37

File tree

Expand file treeCollapse file tree

3 files changed

+28
-0
lines changed
Filter options
Expand file treeCollapse file tree

3 files changed

+28
-0
lines changed

‎llvm/include/llvm/TargetParser/Triple.h

Copy file name to clipboardExpand all lines: llvm/include/llvm/TargetParser/Triple.h
+4Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ class Triple {
208208
Linux,
209209
Lv2, // PS3
210210
MacOSX,
211+
Managarm,
211212
NetBSD,
212213
OpenBSD,
213214
Solaris,
@@ -299,6 +300,7 @@ class Triple {
299300
Amplification,
300301
OpenCL,
301302
OpenHOS,
303+
Mlibc,
302304

303305
PAuthTest,
304306

@@ -846,6 +848,8 @@ class Triple {
846848

847849
bool isVulkanOS() const { return getOS() == Triple::Vulkan; }
848850

851+
bool isOSManagarm() const { return getOS() == Triple::Managarm; }
852+
849853
bool isShaderStageEnvironment() const {
850854
EnvironmentType Env = getEnvironment();
851855
return Env == Triple::Pixel || Env == Triple::Vertex ||

‎llvm/lib/TargetParser/Triple.cpp

Copy file name to clipboardExpand all lines: llvm/lib/TargetParser/Triple.cpp
+6Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,8 @@ StringRef Triple::getOSTypeName(OSType Kind) {
299299
case Linux: return "linux";
300300
case Lv2: return "lv2";
301301
case MacOSX: return "macosx";
302+
case Managarm:
303+
return "managarm";
302304
case Mesa3D: return "mesa3d";
303305
case NVCL: return "nvcl";
304306
case NaCl: return "nacl";
@@ -384,6 +386,8 @@ StringRef Triple::getEnvironmentTypeName(EnvironmentType Kind) {
384386
return "pauthtest";
385387
case LLVM:
386388
return "llvm";
389+
case Mlibc:
390+
return "mlibc";
387391
}
388392

389393
llvm_unreachable("Invalid EnvironmentType!");
@@ -678,6 +682,7 @@ static Triple::OSType parseOS(StringRef OSName) {
678682
.StartsWith("linux", Triple::Linux)
679683
.StartsWith("lv2", Triple::Lv2)
680684
.StartsWith("macos", Triple::MacOSX)
685+
.StartsWith("managarm", Triple::Managarm)
681686
.StartsWith("netbsd", Triple::NetBSD)
682687
.StartsWith("openbsd", Triple::OpenBSD)
683688
.StartsWith("solaris", Triple::Solaris)
@@ -766,6 +771,7 @@ static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) {
766771
.StartsWith("ohos", Triple::OpenHOS)
767772
.StartsWith("pauthtest", Triple::PAuthTest)
768773
.StartsWith("llvm", Triple::LLVM)
774+
.StartsWith("mlibc", Triple::Mlibc)
769775
.Default(Triple::UnknownEnvironment);
770776
}
771777

‎llvm/unittests/TargetParser/TripleTest.cpp

Copy file name to clipboardExpand all lines: llvm/unittests/TargetParser/TripleTest.cpp
+18Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1354,6 +1354,24 @@ TEST(TripleTest, ParsedIDs) {
13541354
EXPECT_EQ(Triple::UnknownOS, T.getOS());
13551355
EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment());
13561356

1357+
T = Triple("aarch64-unknown-managarm-mlibc");
1358+
EXPECT_EQ(Triple::aarch64, T.getArch());
1359+
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
1360+
EXPECT_EQ(Triple::Managarm, T.getOS());
1361+
EXPECT_EQ(Triple::Mlibc, T.getEnvironment());
1362+
1363+
T = Triple("x86_64-unknown-managarm-mlibc");
1364+
EXPECT_EQ(Triple::x86_64, T.getArch());
1365+
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
1366+
EXPECT_EQ(Triple::Managarm, T.getOS());
1367+
EXPECT_EQ(Triple::Mlibc, T.getEnvironment());
1368+
1369+
T = Triple("riscv64-unknown-managarm-mlibc");
1370+
EXPECT_EQ(Triple::riscv64, T.getArch());
1371+
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
1372+
EXPECT_EQ(Triple::Managarm, T.getOS());
1373+
EXPECT_EQ(Triple::Mlibc, T.getEnvironment());
1374+
13571375
T = Triple("huh");
13581376
EXPECT_EQ(Triple::UnknownArch, T.getArch());
13591377
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.