Skip to content

Commit 3b2796c

Browse files
authored
[Triple] Add target triple support for CheriotRTOS. (llvm#155374)
For context, CheriotRTOS is a custom RTOS co-designed for the CHERIoT CHERI-enabled RISCV32E platform. It uses a custom ABI and linkage model, necesitating representing it in the target triple.
1 parent b582670 commit 3b2796c

File tree

3 files changed

+53
-44
lines changed

3 files changed

+53
-44
lines changed

llvm/include/llvm/TargetParser/Triple.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,8 @@ class Triple {
245245
LiteOS,
246246
Serenity,
247247
Vulkan, // Vulkan SPIR-V
248-
LastOSType = Vulkan
248+
CheriotRTOS,
249+
LastOSType = CheriotRTOS
249250
};
250251
enum EnvironmentType {
251252
UnknownEnvironment,

llvm/lib/TargetParser/Triple.cpp

Lines changed: 46 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,8 @@ StringRef Triple::getOSTypeName(OSType Kind) {
329329
case LiteOS: return "liteos";
330330
case XROS: return "xros";
331331
case Vulkan: return "vulkan";
332+
case CheriotRTOS:
333+
return "cheriotrtos";
332334
}
333335

334336
llvm_unreachable("Invalid OSType");
@@ -687,49 +689,50 @@ static Triple::VendorType parseVendor(StringRef VendorName) {
687689

688690
static Triple::OSType parseOS(StringRef OSName) {
689691
return StringSwitch<Triple::OSType>(OSName)
690-
.StartsWith("darwin", Triple::Darwin)
691-
.StartsWith("dragonfly", Triple::DragonFly)
692-
.StartsWith("freebsd", Triple::FreeBSD)
693-
.StartsWith("fuchsia", Triple::Fuchsia)
694-
.StartsWith("ios", Triple::IOS)
695-
.StartsWith("kfreebsd", Triple::KFreeBSD)
696-
.StartsWith("linux", Triple::Linux)
697-
.StartsWith("lv2", Triple::Lv2)
698-
.StartsWith("macos", Triple::MacOSX)
699-
.StartsWith("managarm", Triple::Managarm)
700-
.StartsWith("netbsd", Triple::NetBSD)
701-
.StartsWith("openbsd", Triple::OpenBSD)
702-
.StartsWith("solaris", Triple::Solaris)
703-
.StartsWith("uefi", Triple::UEFI)
704-
.StartsWith("win32", Triple::Win32)
705-
.StartsWith("windows", Triple::Win32)
706-
.StartsWith("zos", Triple::ZOS)
707-
.StartsWith("haiku", Triple::Haiku)
708-
.StartsWith("rtems", Triple::RTEMS)
709-
.StartsWith("aix", Triple::AIX)
710-
.StartsWith("cuda", Triple::CUDA)
711-
.StartsWith("nvcl", Triple::NVCL)
712-
.StartsWith("amdhsa", Triple::AMDHSA)
713-
.StartsWith("ps4", Triple::PS4)
714-
.StartsWith("ps5", Triple::PS5)
715-
.StartsWith("elfiamcu", Triple::ELFIAMCU)
716-
.StartsWith("tvos", Triple::TvOS)
717-
.StartsWith("watchos", Triple::WatchOS)
718-
.StartsWith("bridgeos", Triple::BridgeOS)
719-
.StartsWith("driverkit", Triple::DriverKit)
720-
.StartsWith("xros", Triple::XROS)
721-
.StartsWith("visionos", Triple::XROS)
722-
.StartsWith("mesa3d", Triple::Mesa3D)
723-
.StartsWith("amdpal", Triple::AMDPAL)
724-
.StartsWith("hermit", Triple::HermitCore)
725-
.StartsWith("hurd", Triple::Hurd)
726-
.StartsWith("wasi", Triple::WASI)
727-
.StartsWith("emscripten", Triple::Emscripten)
728-
.StartsWith("shadermodel", Triple::ShaderModel)
729-
.StartsWith("liteos", Triple::LiteOS)
730-
.StartsWith("serenity", Triple::Serenity)
731-
.StartsWith("vulkan", Triple::Vulkan)
732-
.Default(Triple::UnknownOS);
692+
.StartsWith("darwin", Triple::Darwin)
693+
.StartsWith("dragonfly", Triple::DragonFly)
694+
.StartsWith("freebsd", Triple::FreeBSD)
695+
.StartsWith("fuchsia", Triple::Fuchsia)
696+
.StartsWith("ios", Triple::IOS)
697+
.StartsWith("kfreebsd", Triple::KFreeBSD)
698+
.StartsWith("linux", Triple::Linux)
699+
.StartsWith("lv2", Triple::Lv2)
700+
.StartsWith("macos", Triple::MacOSX)
701+
.StartsWith("managarm", Triple::Managarm)
702+
.StartsWith("netbsd", Triple::NetBSD)
703+
.StartsWith("openbsd", Triple::OpenBSD)
704+
.StartsWith("solaris", Triple::Solaris)
705+
.StartsWith("uefi", Triple::UEFI)
706+
.StartsWith("win32", Triple::Win32)
707+
.StartsWith("windows", Triple::Win32)
708+
.StartsWith("zos", Triple::ZOS)
709+
.StartsWith("haiku", Triple::Haiku)
710+
.StartsWith("rtems", Triple::RTEMS)
711+
.StartsWith("aix", Triple::AIX)
712+
.StartsWith("cuda", Triple::CUDA)
713+
.StartsWith("nvcl", Triple::NVCL)
714+
.StartsWith("amdhsa", Triple::AMDHSA)
715+
.StartsWith("ps4", Triple::PS4)
716+
.StartsWith("ps5", Triple::PS5)
717+
.StartsWith("elfiamcu", Triple::ELFIAMCU)
718+
.StartsWith("tvos", Triple::TvOS)
719+
.StartsWith("watchos", Triple::WatchOS)
720+
.StartsWith("bridgeos", Triple::BridgeOS)
721+
.StartsWith("driverkit", Triple::DriverKit)
722+
.StartsWith("xros", Triple::XROS)
723+
.StartsWith("visionos", Triple::XROS)
724+
.StartsWith("mesa3d", Triple::Mesa3D)
725+
.StartsWith("amdpal", Triple::AMDPAL)
726+
.StartsWith("hermit", Triple::HermitCore)
727+
.StartsWith("hurd", Triple::Hurd)
728+
.StartsWith("wasi", Triple::WASI)
729+
.StartsWith("emscripten", Triple::Emscripten)
730+
.StartsWith("shadermodel", Triple::ShaderModel)
731+
.StartsWith("liteos", Triple::LiteOS)
732+
.StartsWith("serenity", Triple::Serenity)
733+
.StartsWith("vulkan", Triple::Vulkan)
734+
.StartsWith("cheriotrtos", Triple::CheriotRTOS)
735+
.Default(Triple::UnknownOS);
733736
}
734737

735738
static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) {

llvm/unittests/TargetParser/TripleTest.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1381,6 +1381,11 @@ TEST(TripleTest, ParsedIDs) {
13811381

13821382
T = Triple("huh");
13831383
EXPECT_EQ(Triple::UnknownArch, T.getArch());
1384+
1385+
T = Triple("riscv32-unknown-cheriotrtos");
1386+
EXPECT_EQ(Triple::riscv32, T.getArch());
1387+
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
1388+
EXPECT_EQ(Triple::CheriotRTOS, T.getOS());
13841389
}
13851390

13861391
static std::string Join(StringRef A, StringRef B, StringRef C) {

0 commit comments

Comments
 (0)