Index: llvm/trunk/include/llvm/ADT/Triple.h =================================================================== --- llvm/trunk/include/llvm/ADT/Triple.h +++ llvm/trunk/include/llvm/ADT/Triple.h @@ -86,6 +86,7 @@ spir64, // SPIR: standard portable IR for OpenCL 64-bit version kalimba, // Kalimba: generic kalimba shave, // SHAVE: Movidius vector VLIW processors + lanai, // Lanai: Lanai 32-bit wasm32, // WebAssembly with 32-bit pointers wasm64, // WebAssembly with 64-bit pointers LastArchType = wasm64 Index: llvm/trunk/lib/Support/Triple.cpp =================================================================== --- llvm/trunk/lib/Support/Triple.cpp +++ llvm/trunk/lib/Support/Triple.cpp @@ -60,6 +60,7 @@ case spir: return "spir"; case spir64: return "spir64"; case kalimba: return "kalimba"; + case lanai: return "lanai"; case shave: return "shave"; case wasm32: return "wasm32"; case wasm64: return "wasm64"; @@ -126,6 +127,7 @@ case spir: case spir64: return "spir"; case kalimba: return "kalimba"; + case lanai: return "lanai"; case shave: return "shave"; case wasm32: case wasm64: return "wasm"; @@ -268,6 +270,7 @@ .Case("spir", spir) .Case("spir64", spir64) .Case("kalimba", kalimba) + .Case("lanai", lanai) .Case("shave", shave) .Case("wasm32", wasm32) .Case("wasm64", wasm64) @@ -376,6 +379,7 @@ .Case("spir", Triple::spir) .Case("spir64", Triple::spir64) .StartsWith("kalimba", Triple::kalimba) + .Case("lanai", Triple::lanai) .Case("shave", Triple::shave) .Case("wasm32", Triple::wasm32) .Case("wasm64", Triple::wasm64) @@ -563,6 +567,7 @@ case Triple::bpfeb: case Triple::bpfel: case Triple::hexagon: + case Triple::lanai: case Triple::hsail: case Triple::hsail64: case Triple::kalimba: @@ -1115,6 +1120,7 @@ case llvm::Triple::hsail: case llvm::Triple::spir: case llvm::Triple::kalimba: + case llvm::Triple::lanai: case llvm::Triple::shave: case llvm::Triple::wasm32: return 32; @@ -1188,6 +1194,7 @@ case Triple::thumbeb: case Triple::x86: case Triple::xcore: + case Triple::lanai: case Triple::shave: case Triple::wasm32: // Already 32-bit. @@ -1217,6 +1224,7 @@ case Triple::avr: case Triple::hexagon: case Triple::kalimba: + case Triple::lanai: case Triple::msp430: case Triple::r600: case Triple::tce: @@ -1303,6 +1311,7 @@ case Triple::aarch64_be: case Triple::armeb: case Triple::bpfeb: + case Triple::lanai: case Triple::mips64: case Triple::mips: case Triple::ppc64: @@ -1329,6 +1338,7 @@ Triple T(*this); switch (getArch()) { case Triple::UnknownArch: + case Triple::lanai: case Triple::ppc: case Triple::sparcv9: case Triple::systemz: Index: llvm/trunk/unittests/ADT/TripleTest.cpp =================================================================== --- llvm/trunk/unittests/ADT/TripleTest.cpp +++ llvm/trunk/unittests/ADT/TripleTest.cpp @@ -212,6 +212,18 @@ EXPECT_EQ(Triple::UnknownOS, T.getOS()); EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); + T = Triple("lanai-unknown-unknown"); + EXPECT_EQ(Triple::lanai, T.getArch()); + EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); + EXPECT_EQ(Triple::UnknownOS, T.getOS()); + EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); + + T = Triple("lanai"); + EXPECT_EQ(Triple::lanai, T.getArch()); + EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); + EXPECT_EQ(Triple::UnknownOS, T.getOS()); + EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); + T = Triple("huh"); EXPECT_EQ(Triple::UnknownArch, T.getArch()); } @@ -486,6 +498,11 @@ EXPECT_TRUE(T.isArch16Bit()); EXPECT_FALSE(T.isArch32Bit()); EXPECT_FALSE(T.isArch64Bit()); + + T.setArch(Triple::lanai); + EXPECT_FALSE(T.isArch16Bit()); + EXPECT_TRUE(T.isArch32Bit()); + EXPECT_FALSE(T.isArch64Bit()); } TEST(TripleTest, BitWidthArchVariants) { @@ -654,6 +671,10 @@ T.setArch(Triple::thumbeb); EXPECT_EQ(Triple::thumbeb, T.getBigEndianArchVariant().getArch()); EXPECT_EQ(Triple::UnknownArch, T.getLittleEndianArchVariant().getArch()); + + T.setArch(Triple::lanai); + EXPECT_EQ(Triple::lanai, T.getBigEndianArchVariant().getArch()); + EXPECT_EQ(Triple::UnknownArch, T.getLittleEndianArchVariant().getArch()); } TEST(TripleTest, getOSVersion) {