@@ -652,6 +652,20 @@ impl<'tcx> InlineAssemblyGenerator<'_, 'tcx> {
652
652
. emit ( & mut generated_asm, InlineAsmArch :: X86_64 , * modifier)
653
653
. unwrap ( ) ,
654
654
} ,
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
+ } ,
655
669
_ => reg. emit ( & mut generated_asm, self . arch , * modifier) . unwrap ( ) ,
656
670
}
657
671
}
@@ -809,7 +823,13 @@ impl<'tcx> InlineAssemblyGenerator<'_, 'tcx> {
809
823
}
810
824
InlineAsmArch :: AArch64 => {
811
825
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
+ }
813
833
writeln ! ( generated_asm, ", [x19, 0x{:x}]" , offset. bytes( ) ) . unwrap ( ) ;
814
834
}
815
835
InlineAsmArch :: RiscV64 => {
@@ -851,7 +871,13 @@ impl<'tcx> InlineAssemblyGenerator<'_, 'tcx> {
851
871
}
852
872
InlineAsmArch :: AArch64 => {
853
873
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
+ }
855
881
writeln ! ( generated_asm, ", [x19, 0x{:x}]" , offset. bytes( ) ) . unwrap ( ) ;
856
882
}
857
883
InlineAsmArch :: RiscV64 => {
0 commit comments