Skip to content

Commit 78beaa3

Browse files
committed
Enable Xtensa codegen for rustc_codegen_gcc
* Updates uses of object::Architecture within the compiler
1 parent 07530d0 commit 78beaa3

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

compiler/rustc_codegen_gcc/src/asm.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -682,6 +682,9 @@ fn reg_to_gcc(reg: InlineAsmRegOrRegClass) -> ConstraintOrRegister {
682682
InlineAsmRegClass::S390x(S390xInlineAsmRegClass::reg) => "r",
683683
InlineAsmRegClass::S390x(S390xInlineAsmRegClass::reg_addr) => "a",
684684
InlineAsmRegClass::S390x(S390xInlineAsmRegClass::freg) => "f",
685+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::reg) => unimplemented!(),
686+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::freg) => unimplemented!(),
687+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::breg) => unimplemented!(),
685688
InlineAsmRegClass::Err => unreachable!(),
686689
},
687690
};
@@ -765,7 +768,10 @@ fn dummy_output_type<'gcc, 'tcx>(cx: &CodegenCx<'gcc, 'tcx>, reg: InlineAsmRegCl
765768
InlineAsmRegClass::CSKY(CSKYInlineAsmRegClass::freg) => cx.type_f32(),
766769
InlineAsmRegClass::SpirV(SpirVInlineAsmRegClass::reg) => {
767770
bug!("GCC backend does not support SPIR-V")
768-
}
771+
},
772+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::reg) => cx.type_i32(),
773+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::freg) => cx.type_f32(),
774+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::breg) => cx.type_i8(), // FIXME: should this be i1?
769775
InlineAsmRegClass::Err => unreachable!(),
770776
}
771777
}
@@ -941,7 +947,10 @@ fn modifier_to_gcc(
941947
InlineAsmRegClass::CSKY(_) => None,
942948
InlineAsmRegClass::SpirV(SpirVInlineAsmRegClass::reg) => {
943949
bug!("LLVM backend does not support SPIR-V")
944-
}
950+
},
951+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::reg) => unimplemented!(),
952+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::freg) => unimplemented!(),
953+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::breg) => unimplemented!(),
945954
InlineAsmRegClass::Err => unreachable!(),
946955
}
947956
}

compiler/rustc_codegen_ssa/src/back/metadata.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@ pub(crate) fn create_object_file(sess: &Session) -> Option<write::Object<'static
217217
"loongarch64" => (Architecture::LoongArch64, None),
218218
"csky" => (Architecture::Csky, None),
219219
"arm64ec" => (Architecture::Aarch64, Some(SubArchitecture::Arm64EC)),
220+
"xtensa" => (Architecture::Xtensa, None),
220221
// Unsupported architecture.
221222
_ => return None,
222223
};

0 commit comments

Comments
 (0)