1 // RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.4a < %s 2> %t | FileCheck %s --check-prefix=CHECK
2 // RUN: FileCheck --check-prefix=CHECK-ERROR < %t %s
3 // RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+tlb-rmi < %s 2> %t | FileCheck %s --check-prefix=CHECK
4 // RUN: FileCheck --check-prefix=CHECK-ERROR < %t %s
5 // RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=-v8.4a < %s 2>&1 | FileCheck %s --check-prefix=CHECK-NO-V84
6 // RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.4a,-tlb-rmi < %s 2>&1 | FileCheck %s --check-prefix=CHECK-NO-V84
8 // Outer shareable TLB maintenance instructions:
27 //CHECK: tlbi vmalle1os // encoding: [0x1f,0x81,0x08,0xd5]
28 //CHECK-NEXT: tlbi vae1os, xzr // encoding: [0x3f,0x81,0x08,0xd5]
29 //CHECK-NEXT: tlbi vae1os, x0 // encoding: [0x20,0x81,0x08,0xd5]
30 //CHECK-NEXT: tlbi aside1os, x1 // encoding: [0x41,0x81,0x08,0xd5]
31 //CHECK-NEXT: tlbi vaae1os, x2 // encoding: [0x62,0x81,0x08,0xd5]
32 //CHECK-NEXT: tlbi vale1os, x3 // encoding: [0xa3,0x81,0x08,0xd5]
33 //CHECK-NEXT: tlbi vaale1os, x4 // encoding: [0xe4,0x81,0x08,0xd5]
34 //CHECK-NEXT: tlbi ipas2e1os, x5 // encoding: [0x05,0x84,0x0c,0xd5]
35 //CHECK-NEXT: tlbi ipas2le1os, x6 // encoding: [0x86,0x84,0x0c,0xd5]
36 //CHECK-NEXT: tlbi vae2os, x7 // encoding: [0x27,0x81,0x0c,0xd5]
37 //CHECK-NEXT: tlbi vale2os, x8 // encoding: [0xa8,0x81,0x0c,0xd5]
38 //CHECK-NEXT: tlbi vmalls12e1os // encoding: [0xdf,0x81,0x0c,0xd5]
39 //CHECK-NEXT: tlbi vae3os, x9 // encoding: [0x29,0x81,0x0e,0xd5]
40 //CHECK-NEXT: tlbi vale3os, x10 // encoding: [0xaa,0x81,0x0e,0xd5]
41 //CHECK-NEXT: tlbi alle2os // encoding: [0x1f,0x81,0x0c,0xd5]
42 //CHECK-NEXT: tlbi alle1os // encoding: [0x9f,0x81,0x0c,0xd5]
43 //CHECK-NEXT: tlbi alle3os // encoding: [0x1f,0x81,0x0e,0xd5]
47 //CHECK-ERROR: error: invalid operand for instruction
48 //CHECK-ERROR-NEXT: tlbi vae1os, sp
51 //CHECK-NO-V84: error: TLBI VMALLE1OS requires tlb-rmi
52 //CHECK-NO-V84-NEXT: tlbi vmalle1os
53 //CHECK-NO-V84-NEXT: ^
54 //CHECK-NO-V84-NEXT: error: TLBI VAE1OS requires tlb-rmi
55 //CHECK-NO-V84-NEXT: tlbi vae1os, xzr
56 //CHECK-NO-V84-NEXT: ^
57 //CHECK-NO-V84-NEXT: error: TLBI VAE1OS requires tlb-rmi
58 //CHECK-NO-V84-NEXT: tlbi vae1os, x0
59 //CHECK-NO-V84-NEXT: ^
60 //CHECK-NO-V84-NEXT: error: TLBI ASIDE1OS requires tlb-rmi
61 //CHECK-NO-V84-NEXT: tlbi aside1os, x1
62 //CHECK-NO-V84-NEXT: ^
63 //CHECK-NO-V84-NEXT: error: TLBI VAAE1OS requires tlb-rmi
64 //CHECK-NO-V84-NEXT: tlbi vaae1os, x2
65 //CHECK-NO-V84-NEXT: ^
66 //CHECK-NO-V84-NEXT: error: TLBI VALE1OS requires tlb-rmi
67 //CHECK-NO-V84-NEXT: tlbi vale1os, x3
68 //CHECK-NO-V84-NEXT: ^
69 //CHECK-NO-V84-NEXT: error: TLBI VAALE1OS requires tlb-rmi
70 //CHECK-NO-V84-NEXT: tlbi vaale1os, x4
71 //CHECK-NO-V84-NEXT: ^
72 //CHECK-NO-V84-NEXT: error: TLBI IPAS2E1OS requires tlb-rmi
73 //CHECK-NO-V84-NEXT: tlbi ipas2e1os, x5
74 //CHECK-NO-V84-NEXT: ^
75 //CHECK-NO-V84-NEXT: error: TLBI IPAS2LE1OS requires tlb-rmi
76 //CHECK-NO-V84-NEXT: tlbi ipas2le1os, x6
77 //CHECK-NO-V84-NEXT: ^
78 //CHECK-NO-V84-NEXT: error: TLBI VAE2OS requires tlb-rmi
79 //CHECK-NO-V84-NEXT: tlbi vae2os, x7
80 //CHECK-NO-V84-NEXT: ^
81 //CHECK-NO-V84-NEXT: error: TLBI VALE2OS requires tlb-rmi
82 //CHECK-NO-V84-NEXT: tlbi vale2os, x8
83 //CHECK-NO-V84-NEXT: ^
84 //CHECK-NO-V84-NEXT: error: TLBI VMALLS12E1OS requires tlb-rmi
85 //CHECK-NO-V84-NEXT: tlbi vmalls12e1os
86 //CHECK-NO-V84-NEXT: ^
87 //CHECK-NO-V84-NEXT: error: TLBI VAE3OS requires tlb-rmi
88 //CHECK-NO-V84-NEXT: tlbi vae3os, x9
89 //CHECK-NO-V84-NEXT: ^
90 //CHECK-NO-V84-NEXT: error: TLBI VALE3OS requires tlb-rmi
91 //CHECK-NO-V84-NEXT: tlbi vale3os, x10
92 //CHECK-NO-V84-NEXT: ^
93 //CHECK-NO-V84-NEXT: error: TLBI ALLE2OS requires tlb-rmi
94 //CHECK-NO-V84-NEXT: tlbi alle2os
95 //CHECK-NO-V84-NEXT: ^
96 //CHECK-NO-V84-NEXT: error: TLBI ALLE1OS requires tlb-rmi
97 //CHECK-NO-V84-NEXT: tlbi alle1os
98 //CHECK-NO-V84-NEXT: ^
99 //CHECK-NO-V84-NEXT: error: TLBI ALLE3OS requires tlb-rmi
100 //CHECK-NO-V84-NEXT: tlbi alle3os
101 //CHECK-NO-V84-NEXT: ^
103 // TLB Range maintenance instructions:
136 //CHECK: tlbi rvae1, x3 // encoding: [0x23,0x86,0x08,0xd5]
137 //CHECK-NEXT: tlbi rvaae1, x3 // encoding: [0x63,0x86,0x08,0xd5]
138 //CHECK-NEXT: tlbi rvale1, x3 // encoding: [0xa3,0x86,0x08,0xd5]
139 //CHECK-NEXT: tlbi rvaale1, x3 // encoding: [0xe3,0x86,0x08,0xd5]
140 //CHECK-NEXT: tlbi rvae1is, x3 // encoding: [0x23,0x82,0x08,0xd5]
141 //CHECK-NEXT: tlbi rvaae1is, x3 // encoding: [0x63,0x82,0x08,0xd5]
142 //CHECK-NEXT: tlbi rvale1is, x3 // encoding: [0xa3,0x82,0x08,0xd5]
143 //CHECK-NEXT: tlbi rvaale1is, x3 // encoding: [0xe3,0x82,0x08,0xd5]
144 //CHECK-NEXT: tlbi rvae1os, x3 // encoding: [0x23,0x85,0x08,0xd5]
145 //CHECK-NEXT: tlbi rvaae1os, x3 // encoding: [0x63,0x85,0x08,0xd5]
146 //CHECK-NEXT: tlbi rvale1os, x3 // encoding: [0xa3,0x85,0x08,0xd5]
147 //CHECK-NEXT: tlbi rvaale1os, x3 // encoding: [0xe3,0x85,0x08,0xd5]
148 //CHECK-NEXT: tlbi ripas2e1is, x3 // encoding: [0x43,0x80,0x0c,0xd5]
149 //CHECK-NEXT: tlbi ripas2le1is, x3 // encoding: [0xc3,0x80,0x0c,0xd5]
150 //CHECK-NEXT: tlbi ripas2e1, x3 // encoding: [0x43,0x84,0x0c,0xd5]
151 //CHECK-NEXT: tlbi ripas2le1, x3 // encoding: [0xc3,0x84,0x0c,0xd5]
152 //CHECK-NEXT: tlbi ripas2e1os, x3 // encoding: [0x63,0x84,0x0c,0xd5]
153 //CHECK-NEXT: tlbi ripas2le1os, x3 // encoding: [0xe3,0x84,0x0c,0xd5]
154 //CHECK-NEXT: tlbi rvae2, x3 // encoding: [0x23,0x86,0x0c,0xd5]
155 //CHECK-NEXT: tlbi rvale2, x3 // encoding: [0xa3,0x86,0x0c,0xd5]
156 //CHECK-NEXT: tlbi rvae2is, x3 // encoding: [0x23,0x82,0x0c,0xd5]
157 //CHECK-NEXT: tlbi rvale2is, x3 // encoding: [0xa3,0x82,0x0c,0xd5]
158 //CHECK-NEXT: tlbi rvae2os, x3 // encoding: [0x23,0x85,0x0c,0xd5]
159 //CHECK-NEXT: tlbi rvale2os, x3 // encoding: [0xa3,0x85,0x0c,0xd5]
160 //CHECK-NEXT: tlbi rvae3, x3 // encoding: [0x23,0x86,0x0e,0xd5]
161 //CHECK-NEXT: tlbi rvale3, x3 // encoding: [0xa3,0x86,0x0e,0xd5]
162 //CHECK-NEXT: tlbi rvae3is, x3 // encoding: [0x23,0x82,0x0e,0xd5]
163 //CHECK-NEXT: tlbi rvale3is, x3 // encoding: [0xa3,0x82,0x0e,0xd5]
164 //CHECK-NEXT: tlbi rvae3os, x3 // encoding: [0x23,0x85,0x0e,0xd5]
165 //CHECK-NEXT: tlbi rvale3os, x3 // encoding: [0xa3,0x85,0x0e,0xd5]
166 //CHECK-NEXT: tlbi rvale3os, xzr // encoding: [0xbf,0x85,0x0e,0xd5]
170 //CHECK-ERROR: error: invalid operand for instruction
171 //CHECK-ERROR-NEXT: tlbi rvae1, sp
172 //CHECK-ERROR-NEXT: ^
174 //CHECK-NO-V84: error: TLBI RVAE1 requires tlb-rmi
175 //CHECK-NO-V84-NEXT: tlbi rvae1, x3
176 //CHECK-NO-V84-NEXT: ^
177 //CHECK-NO-V84-NEXT: error: TLBI RVAAE1 requires tlb-rmi
178 //CHECK-NO-V84-NEXT: tlbi rvaae1, x3
179 //CHECK-NO-V84-NEXT: ^
180 //CHECK-NO-V84-NEXT: error: TLBI RVALE1 requires tlb-rmi
181 //CHECK-NO-V84-NEXT: tlbi rvale1, x3
182 //CHECK-NO-V84-NEXT: ^
183 //CHECK-NO-V84-NEXT: error: TLBI RVAALE1 requires tlb-rmi
184 //CHECK-NO-V84-NEXT: tlbi rvaale1, x3
185 //CHECK-NO-V84-NEXT: ^
186 //CHECK-NO-V84-NEXT: error: TLBI RVAE1IS requires tlb-rmi
187 //CHECK-NO-V84-NEXT: tlbi rvae1is, x3
188 //CHECK-NO-V84-NEXT: ^
189 //CHECK-NO-V84-NEXT: error: TLBI RVAAE1IS requires tlb-rmi
190 //CHECK-NO-V84-NEXT: tlbi rvaae1is, x3
191 //CHECK-NO-V84-NEXT: ^
192 //CHECK-NO-V84-NEXT: error: TLBI RVALE1IS requires tlb-rmi
193 //CHECK-NO-V84-NEXT: tlbi rvale1is, x3
194 //CHECK-NO-V84-NEXT: ^
195 //CHECK-NO-V84-NEXT: error: TLBI RVAALE1IS requires tlb-rmi
196 //CHECK-NO-V84-NEXT: tlbi rvaale1is, x3
197 //CHECK-NO-V84-NEXT: ^
198 //CHECK-NO-V84-NEXT: error: TLBI RVAE1OS requires tlb-rmi
199 //CHECK-NO-V84-NEXT: tlbi rvae1os, x3
200 //CHECK-NO-V84-NEXT: ^
201 //CHECK-NO-V84-NEXT: error: TLBI RVAAE1OS requires tlb-rmi
202 //CHECK-NO-V84-NEXT: tlbi rvaae1os, x3
203 //CHECK-NO-V84-NEXT: ^
204 //CHECK-NO-V84-NEXT: error: TLBI RVALE1OS requires tlb-rmi
205 //CHECK-NO-V84-NEXT: tlbi rvale1os, x3
206 //CHECK-NO-V84-NEXT: ^
207 //CHECK-NO-V84-NEXT: error: TLBI RVAALE1OS requires tlb-rmi
208 //CHECK-NO-V84-NEXT: tlbi rvaale1os, x3
209 //CHECK-NO-V84-NEXT: ^
210 //CHECK-NO-V84-NEXT: error: TLBI RIPAS2E1IS requires tlb-rmi
211 //CHECK-NO-V84-NEXT: tlbi ripas2e1is, x3
212 //CHECK-NO-V84-NEXT: ^
213 //CHECK-NO-V84-NEXT: error: TLBI RIPAS2LE1IS requires tlb-rmi
214 //CHECK-NO-V84-NEXT: tlbi ripas2le1is, x3
215 //CHECK-NO-V84-NEXT: ^
216 //CHECK-NO-V84-NEXT: error: TLBI RIPAS2E1 requires tlb-rmi
217 //CHECK-NO-V84-NEXT: tlbi ripas2e1, X3
218 //CHECK-NO-V84-NEXT: ^
219 //CHECK-NO-V84-NEXT: error: TLBI RIPAS2LE1 requires tlb-rmi
220 //CHECK-NO-V84-NEXT: tlbi ripas2le1, X3
221 //CHECK-NO-V84-NEXT: ^
222 //CHECK-NO-V84-NEXT: error: TLBI RIPAS2E1OS requires tlb-rmi
223 //CHECK-NO-V84-NEXT: tlbi ripas2e1os, X3
224 //CHECK-NO-V84-NEXT: ^
225 //CHECK-NO-V84-NEXT: error: TLBI RIPAS2LE1OS requires tlb-rmi
226 //CHECK-NO-V84-NEXT: tlbi ripas2le1os, X3
227 //CHECK-NO-V84-NEXT: ^
228 //CHECK-NO-V84-NEXT: error: TLBI RVAE2 requires tlb-rmi
229 //CHECK-NO-V84-NEXT: tlbi rvae2, X3
230 //CHECK-NO-V84-NEXT: ^
231 //CHECK-NO-V84-NEXT: error: TLBI RVALE2 requires tlb-rmi
232 //CHECK-NO-V84-NEXT: tlbi rvale2, X3
233 //CHECK-NO-V84-NEXT: ^
234 //CHECK-NO-V84-NEXT: error: TLBI RVAE2IS requires tlb-rmi
235 //CHECK-NO-V84-NEXT: tlbi rvae2is, X3
236 //CHECK-NO-V84-NEXT: ^
237 //CHECK-NO-V84-NEXT: error: TLBI RVALE2IS requires tlb-rmi
238 //CHECK-NO-V84-NEXT: tlbi rvale2is, X3
239 //CHECK-NO-V84-NEXT: ^
240 //CHECK-NO-V84-NEXT: error: TLBI RVAE2OS requires tlb-rmi
241 //CHECK-NO-V84-NEXT: tlbi rvae2os, X3
242 //CHECK-NO-V84-NEXT: ^
243 //CHECK-NO-V84-NEXT: error: TLBI RVALE2OS requires tlb-rmi
244 //CHECK-NO-V84-NEXT: tlbi rvale2os, X3
245 //CHECK-NO-V84-NEXT: ^
246 //CHECK-NO-V84-NEXT: error: TLBI RVAE3 requires tlb-rmi
247 //CHECK-NO-V84-NEXT: tlbi rvae3, X3
248 //CHECK-NO-V84-NEXT: ^
249 //CHECK-NO-V84-NEXT: error: TLBI RVALE3 requires tlb-rmi
250 //CHECK-NO-V84-NEXT: tlbi rvale3, X3
251 //CHECK-NO-V84-NEXT: ^
252 //CHECK-NO-V84-NEXT: error: TLBI RVAE3IS requires tlb-rmi
253 //CHECK-NO-V84-NEXT: tlbi rvae3is, X3
254 //CHECK-NO-V84-NEXT: ^
255 //CHECK-NO-V84-NEXT: error: TLBI RVALE3IS requires tlb-rmi
256 //CHECK-NO-V84-NEXT: tlbi rvale3is, X3
257 //CHECK-NO-V84-NEXT: ^
258 //CHECK-NO-V84-NEXT: error: TLBI RVAE3OS requires tlb-rmi
259 //CHECK-NO-V84-NEXT: tlbi rvae3os, X3
260 //CHECK-NO-V84-NEXT: ^
261 //CHECK-NO-V84-NEXT: error: TLBI RVALE3OS requires tlb-rmi
262 //CHECK-NO-V84-NEXT: tlbi rvale3os, X3
263 //CHECK-NO-V84-NEXT: ^
264 //CHECK-NO-V84-NEXT: error: TLBI RVALE3OS requires tlb-rmi
265 //CHECK-NO-V84-NEXT: tlbi rvale3os, XZR
266 //CHECK-NO-V84-NEXT: ^