Skip to content

Commit 5fb3b38

Browse files
MabezDevtaiki-eKerryRJ
committed
asm! support for the Xtensa architecture
Co-authored-by: Taiki Endo <te316e89@gmail.com> Co-authored-by: Kerry Jones <kerry@iodrive.co.za>
1 parent 2ad24e1 commit 5fb3b38

1 file changed

Lines changed: 11 additions & 0 deletions

File tree

src/asm.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -751,6 +751,11 @@ fn reg_class_to_gcc(reg_class: InlineAsmRegClass) -> &'static str {
751751
| X86InlineAsmRegClass::mmx_reg
752752
| X86InlineAsmRegClass::tmm_reg,
753753
) => unreachable!("clobber-only"),
754+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::reg) => "r",
755+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::freg) => "f",
756+
InlineAsmRegClass::Xtensa(
757+
XtensaInlineAsmRegClass::sreg | XtensaInlineAsmRegClass::breg,
758+
) => unreachable!("clobber-only"),
754759
InlineAsmRegClass::SpirV(SpirVInlineAsmRegClass::reg) => {
755760
bug!("GCC backend does not support SPIR-V")
756761
}
@@ -872,6 +877,11 @@ fn dummy_output_type<'gcc, 'tcx>(cx: &CodegenCx<'gcc, 'tcx>, reg: InlineAsmRegCl
872877
InlineAsmRegClass::SpirV(SpirVInlineAsmRegClass::reg) => {
873878
bug!("GCC backend does not support SPIR-V")
874879
}
880+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::reg) => cx.type_i32(),
881+
InlineAsmRegClass::Xtensa(XtensaInlineAsmRegClass::freg) => cx.type_f32(),
882+
InlineAsmRegClass::Xtensa(
883+
XtensaInlineAsmRegClass::sreg | XtensaInlineAsmRegClass::breg,
884+
) => unreachable!("clobber-only"),
875885
InlineAsmRegClass::Err => unreachable!(),
876886
}
877887
}
@@ -1070,6 +1080,7 @@ fn modifier_to_gcc(
10701080
InlineAsmRegClass::SpirV(SpirVInlineAsmRegClass::reg) => {
10711081
bug!("LLVM backend does not support SPIR-V")
10721082
}
1083+
InlineAsmRegClass::Xtensa(_) => None,
10731084
InlineAsmRegClass::Err => unreachable!(),
10741085
}
10751086
}

0 commit comments

Comments
 (0)