case x86: return "i386";
case x86_64: return "x86_64";
case xcore: return "xcore";
+ case xtensa: return "xtensa";
}
llvm_unreachable("Invalid ArchType!");
case loongarch64: return "loongarch";
case dxil: return "dx";
+
+ case xtensa: return "xtensa";
}
}
.Case("loongarch32", loongarch32)
.Case("loongarch64", loongarch64)
.Case("dxil", dxil)
+ .Case("xtensa", xtensa)
.Default(UnknownArch);
}
.Case("loongarch32", Triple::loongarch32)
.Case("loongarch64", Triple::loongarch64)
.Case("dxil", Triple::dxil)
+ .Case("xtensa", Triple::xtensa)
.Default(Triple::UnknownArch);
// Some architectures require special parsing logic just to compute the
case Triple::thumbeb:
case Triple::ve:
case Triple::xcore:
+ case Triple::xtensa:
return Triple::ELF;
case Triple::ppc64:
case llvm::Triple::wasm32:
case llvm::Triple::x86:
case llvm::Triple::xcore:
+ case llvm::Triple::xtensa:
return 32;
case llvm::Triple::aarch64:
case Triple::wasm32:
case Triple::x86:
case Triple::xcore:
+ case Triple::xtensa:
// Already 32-bit.
break;
case Triple::tce:
case Triple::tcele:
case Triple::xcore:
+ case Triple::xtensa:
T.setArch(UnknownArch);
break;
case Triple::xcore:
case Triple::ve:
case Triple::csky:
+ case Triple::xtensa:
// ARM is intentionally unsupported here, changing the architecture would
// drop any arch suffixes.
case Triple::x86:
case Triple::x86_64:
case Triple::xcore:
+ case Triple::xtensa:
return true;
default:
return false;
EXPECT_EQ(Triple::Amplification, T.getEnvironment());
EXPECT_FALSE(T.supportsCOMDAT());
+ 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());
}
EXPECT_TRUE(T.isArch32Bit());
EXPECT_FALSE(T.isArch64Bit());
EXPECT_TRUE(T.isDXIL());
+
+ T.setArch(Triple::xtensa);
+ EXPECT_FALSE(T.isArch16Bit());
+ EXPECT_TRUE(T.isArch32Bit());
+ EXPECT_FALSE(T.isArch64Bit());
}
TEST(TripleTest, BitWidthArchVariants) {
T.setArch(Triple::dxil);
EXPECT_EQ(Triple::dxil, 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) {