@@ -87,6 +87,20 @@ fn reserved_x18(
8787 }
8888}
8989
90+ fn restricted_for_arm64ec (
91+ arch : InlineAsmArch ,
92+ _reloc_model : RelocModel ,
93+ _target_features : & FxIndexSet < Symbol > ,
94+ _target : & Target ,
95+ _is_clobber : bool ,
96+ ) -> Result < ( ) , & ' static str > {
97+ if arch == InlineAsmArch :: Arm64EC {
98+ Err ( "x13, x14, x23, x24, x28, v16-v31 cannot be used for Arm64EC" )
99+ } else {
100+ Ok ( ( ) )
101+ }
102+ }
103+
90104def_regs ! {
91105 AArch64 AArch64InlineAsmReg AArch64InlineAsmRegClass {
92106 x0: reg = [ "x0" , "w0" ] ,
@@ -102,21 +116,21 @@ def_regs! {
102116 x10: reg = [ "x10" , "w10" ] ,
103117 x11: reg = [ "x11" , "w11" ] ,
104118 x12: reg = [ "x12" , "w12" ] ,
105- x13: reg = [ "x13" , "w13" ] ,
106- x14: reg = [ "x14" , "w14" ] ,
119+ x13: reg = [ "x13" , "w13" ] % restricted_for_arm64ec ,
120+ x14: reg = [ "x14" , "w14" ] % restricted_for_arm64ec ,
107121 x15: reg = [ "x15" , "w15" ] ,
108122 x16: reg = [ "x16" , "w16" ] ,
109123 x17: reg = [ "x17" , "w17" ] ,
110124 x18: reg = [ "x18" , "w18" ] % reserved_x18,
111125 x20: reg = [ "x20" , "w20" ] ,
112126 x21: reg = [ "x21" , "w21" ] ,
113127 x22: reg = [ "x22" , "w22" ] ,
114- x23: reg = [ "x23" , "w23" ] ,
115- x24: reg = [ "x24" , "w24" ] ,
128+ x23: reg = [ "x23" , "w23" ] % restricted_for_arm64ec ,
129+ x24: reg = [ "x24" , "w24" ] % restricted_for_arm64ec ,
116130 x25: reg = [ "x25" , "w25" ] ,
117131 x26: reg = [ "x26" , "w26" ] ,
118132 x27: reg = [ "x27" , "w27" ] ,
119- x28: reg = [ "x28" , "w28" ] ,
133+ x28: reg = [ "x28" , "w28" ] % restricted_for_arm64ec ,
120134 x30: reg = [ "x30" , "w30" , "lr" , "wlr" ] ,
121135 v0: vreg, vreg_low16 = [ "v0" , "b0" , "h0" , "s0" , "d0" , "q0" , "z0" ] ,
122136 v1: vreg, vreg_low16 = [ "v1" , "b1" , "h1" , "s1" , "d1" , "q1" , "z1" ] ,
@@ -134,22 +148,22 @@ def_regs! {
134148 v13: vreg, vreg_low16 = [ "v13" , "b13" , "h13" , "s13" , "d13" , "q13" , "z13" ] ,
135149 v14: vreg, vreg_low16 = [ "v14" , "b14" , "h14" , "s14" , "d14" , "q14" , "z14" ] ,
136150 v15: vreg, vreg_low16 = [ "v15" , "b15" , "h15" , "s15" , "d15" , "q15" , "z15" ] ,
137- v16: vreg = [ "v16" , "b16" , "h16" , "s16" , "d16" , "q16" , "z16" ] ,
138- v17: vreg = [ "v17" , "b17" , "h17" , "s17" , "d17" , "q17" , "z17" ] ,
139- v18: vreg = [ "v18" , "b18" , "h18" , "s18" , "d18" , "q18" , "z18" ] ,
140- v19: vreg = [ "v19" , "b19" , "h19" , "s19" , "d19" , "q19" , "z19" ] ,
141- v20: vreg = [ "v20" , "b20" , "h20" , "s20" , "d20" , "q20" , "z20" ] ,
142- v21: vreg = [ "v21" , "b21" , "h21" , "s21" , "d21" , "q21" , "z21" ] ,
143- v22: vreg = [ "v22" , "b22" , "h22" , "s22" , "d22" , "q22" , "z22" ] ,
144- v23: vreg = [ "v23" , "b23" , "h23" , "s23" , "d23" , "q23" , "z23" ] ,
145- v24: vreg = [ "v24" , "b24" , "h24" , "s24" , "d24" , "q24" , "z24" ] ,
146- v25: vreg = [ "v25" , "b25" , "h25" , "s25" , "d25" , "q25" , "z25" ] ,
147- v26: vreg = [ "v26" , "b26" , "h26" , "s26" , "d26" , "q26" , "z26" ] ,
148- v27: vreg = [ "v27" , "b27" , "h27" , "s27" , "d27" , "q27" , "z27" ] ,
149- v28: vreg = [ "v28" , "b28" , "h28" , "s28" , "d28" , "q28" , "z28" ] ,
150- v29: vreg = [ "v29" , "b29" , "h29" , "s29" , "d29" , "q29" , "z29" ] ,
151- v30: vreg = [ "v30" , "b30" , "h30" , "s30" , "d30" , "q30" , "z30" ] ,
152- v31: vreg = [ "v31" , "b31" , "h31" , "s31" , "d31" , "q31" , "z31" ] ,
151+ v16: vreg = [ "v16" , "b16" , "h16" , "s16" , "d16" , "q16" , "z16" ] % restricted_for_arm64ec ,
152+ v17: vreg = [ "v17" , "b17" , "h17" , "s17" , "d17" , "q17" , "z17" ] % restricted_for_arm64ec ,
153+ v18: vreg = [ "v18" , "b18" , "h18" , "s18" , "d18" , "q18" , "z18" ] % restricted_for_arm64ec ,
154+ v19: vreg = [ "v19" , "b19" , "h19" , "s19" , "d19" , "q19" , "z19" ] % restricted_for_arm64ec ,
155+ v20: vreg = [ "v20" , "b20" , "h20" , "s20" , "d20" , "q20" , "z20" ] % restricted_for_arm64ec ,
156+ v21: vreg = [ "v21" , "b21" , "h21" , "s21" , "d21" , "q21" , "z21" ] % restricted_for_arm64ec ,
157+ v22: vreg = [ "v22" , "b22" , "h22" , "s22" , "d22" , "q22" , "z22" ] % restricted_for_arm64ec ,
158+ v23: vreg = [ "v23" , "b23" , "h23" , "s23" , "d23" , "q23" , "z23" ] % restricted_for_arm64ec ,
159+ v24: vreg = [ "v24" , "b24" , "h24" , "s24" , "d24" , "q24" , "z24" ] % restricted_for_arm64ec ,
160+ v25: vreg = [ "v25" , "b25" , "h25" , "s25" , "d25" , "q25" , "z25" ] % restricted_for_arm64ec ,
161+ v26: vreg = [ "v26" , "b26" , "h26" , "s26" , "d26" , "q26" , "z26" ] % restricted_for_arm64ec ,
162+ v27: vreg = [ "v27" , "b27" , "h27" , "s27" , "d27" , "q27" , "z27" ] % restricted_for_arm64ec ,
163+ v28: vreg = [ "v28" , "b28" , "h28" , "s28" , "d28" , "q28" , "z28" ] % restricted_for_arm64ec ,
164+ v29: vreg = [ "v29" , "b29" , "h29" , "s29" , "d29" , "q29" , "z29" ] % restricted_for_arm64ec ,
165+ v30: vreg = [ "v30" , "b30" , "h30" , "s30" , "d30" , "q30" , "z30" ] % restricted_for_arm64ec ,
166+ v31: vreg = [ "v31" , "b31" , "h31" , "s31" , "d31" , "q31" , "z31" ] % restricted_for_arm64ec ,
153167 p0: preg = [ "p0" ] ,
154168 p1: preg = [ "p1" ] ,
155169 p2: preg = [ "p2" ] ,
0 commit comments