Index: clang/lib/CodeGen/CGOpenMPRuntime.cpp =================================================================== --- clang/lib/CodeGen/CGOpenMPRuntime.cpp +++ clang/lib/CodeGen/CGOpenMPRuntime.cpp @@ -11123,6 +11123,7 @@ case llvm::Triple::renderscript32: case llvm::Triple::renderscript64: case llvm::Triple::ve: + case llvm::Triple::xtensa: return false; } } Index: llvm/include/llvm/ADT/Triple.h =================================================================== --- llvm/include/llvm/ADT/Triple.h +++ llvm/include/llvm/ADT/Triple.h @@ -78,6 +78,7 @@ x86, // X86: i[3-9]86 x86_64, // X86-64: amd64, x86_64 xcore, // XCore: xcore + xtensa, // Tensilica Xtensa nvptx, // NVPTX: 32-bit nvptx64, // NVPTX: 64-bit le32, // le32: generic little-endian 32-bit CPU (PNaCl) Index: llvm/lib/Support/Triple.cpp =================================================================== --- llvm/lib/Support/Triple.cpp +++ llvm/lib/Support/Triple.cpp @@ -71,6 +71,7 @@ case x86: return "i386"; case x86_64: return "x86_64"; case xcore: return "xcore"; + case xtensa: return "xtensa"; } llvm_unreachable("Invalid ArchType!"); @@ -147,6 +148,8 @@ case riscv64: return "riscv"; case ve: return "ve"; + + case xtensa: return "xtensa"; } } @@ -317,6 +320,7 @@ .Case("renderscript32", renderscript32) .Case("renderscript64", renderscript64) .Case("ve", ve) + .Case("xtensa", xtensa) .Default(UnknownArch); } @@ -446,6 +450,7 @@ .Case("ve", Triple::ve) .Case("wasm32", Triple::wasm32) .Case("wasm64", Triple::wasm64) + .Case("xtensa", Triple::xtensa) .Default(Triple::UnknownArch); // Some architectures require special parsing logic just to compute the @@ -706,6 +711,7 @@ case Triple::thumbeb: case Triple::ve: case Triple::xcore: + case Triple::xtensa: return Triple::ELF; case Triple::ppc64: @@ -1267,6 +1273,7 @@ case llvm::Triple::wasm32: case llvm::Triple::x86: case llvm::Triple::xcore: + case llvm::Triple::xtensa: return 32; case llvm::Triple::aarch64: @@ -1350,6 +1357,7 @@ case Triple::wasm32: case Triple::x86: case Triple::xcore: + case Triple::xtensa: // Already 32-bit. break; @@ -1388,6 +1396,7 @@ case Triple::tce: case Triple::tcele: case Triple::xcore: + case Triple::xtensa: T.setArch(UnknownArch); break; @@ -1471,6 +1480,7 @@ case Triple::x86_64: case Triple::xcore: case Triple::ve: + case Triple::xtensa: // ARM is intentionally unsupported here, changing the architecture would // drop any arch suffixes. @@ -1563,6 +1573,7 @@ case Triple::x86: case Triple::x86_64: case Triple::xcore: + case Triple::xtensa: return true; default: return false; Index: llvm/unittests/ADT/TripleTest.cpp =================================================================== --- llvm/unittests/ADT/TripleTest.cpp +++ llvm/unittests/ADT/TripleTest.cpp @@ -579,6 +579,18 @@ EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); EXPECT_TRUE(T.isArch32Bit()); + T = Triple("xtensa"); + EXPECT_EQ(Triple::xtensa, T.getArch()); + EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); + EXPECT_EQ(Triple::UnknownOS, T.getOS()); + EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); + + T = Triple("xtensa-unknown-unknown"); + EXPECT_EQ(Triple::xtensa, 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()); } @@ -904,6 +916,11 @@ EXPECT_FALSE(T.isArch32Bit()); EXPECT_TRUE(T.isArch64Bit()); EXPECT_TRUE(T.isRISCV()); + + T.setArch(Triple::xtensa); + EXPECT_FALSE(T.isArch16Bit()); + EXPECT_TRUE(T.isArch32Bit()); + EXPECT_FALSE(T.isArch64Bit()); } TEST(TripleTest, BitWidthArchVariants) { @@ -1050,6 +1067,10 @@ T.setArch(Triple::xcore); EXPECT_EQ(Triple::xcore, T.get32BitArchVariant().getArch()); EXPECT_EQ(Triple::UnknownArch, T.get64BitArchVariant().getArch()); + + T.setArch(Triple::xtensa); + EXPECT_EQ(Triple::xtensa, T.get32BitArchVariant().getArch()); + EXPECT_EQ(Triple::UnknownArch, T.get64BitArchVariant().getArch()); } TEST(TripleTest, EndianArchVariants) {