summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/include/llvm/ADT/Triple.h1
-rw-r--r--llvm/lib/Support/Triple.cpp10
-rw-r--r--llvm/unittests/ADT/TripleTest.cpp21
3 files changed, 32 insertions, 0 deletions
diff --git a/llvm/include/llvm/ADT/Triple.h b/llvm/include/llvm/ADT/Triple.h
index ac5b2f687e5..81d02282802 100644
--- a/llvm/include/llvm/ADT/Triple.h
+++ b/llvm/include/llvm/ADT/Triple.h
@@ -86,6 +86,7 @@ public:
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
diff --git a/llvm/lib/Support/Triple.cpp b/llvm/lib/Support/Triple.cpp
index 5099cd5290d..1485d8e6185 100644
--- a/llvm/lib/Support/Triple.cpp
+++ b/llvm/lib/Support/Triple.cpp
@@ -60,6 +60,7 @@ const char *Triple::getArchTypeName(ArchType Kind) {
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 @@ const char *Triple::getArchTypePrefix(ArchType Kind) {
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 @@ Triple::ArchType Triple::getArchTypeForLLVMName(StringRef Name) {
.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 @@ static Triple::ArchType parseArch(StringRef ArchName) {
.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 @@ static Triple::ObjectFormatType getDefaultFormat(const Triple &T) {
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 @@ static unsigned getArchPointerBitWidth(llvm::Triple::ArchType Arch) {
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 @@ Triple Triple::get32BitArchVariant() const {
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 @@ Triple Triple::get64BitArchVariant() const {
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 @@ Triple Triple::getBigEndianArchVariant() const {
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 Triple::getLittleEndianArchVariant() const {
Triple T(*this);
switch (getArch()) {
case Triple::UnknownArch:
+ case Triple::lanai:
case Triple::ppc:
case Triple::sparcv9:
case Triple::systemz:
diff --git a/llvm/unittests/ADT/TripleTest.cpp b/llvm/unittests/ADT/TripleTest.cpp
index ac4fa2274e9..ad143ff1c71 100644
--- a/llvm/unittests/ADT/TripleTest.cpp
+++ b/llvm/unittests/ADT/TripleTest.cpp
@@ -212,6 +212,18 @@ TEST(TripleTest, ParsedIDs) {
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 @@ TEST(TripleTest, BitWidthPredicates) {
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 @@ TEST(TripleTest, EndianArchVariants) {
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) {
OpenPOWER on IntegriCloud