@@ -96,7 +96,7 @@ fn restricted_for_arm64ec(
96
96
_is_clobber : bool ,
97
97
) -> Result < ( ) , & ' static str > {
98
98
if arch == InlineAsmArch :: Arm64EC {
99
- Err ( "x13, x14, x23, x24, x28, v16-v31 cannot be used for Arm64EC" )
99
+ Err ( "x13, x14, x23, x24, x28, v16-v31, z*, p*, ffr cannot be used for Arm64EC" )
100
100
} else {
101
101
Ok ( ( ) )
102
102
}
@@ -133,6 +133,7 @@ def_regs! {
133
133
x27: reg = [ "x27" , "w27" ] ,
134
134
x28: reg = [ "x28" , "w28" ] % restricted_for_arm64ec,
135
135
x30: reg = [ "x30" , "w30" , "lr" , "wlr" ] ,
136
+ // FIXME: z* cannot be used for Arm64EC
136
137
v0: vreg, vreg_low16 = [ "v0" , "b0" , "h0" , "s0" , "d0" , "q0" , "z0" ] ,
137
138
v1: vreg, vreg_low16 = [ "v1" , "b1" , "h1" , "s1" , "d1" , "q1" , "z1" ] ,
138
139
v2: vreg, vreg_low16 = [ "v2" , "b2" , "h2" , "s2" , "d2" , "q2" , "z2" ] ,
@@ -165,23 +166,23 @@ def_regs! {
165
166
v29: vreg = [ "v29" , "b29" , "h29" , "s29" , "d29" , "q29" , "z29" ] % restricted_for_arm64ec,
166
167
v30: vreg = [ "v30" , "b30" , "h30" , "s30" , "d30" , "q30" , "z30" ] % restricted_for_arm64ec,
167
168
v31: vreg = [ "v31" , "b31" , "h31" , "s31" , "d31" , "q31" , "z31" ] % restricted_for_arm64ec,
168
- p0: preg = [ "p0" ] ,
169
- p1: preg = [ "p1" ] ,
170
- p2: preg = [ "p2" ] ,
171
- p3: preg = [ "p3" ] ,
172
- p4: preg = [ "p4" ] ,
173
- p5: preg = [ "p5" ] ,
174
- p6: preg = [ "p6" ] ,
175
- p7: preg = [ "p7" ] ,
176
- p8: preg = [ "p8" ] ,
177
- p9: preg = [ "p9" ] ,
178
- p10: preg = [ "p10" ] ,
179
- p11: preg = [ "p11" ] ,
180
- p12: preg = [ "p12" ] ,
181
- p13: preg = [ "p13" ] ,
182
- p14: preg = [ "p14" ] ,
183
- p15: preg = [ "p15" ] ,
184
- ffr: preg = [ "ffr" ] ,
169
+ p0: preg = [ "p0" ] % restricted_for_arm64ec ,
170
+ p1: preg = [ "p1" ] % restricted_for_arm64ec ,
171
+ p2: preg = [ "p2" ] % restricted_for_arm64ec ,
172
+ p3: preg = [ "p3" ] % restricted_for_arm64ec ,
173
+ p4: preg = [ "p4" ] % restricted_for_arm64ec ,
174
+ p5: preg = [ "p5" ] % restricted_for_arm64ec ,
175
+ p6: preg = [ "p6" ] % restricted_for_arm64ec ,
176
+ p7: preg = [ "p7" ] % restricted_for_arm64ec ,
177
+ p8: preg = [ "p8" ] % restricted_for_arm64ec ,
178
+ p9: preg = [ "p9" ] % restricted_for_arm64ec ,
179
+ p10: preg = [ "p10" ] % restricted_for_arm64ec ,
180
+ p11: preg = [ "p11" ] % restricted_for_arm64ec ,
181
+ p12: preg = [ "p12" ] % restricted_for_arm64ec ,
182
+ p13: preg = [ "p13" ] % restricted_for_arm64ec ,
183
+ p14: preg = [ "p14" ] % restricted_for_arm64ec ,
184
+ p15: preg = [ "p15" ] % restricted_for_arm64ec ,
185
+ ffr: preg = [ "ffr" ] % restricted_for_arm64ec ,
185
186
#error = [ "x19" , "w19" ] =>
186
187
"x19 is used internally by LLVM and cannot be used as an operand for inline asm" ,
187
188
#error = [ "x29" , "w29" , "fp" , "wfp" ] =>
0 commit comments