1 // RUN
: llvm-mc
-triple aarch64-none-linux-gnu
-show-encoding
-mattr
=+v8.4
a -o
- %s | FileCheck
%s
2 // RUN
: llvm-mc
-triple aarch64-none-linux-gnu
-show-encoding
-mattr
=-v8.4
a,+rcpc-immo
-o
- %s
2>&1 | FileCheck
%s
3 // RUN
: not llvm-mc
-triple aarch64-none-linux-gnu
-show-encoding
-mattr
=+v8.4
a,-rcpc-immo
-o
- %s
2>&1 | FileCheck
%s
--check-prefix
=CHECK-NO-V84
4 // RUN
: not llvm-mc
-triple aarch64-none-linux-gnu
-show-encoding
-mattr
=-v8.4
a -o
- %s
2>&1 | FileCheck
%s
--check-prefix
=CHECK-NO-V84
5 // RUN
: not llvm-mc
-triple aarch64-none-linux-gnu
-show-encoding
-o
- %s
2>&1 | FileCheck
%s
--check-prefix
=CHECK-NO-V84
7 //------------------------------------------------------------------------------
8 // Armv8.4
-A LDAPR
and STLR instructions with immediate offsets
9 //------------------------------------------------------------------------------
13 STLURB W1
, [X10
, #-256]
14 stlurb w2
, [x11
, #255]
17 //CHECK
: stlurb w1
, [x10
] // encoding
: [0x41,0x01,0x00,0x19]
18 //CHECK-NEXT
: stlurb w1
, [x10
, #-256] // encoding: [0x41,0x01,0x10,0x19]
19 //CHECK-NEXT
: stlurb w2
, [x11
, #255] // encoding: [0x62,0xf1,0x0f,0x19]
20 //CHECK-NEXT
: stlurb w3
, [sp
, #-3] // encoding: [0xe3,0xd3,0x1f,0x19]
24 ldapurb w4
, [x12
, #-256]
25 LDAPURB W5
, [X13
, #255]
28 //CHECK
: ldapurb wzr
, [x12
] // encoding
: [0x9f,0x01,0x40,0x19]
29 //CHECK-NEXT
: ldapurb w4
, [x12
] // encoding
: [0x84,0x01,0x40,0x19]
30 //CHECK-NEXT
: ldapurb w4
, [x12
, #-256] // encoding: [0x84,0x01,0x50,0x19]
31 //CHECK-NEXT
: ldapurb w5
, [x13
, #255] // encoding: [0xa5,0xf1,0x4f,0x19]
32 //CHECK-NEXT
: ldapurb w6
, [sp
, #-2] // encoding: [0xe6,0xe3,0x5f,0x19]
35 LDAPURSB W7
, [X14
, #-256]
36 ldapursb w8
, [x15
, #255]
37 ldapursb w9
, [sp
, #-1]
39 //CHECK
: ldapursb w7
, [x14
] // encoding
: [0xc7,0x01,0xc0,0x19]
40 //CHECK-NEXT
: ldapursb w7
, [x14
, #-256] // encoding: [0xc7,0x01,0xd0,0x19]
41 //CHECK-NEXT
: ldapursb w8
, [x15
, #255] // encoding: [0xe8,0xf1,0xcf,0x19]
42 //CHECK-NEXT
: ldapursb w9
, [sp
, #-1] // encoding: [0xe9,0xf3,0xdf,0x19]
45 LDAPURSB X0
, [X16
, #-256]
46 LDAPURSB X1
, [X17
, #255]
50 //CHECK
: ldapursb x0
, [x16
] // encoding
: [0x00,0x02,0x80,0x19]
51 //CHECK-NEXT
: ldapursb x0
, [x16
, #-256] // encoding: [0x00,0x02,0x90,0x19]
52 //CHECK-NEXT
: ldapursb x1
, [x17
, #255] // encoding: [0x21,0xf2,0x8f,0x19]
53 //CHECK-NEXT
: ldapursb x2
, [sp
] // encoding
: [0xe2,0x03,0x80,0x19]
54 //CHECK-NEXT
: ldapursb x2
, [sp
] // encoding
: [0xe2,0x03,0x80,0x19]
57 stlurh w10
, [x18
, #-256]
58 STLURH W11
, [X19
, #255]
61 //CHECK
: stlurh w10
, [x18
] // encoding
: [0x4a,0x02,0x00,0x59]
62 //CHECK-NEXT
: stlurh w10
, [x18
, #-256] // encoding: [0x4a,0x02,0x10,0x59]
63 //CHECK-NEXT
: stlurh w11
, [x19
, #255] // encoding: [0x6b,0xf2,0x0f,0x59]
64 //CHECK-NEXT
: stlurh w12
, [sp
, #1] // encoding: [0xec,0x13,0x00,0x59]
67 LDAPURH W13
, [X20
, #-256]
68 ldapurh w14
, [x21
, #255]
71 //CHECK
: ldapurh w13
, [x20
] // encoding
: [0x8d,0x02,0x40,0x59]
72 //CHECK-NEXT
: ldapurh w13
, [x20
, #-256] // encoding: [0x8d,0x02,0x50,0x59]
73 //CHECK-NEXT
: ldapurh w14
, [x21
, #255] // encoding: [0xae,0xf2,0x4f,0x59]
74 //CHECK-NEXT
: ldapurh w15
, [sp
, #2] // encoding: [0xef,0x23,0x40,0x59]
77 LDAPURSH W16
, [X22
, #-256]
78 LDAPURSH W17
, [X23
, #255]
79 ldapursh w18
, [sp
, #3]
81 //CHECK
: ldapursh w16
, [x22
] // encoding
: [0xd0,0x02,0xc0,0x59]
82 //CHECK-NEXT
: ldapursh w16
, [x22
, #-256] // encoding: [0xd0,0x02,0xd0,0x59]
83 //CHECK-NEXT
: ldapursh w17
, [x23
, #255] // encoding: [0xf1,0xf2,0xcf,0x59]
84 //CHECK-NEXT
: ldapursh w18
, [sp
, #3] // encoding: [0xf2,0x33,0xc0,0x59]
87 ldapursh x3
, [x24
, #-256]
88 LDAPURSH X4
, [X25
, #255]
91 //CHECK
: ldapursh x3
, [x24
] // encoding
: [0x03,0x03,0x80,0x59]
92 //CHECK-NEXT
: ldapursh x3
, [x24
, #-256] // encoding: [0x03,0x03,0x90,0x59]
93 //CHECK-NEXT
: ldapursh x4
, [x25
, #255] // encoding: [0x24,0xf3,0x8f,0x59]
94 //CHECK-NEXT
: ldapursh x5
, [sp
, #4] // encoding: [0xe5,0x43,0x80,0x59]
97 STLUR W19
, [X26
, #-256]
98 stlur w20
, [x27
, #255]
101 //CHECK
: stlur w19
, [x26
] // encoding
: [0x53,0x03,0x00,0x99]
102 //CHECK-NEXT
: stlur w19
, [x26
, #-256] // encoding: [0x53,0x03,0x10,0x99]
103 //CHECK-NEXT
: stlur w20
, [x27
, #255] // encoding: [0x74,0xf3,0x0f,0x99]
104 //CHECK-NEXT
: stlur w21
, [sp
, #5] // encoding: [0xf5,0x53,0x00,0x99]
107 LDAPUR W22
, [X28
, #-256]
108 LDAPUR W23
, [X29
, #255]
111 //CHECK
: ldapur w22
, [x28
] // encoding
: [0x96,0x03,0x40,0x99]
112 //CHECK-NEXT
: ldapur w22
, [x28
, #-256] // encoding: [0x96,0x03,0x50,0x99]
113 //CHECK-NEXT
: ldapur w23
, [x29
, #255] // encoding: [0xb7,0xf3,0x4f,0x99]
114 //CHECK-NEXT
: ldapur w24
, [sp
, #6] // encoding: [0xf8,0x63,0x40,0x99]
117 ldapursw x6
, [x30
, #-256]
118 LDAPURSW X7
, [X0
, #255]
119 LDAPURSW X8
, [SP
, #7]
121 //CHECK
: ldapursw x6
, [x30
] // encoding
: [0xc6,0x03,0x80,0x99]
122 //CHECK-NEXT
: ldapursw x6
, [x30
, #-256] // encoding: [0xc6,0x03,0x90,0x99]
123 //CHECK-NEXT
: ldapursw x7
, [x0
, #255] // encoding: [0x07,0xf0,0x8f,0x99]
124 //CHECK-NEXT
: ldapursw x8
, [sp
, #7] // encoding: [0xe8,0x73,0x80,0x99]
127 STLUR X9
, [X1
, #-256]
128 stlur x10
, [x2
, #255]
131 //CHECK
: stlur x9
, [x1
] // encoding
: [0x29,0x00,0x00,0xd9]
132 //CHECK-NEXT
: stlur x9
, [x1
, #-256] // encoding: [0x29,0x00,0x10,0xd9]
133 //CHECK-NEXT
: stlur x10
, [x2
, #255] // encoding: [0x4a,0xf0,0x0f,0xd9]
134 //CHECK-NEXT
: stlur x11
, [sp
, #8] // encoding: [0xeb,0x83,0x00,0xd9]
137 LDAPUR X12
, [X3
, #-256]
138 LDAPUR X13
, [X4
, #255]
141 //CHECK
: ldapur x12
, [x3
] // encoding
: [0x6c,0x00,0x40,0xd9]
142 //CHECK-NEXT
: ldapur x12
, [x3
, #-256] // encoding: [0x6c,0x00,0x50,0xd9]
143 //CHECK-NEXT
: ldapur x13
, [x4
, #255] // encoding: [0x8d,0xf0,0x4f,0xd9]
144 //CHECK-NEXT
: ldapur x14
, [sp
, #9] // encoding: [0xee,0x93,0x40,0xd9]
146 //CHECK-NO-V84
: error
: instruction requires
: rcpc-immo
147 //CHECK-NO-V84-NEXT
: STLURB WZR
, [X10
]
148 //CHECK-NO-V84-NEXT
: ^
149 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
150 //CHECK-NO-V84-NEXT
: STLURB W1
, [X10
]
151 //CHECK-NO-V84-NEXT
: ^
152 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
153 //CHECK-NO-V84-NEXT
: STLURB W1
, [X10
, #-256]
154 //CHECK-NO-V84-NEXT
: ^
155 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
156 //CHECK-NO-V84-NEXT
: stlurb w2
, [x11
, #255]
157 //CHECK-NO-V84-NEXT
: ^
158 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
159 //CHECK-NO-V84-NEXT
: STLURB W3
, [SP
, #-3]
160 //CHECK-NO-V84-NEXT
: ^
161 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
162 //CHECK-NO-V84-NEXT
: ldapurb wzr
, [x12
]
163 //CHECK-NO-V84-NEXT
: ^
164 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
165 //CHECK-NO-V84-NEXT
: ldapurb w4
, [x12
]
166 //CHECK-NO-V84-NEXT
: ^
167 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
168 //CHECK-NO-V84-NEXT
: ldapurb w4
, [x12
, #-256]
169 //CHECK-NO-V84-NEXT
: ^
170 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
171 //CHECK-NO-V84-NEXT
: LDAPURB W5
, [X13
, #255]
172 //CHECK-NO-V84-NEXT
: ^
173 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
174 //CHECK-NO-V84-NEXT
: LDAPURB W6
, [SP
, #-2]
175 //CHECK-NO-V84-NEXT
: ^
176 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
177 //CHECK-NO-V84-NEXT
: LDAPURSB W7
, [X14
]
178 //CHECK-NO-V84-NEXT
: ^
179 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
180 //CHECK-NO-V84-NEXT
: LDAPURSB W7
, [X14
, #-256]
181 //CHECK-NO-V84-NEXT
: ^
182 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
183 //CHECK-NO-V84-NEXT
: ldapursb w8
, [x15
, #255]
184 //CHECK-NO-V84-NEXT
: ^
185 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
186 //CHECK-NO-V84-NEXT
: ldapursb w9
, [sp
, #-1]
187 //CHECK-NO-V84-NEXT
: ^
188 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
189 //CHECK-NO-V84-NEXT
: LDAPURSB X0
, [X16
]
190 //CHECK-NO-V84-NEXT
: ^
191 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
192 //CHECK-NO-V84-NEXT
: LDAPURSB X0
, [X16
, #-256]
193 //CHECK-NO-V84-NEXT
: ^
194 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
195 //CHECK-NO-V84-NEXT
: LDAPURSB X1
, [X17
, #255]
196 //CHECK-NO-V84-NEXT
: ^
197 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
198 //CHECK-NO-V84-NEXT
: ldapursb x2
, [sp
, #0]
199 //CHECK-NO-V84-NEXT
: ^
200 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
201 //CHECK-NO-V84-NEXT
: ldapursb x2
, [sp
]
202 //CHECK-NO-V84-NEXT
: ^
203 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
204 //CHECK-NO-V84-NEXT
: stlurh w10
, [x18
]
205 //CHECK-NO-V84-NEXT
: ^
206 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
207 //CHECK-NO-V84-NEXT
: stlurh w10
, [x18
, #-256]
208 //CHECK-NO-V84-NEXT
: ^
209 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
210 //CHECK-NO-V84-NEXT
: STLURH W11
, [X19
, #255]
211 //CHECK-NO-V84-NEXT
: ^
212 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
213 //CHECK-NO-V84-NEXT
: STLURH W12
, [SP
, #1]
214 //CHECK-NO-V84-NEXT
: ^
215 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
216 //CHECK-NO-V84-NEXT
: LDAPURH W13
, [X20
]
217 //CHECK-NO-V84-NEXT
: ^
218 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
219 //CHECK-NO-V84-NEXT
: LDAPURH W13
, [X20
, #-256]
220 //CHECK-NO-V84-NEXT
: ^
221 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
222 //CHECK-NO-V84-NEXT
: ldapurh w14
, [x21
, #255]
223 //CHECK-NO-V84-NEXT
: ^
224 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
225 //CHECK-NO-V84-NEXT
: LDAPURH W15
, [SP
, #2]
226 //CHECK-NO-V84-NEXT
: ^
227 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
228 //CHECK-NO-V84-NEXT
: LDAPURSH W16
, [X22
]
229 //CHECK-NO-V84-NEXT
: ^
230 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
231 //CHECK-NO-V84-NEXT
: LDAPURSH W16
, [X22
, #-256]
232 //CHECK-NO-V84-NEXT
: ^
233 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
234 //CHECK-NO-V84-NEXT
: LDAPURSH W17
, [X23
, #255]
235 //CHECK-NO-V84-NEXT
: ^
236 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
237 //CHECK-NO-V84-NEXT
: ldapursh w18
, [sp
, #3]
238 //CHECK-NO-V84-NEXT
: ^
239 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
240 //CHECK-NO-V84-NEXT
: ldapursh x3
, [x24
]
241 //CHECK-NO-V84-NEXT
: ^
242 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
243 //CHECK-NO-V84-NEXT
: ldapursh x3
, [x24
, #-256]
244 //CHECK-NO-V84-NEXT
: ^
245 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
246 //CHECK-NO-V84-NEXT
: LDAPURSH X4
, [X25
, #255]
247 //CHECK-NO-V84-NEXT
: ^
248 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
249 //CHECK-NO-V84-NEXT
: LDAPURSH X5
, [SP
, #4]
250 //CHECK-NO-V84-NEXT
: ^
251 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
252 //CHECK-NO-V84-NEXT
: STLUR W19
, [X26
]
253 //CHECK-NO-V84-NEXT
: ^
254 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
255 //CHECK-NO-V84-NEXT
: STLUR W19
, [X26
, #-256]
256 //CHECK-NO-V84-NEXT
: ^
257 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
258 //CHECK-NO-V84-NEXT
: stlur w20
, [x27
, #255]
259 //CHECK-NO-V84-NEXT
: ^
260 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
261 //CHECK-NO-V84-NEXT
: STLUR W21
, [SP
, #5]
262 //CHECK-NO-V84-NEXT
: ^
263 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
264 //CHECK-NO-V84-NEXT
: LDAPUR W22
, [X28
]
265 //CHECK-NO-V84-NEXT
: ^
266 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
267 //CHECK-NO-V84-NEXT
: LDAPUR W22
, [X28
, #-256]
268 //CHECK-NO-V84-NEXT
: ^
269 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
270 //CHECK-NO-V84-NEXT
: LDAPUR W23
, [X29
, #255]
271 //CHECK-NO-V84-NEXT
: ^
272 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
273 //CHECK-NO-V84-NEXT
: ldapur w24
, [sp
, #6]
274 //CHECK-NO-V84-NEXT
: ^
275 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
276 //CHECK-NO-V84-NEXT
: ldapursw x6
, [x30
]
277 //CHECK-NO-V84-NEXT
: ^
278 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
279 //CHECK-NO-V84-NEXT
: ldapursw x6
, [x30
, #-256]
280 //CHECK-NO-V84-NEXT
: ^
281 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
282 //CHECK-NO-V84-NEXT
: LDAPURSW X7
, [X0
, #255]
283 //CHECK-NO-V84-NEXT
: ^
284 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
285 //CHECK-NO-V84-NEXT
: LDAPURSW X8
, [SP
, #7]
286 //CHECK-NO-V84-NEXT
: ^
287 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
288 //CHECK-NO-V84-NEXT
: STLUR X9
, [X1
]
289 //CHECK-NO-V84-NEXT
: ^
290 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
291 //CHECK-NO-V84-NEXT
: STLUR X9
, [X1
, #-256]
292 //CHECK-NO-V84-NEXT
: ^
293 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
294 //CHECK-NO-V84-NEXT
: stlur x10
, [x2
, #255]
295 //CHECK-NO-V84-NEXT
: ^
296 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
297 //CHECK-NO-V84-NEXT
: STLUR X11
, [SP
, #8]
298 //CHECK-NO-V84-NEXT
: ^
299 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
300 //CHECK-NO-V84-NEXT
: LDAPUR X12
, [X3
]
301 //CHECK-NO-V84-NEXT
: ^
302 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
303 //CHECK-NO-V84-NEXT
: LDAPUR X12
, [X3
, #-256]
304 //CHECK-NO-V84-NEXT
: ^
305 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
306 //CHECK-NO-V84-NEXT
: LDAPUR X13
, [X4
, #255]
307 //CHECK-NO-V84-NEXT
: ^
308 //CHECK-NO-V84-NEXT
: error
: instruction requires
: rcpc-immo
309 //CHECK-NO-V84-NEXT
: ldapur x14
, [sp
, #9]
310 //CHECK-NO-V84-NEXT
: ^