@@ -611,10 +611,14 @@ fn reg_to_gcc(reg: InlineAsmRegOrRegClass) -> ConstraintOrRegister {
611611 }
612612 // They can be retrieved from https://gcc.gnu.org/onlinedocs/gcc/Machine-Constraints.html
613613 InlineAsmRegOrRegClass :: RegClass ( reg) => match reg {
614- InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: reg) => "r" ,
615- InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: vreg) => "w" ,
616- InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: vreg_low16) => "x" ,
617- InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: preg) => {
614+ InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: reg)
615+ | InlineAsmRegClass :: Arm64EC ( AArch64InlineAsmRegClass :: reg) => "r" ,
616+ InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: vreg)
617+ | InlineAsmRegClass :: Arm64EC ( AArch64InlineAsmRegClass :: vreg) => "w" ,
618+ InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: vreg_low16)
619+ | InlineAsmRegClass :: Arm64EC ( AArch64InlineAsmRegClass :: vreg_low16) => "x" ,
620+ InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: preg)
621+ | InlineAsmRegClass :: Arm64EC ( AArch64InlineAsmRegClass :: preg) => {
618622 unreachable ! ( "clobber-only" )
619623 }
620624 InlineAsmRegClass :: Arm ( ArmInlineAsmRegClass :: reg) => "r" ,
@@ -698,12 +702,16 @@ fn reg_to_gcc(reg: InlineAsmRegOrRegClass) -> ConstraintOrRegister {
698702/// the type is, as long as it is valid for the constraint code.
699703fn dummy_output_type < ' gcc , ' tcx > ( cx : & CodegenCx < ' gcc , ' tcx > , reg : InlineAsmRegClass ) -> Type < ' gcc > {
700704 match reg {
701- InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
705+ InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: reg)
706+ | InlineAsmRegClass :: Arm64EC ( AArch64InlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
702707 InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: vreg)
703- | InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: vreg_low16) => {
708+ | InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: vreg_low16)
709+ | InlineAsmRegClass :: Arm64EC ( AArch64InlineAsmRegClass :: vreg)
710+ | InlineAsmRegClass :: Arm64EC ( AArch64InlineAsmRegClass :: vreg_low16) => {
704711 cx. type_vector ( cx. type_i64 ( ) , 2 )
705712 }
706- InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: preg) => {
713+ InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: preg)
714+ | InlineAsmRegClass :: Arm64EC ( AArch64InlineAsmRegClass :: preg) => {
707715 unreachable ! ( "clobber-only" )
708716 }
709717 InlineAsmRegClass :: Arm ( ArmInlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
@@ -863,12 +871,16 @@ fn modifier_to_gcc(
863871 // The modifiers can be retrieved from
864872 // https://gcc.gnu.org/onlinedocs/gcc/Modifiers.html#Modifiers
865873 match reg {
866- InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: reg) => modifier,
874+ InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: reg)
875+ | InlineAsmRegClass :: Arm64EC ( AArch64InlineAsmRegClass :: reg) => modifier,
867876 InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: vreg)
868- | InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: vreg_low16) => {
877+ | InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: vreg_low16)
878+ | InlineAsmRegClass :: Arm64EC ( AArch64InlineAsmRegClass :: vreg)
879+ | InlineAsmRegClass :: Arm64EC ( AArch64InlineAsmRegClass :: vreg_low16) => {
869880 if modifier == Some ( 'v' ) { None } else { modifier }
870881 }
871- InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: preg) => {
882+ InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: preg)
883+ | InlineAsmRegClass :: Arm64EC ( AArch64InlineAsmRegClass :: preg) => {
872884 unreachable ! ( "clobber-only" )
873885 }
874886 InlineAsmRegClass :: Arm ( ArmInlineAsmRegClass :: reg) => None ,
0 commit comments