@@ -87,6 +87,20 @@ fn reserved_x18(
87
87
}
88
88
}
89
89
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
+
90
104
def_regs ! {
91
105
AArch64 AArch64InlineAsmReg AArch64InlineAsmRegClass {
92
106
x0: reg = [ "x0" , "w0" ] ,
@@ -102,21 +116,21 @@ def_regs! {
102
116
x10: reg = [ "x10" , "w10" ] ,
103
117
x11: reg = [ "x11" , "w11" ] ,
104
118
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 ,
107
121
x15: reg = [ "x15" , "w15" ] ,
108
122
x16: reg = [ "x16" , "w16" ] ,
109
123
x17: reg = [ "x17" , "w17" ] ,
110
124
x18: reg = [ "x18" , "w18" ] % reserved_x18,
111
125
x20: reg = [ "x20" , "w20" ] ,
112
126
x21: reg = [ "x21" , "w21" ] ,
113
127
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 ,
116
130
x25: reg = [ "x25" , "w25" ] ,
117
131
x26: reg = [ "x26" , "w26" ] ,
118
132
x27: reg = [ "x27" , "w27" ] ,
119
- x28: reg = [ "x28" , "w28" ] ,
133
+ x28: reg = [ "x28" , "w28" ] % restricted_for_arm64ec ,
120
134
x30: reg = [ "x30" , "w30" , "lr" , "wlr" ] ,
121
135
v0: vreg, vreg_low16 = [ "v0" , "b0" , "h0" , "s0" , "d0" , "q0" , "z0" ] ,
122
136
v1: vreg, vreg_low16 = [ "v1" , "b1" , "h1" , "s1" , "d1" , "q1" , "z1" ] ,
@@ -134,22 +148,22 @@ def_regs! {
134
148
v13: vreg, vreg_low16 = [ "v13" , "b13" , "h13" , "s13" , "d13" , "q13" , "z13" ] ,
135
149
v14: vreg, vreg_low16 = [ "v14" , "b14" , "h14" , "s14" , "d14" , "q14" , "z14" ] ,
136
150
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 ,
153
167
p0: preg = [ "p0" ] ,
154
168
p1: preg = [ "p1" ] ,
155
169
p2: preg = [ "p2" ] ,
0 commit comments