@@ -7,6 +7,7 @@ def_reg_class! {
7
7
reg,
8
8
vreg,
9
9
vreg_low16,
10
+ preg,
10
11
}
11
12
}
12
13
@@ -15,6 +16,7 @@ impl AArch64InlineAsmRegClass {
15
16
match self {
16
17
Self :: reg => & [ 'w' , 'x' ] ,
17
18
Self :: vreg | Self :: vreg_low16 => & [ 'b' , 'h' , 's' , 'd' , 'q' , 'v' ] ,
19
+ Self :: preg => & [ ] ,
18
20
}
19
21
}
20
22
@@ -40,13 +42,15 @@ impl AArch64InlineAsmRegClass {
40
42
128 => Some ( ( 'q' , "q0" ) ) ,
41
43
_ => None ,
42
44
} ,
45
+ Self :: preg => None ,
43
46
}
44
47
}
45
48
46
49
pub fn default_modifier ( self , _arch : InlineAsmArch ) -> Option < ( char , & ' static str ) > {
47
50
match self {
48
51
Self :: reg => Some ( ( 'x' , "x0" ) ) ,
49
52
Self :: vreg | Self :: vreg_low16 => Some ( ( 'v' , "v0" ) ) ,
53
+ Self :: preg => None ,
50
54
}
51
55
}
52
56
@@ -61,6 +65,7 @@ impl AArch64InlineAsmRegClass {
61
65
VecI8 ( 8 ) , VecI16 ( 4 ) , VecI32 ( 2 ) , VecI64 ( 1 ) , VecF32 ( 2 ) , VecF64 ( 1 ) ,
62
66
VecI8 ( 16 ) , VecI16 ( 8 ) , VecI32 ( 4 ) , VecI64 ( 2 ) , VecF32 ( 4 ) , VecF64 ( 2 ) ;
63
67
} ,
68
+ Self :: preg => & [ ] ,
64
69
}
65
70
}
66
71
}
@@ -95,38 +100,55 @@ def_regs! {
95
100
x27: reg = [ "x27" , "w27" ] ,
96
101
x28: reg = [ "x28" , "w28" ] ,
97
102
x30: reg = [ "x30" , "w30" , "lr" , "wlr" ] ,
98
- v0: vreg, vreg_low16 = [ "v0" , "b0" , "h0" , "s0" , "d0" , "q0" ] ,
99
- v1: vreg, vreg_low16 = [ "v1" , "b1" , "h1" , "s1" , "d1" , "q1" ] ,
100
- v2: vreg, vreg_low16 = [ "v2" , "b2" , "h2" , "s2" , "d2" , "q2" ] ,
101
- v3: vreg, vreg_low16 = [ "v3" , "b3" , "h3" , "s3" , "d3" , "q3" ] ,
102
- v4: vreg, vreg_low16 = [ "v4" , "b4" , "h4" , "s4" , "d4" , "q4" ] ,
103
- v5: vreg, vreg_low16 = [ "v5" , "b5" , "h5" , "s5" , "d5" , "q5" ] ,
104
- v6: vreg, vreg_low16 = [ "v6" , "b6" , "h6" , "s6" , "d6" , "q6" ] ,
105
- v7: vreg, vreg_low16 = [ "v7" , "b7" , "h7" , "s7" , "d7" , "q7" ] ,
106
- v8: vreg, vreg_low16 = [ "v8" , "b8" , "h8" , "s8" , "d8" , "q8" ] ,
107
- v9: vreg, vreg_low16 = [ "v9" , "b9" , "h9" , "s9" , "d9" , "q9" ] ,
108
- v10: vreg, vreg_low16 = [ "v10" , "b10" , "h10" , "s10" , "d10" , "q10" ] ,
109
- v11: vreg, vreg_low16 = [ "v11" , "b11" , "h11" , "s11" , "d11" , "q11" ] ,
110
- v12: vreg, vreg_low16 = [ "v12" , "b12" , "h12" , "s12" , "d12" , "q12" ] ,
111
- v13: vreg, vreg_low16 = [ "v13" , "b13" , "h13" , "s13" , "d13" , "q13" ] ,
112
- v14: vreg, vreg_low16 = [ "v14" , "b14" , "h14" , "s14" , "d14" , "q14" ] ,
113
- v15: vreg, vreg_low16 = [ "v15" , "b15" , "h15" , "s15" , "d15" , "q15" ] ,
114
- v16: vreg = [ "v16" , "b16" , "h16" , "s16" , "d16" , "q16" ] ,
115
- v17: vreg = [ "v17" , "b17" , "h17" , "s17" , "d17" , "q17" ] ,
116
- v18: vreg = [ "v18" , "b18" , "h18" , "s18" , "d18" , "q18" ] ,
117
- v19: vreg = [ "v19" , "b19" , "h19" , "s19" , "d19" , "q19" ] ,
118
- v20: vreg = [ "v20" , "b20" , "h20" , "s20" , "d20" , "q20" ] ,
119
- v21: vreg = [ "v21" , "b21" , "h21" , "s21" , "d21" , "q21" ] ,
120
- v22: vreg = [ "v22" , "b22" , "h22" , "s22" , "d22" , "q22" ] ,
121
- v23: vreg = [ "v23" , "b23" , "h23" , "s23" , "d23" , "q23" ] ,
122
- v24: vreg = [ "v24" , "b24" , "h24" , "s24" , "d24" , "q24" ] ,
123
- v25: vreg = [ "v25" , "b25" , "h25" , "s25" , "d25" , "q25" ] ,
124
- v26: vreg = [ "v26" , "b26" , "h26" , "s26" , "d26" , "q26" ] ,
125
- v27: vreg = [ "v27" , "b27" , "h27" , "s27" , "d27" , "q27" ] ,
126
- v28: vreg = [ "v28" , "b28" , "h28" , "s28" , "d28" , "q28" ] ,
127
- v29: vreg = [ "v29" , "b29" , "h29" , "s29" , "d29" , "q29" ] ,
128
- v30: vreg = [ "v30" , "b30" , "h30" , "s30" , "d30" , "q30" ] ,
129
- v31: vreg = [ "v31" , "b31" , "h31" , "s31" , "d31" , "q31" ] ,
103
+ v0: vreg, vreg_low16 = [ "v0" , "b0" , "h0" , "s0" , "d0" , "q0" , "z0" ] ,
104
+ v1: vreg, vreg_low16 = [ "v1" , "b1" , "h1" , "s1" , "d1" , "q1" , "z1" ] ,
105
+ v2: vreg, vreg_low16 = [ "v2" , "b2" , "h2" , "s2" , "d2" , "q2" , "z2" ] ,
106
+ v3: vreg, vreg_low16 = [ "v3" , "b3" , "h3" , "s3" , "d3" , "q3" , "z3" ] ,
107
+ v4: vreg, vreg_low16 = [ "v4" , "b4" , "h4" , "s4" , "d4" , "q4" , "z4" ] ,
108
+ v5: vreg, vreg_low16 = [ "v5" , "b5" , "h5" , "s5" , "d5" , "q5" , "z5" ] ,
109
+ v6: vreg, vreg_low16 = [ "v6" , "b6" , "h6" , "s6" , "d6" , "q6" , "z6" ] ,
110
+ v7: vreg, vreg_low16 = [ "v7" , "b7" , "h7" , "s7" , "d7" , "q7" , "z7" ] ,
111
+ v8: vreg, vreg_low16 = [ "v8" , "b8" , "h8" , "s8" , "d8" , "q8" , "z8" ] ,
112
+ v9: vreg, vreg_low16 = [ "v9" , "b9" , "h9" , "s9" , "d9" , "q9" , "z9" ] ,
113
+ v10: vreg, vreg_low16 = [ "v10" , "b10" , "h10" , "s10" , "d10" , "q10" , "z10" ] ,
114
+ v11: vreg, vreg_low16 = [ "v11" , "b11" , "h11" , "s11" , "d11" , "q11" , "z11" ] ,
115
+ v12: vreg, vreg_low16 = [ "v12" , "b12" , "h12" , "s12" , "d12" , "q12" , "z12" ] ,
116
+ v13: vreg, vreg_low16 = [ "v13" , "b13" , "h13" , "s13" , "d13" , "q13" , "z13" ] ,
117
+ v14: vreg, vreg_low16 = [ "v14" , "b14" , "h14" , "s14" , "d14" , "q14" , "z14" ] ,
118
+ v15: vreg, vreg_low16 = [ "v15" , "b15" , "h15" , "s15" , "d15" , "q15" , "z15" ] ,
119
+ v16: vreg = [ "v16" , "b16" , "h16" , "s16" , "d16" , "q16" , "z16" ] ,
120
+ v17: vreg = [ "v17" , "b17" , "h17" , "s17" , "d17" , "q17" , "z17" ] ,
121
+ v18: vreg = [ "v18" , "b18" , "h18" , "s18" , "d18" , "q18" , "z18" ] ,
122
+ v19: vreg = [ "v19" , "b19" , "h19" , "s19" , "d19" , "q19" , "z19" ] ,
123
+ v20: vreg = [ "v20" , "b20" , "h20" , "s20" , "d20" , "q20" , "z20" ] ,
124
+ v21: vreg = [ "v21" , "b21" , "h21" , "s21" , "d21" , "q21" , "z21" ] ,
125
+ v22: vreg = [ "v22" , "b22" , "h22" , "s22" , "d22" , "q22" , "z22" ] ,
126
+ v23: vreg = [ "v23" , "b23" , "h23" , "s23" , "d23" , "q23" , "z23" ] ,
127
+ v24: vreg = [ "v24" , "b24" , "h24" , "s24" , "d24" , "q24" , "z24" ] ,
128
+ v25: vreg = [ "v25" , "b25" , "h25" , "s25" , "d25" , "q25" , "z25" ] ,
129
+ v26: vreg = [ "v26" , "b26" , "h26" , "s26" , "d26" , "q26" , "z26" ] ,
130
+ v27: vreg = [ "v27" , "b27" , "h27" , "s27" , "d27" , "q27" , "z27" ] ,
131
+ v28: vreg = [ "v28" , "b28" , "h28" , "s28" , "d28" , "q28" , "z28" ] ,
132
+ v29: vreg = [ "v29" , "b29" , "h29" , "s29" , "d29" , "q29" , "z29" ] ,
133
+ v30: vreg = [ "v30" , "b30" , "h30" , "s30" , "d30" , "q30" , "z30" ] ,
134
+ v31: vreg = [ "v31" , "b31" , "h31" , "s31" , "d31" , "q31" , "z31" ] ,
135
+ p0: preg = [ "p0" ] ,
136
+ p1: preg = [ "p1" ] ,
137
+ p2: preg = [ "p2" ] ,
138
+ p3: preg = [ "p3" ] ,
139
+ p4: preg = [ "p4" ] ,
140
+ p5: preg = [ "p5" ] ,
141
+ p6: preg = [ "p6" ] ,
142
+ p7: preg = [ "p7" ] ,
143
+ p8: preg = [ "p8" ] ,
144
+ p9: preg = [ "p9" ] ,
145
+ p10: preg = [ "p10" ] ,
146
+ p11: preg = [ "p11" ] ,
147
+ p12: preg = [ "p12" ] ,
148
+ p13: preg = [ "p13" ] ,
149
+ p14: preg = [ "p14" ] ,
150
+ p15: preg = [ "p15" ] ,
151
+ ffr: preg = [ "ffr" ] ,
130
152
#error = [ "x18" , "w18" ] =>
131
153
"x18 is used as a reserved register on some targets and cannot be used as an operand for inline asm" ,
132
154
#error = [ "x19" , "w19" ] =>
0 commit comments