@@ -611,10 +611,14 @@ fn reg_to_gcc(reg: InlineAsmRegOrRegClass) -> ConstraintOrRegister {
611
611
}
612
612
// They can be retrieved from https://gcc.gnu.org/onlinedocs/gcc/Machine-Constraints.html
613
613
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) => {
618
622
unreachable ! ( "clobber-only" )
619
623
}
620
624
InlineAsmRegClass :: Arm ( ArmInlineAsmRegClass :: reg) => "r" ,
@@ -698,12 +702,16 @@ fn reg_to_gcc(reg: InlineAsmRegOrRegClass) -> ConstraintOrRegister {
698
702
/// the type is, as long as it is valid for the constraint code.
699
703
fn dummy_output_type < ' gcc , ' tcx > ( cx : & CodegenCx < ' gcc , ' tcx > , reg : InlineAsmRegClass ) -> Type < ' gcc > {
700
704
match reg {
701
- InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
705
+ InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: reg)
706
+ | InlineAsmRegClass :: Arm64EC ( AArch64InlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
702
707
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) => {
704
711
cx. type_vector ( cx. type_i64 ( ) , 2 )
705
712
}
706
- InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: preg) => {
713
+ InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: preg)
714
+ | InlineAsmRegClass :: Arm64EC ( AArch64InlineAsmRegClass :: preg) => {
707
715
unreachable ! ( "clobber-only" )
708
716
}
709
717
InlineAsmRegClass :: Arm ( ArmInlineAsmRegClass :: reg) => cx. type_i32 ( ) ,
@@ -863,12 +871,16 @@ fn modifier_to_gcc(
863
871
// The modifiers can be retrieved from
864
872
// https://gcc.gnu.org/onlinedocs/gcc/Modifiers.html#Modifiers
865
873
match reg {
866
- InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: reg) => modifier,
874
+ InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: reg)
875
+ | InlineAsmRegClass :: Arm64EC ( AArch64InlineAsmRegClass :: reg) => modifier,
867
876
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) => {
869
880
if modifier == Some ( 'v' ) { None } else { modifier }
870
881
}
871
- InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: preg) => {
882
+ InlineAsmRegClass :: AArch64 ( AArch64InlineAsmRegClass :: preg)
883
+ | InlineAsmRegClass :: Arm64EC ( AArch64InlineAsmRegClass :: preg) => {
872
884
unreachable ! ( "clobber-only" )
873
885
}
874
886
InlineAsmRegClass :: Arm ( ArmInlineAsmRegClass :: reg) => None ,
0 commit comments