@@ -694,10 +694,12 @@ fn reg_to_gcc(reg: InlineAsmRegOrRegClass) -> ConstraintOrRegister {
694694fn dummy_output_type < ' gcc , ' tcx > ( cx : & CodegenCx < ' gcc , ' tcx > , reg : InlineAsmRegClass ) -> Type < ' gcc > {
695695 match reg {
696696 InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
697- InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: preg) => unimplemented ! ( ) ,
698697 InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: vreg)
699698 | InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: vreg_low16) => {
700- unimplemented ! ( )
699+ cx. type_vector ( cx. type_i64 ( ) , 2 )
700+ }
701+ InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: preg) => {
702+ unreachable ! ( "clobber-only" )
701703 }
702704 InlineAsmRegClass :: Arm ( ArmInlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
703705 InlineAsmRegClass :: Arm ( ArmInlineAsmRegClass :: sreg)
@@ -708,21 +710,13 @@ fn dummy_output_type<'gcc, 'tcx>(cx: &CodegenCx<'gcc, 'tcx>, reg: InlineAsmRegCl
708710 InlineAsmRegClass :: Arm ( ArmInlineAsmRegClass :: qreg)
709711 | InlineAsmRegClass :: Arm ( ArmInlineAsmRegClass :: qreg_low8)
710712 | InlineAsmRegClass :: Arm ( ArmInlineAsmRegClass :: qreg_low4) => {
711- unimplemented ! ( )
713+ cx . type_vector ( cx . type_i64 ( ) , 2 )
712714 }
713- InlineAsmRegClass :: Avr ( _) => unimplemented ! ( ) ,
714- InlineAsmRegClass :: Bpf ( _) => unimplemented ! ( ) ,
715715 InlineAsmRegClass :: Hexagon ( HexagonInlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
716716 InlineAsmRegClass :: LoongArch ( LoongArchInlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
717717 InlineAsmRegClass :: LoongArch ( LoongArchInlineAsmRegClass :: freg) => cx. type_f32 ( ) ,
718- InlineAsmRegClass :: M68k ( M68kInlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
719- InlineAsmRegClass :: M68k ( M68kInlineAsmRegClass :: reg_addr) => cx. type_i32 ( ) ,
720- InlineAsmRegClass :: M68k ( M68kInlineAsmRegClass :: reg_data) => cx. type_i32 ( ) ,
721- InlineAsmRegClass :: CSKY ( CSKYInlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
722- InlineAsmRegClass :: CSKY ( CSKYInlineAsmRegClass :: freg) => cx. type_f32 ( ) ,
723718 InlineAsmRegClass :: Mips ( MipsInlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
724719 InlineAsmRegClass :: Mips ( MipsInlineAsmRegClass :: freg) => cx. type_f32 ( ) ,
725- InlineAsmRegClass :: Msp430 ( _) => unimplemented ! ( ) ,
726720 InlineAsmRegClass :: Nvptx ( NvptxInlineAsmRegClass :: reg16) => cx. type_i16 ( ) ,
727721 InlineAsmRegClass :: Nvptx ( NvptxInlineAsmRegClass :: reg32) => cx. type_i32 ( ) ,
728722 InlineAsmRegClass :: Nvptx ( NvptxInlineAsmRegClass :: reg64) => cx. type_i64 ( ) ,
@@ -735,26 +729,43 @@ fn dummy_output_type<'gcc, 'tcx>(cx: &CodegenCx<'gcc, 'tcx>, reg: InlineAsmRegCl
735729 }
736730 InlineAsmRegClass :: RiscV ( RiscVInlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
737731 InlineAsmRegClass :: RiscV ( RiscVInlineAsmRegClass :: freg) => cx. type_f32 ( ) ,
738- InlineAsmRegClass :: RiscV ( RiscVInlineAsmRegClass :: vreg) => cx. type_f32 ( ) ,
732+ InlineAsmRegClass :: RiscV ( RiscVInlineAsmRegClass :: vreg) => {
733+ unreachable ! ( "clobber-only" )
734+ }
739735 InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: reg)
740736 | InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: reg_abcd) => cx. type_i32 ( ) ,
741737 InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: reg_byte) => cx. type_i8 ( ) ,
742- InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: mmx_reg) => unimplemented ! ( ) ,
743738 InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: xmm_reg)
744739 | InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: ymm_reg)
745740 | InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: zmm_reg) => cx. type_f32 ( ) ,
746- InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: x87_reg) => unimplemented ! ( ) ,
747741 InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: kreg) => cx. type_i16 ( ) ,
748- InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: kreg0 ) => cx . type_i16 ( ) ,
749- InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: tmm_reg ) => unimplemented ! ( ) ,
750- InlineAsmRegClass :: Wasm ( WasmInlineAsmRegClass :: local ) => cx . type_i32 ( ) ,
751- InlineAsmRegClass :: SpirV ( SpirVInlineAsmRegClass :: reg ) => {
752- bug ! ( "LLVM backend does not support SPIR-V " )
742+ InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: x87_reg )
743+ | InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: mmx_reg )
744+ | InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: kreg0 )
745+ | InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: tmm_reg ) => {
746+ unreachable ! ( "clobber-only " )
753747 }
748+ InlineAsmRegClass :: Wasm ( WasmInlineAsmRegClass :: local) => cx. type_i32 ( ) ,
749+ InlineAsmRegClass :: Bpf ( BpfInlineAsmRegClass :: reg) => cx. type_i64 ( ) ,
750+ InlineAsmRegClass :: Bpf ( BpfInlineAsmRegClass :: wreg) => cx. type_i32 ( ) ,
751+ InlineAsmRegClass :: Avr ( AvrInlineAsmRegClass :: reg) => cx. type_i8 ( ) ,
752+ InlineAsmRegClass :: Avr ( AvrInlineAsmRegClass :: reg_upper) => cx. type_i8 ( ) ,
753+ InlineAsmRegClass :: Avr ( AvrInlineAsmRegClass :: reg_pair) => cx. type_i16 ( ) ,
754+ InlineAsmRegClass :: Avr ( AvrInlineAsmRegClass :: reg_iw) => cx. type_i16 ( ) ,
755+ InlineAsmRegClass :: Avr ( AvrInlineAsmRegClass :: reg_ptr) => cx. type_i16 ( ) ,
754756 InlineAsmRegClass :: S390x (
755757 S390xInlineAsmRegClass :: reg | S390xInlineAsmRegClass :: reg_addr,
756758 ) => cx. type_i32 ( ) ,
757759 InlineAsmRegClass :: S390x ( S390xInlineAsmRegClass :: freg) => cx. type_f64 ( ) ,
760+ InlineAsmRegClass :: Msp430 ( Msp430InlineAsmRegClass :: reg) => cx. type_i16 ( ) ,
761+ InlineAsmRegClass :: M68k ( M68kInlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
762+ InlineAsmRegClass :: M68k ( M68kInlineAsmRegClass :: reg_addr) => cx. type_i32 ( ) ,
763+ InlineAsmRegClass :: M68k ( M68kInlineAsmRegClass :: reg_data) => cx. type_i32 ( ) ,
764+ InlineAsmRegClass :: CSKY ( CSKYInlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
765+ InlineAsmRegClass :: CSKY ( CSKYInlineAsmRegClass :: freg) => cx. type_f32 ( ) ,
766+ InlineAsmRegClass :: SpirV ( SpirVInlineAsmRegClass :: reg) => {
767+ bug ! ( "GCC backend does not support SPIR-V" )
768+ }
758769 InlineAsmRegClass :: Err => unreachable ! ( ) ,
759770 }
760771}
0 commit comments