Skip to content

Commit 693cb94

Browse files
MabezDevhsteinhaus
authored andcommitted
Enable Xtensa codegen for rustc_codegen_gcc
* Updates uses of object::Architecture within the compiler
1 parent baa1e83 commit 693cb94

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
@@ -692,6 +692,9 @@ fn reg_to_gcc(reg: InlineAsmRegOrRegClass) -> ConstraintOrRegister {
692692
}
693693
InlineAsmRegClass::Sparc(SparcInlineAsmRegClass::reg) => "r",
694694
InlineAsmRegClass::Sparc(SparcInlineAsmRegClass::yreg) => unreachable!("clobber-only"),
695+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::reg) => "r",
696+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::freg) => "f",
697+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::breg) => "b",
695698
InlineAsmRegClass::Err => unreachable!(),
696699
},
697700
};
@@ -787,7 +790,10 @@ fn dummy_output_type<'gcc, 'tcx>(cx: &CodegenCx<'gcc, 'tcx>, reg: InlineAsmRegCl
787790
InlineAsmRegClass::CSKY(CSKYInlineAsmRegClass::freg) => cx.type_f32(),
788791
InlineAsmRegClass::SpirV(SpirVInlineAsmRegClass::reg) => {
789792
bug!("GCC backend does not support SPIR-V")
790-
}
793+
},
794+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::reg) => cx.type_i32(),
795+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::freg) => cx.type_f32(),
796+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::breg) => cx.type_i8(), // FIXME: should this be i1?
791797
InlineAsmRegClass::Err => unreachable!(),
792798
}
793799
}
@@ -971,7 +977,10 @@ fn modifier_to_gcc(
971977
InlineAsmRegClass::CSKY(_) => None,
972978
InlineAsmRegClass::SpirV(SpirVInlineAsmRegClass::reg) => {
973979
bug!("LLVM backend does not support SPIR-V")
974-
}
980+
},
981+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::reg) => unimplemented!(),
982+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::freg) => unimplemented!(),
983+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::breg) => unimplemented!(),
975984
InlineAsmRegClass::Err => unreachable!(),
976985
}
977986
}

compiler/rustc_codegen_ssa/src/back/metadata.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ pub(crate) fn create_object_file(sess: &Session) -> Option<write::Object<'static
249249
"loongarch64" => (Architecture::LoongArch64, None),
250250
"csky" => (Architecture::Csky, None),
251251
"arm64ec" => (Architecture::Aarch64, Some(SubArchitecture::Arm64EC)),
252+
"xtensa" => (Architecture::Xtensa, None),
252253
// Unsupported architecture.
253254
_ => return None,
254255
};

0 commit comments

Comments
 (0)