@@ -694,10 +694,12 @@ fn reg_to_gcc(reg: InlineAsmRegOrRegClass) -> ConstraintOrRegister {
694
694
fn dummy_output_type < ' gcc , ' tcx > ( cx : & CodegenCx < ' gcc , ' tcx > , reg : InlineAsmRegClass ) -> Type < ' gcc > {
695
695
match reg {
696
696
InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
697
- InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: preg) => unimplemented ! ( ) ,
698
697
InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: vreg)
699
698
| 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" )
701
703
}
702
704
InlineAsmRegClass :: Arm ( ArmInlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
703
705
InlineAsmRegClass :: Arm ( ArmInlineAsmRegClass :: sreg)
@@ -708,21 +710,13 @@ fn dummy_output_type<'gcc, 'tcx>(cx: &CodegenCx<'gcc, 'tcx>, reg: InlineAsmRegCl
708
710
InlineAsmRegClass :: Arm ( ArmInlineAsmRegClass :: qreg)
709
711
| InlineAsmRegClass :: Arm ( ArmInlineAsmRegClass :: qreg_low8)
710
712
| InlineAsmRegClass :: Arm ( ArmInlineAsmRegClass :: qreg_low4) => {
711
- unimplemented ! ( )
713
+ cx . type_vector ( cx . type_i64 ( ) , 2 )
712
714
}
713
- InlineAsmRegClass :: Avr ( _) => unimplemented ! ( ) ,
714
- InlineAsmRegClass :: Bpf ( _) => unimplemented ! ( ) ,
715
715
InlineAsmRegClass :: Hexagon ( HexagonInlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
716
716
InlineAsmRegClass :: LoongArch ( LoongArchInlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
717
717
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 ( ) ,
723
718
InlineAsmRegClass :: Mips ( MipsInlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
724
719
InlineAsmRegClass :: Mips ( MipsInlineAsmRegClass :: freg) => cx. type_f32 ( ) ,
725
- InlineAsmRegClass :: Msp430 ( _) => unimplemented ! ( ) ,
726
720
InlineAsmRegClass :: Nvptx ( NvptxInlineAsmRegClass :: reg16) => cx. type_i16 ( ) ,
727
721
InlineAsmRegClass :: Nvptx ( NvptxInlineAsmRegClass :: reg32) => cx. type_i32 ( ) ,
728
722
InlineAsmRegClass :: Nvptx ( NvptxInlineAsmRegClass :: reg64) => cx. type_i64 ( ) ,
@@ -735,26 +729,43 @@ fn dummy_output_type<'gcc, 'tcx>(cx: &CodegenCx<'gcc, 'tcx>, reg: InlineAsmRegCl
735
729
}
736
730
InlineAsmRegClass :: RiscV ( RiscVInlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
737
731
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
+ }
739
735
InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: reg)
740
736
| InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: reg_abcd) => cx. type_i32 ( ) ,
741
737
InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: reg_byte) => cx. type_i8 ( ) ,
742
- InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: mmx_reg) => unimplemented ! ( ) ,
743
738
InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: xmm_reg)
744
739
| InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: ymm_reg)
745
740
| InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: zmm_reg) => cx. type_f32 ( ) ,
746
- InlineAsmRegClass :: X86 ( X86InlineAsmRegClass :: x87_reg) => unimplemented ! ( ) ,
747
741
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 " )
753
747
}
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 ( ) ,
754
756
InlineAsmRegClass :: S390x (
755
757
S390xInlineAsmRegClass :: reg | S390xInlineAsmRegClass :: reg_addr,
756
758
) => cx. type_i32 ( ) ,
757
759
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
+ }
758
769
InlineAsmRegClass :: Err => unreachable ! ( ) ,
759
770
}
760
771
}
0 commit comments