@@ -652,6 +652,20 @@ impl<'tcx> InlineAssemblyGenerator<'_, 'tcx> {
652652 . emit ( & mut generated_asm, InlineAsmArch :: X86_64 , * modifier)
653653 . unwrap ( ) ,
654654 } ,
655+ InlineAsmArch :: AArch64 => match reg {
656+ InlineAsmReg :: AArch64 ( reg) if reg. vreg_index ( ) . is_some ( ) => {
657+ // rustc emits v0 rather than q0
658+ reg. emit (
659+ & mut generated_asm,
660+ InlineAsmArch :: AArch64 ,
661+ Some ( modifier. unwrap_or ( 'q' ) ) ,
662+ )
663+ . unwrap ( )
664+ }
665+ _ => reg
666+ . emit ( & mut generated_asm, InlineAsmArch :: AArch64 , * modifier)
667+ . unwrap ( ) ,
668+ } ,
655669 _ => reg. emit ( & mut generated_asm, self . arch , * modifier) . unwrap ( ) ,
656670 }
657671 }
@@ -809,7 +823,13 @@ impl<'tcx> InlineAssemblyGenerator<'_, 'tcx> {
809823 }
810824 InlineAsmArch :: AArch64 => {
811825 generated_asm. push_str ( " str " ) ;
812- reg. emit ( generated_asm, InlineAsmArch :: AArch64 , None ) . unwrap ( ) ;
826+ match reg {
827+ InlineAsmReg :: AArch64 ( reg) if reg. vreg_index ( ) . is_some ( ) => {
828+ // rustc emits v0 rather than q0
829+ reg. emit ( generated_asm, InlineAsmArch :: AArch64 , Some ( 'q' ) ) . unwrap ( )
830+ }
831+ _ => reg. emit ( generated_asm, InlineAsmArch :: AArch64 , None ) . unwrap ( ) ,
832+ }
813833 writeln ! ( generated_asm, ", [x19, 0x{:x}]" , offset. bytes( ) ) . unwrap ( ) ;
814834 }
815835 InlineAsmArch :: RiscV64 => {
@@ -851,7 +871,13 @@ impl<'tcx> InlineAssemblyGenerator<'_, 'tcx> {
851871 }
852872 InlineAsmArch :: AArch64 => {
853873 generated_asm. push_str ( " ldr " ) ;
854- reg. emit ( generated_asm, InlineAsmArch :: AArch64 , None ) . unwrap ( ) ;
874+ match reg {
875+ InlineAsmReg :: AArch64 ( reg) if reg. vreg_index ( ) . is_some ( ) => {
876+ // rustc emits v0 rather than q0
877+ reg. emit ( generated_asm, InlineAsmArch :: AArch64 , Some ( 'q' ) ) . unwrap ( )
878+ }
879+ _ => reg. emit ( generated_asm, InlineAsmArch :: AArch64 , None ) . unwrap ( ) ,
880+ }
855881 writeln ! ( generated_asm, ", [x19, 0x{:x}]" , offset. bytes( ) ) . unwrap ( ) ;
856882 }
857883 InlineAsmArch :: RiscV64 => {
0 commit comments