Initial migration of AVR backend
This patch adds the underlying infrastructure for an AVR backend to be included into LLVM. It is the first of a series of patches aimed at moving the out-of-tree AVR backend into the tree. It consists of adding a new`Triple` target 'avr'. llvm-svn: 250492
This commit is contained in:
parent
58fae7cf6b
commit
b1d469c657
|
@ -50,6 +50,7 @@ public:
|
|||
armeb, // ARM (big endian): armeb
|
||||
aarch64, // AArch64 (little endian): aarch64
|
||||
aarch64_be, // AArch64 (big endian): aarch64_be
|
||||
avr, // AVR: Atmel AVR microcontroller
|
||||
bpfel, // eBPF or extended BPF or 64-bit BPF (little endian)
|
||||
bpfeb, // eBPF or extended BPF or 64-bit BPF (big endian)
|
||||
hexagon, // Hexagon: hexagon
|
||||
|
|
|
@ -25,6 +25,7 @@ const char *Triple::getArchTypeName(ArchType Kind) {
|
|||
case aarch64_be: return "aarch64_be";
|
||||
case arm: return "arm";
|
||||
case armeb: return "armeb";
|
||||
case avr: return "avr";
|
||||
case bpfel: return "bpfel";
|
||||
case bpfeb: return "bpfeb";
|
||||
case hexagon: return "hexagon";
|
||||
|
@ -80,6 +81,8 @@ const char *Triple::getArchTypePrefix(ArchType Kind) {
|
|||
case thumb:
|
||||
case thumbeb: return "arm";
|
||||
|
||||
case avr: return "avr";
|
||||
|
||||
case ppc64:
|
||||
case ppc64le:
|
||||
case ppc: return "ppc";
|
||||
|
@ -227,6 +230,7 @@ Triple::ArchType Triple::getArchTypeForLLVMName(StringRef Name) {
|
|||
.Case("arm64", aarch64) // "arm64" is an alias for "aarch64"
|
||||
.Case("arm", arm)
|
||||
.Case("armeb", armeb)
|
||||
.Case("avr", avr)
|
||||
.StartsWith("bpf", BPFArch)
|
||||
.Case("mips", mips)
|
||||
.Case("mipsel", mipsel)
|
||||
|
@ -343,6 +347,7 @@ static Triple::ArchType parseArch(StringRef ArchName) {
|
|||
.Case("armeb", Triple::armeb)
|
||||
.Case("thumb", Triple::thumb)
|
||||
.Case("thumbeb", Triple::thumbeb)
|
||||
.Case("avr", Triple::avr)
|
||||
.Case("msp430", Triple::msp430)
|
||||
.Cases("mips", "mipseb", "mipsallegrex", Triple::mips)
|
||||
.Cases("mipsel", "mipsallegrexel", Triple::mipsel)
|
||||
|
@ -1029,6 +1034,7 @@ static unsigned getArchPointerBitWidth(llvm::Triple::ArchType Arch) {
|
|||
case llvm::Triple::UnknownArch:
|
||||
return 0;
|
||||
|
||||
case llvm::Triple::avr:
|
||||
case llvm::Triple::msp430:
|
||||
return 16;
|
||||
|
||||
|
@ -1098,6 +1104,7 @@ Triple Triple::get32BitArchVariant() const {
|
|||
case Triple::aarch64:
|
||||
case Triple::aarch64_be:
|
||||
case Triple::amdgcn:
|
||||
case Triple::avr:
|
||||
case Triple::bpfel:
|
||||
case Triple::bpfeb:
|
||||
case Triple::msp430:
|
||||
|
@ -1152,6 +1159,7 @@ Triple Triple::get64BitArchVariant() const {
|
|||
case Triple::UnknownArch:
|
||||
case Triple::arm:
|
||||
case Triple::armeb:
|
||||
case Triple::avr:
|
||||
case Triple::hexagon:
|
||||
case Triple::kalimba:
|
||||
case Triple::msp430:
|
||||
|
@ -1208,6 +1216,7 @@ Triple Triple::getBigEndianArchVariant() const {
|
|||
case Triple::amdgcn:
|
||||
case Triple::amdil64:
|
||||
case Triple::amdil:
|
||||
case Triple::avr:
|
||||
case Triple::hexagon:
|
||||
case Triple::hsail64:
|
||||
case Triple::hsail:
|
||||
|
@ -1280,6 +1289,7 @@ Triple Triple::getLittleEndianArchVariant() const {
|
|||
case Triple::amdil64:
|
||||
case Triple::amdil:
|
||||
case Triple::arm:
|
||||
case Triple::avr:
|
||||
case Triple::bpfel:
|
||||
case Triple::hexagon:
|
||||
case Triple::hsail64:
|
||||
|
|
|
@ -194,6 +194,18 @@ TEST(TripleTest, ParsedIDs) {
|
|||
EXPECT_EQ(Triple::UnknownOS, T.getOS());
|
||||
EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment());
|
||||
|
||||
T = Triple("avr-unknown-unknown");
|
||||
EXPECT_EQ(Triple::avr, T.getArch());
|
||||
EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
|
||||
EXPECT_EQ(Triple::UnknownOS, T.getOS());
|
||||
EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment());
|
||||
|
||||
T = Triple("avr");
|
||||
EXPECT_EQ(Triple::avr, 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());
|
||||
}
|
||||
|
@ -463,6 +475,11 @@ TEST(TripleTest, BitWidthPredicates) {
|
|||
EXPECT_FALSE(T.isArch16Bit());
|
||||
EXPECT_FALSE(T.isArch32Bit());
|
||||
EXPECT_TRUE(T.isArch64Bit());
|
||||
|
||||
T.setArch(Triple::avr);
|
||||
EXPECT_TRUE(T.isArch16Bit());
|
||||
EXPECT_FALSE(T.isArch32Bit());
|
||||
EXPECT_FALSE(T.isArch64Bit());
|
||||
}
|
||||
|
||||
TEST(TripleTest, BitWidthArchVariants) {
|
||||
|
|
Loading…
Reference in New Issue