Index: llvm/include/llvm/TargetParser/Triple.h =================================================================== --- llvm/include/llvm/TargetParser/Triple.h +++ llvm/include/llvm/TargetParser/Triple.h @@ -105,6 +105,7 @@ wasm64, // WebAssembly with 64-bit pointers renderscript32, // 32-bit RenderScript renderscript64, // 64-bit RenderScript + rl78, // Renesas RL78 ve, // NEC SX-Aurora Vector Engine LastArchType = ve }; Index: llvm/lib/TargetParser/Triple.cpp =================================================================== --- llvm/lib/TargetParser/Triple.cpp +++ llvm/lib/TargetParser/Triple.cpp @@ -64,6 +64,7 @@ case renderscript64: return "renderscript64"; case riscv32: return "riscv32"; case riscv64: return "riscv64"; + case rl78: return "rl78"; case shave: return "shave"; case sparc: return "sparc"; case sparcel: return "sparcel"; @@ -166,6 +167,8 @@ case riscv32: case riscv64: return "riscv"; + case rl78: return "rl78"; + case ve: return "ve"; case csky: return "csky"; @@ -389,6 +392,7 @@ .Case("wasm64", wasm64) .Case("renderscript32", renderscript32) .Case("renderscript64", renderscript64) + .Case("rl78", rl78) .Case("ve", ve) .Case("csky", csky) .Case("loongarch32", loongarch32) @@ -528,6 +532,7 @@ .Case("lanai", Triple::lanai) .Case("renderscript32", Triple::renderscript32) .Case("renderscript64", Triple::renderscript64) + .Case("rl78", Triple::rl78) .Case("shave", Triple::shave) .Case("ve", Triple::ve) .Case("wasm32", Triple::wasm32) @@ -838,6 +843,7 @@ case Triple::renderscript64: case Triple::riscv32: case Triple::riscv64: + case Triple::rl78: case Triple::shave: case Triple::sparc: case Triple::sparcel: @@ -1394,6 +1400,7 @@ case llvm::Triple::avr: case llvm::Triple::msp430: + case llvm::Triple::rl78: return 16; case llvm::Triple::aarch64_32: @@ -1482,6 +1489,7 @@ case Triple::bpfeb: case Triple::bpfel: case Triple::msp430: + case Triple::rl78: case Triple::systemz: case Triple::ve: T.setArch(UnknownArch); @@ -1567,6 +1575,7 @@ case Triple::m68k: case Triple::msp430: case Triple::r600: + case Triple::rl78: case Triple::shave: case Triple::sparcel: case Triple::tce: @@ -1661,6 +1670,7 @@ case Triple::renderscript64: case Triple::riscv32: case Triple::riscv64: + case Triple::rl78: case Triple::shave: case Triple::spir64: case Triple::spir: @@ -1769,6 +1779,7 @@ case Triple::renderscript64: case Triple::riscv32: case Triple::riscv64: + case Triple::rl78: case Triple::shave: case Triple::sparcel: case Triple::spir64: Index: llvm/unittests/TargetParser/TripleTest.cpp =================================================================== --- llvm/unittests/TargetParser/TripleTest.cpp +++ llvm/unittests/TargetParser/TripleTest.cpp @@ -888,6 +888,18 @@ EXPECT_EQ(Triple::LiteOS, T.getOS()); EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); + T = Triple("rl78"); + EXPECT_EQ(Triple::rl78, T.getArch()); + EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); + EXPECT_EQ(Triple::UnknownOS, T.getOS()); + EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); + + T = Triple("rl78-unknown-unknown"); + EXPECT_EQ(Triple::rl78, 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()); } @@ -1254,6 +1266,11 @@ EXPECT_FALSE(T.isArch16Bit()); EXPECT_TRUE(T.isArch32Bit()); EXPECT_FALSE(T.isArch64Bit()); + + T.setArch(Triple::rl78); + EXPECT_TRUE(T.isArch16Bit()); + EXPECT_FALSE(T.isArch32Bit()); + EXPECT_FALSE(T.isArch64Bit()); } TEST(TripleTest, BitWidthArchVariants) { @@ -1605,6 +1622,11 @@ EXPECT_TRUE(T.isLittleEndian()); EXPECT_EQ(Triple::UnknownArch, T.getBigEndianArchVariant().getArch()); EXPECT_EQ(Triple::dxil, T.getLittleEndianArchVariant().getArch()); + + T.setArch(Triple::rl78); + EXPECT_TRUE(T.isLittleEndian()); + EXPECT_EQ(Triple::UnknownArch, T.getBigEndianArchVariant().getArch()); + EXPECT_EQ(Triple::rl78, T.getLittleEndianArchVariant().getArch()); } TEST(TripleTest, getOSVersion) {