ARM: Define generic HINT instruction.
[oota-llvm.git] / test / MC / ARM / basic-thumb2-instructions.s
1 @ RUN: llvm-mc -triple=thumbv7-apple-darwin -mcpu=cortex-a8 -show-encoding < %s | FileCheck %s
2   .syntax unified
3   .globl _func
4
5 @ Check that the assembler can handle the documented syntax from the ARM ARM.
6 @ For complex constructs like shifter operands, check more thoroughly for them
7 @ once then spot check that following instructions accept the form generally.
8 @ This gives us good coverage while keeping the overall size of the test
9 @ more reasonable.
10
11
12 @ FIXME: Some 3-operand instructions have a 2-operand assembly syntax.
13
14 _func:
15 @ CHECK: _func
16
17 @------------------------------------------------------------------------------
18 @ ADC (immediate)
19 @------------------------------------------------------------------------------
20         adc r0, r1, #4
21         adcs r0, r1, #0
22         adc r1, r2, #255
23         adc r3, r7, #0x00550055
24         adc r8, r12, #0xaa00aa00
25         adc r9, r7, #0xa5a5a5a5
26         adc r5, r3, #0x87000000
27         adc r4, r2, #0x7f800000
28         adc r4, r2, #0x00000680
29
30 @ CHECK: adc    r0, r1, #4              @ encoding: [0x41,0xf1,0x04,0x00]
31 @ CHECK: adcs   r0, r1, #0              @ encoding: [0x51,0xf1,0x00,0x00]
32 @ CHECK: adc    r1, r2, #255            @ encoding: [0x42,0xf1,0xff,0x01]
33 @ CHECK: adc    r3, r7, #5570645        @ encoding: [0x47,0xf1,0x55,0x13]
34 @ CHECK: adc    r8, r12, #2852170240    @ encoding: [0x4c,0xf1,0xaa,0x28]
35 @ CHECK: adc    r9, r7, #2779096485     @ encoding: [0x47,0xf1,0xa5,0x39]
36 @ CHECK: adc    r5, r3, #2264924160     @ encoding: [0x43,0xf1,0x07,0x45]
37 @ CHECK: adc    r4, r2, #2139095040     @ encoding: [0x42,0xf1,0xff,0x44]
38 @ CHECK: adc    r4, r2, #1664           @ encoding: [0x42,0xf5,0xd0,0x64]
39
40 @------------------------------------------------------------------------------
41 @ ADC (register)
42 @------------------------------------------------------------------------------
43         adc r4, r5, r6
44         adcs r4, r5, r6
45         adc.w r9, r1, r3
46         adcs.w r9, r1, r3
47         adc     r0, r1, r3, ror #4
48         adcs    r0, r1, r3, lsl #7
49         adc.w   r0, r1, r3, lsr #31
50         adcs.w  r0, r1, r3, asr #32
51         add r2, sp, ip
52
53 @ CHECK: adc.w  r4, r5, r6              @ encoding: [0x45,0xeb,0x06,0x04]
54 @ CHECK: adcs.w r4, r5, r6              @ encoding: [0x55,0xeb,0x06,0x04]
55 @ CHECK: adc.w  r9, r1, r3              @ encoding: [0x41,0xeb,0x03,0x09]
56 @ CHECK: adcs.w r9, r1, r3              @ encoding: [0x51,0xeb,0x03,0x09]
57 @ CHECK: adc.w  r0, r1, r3, ror #4      @ encoding: [0x41,0xeb,0x33,0x10]
58 @ CHECK: adcs.w r0, r1, r3, lsl #7      @ encoding: [0x51,0xeb,0xc3,0x10]
59 @ CHECK: adc.w  r0, r1, r3, lsr #31     @ encoding: [0x41,0xeb,0xd3,0x70]
60 @ CHECK: adcs.w r0, r1, r3, asr #32     @ encoding: [0x51,0xeb,0x23,0x00]
61 @ CHECK: add.w  r2, sp, r12             @ encoding: [0x0d,0xeb,0x0c,0x02]
62
63
64 @------------------------------------------------------------------------------
65 @ ADD (immediate)
66 @------------------------------------------------------------------------------
67         itet eq
68         addeq r1, r2, #4
69         addwne r5, r3, #1023
70         addeq r4, r5, #293
71         add r2, sp, #1024
72         add r2, r8, #0xff00
73         add r2, r3, #257
74         addw r2, r3, #257
75         add r12, r6, #0x100
76         addw r12, r6, #0x100
77         adds r1, r2, #0x1f0
78         add r2, #1
79         add r0, r0, #32
80         adds r2, r2, #56
81         adds r2, #56
82
83         adds.w r2, #-16
84         adds.w r2, r2, #-16
85         addw r2, #-16
86         addw r2, #-16
87         addw r2, r2, #-16
88
89 @ CHECK: itet   eq                      @ encoding: [0x0a,0xbf]
90 @ CHECK: addeq  r1, r2, #4              @ encoding: [0x11,0x1d]
91 @ CHECK: addwne r5, r3, #1023           @ encoding: [0x03,0xf2,0xff,0x35]
92 @ CHECK: addweq r4, r5, #293            @ encoding: [0x05,0xf2,0x25,0x14]
93 @ CHECK: add.w  r2, sp, #1024           @ encoding: [0x0d,0xf5,0x80,0x62]
94 @ CHECK: add.w  r2, r8, #65280          @ encoding: [0x08,0xf5,0x7f,0x42]
95 @ CHECK: addw   r2, r3, #257            @ encoding: [0x03,0xf2,0x01,0x12]
96 @ CHECK: addw   r2, r3, #257            @ encoding: [0x03,0xf2,0x01,0x12]
97 @ CHECK: add.w  r12, r6, #256           @ encoding: [0x06,0xf5,0x80,0x7c]
98 @ CHECK: addw   r12, r6, #256           @ encoding: [0x06,0xf2,0x00,0x1c]
99 @ CHECK: adds.w r1, r2, #496            @ encoding: [0x12,0xf5,0xf8,0x71]
100 @ CHECK: add.w  r2, r2, #1              @ encoding: [0x02,0xf1,0x01,0x02]
101 @ CHECK: add.w  r0, r0, #32             @ encoding: [0x00,0xf1,0x20,0x00]
102 @ CHECK: adds   r2, #56                 @ encoding: [0x38,0x32]
103 @ CHECK: adds   r2, #56                 @ encoding: [0x38,0x32]
104
105 @ CHECK: subs.w r2, r2, #16             @ encoding: [0xb2,0xf1,0x10,0x02]
106 @ CHECK: subs.w r2, r2, #16             @ encoding: [0xb2,0xf1,0x10,0x02]
107 @ CHECK: subw   r2, r2, #16             @ encoding: [0xa2,0xf2,0x10,0x02]
108 @ CHECK: subw   r2, r2, #16             @ encoding: [0xa2,0xf2,0x10,0x02]
109 @ CHECK: subw   r2, r2, #16             @ encoding: [0xa2,0xf2,0x10,0x02]
110
111
112 @------------------------------------------------------------------------------
113 @ ADD (register)
114 @------------------------------------------------------------------------------
115         add r1, r2, r8
116         add r5, r9, r2, asr #32
117         adds r7, r3, r1, lsl #31
118         adds.w r0, r3, r6, lsr #25
119         add.w r4, r8, r1, ror #12
120         add r10, r8
121         add r10, r10, r8
122
123 @ CHECK: add.w  r1, r2, r8              @ encoding: [0x02,0xeb,0x08,0x01]
124 @ CHECK: add.w  r5, r9, r2, asr #32     @ encoding: [0x09,0xeb,0x22,0x05]
125 @ CHECK: adds.w r7, r3, r1, lsl #31     @ encoding: [0x13,0xeb,0xc1,0x77]
126 @ CHECK: adds.w r0, r3, r6, lsr #25     @ encoding: [0x13,0xeb,0x56,0x60]
127 @ CHECK: add.w  r4, r8, r1, ror #12     @ encoding: [0x08,0xeb,0x31,0x34]
128 @ CHECK: add    r10, r8                 @ encoding: [0xc2,0x44]
129 @ CHECK: add    r10, r8                 @ encoding: [0xc2,0x44]
130
131
132 @------------------------------------------------------------------------------
133 @ FIXME: ADR
134 @------------------------------------------------------------------------------
135
136         subw r11, pc, #3270
137         adr.w r11, #-826
138
139 @ CHECK: subw   r11, pc, #3270          @ encoding: [0xaf,0xf6,0xc6,0x4b]
140 @ CHECK: adr.w  r11, #-826              @ encoding: [0xaf,0xf2,0x3a,0x3b]
141
142 @------------------------------------------------------------------------------
143 @ AND (immediate)
144 @------------------------------------------------------------------------------
145         and r2, r5, #0xff000
146         ands r3, r12, #0xf
147         and r1, #0xff
148         and r1, r1, #0xff
149
150 @ CHECK: and    r2, r5, #1044480        @ encoding: [0x05,0xf4,0x7f,0x22]
151 @ CHECK: ands   r3, r12, #15            @ encoding: [0x1c,0xf0,0x0f,0x03]
152 @ CHECK: and    r1, r1, #255            @ encoding: [0x01,0xf0,0xff,0x01]
153 @ CHECK: and    r1, r1, #255            @ encoding: [0x01,0xf0,0xff,0x01]
154
155
156 @------------------------------------------------------------------------------
157 @ AND (register)
158 @------------------------------------------------------------------------------
159         and r4, r9, r8
160         and r1, r4, r8, asr #3
161         ands r2, r1, r7, lsl #1
162         ands.w r4, r5, r2, lsr #20
163         and.w r9, r12, r1, ror #17
164
165 @ CHECK: and.w  r4, r9, r8              @ encoding: [0x09,0xea,0x08,0x04]
166 @ CHECK: and.w  r1, r4, r8, asr #3      @ encoding: [0x04,0xea,0xe8,0x01]
167 @ CHECK: ands.w r2, r1, r7, lsl #1      @ encoding: [0x11,0xea,0x47,0x02]
168 @ CHECK: ands.w r4, r5, r2, lsr #20     @ encoding: [0x15,0xea,0x12,0x54]
169 @ CHECK: and.w  r9, r12, r1, ror #17    @ encoding: [0x0c,0xea,0x71,0x49]
170
171 @------------------------------------------------------------------------------
172 @ ASR (immediate)
173 @------------------------------------------------------------------------------
174         asr r2, r3, #12
175         asrs r8, r3, #32
176         asrs.w r2, r3, #1
177         asr r2, r3, #4
178         asrs r2, r12, #15
179
180         asr r3, #19
181         asrs r8, #2
182         asrs.w r7, #5
183         asr.w r12, #21
184
185 @ CHECK: asr.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x23,0x32]
186 @ CHECK: asrs.w r8, r3, #32             @ encoding: [0x5f,0xea,0x23,0x08]
187 @ CHECK: asrs.w r2, r3, #1              @ encoding: [0x5f,0xea,0x63,0x02]
188 @ CHECK: asr.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x23,0x12]
189 @ CHECK: asrs.w r2, r12, #15            @ encoding: [0x5f,0xea,0xec,0x32]
190
191 @ CHECK: asr.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xe3,0x43]
192 @ CHECK: asrs.w r8, r8, #2              @ encoding: [0x5f,0xea,0xa8,0x08]
193 @ CHECK: asrs.w r7, r7, #5              @ encoding: [0x5f,0xea,0x67,0x17]
194 @ CHECK: asr.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x6c,0x5c]
195
196
197 @------------------------------------------------------------------------------
198 @ ASR (register)
199 @------------------------------------------------------------------------------
200         asr r3, r4, r2
201         asr.w r1, r2
202         asrs r3, r4, r8
203
204 @ CHECK: asr.w  r3, r4, r2              @ encoding: [0x44,0xfa,0x02,0xf3]
205 @ CHECK: asr.w  r1, r1, r2              @ encoding: [0x41,0xfa,0x02,0xf1]
206 @ CHECK: asrs.w r3, r4, r8              @ encoding: [0x54,0xfa,0x08,0xf3]
207
208
209 @------------------------------------------------------------------------------
210 @ B
211 @------------------------------------------------------------------------------
212         b.w   _bar
213         beq.w   _bar
214         it eq
215         beq.w _bar
216         bmi.w   #-183396
217
218 @ CHECK: b.w    _bar                    @ encoding: [A,0xf0'A',A,0x90'A']
219           @   fixup A - offset: 0, value: _bar, kind: fixup_t2_uncondbranch
220 @ CHECK: beq.w  _bar                    @ encoding: [A,0xf0'A',A,0x80'A']
221           @   fixup A - offset: 0, value: _bar, kind: fixup_t2_condbranch
222 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
223 @ CHECK: beq.w  _bar                    @ encoding: [A,0xf0'A',A,0x90'A']
224           @   fixup A - offset: 0, value: _bar, kind: fixup_t2_uncondbranch
225 @ CHECK: bmi.w   #-183396                @ encoding: [0x13,0xf5,0xce,0xa9]
226
227
228 @------------------------------------------------------------------------------
229 @ BFC
230 @------------------------------------------------------------------------------
231         bfc r5, #3, #17
232         it lo
233         bfccc r5, #3, #17
234
235 @ CHECK: bfc    r5, #3, #17             @ encoding: [0x6f,0xf3,0xd3,0x05]
236 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
237 @ CHECK: bfclo  r5, #3, #17             @ encoding: [0x6f,0xf3,0xd3,0x05]
238
239
240 @------------------------------------------------------------------------------
241 @ BFI
242 @------------------------------------------------------------------------------
243         bfi r5, r2, #3, #17
244         it ne
245         bfine r5, r2, #3, #17
246
247 @ CHECK: bfi    r5, r2, #3, #17         @ encoding: [0x62,0xf3,0xd3,0x05]
248 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
249 @ CHECK: bfine  r5, r2, #3, #17         @ encoding: [0x62,0xf3,0xd3,0x05]
250
251
252 @------------------------------------------------------------------------------
253 @ BIC
254 @------------------------------------------------------------------------------
255         bic r10, r1, #0xf
256         bic r12, r3, r6
257         bic r11, r2, r6, lsl #12
258         bic r8, r4, r1, lsr #11
259         bic r7, r5, r7, lsr #15
260         bic r6, r7, r9, asr #32
261         bic r5, r6, r8, ror #1
262
263         @ destination register is optional
264         bic r1, #0xf
265         bic r1, r1
266         bic r4, r2, lsl #31
267         bic r6, r3, lsr #12
268         bic r7, r4, lsr #7
269         bic r8, r5, asr #15
270         bic r12, r6, ror #29
271
272 @ CHECK: bic    r10, r1, #15            @ encoding: [0x21,0xf0,0x0f,0x0a]
273 @ CHECK: bic.w  r12, r3, r6             @ encoding: [0x23,0xea,0x06,0x0c]
274 @ CHECK: bic.w  r11, r2, r6, lsl #12    @ encoding: [0x22,0xea,0x06,0x3b]
275 @ CHECK: bic.w  r8, r4, r1, lsr #11     @ encoding: [0x24,0xea,0xd1,0x28]
276 @ CHECK: bic.w  r7, r5, r7, lsr #15     @ encoding: [0x25,0xea,0xd7,0x37]
277 @ CHECK: bic.w  r6, r7, r9, asr #32     @ encoding: [0x27,0xea,0x29,0x06]
278 @ CHECK: bic.w  r5, r6, r8, ror #1      @ encoding: [0x26,0xea,0x78,0x05]
279
280 @ CHECK: bic    r1, r1, #15             @ encoding: [0x21,0xf0,0x0f,0x01]
281 @ CHECK: bic.w  r1, r1, r1              @ encoding: [0x21,0xea,0x01,0x01]
282 @ CHECK: bic.w  r4, r4, r2, lsl #31     @ encoding: [0x24,0xea,0xc2,0x74]
283 @ CHECK: bic.w  r6, r6, r3, lsr #12     @ encoding: [0x26,0xea,0x13,0x36]
284 @ CHECK: bic.w  r7, r7, r4, lsr #7      @ encoding: [0x27,0xea,0xd4,0x17]
285 @ CHECK: bic.w  r8, r8, r5, asr #15     @ encoding: [0x28,0xea,0xe5,0x38]
286 @ CHECK: bic.w  r12, r12, r6, ror #29   @ encoding: [0x2c,0xea,0x76,0x7c]
287
288 @------------------------------------------------------------------------------
289 @ BKPT
290 @------------------------------------------------------------------------------
291         it pl
292         bkpt #234
293
294 @ CHECK: it pl                      @ encoding: [0x58,0xbf]
295 @ CHECK: bkpt #234                    @ encoding: [0xea,0xbe]
296
297 @------------------------------------------------------------------------------
298 @ BXJ
299 @------------------------------------------------------------------------------
300         bxj r5
301         it ne
302         bxjne r7
303
304 @ CHECK: bxj    r5                      @ encoding: [0xc5,0xf3,0x00,0x8f]
305 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
306 @ CHECK: bxjne  r7                      @ encoding: [0xc7,0xf3,0x00,0x8f]
307
308
309 @------------------------------------------------------------------------------
310 @ CBZ/CBNZ
311 @------------------------------------------------------------------------------
312         cbnz    r7, #6
313         cbnz    r7, #12
314         cbz   r6, _bar
315         cbnz   r6, _bar
316
317 @ CHECK: cbnz    r7, #6                  @ encoding: [0x1f,0xb9]
318 @ CHECK: cbnz    r7, #12                 @ encoding: [0x37,0xb9]
319 @ CHECK: cbz    r6, _bar                @ encoding: [0x06'A',0xb1'A']
320            @   fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_cb
321 @ CHECK: cbnz   r6, _bar                @ encoding: [0x06'A',0xb9'A']
322            @   fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_cb
323
324
325 @------------------------------------------------------------------------------
326 @ CDP/CDP2
327 @------------------------------------------------------------------------------
328   cdp  p7, #1, c1, c1, c1, #4
329   cdp2  p7, #1, c1, c1, c1, #4
330
331 @ CHECK: cdp    p7, #1, c1, c1, c1, #4  @ encoding: [0x11,0xee,0x81,0x17]
332 @ CHECK: cdp2   p7, #1, c1, c1, c1, #4  @ encoding: [0x11,0xfe,0x81,0x17]
333
334
335 @------------------------------------------------------------------------------
336 @ CLREX
337 @------------------------------------------------------------------------------
338         clrex
339         it ne
340         clrexne
341
342 @ CHECK: clrex                           @ encoding: [0xbf,0xf3,0x2f,0x8f]
343 @ CHECK: it     ne                       @ encoding: [0x18,0xbf]
344 @ CHECK: clrexne                         @ encoding: [0xbf,0xf3,0x2f,0x8f]
345
346
347 @------------------------------------------------------------------------------
348 @ CLZ
349 @------------------------------------------------------------------------------
350         clz r1, r2
351         it eq
352         clzeq r1, r2
353
354 @ CHECK: clz    r1, r2                  @ encoding: [0xb2,0xfa,0x82,0xf1]
355 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
356 @ CHECK: clzeq  r1, r2                  @ encoding: [0xb2,0xfa,0x82,0xf1]
357
358
359 @------------------------------------------------------------------------------
360 @ CMN
361 @------------------------------------------------------------------------------
362         cmn r1, #0xf
363         cmn r8, r6
364         cmn r1, r6, lsl #10
365         cmn r1, r6, lsr #10
366         cmn sp, r6, lsr #10
367         cmn r1, r6, asr #10
368         cmn r1, r6, ror #10
369
370 @ CHECK: cmn.w  r1, #15                 @ encoding: [0x11,0xf1,0x0f,0x0f]
371 @ CHECK: cmn.w  r8, r6                  @ encoding: [0x18,0xeb,0x06,0x0f]
372 @ CHECK: cmn.w  r1, r6, lsl #10         @ encoding: [0x11,0xeb,0x86,0x2f]
373 @ CHECK: cmn.w  r1, r6, lsr #10         @ encoding: [0x11,0xeb,0x96,0x2f]
374 @ CHECK: cmn.w  sp, r6, lsr #10         @ encoding: [0x1d,0xeb,0x96,0x2f]
375 @ CHECK: cmn.w  r1, r6, asr #10         @ encoding: [0x11,0xeb,0xa6,0x2f]
376 @ CHECK: cmn.w  r1, r6, ror #10         @ encoding: [0x11,0xeb,0xb6,0x2f]
377
378
379 @------------------------------------------------------------------------------
380 @ CMP
381 @------------------------------------------------------------------------------
382         cmp r5, #0xff00
383         cmp.w r4, r12
384         cmp r9, r6, lsl #12
385         cmp r3, r7, lsr #31
386         cmp sp, r6, lsr #1
387         cmp r2, r5, asr #24
388         cmp r1, r4, ror #15
389         cmp r2, #-2
390         cmp r9, #1
391
392 @ CHECK: cmp.w  r5, #65280              @ encoding: [0xb5,0xf5,0x7f,0x4f]
393 @ CHECK: cmp.w  r4, r12                 @ encoding: [0xb4,0xeb,0x0c,0x0f]
394 @ CHECK: cmp.w  r9, r6, lsl #12         @ encoding: [0xb9,0xeb,0x06,0x3f]
395 @ CHECK: cmp.w  r3, r7, lsr #31         @ encoding: [0xb3,0xeb,0xd7,0x7f]
396 @ CHECK: cmp.w  sp, r6, lsr #1          @ encoding: [0xbd,0xeb,0x56,0x0f]
397 @ CHECK: cmp.w  r2, r5, asr #24         @ encoding: [0xb2,0xeb,0x25,0x6f]
398 @ CHECK: cmp.w  r1, r4, ror #15         @ encoding: [0xb1,0xeb,0xf4,0x3f]
399 @ CHECK: cmn.w  r2, #2                  @ encoding: [0x12,0xf1,0x02,0x0f]
400 @ CHECK: cmp.w  r9, #1                  @ encoding: [0xb9,0xf1,0x01,0x0f]
401
402
403 @------------------------------------------------------------------------------
404 @ DBG
405 @------------------------------------------------------------------------------
406         dbg #5
407         dbg #0
408         dbg #15
409
410 @ CHECK: dbg    #5                      @ encoding: [0xaf,0xf3,0xf5,0x80]
411 @ CHECK: dbg    #0                      @ encoding: [0xaf,0xf3,0xf0,0x80]
412 @ CHECK: dbg    #15                     @ encoding: [0xaf,0xf3,0xff,0x80]
413
414
415 @------------------------------------------------------------------------------
416 @ DMB
417 @------------------------------------------------------------------------------
418         dmb sy
419         dmb st
420         dmb sh
421         dmb ish
422         dmb shst
423         dmb ishst
424         dmb un
425         dmb nsh
426         dmb unst
427         dmb nshst
428         dmb osh
429         dmb oshst
430         dmb
431
432 @ CHECK: dmb    sy                      @ encoding: [0xbf,0xf3,0x5f,0x8f]
433 @ CHECK: dmb    st                      @ encoding: [0xbf,0xf3,0x5e,0x8f]
434 @ CHECK: dmb    ish                     @ encoding: [0xbf,0xf3,0x5b,0x8f]
435 @ CHECK: dmb    ish                     @ encoding: [0xbf,0xf3,0x5b,0x8f]
436 @ CHECK: dmb    ishst                   @ encoding: [0xbf,0xf3,0x5a,0x8f]
437 @ CHECK: dmb    ishst                   @ encoding: [0xbf,0xf3,0x5a,0x8f]
438 @ CHECK: dmb    nsh                     @ encoding: [0xbf,0xf3,0x57,0x8f]
439 @ CHECK: dmb    nsh                     @ encoding: [0xbf,0xf3,0x57,0x8f]
440 @ CHECK: dmb    nshst                   @ encoding: [0xbf,0xf3,0x56,0x8f]
441 @ CHECK: dmb    nshst                   @ encoding: [0xbf,0xf3,0x56,0x8f]
442 @ CHECK: dmb    osh                     @ encoding: [0xbf,0xf3,0x53,0x8f]
443 @ CHECK: dmb    oshst                   @ encoding: [0xbf,0xf3,0x52,0x8f]
444 @ CHECK: dmb    sy                      @ encoding: [0xbf,0xf3,0x5f,0x8f]
445
446
447 @------------------------------------------------------------------------------
448 @ DSB
449 @------------------------------------------------------------------------------
450         dsb sy
451         dsb st
452         dsb sh
453         dsb ish
454         dsb shst
455         dsb ishst
456         dsb un
457         dsb nsh
458         dsb unst
459         dsb nshst
460         dsb osh
461         dsb oshst
462         dsb
463
464 @ CHECK: dsb    sy                      @ encoding: [0xbf,0xf3,0x4f,0x8f]
465 @ CHECK: dsb    st                      @ encoding: [0xbf,0xf3,0x4e,0x8f]
466 @ CHECK: dsb    ish                     @ encoding: [0xbf,0xf3,0x4b,0x8f]
467 @ CHECK: dsb    ish                     @ encoding: [0xbf,0xf3,0x4b,0x8f]
468 @ CHECK: dsb    ishst                   @ encoding: [0xbf,0xf3,0x4a,0x8f]
469 @ CHECK: dsb    ishst                   @ encoding: [0xbf,0xf3,0x4a,0x8f]
470 @ CHECK: dsb    nsh                     @ encoding: [0xbf,0xf3,0x47,0x8f]
471 @ CHECK: dsb    nsh                     @ encoding: [0xbf,0xf3,0x47,0x8f]
472 @ CHECK: dsb    nshst                   @ encoding: [0xbf,0xf3,0x46,0x8f]
473 @ CHECK: dsb    nshst                   @ encoding: [0xbf,0xf3,0x46,0x8f]
474 @ CHECK: dsb    osh                     @ encoding: [0xbf,0xf3,0x43,0x8f]
475 @ CHECK: dsb    oshst                   @ encoding: [0xbf,0xf3,0x42,0x8f]
476 @ CHECK: dsb    sy                      @ encoding: [0xbf,0xf3,0x4f,0x8f]
477
478
479 @------------------------------------------------------------------------------
480 @ EOR
481 @------------------------------------------------------------------------------
482         eor r4, r5, #0xf000
483         eor r4, r5, r6
484         eor r4, r5, r6, lsl #5
485         eor r4, r5, r6, lsr #5
486         eor r4, r5, r6, lsr #5
487         eor r4, r5, r6, asr #5
488         eor r4, r5, r6, ror #5
489
490 @ CHECK: eor    r4, r5, #61440          @ encoding: [0x85,0xf4,0x70,0x44]
491 @ CHECK: eor.w  r4, r5, r6              @ encoding: [0x85,0xea,0x06,0x04]
492 @ CHECK: eor.w  r4, r5, r6, lsl #5      @ encoding: [0x85,0xea,0x46,0x14]
493 @ CHECK: eor.w  r4, r5, r6, lsr #5      @ encoding: [0x85,0xea,0x56,0x14]
494 @ CHECK: eor.w  r4, r5, r6, lsr #5      @ encoding: [0x85,0xea,0x56,0x14]
495 @ CHECK: eor.w  r4, r5, r6, asr #5      @ encoding: [0x85,0xea,0x66,0x14]
496 @ CHECK: eor.w  r4, r5, r6, ror #5      @ encoding: [0x85,0xea,0x76,0x14]
497
498
499 @------------------------------------------------------------------------------
500 @ ISB
501 @------------------------------------------------------------------------------
502         isb sy
503         isb
504
505 @ CHECK: isb    sy                      @ encoding: [0xbf,0xf3,0x6f,0x8f]
506 @ CHECK: isb    sy                      @ encoding: [0xbf,0xf3,0x6f,0x8f]
507
508
509 @------------------------------------------------------------------------------
510 @ IT
511 @------------------------------------------------------------------------------
512 @ Test encodings of a few full IT blocks, not just the IT instruction
513
514         iteet eq
515         addeq r0, r1, r2
516         nopne
517         subne r5, r6, r7
518         addeq r1, r2, #4
519
520 @ CHECK: iteet  eq                      @ encoding: [0x0d,0xbf]
521 @ CHECK: addeq  r0, r1, r2              @ encoding: [0x88,0x18]
522 @ CHECK: nopne                          @ encoding: [0x00,0xbf]
523 @ CHECK: subne  r5, r6, r7              @ encoding: [0xf5,0x1b]
524 @ CHECK: addeq  r1, r2, #4              @ encoding: [0x11,0x1d]
525
526 @ Should also work for UPPER CASE condition codes.
527
528         ITEET EQ
529         ADDEQ R0, R1, R2
530         NOPNE
531         SUBNE R5, R6, R7
532         ADDEQ R1, R2, #4
533
534 @ CHECK: iteet  eq                      @ encoding: [0x0d,0xbf]
535 @ CHECK: addeq  r0, r1, r2              @ encoding: [0x88,0x18]
536 @ CHECK: nopne                          @ encoding: [0x00,0xbf]
537 @ CHECK: subne  r5, r6, r7              @ encoding: [0xf5,0x1b]
538 @ CHECK: addeq  r1, r2, #4              @ encoding: [0x11,0x1d]
539
540 @------------------------------------------------------------------------------
541 @ LDC{L}/LDC2{L}
542 @------------------------------------------------------------------------------
543         ldc2 p0, c8, [r1, #4]
544         ldc2 p1, c7, [r2]
545         ldc2 p2, c6, [r3, #-224]
546         ldc2 p3, c5, [r4, #-120]!
547         ldc2 p4, c4, [r5], #16
548         ldc2 p5, c3, [r6], #-72
549         ldc2l p6, c2, [r7, #4]
550         ldc2l p7, c1, [r8]
551         ldc2l p8, c0, [r9, #-224]
552         ldc2l p9, c1, [r10, #-120]!
553         ldc2l p10, c2, [r11], #16
554         ldc2l p11, c3, [r12], #-72
555
556         ldc p12, c4, [r0, #4]
557         ldc p13, c5, [r1]
558         ldc p14, c6, [r2, #-224]
559         ldc p15, c7, [r3, #-120]!
560         ldc p5, c8, [r4], #16
561         ldc p4, c9, [r5], #-72
562         ldcl p3, c10, [r6, #4]
563         ldcl p2, c11, [r7]
564         ldcl p1, c12, [r8, #-224]
565         ldcl p0, c13, [r9, #-120]!
566         ldcl p6, c14, [r10], #16
567         ldcl p7, c15, [r11], #-72
568
569         ldc2 p2, c8, [r1], { 25 }
570
571 @ CHECK: ldc2   p0, c8, [r1, #4]        @ encoding: [0x91,0xfd,0x01,0x80]
572 @ CHECK: ldc2   p1, c7, [r2]            @ encoding: [0x92,0xfd,0x00,0x71]
573 @ CHECK: ldc2   p2, c6, [r3, #-224]     @ encoding: [0x13,0xfd,0x38,0x62]
574 @ CHECK: ldc2   p3, c5, [r4, #-120]!    @ encoding: [0x34,0xfd,0x1e,0x53]
575 @ CHECK: ldc2   p4, c4, [r5], #16       @ encoding: [0xb5,0xfc,0x04,0x44]
576 @ CHECK: ldc2   p5, c3, [r6], #-72      @ encoding: [0x36,0xfc,0x12,0x35]
577 @ CHECK: ldc2l  p6, c2, [r7, #4]        @ encoding: [0xd7,0xfd,0x01,0x26]
578 @ CHECK: ldc2l  p7, c1, [r8]            @ encoding: [0xd8,0xfd,0x00,0x17]
579 @ CHECK: ldc2l  p8, c0, [r9, #-224]     @ encoding: [0x59,0xfd,0x38,0x08]
580 @ CHECK: ldc2l  p9, c1, [r10, #-120]!   @ encoding: [0x7a,0xfd,0x1e,0x19]
581 @ CHECK: ldc2l  p10, c2, [r11], #16     @ encoding: [0xfb,0xfc,0x04,0x2a]
582 @ CHECK: ldc2l  p11, c3, [r12], #-72    @ encoding: [0x7c,0xfc,0x12,0x3b]
583
584 @ CHECK: ldc    p12, c4, [r0, #4]       @ encoding: [0x90,0xed,0x01,0x4c]
585 @ CHECK: ldc    p13, c5, [r1]           @ encoding: [0x91,0xed,0x00,0x5d]
586 @ CHECK: ldc    p14, c6, [r2, #-224]    @ encoding: [0x12,0xed,0x38,0x6e]
587 @ CHECK: ldc    p15, c7, [r3, #-120]!   @ encoding: [0x33,0xed,0x1e,0x7f]
588 @ CHECK: ldc    p5, c8, [r4], #16       @ encoding: [0xb4,0xec,0x04,0x85]
589 @ CHECK: ldc    p4, c9, [r5], #-72      @ encoding: [0x35,0xec,0x12,0x94]
590 @ CHECK: ldcl   p3, c10, [r6, #4]       @ encoding: [0xd6,0xed,0x01,0xa3]
591 @ CHECK: ldcl   p2, c11, [r7]           @ encoding: [0xd7,0xed,0x00,0xb2]
592 @ CHECK: ldcl   p1, c12, [r8, #-224]    @ encoding: [0x58,0xed,0x38,0xc1]
593 @ CHECK: ldcl   p0, c13, [r9, #-120]!   @ encoding: [0x79,0xed,0x1e,0xd0]
594 @ CHECK: ldcl   p6, c14, [r10], #16     @ encoding: [0xfa,0xec,0x04,0xe6]
595 @ CHECK: ldcl   p7, c15, [r11], #-72    @ encoding: [0x7b,0xec,0x12,0xf7]
596
597 @ CHECK: ldc2   p2, c8, [r1], {25}      @ encoding: [0x91,0xfc,0x19,0x82]
598
599
600 @------------------------------------------------------------------------------
601 @ LDMIA
602 @------------------------------------------------------------------------------
603         ldmia.w r4, {r4, r5, r8, r9}
604         ldmia.w r4, {r5, r6}
605         ldmia.w r5!, {r3, r8}
606         ldm.w r4, {r4, r5, r8, r9}
607         ldm.w r4, {r5, r6}
608         ldm.w r5!, {r3, r8}
609         ldm.w r5!, {r1, r2}
610         ldm.w r2, {r1, r2}
611
612         ldmia r4, {r4, r5, r8, r9}
613         ldmia r4, {r5, r6}
614         ldmia r5!, {r3, r8}
615         ldm r4, {r4, r5, r8, r9}
616         ldm r4, {r5, r6}
617         ldm r5!, {r3, r8}
618         ldmfd r5!, {r3, r8}
619         ldmia sp!, {r4-r11, pc}
620
621 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
622 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
623 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
624 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
625 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
626 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
627 @ CHECK: ldm.w  r5!, {r1, r2}           @ encoding: [0xb5,0xe8,0x06,0x00]
628 @ CHECK: ldm.w  r2, {r1, r2}            @ encoding: [0x92,0xe8,0x06,0x00]
629
630 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
631 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
632 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
633 @ CHECK: ldm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x94,0xe8,0x30,0x03]
634 @ CHECK: ldm.w  r4, {r5, r6}            @ encoding: [0x94,0xe8,0x60,0x00]
635 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
636 @ CHECK: ldm.w  r5!, {r3, r8}           @ encoding: [0xb5,0xe8,0x08,0x01]
637 @ CHECK: pop.w  {pc, r4, r5, r6, r7, r8, r9, r10, r11} @ encoding: [0xbd,0xe8,0xf0,0x8f]
638
639
640 @------------------------------------------------------------------------------
641 @ LDMDB
642 @------------------------------------------------------------------------------
643         ldmdb r4, {r4, r5, r8, r9}
644         ldmdb r4, {r5, r6}
645         ldmdb r5!, {r3, r8}
646         ldmea r5!, {r3, r8}
647         ldmdb.w r4, {r5, r6}
648         ldmdb.w r5!, {r3, r8}
649
650 @ CHECK: ldmdb  r4, {r4, r5, r8, r9}    @ encoding: [0x14,0xe9,0x30,0x03]
651 @ CHECK: ldmdb  r4, {r5, r6}            @ encoding: [0x14,0xe9,0x60,0x00]
652 @ CHECK: ldmdb  r5!, {r3, r8}           @ encoding: [0x35,0xe9,0x08,0x01]
653 @ CHECK: ldmdb  r5!, {r3, r8}           @ encoding: [0x35,0xe9,0x08,0x01]
654 @ CHECK: ldmdb  r4, {r5, r6}            @ encoding: [0x14,0xe9,0x60,0x00]
655 @ CHECK: ldmdb  r5!, {r3, r8}           @ encoding: [0x35,0xe9,0x08,0x01]
656
657
658 @------------------------------------------------------------------------------
659 @ LDR(immediate)
660 @------------------------------------------------------------------------------
661         ldr r5, [r5, #-4]
662         ldr r5, [r6, #32]
663         ldr r5, [r6, #33]
664         ldr r5, [r6, #257]
665         ldr.w pc, [r7, #257]
666         ldr r2, [r4, #255]!
667         ldr r8, [sp, #4]!
668         ldr lr, [sp, #-4]!
669         ldr r2, [r4], #255
670         ldr r8, [sp], #4
671         ldr lr, [sp], #-4
672
673 @ CHECK: ldr    r5, [r5, #-4]           @ encoding: [0x55,0xf8,0x04,0x5c]
674 @ CHECK: ldr    r5, [r6, #32]           @ encoding: [0x35,0x6a]
675 @ CHECK: ldr.w  r5, [r6, #33]           @ encoding: [0xd6,0xf8,0x21,0x50]
676 @ CHECK: ldr.w  r5, [r6, #257]          @ encoding: [0xd6,0xf8,0x01,0x51]
677 @ CHECK: ldr.w  pc, [r7, #257]          @ encoding: [0xd7,0xf8,0x01,0xf1]
678 @ CHECK: ldr    r2, [r4, #255]!         @ encoding: [0x54,0xf8,0xff,0x2f]
679 @ CHECK: ldr    r8, [sp, #4]!           @ encoding: [0x5d,0xf8,0x04,0x8f]
680 @ CHECK: ldr    lr, [sp, #-4]!          @ encoding: [0x5d,0xf8,0x04,0xed]
681 @ CHECK: ldr    r2, [r4], #255          @ encoding: [0x54,0xf8,0xff,0x2b]
682 @ CHECK: ldr    r8, [sp], #4            @ encoding: [0x5d,0xf8,0x04,0x8b]
683 @ CHECK: ldr    lr, [sp], #-4           @ encoding: [0x5d,0xf8,0x04,0xe9]
684
685
686 @------------------------------------------------------------------------------
687 @ LDR(literal)
688 @------------------------------------------------------------------------------
689         ldr.w r5, _foo
690         ldr   lr, (_strcmp-4)
691
692 @ CHECK: ldr.w  r5, _foo                @ encoding: [0x5f'A',0xf8'A',A,0x50'A']
693 @ CHECK: @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
694 @ CHECK: ldr.w  lr, _strcmp-4           @ encoding: [0x5f'A',0xf8'A',A,0xe0'A']
695 @ CHECK: @   fixup A - offset: 0, value: _strcmp-4, kind: fixup_t2_ldst_pcrel_12
696
697
698 @------------------------------------------------------------------------------
699 @ LDR(register)
700 @------------------------------------------------------------------------------
701         ldr r1, [r8, r1]
702         ldr.w r4, [r5, r2]
703         ldr r6, [r0, r2, lsl #3]
704         ldr r8, [r8, r2, lsl #2]
705         ldr r7, [sp, r2, lsl #1]
706         ldr r7, [sp, r2, lsl #0]
707
708 @ CHECK: ldr.w  r1, [r8, r1]            @ encoding: [0x58,0xf8,0x01,0x10]
709 @ CHECK: ldr.w  r4, [r5, r2]            @ encoding: [0x55,0xf8,0x02,0x40]
710 @ CHECK: ldr.w  r6, [r0, r2, lsl #3]    @ encoding: [0x50,0xf8,0x32,0x60]
711 @ CHECK: ldr.w  r8, [r8, r2, lsl #2]    @ encoding: [0x58,0xf8,0x22,0x80]
712 @ CHECK: ldr.w  r7, [sp, r2, lsl #1]    @ encoding: [0x5d,0xf8,0x12,0x70]
713 @ CHECK: ldr.w  r7, [sp, r2]            @ encoding: [0x5d,0xf8,0x02,0x70]
714
715
716 @------------------------------------------------------------------------------
717 @ LDRB(immediate)
718 @------------------------------------------------------------------------------
719         ldrb r5, [r5, #-4]
720         ldrb r5, [r6, #32]
721         ldrb r5, [r6, #33]
722         ldrb r5, [r6, #257]
723         ldrb.w lr, [r7, #257]
724         ldrb r5, [r8, #255]!
725         ldrb r2, [r5, #4]!
726         ldrb r1, [r4, #-4]!
727         ldrb lr, [r3], #255
728         ldrb r9, [r2], #4
729         ldrb r3, [sp], #-4
730
731 @ CHECK: ldrb   r5, [r5, #-4]           @ encoding: [0x15,0xf8,0x04,0x5c]
732 @ CHECK: ldrb.w r5, [r6, #32]           @ encoding: [0x96,0xf8,0x20,0x50]
733 @ CHECK: ldrb.w r5, [r6, #33]           @ encoding: [0x96,0xf8,0x21,0x50]
734 @ CHECK: ldrb.w r5, [r6, #257]          @ encoding: [0x96,0xf8,0x01,0x51]
735 @ CHECK: ldrb.w lr, [r7, #257]          @ encoding: [0x97,0xf8,0x01,0xe1]
736 @ CHECK: ldrb   r5, [r8, #255]!         @ encoding: [0x18,0xf8,0xff,0x5f]
737 @ CHECK: ldrb   r2, [r5, #4]!           @ encoding: [0x15,0xf8,0x04,0x2f]
738 @ CHECK: ldrb   r1, [r4, #-4]!          @ encoding: [0x14,0xf8,0x04,0x1d]
739 @ CHECK: ldrb   lr, [r3], #255          @ encoding: [0x13,0xf8,0xff,0xeb]
740 @ CHECK: ldrb   r9, [r2], #4            @ encoding: [0x12,0xf8,0x04,0x9b]
741 @ CHECK: ldrb   r3, [sp], #-4           @ encoding: [0x1d,0xf8,0x04,0x39]
742
743
744 @------------------------------------------------------------------------------
745 @ LDRB(register)
746 @------------------------------------------------------------------------------
747         ldrb r1, [r8, r1]
748         ldrb.w r4, [r5, r2]
749         ldrb r6, [r0, r2, lsl #3]
750         ldrb r8, [r8, r2, lsl #2]
751         ldrb r7, [sp, r2, lsl #1]
752         ldrb r7, [sp, r2, lsl #0]
753
754 @ CHECK: ldrb.w r1, [r8, r1]            @ encoding: [0x18,0xf8,0x01,0x10]
755 @ CHECK: ldrb.w r4, [r5, r2]            @ encoding: [0x15,0xf8,0x02,0x40]
756 @ CHECK: ldrb.w r6, [r0, r2, lsl #3]    @ encoding: [0x10,0xf8,0x32,0x60]
757 @ CHECK: ldrb.w r8, [r8, r2, lsl #2]    @ encoding: [0x18,0xf8,0x22,0x80]
758 @ CHECK: ldrb.w r7, [sp, r2, lsl #1]    @ encoding: [0x1d,0xf8,0x12,0x70]
759 @ CHECK: ldrb.w r7, [sp, r2]            @ encoding: [0x1d,0xf8,0x02,0x70]
760
761
762 @------------------------------------------------------------------------------
763 @ LDRBT
764 @------------------------------------------------------------------------------
765         ldrbt r1, [r2]
766         ldrbt r1, [r8, #0]
767         ldrbt r1, [r8, #3]
768         ldrbt r1, [r8, #255]
769
770 @ CHECK: ldrbt  r1, [r2]                @ encoding: [0x12,0xf8,0x00,0x1e]
771 @ CHECK: ldrbt  r1, [r8]                @ encoding: [0x18,0xf8,0x00,0x1e]
772 @ CHECK: ldrbt  r1, [r8, #3]            @ encoding: [0x18,0xf8,0x03,0x1e]
773 @ CHECK: ldrbt  r1, [r8, #255]          @ encoding: [0x18,0xf8,0xff,0x1e]
774
775
776 @------------------------------------------------------------------------------
777 @ LDRD
778 @------------------------------------------------------------------------------
779         ldrd r3, r5, [r6, #24]
780         ldrd r3, r5, [r6, #24]!
781         ldrd r3, r5, [r6], #4
782         ldrd r3, r5, [r6], #-8
783         ldrd r3, r5, [r6]
784         ldrd r8, r1, [r3, #0]
785
786 @ CHECK: ldrd   r3, r5, [r6, #24]       @ encoding: [0xd6,0xe9,0x06,0x35]
787 @ CHECK: ldrd   r3, r5, [r6, #24]!      @ encoding: [0xf6,0xe9,0x06,0x35]
788 @ CHECK: ldrd   r3, r5, [r6], #4        @ encoding: [0xf6,0xe8,0x01,0x35]
789 @ CHECK: ldrd   r3, r5, [r6], #-8       @ encoding: [0x76,0xe8,0x02,0x35]
790 @ CHECK: ldrd   r3, r5, [r6]            @ encoding: [0xd6,0xe9,0x00,0x35]
791 @ CHECK: ldrd   r8, r1, [r3]            @ encoding: [0xd3,0xe9,0x00,0x81]
792
793
794 @------------------------------------------------------------------------------
795 @ FIXME: LDRD(literal)
796 @------------------------------------------------------------------------------
797
798
799 @------------------------------------------------------------------------------
800 @ LDREX/LDREXB/LDREXH/LDREXD
801 @------------------------------------------------------------------------------
802         ldrex r1, [r4]
803         ldrex r8, [r4, #0]
804         ldrex r2, [sp, #128]
805         ldrexb r5, [r7]
806         ldrexh r9, [r12]
807         ldrexd r9, r3, [r4]
808
809 @ CHECK: ldrex  r1, [r4]                @ encoding: [0x54,0xe8,0x00,0x1f]
810 @ CHECK: ldrex  r8, [r4]                @ encoding: [0x54,0xe8,0x00,0x8f]
811 @ CHECK: ldrex  r2, [sp, #128]          @ encoding: [0x5d,0xe8,0x20,0x2f]
812 @ CHECK: ldrexb r5, [r7]                @ encoding: [0xd7,0xe8,0x4f,0x5f]
813 @ CHECK: ldrexh r9, [r12]               @ encoding: [0xdc,0xe8,0x5f,0x9f]
814 @ CHECK: ldrexd r9, r3, [r4]            @ encoding: [0xd4,0xe8,0x7f,0x93]
815
816
817 @------------------------------------------------------------------------------
818 @ LDRH(immediate)
819 @------------------------------------------------------------------------------
820         ldrh r5, [r5, #-4]
821         ldrh r5, [r6, #32]
822         ldrh r5, [r6, #33]
823         ldrh r5, [r6, #257]
824         ldrh.w lr, [r7, #257]
825         ldrh r5, [r8, #255]!
826         ldrh r2, [r5, #4]!
827         ldrh r1, [r4, #-4]!
828         ldrh lr, [r3], #255
829         ldrh r9, [r2], #4
830         ldrh r3, [sp], #-4
831
832 @ CHECK: ldrh   r5, [r5, #-4]           @ encoding: [0x35,0xf8,0x04,0x5c]
833 @ CHECK: ldrh   r5, [r6, #32]           @ encoding: [0x35,0x8c]
834 @ CHECK: ldrh.w r5, [r6, #33]           @ encoding: [0xb6,0xf8,0x21,0x50]
835 @ CHECK: ldrh.w r5, [r6, #257]          @ encoding: [0xb6,0xf8,0x01,0x51]
836 @ CHECK: ldrh.w lr, [r7, #257]          @ encoding: [0xb7,0xf8,0x01,0xe1]
837 @ CHECK: ldrh   r5, [r8, #255]!         @ encoding: [0x38,0xf8,0xff,0x5f]
838 @ CHECK: ldrh   r2, [r5, #4]!           @ encoding: [0x35,0xf8,0x04,0x2f]
839 @ CHECK: ldrh   r1, [r4, #-4]!          @ encoding: [0x34,0xf8,0x04,0x1d]
840 @ CHECK: ldrh   lr, [r3], #255          @ encoding: [0x33,0xf8,0xff,0xeb]
841 @ CHECK: ldrh   r9, [r2], #4            @ encoding: [0x32,0xf8,0x04,0x9b]
842 @ CHECK: ldrh   r3, [sp], #-4           @ encoding: [0x3d,0xf8,0x04,0x39]
843
844
845 @------------------------------------------------------------------------------
846 @ LDRH(register)
847 @------------------------------------------------------------------------------
848         ldrh r1, [r8, r1]
849         ldrh.w r4, [r5, r2]
850         ldrh r6, [r0, r2, lsl #3]
851         ldrh r8, [r8, r2, lsl #2]
852         ldrh r7, [sp, r2, lsl #1]
853         ldrh r7, [sp, r2, lsl #0]
854
855 @ CHECK: ldrh.w r1, [r8, r1]            @ encoding: [0x38,0xf8,0x01,0x10]
856 @ CHECK: ldrh.w r4, [r5, r2]            @ encoding: [0x35,0xf8,0x02,0x40]
857 @ CHECK: ldrh.w r6, [r0, r2, lsl #3]    @ encoding: [0x30,0xf8,0x32,0x60]
858 @ CHECK: ldrh.w r8, [r8, r2, lsl #2]    @ encoding: [0x38,0xf8,0x22,0x80]
859 @ CHECK: ldrh.w r7, [sp, r2, lsl #1]    @ encoding: [0x3d,0xf8,0x12,0x70]
860 @ CHECK: ldrh.w r7, [sp, r2]            @ encoding: [0x3d,0xf8,0x02,0x70]
861
862
863 @------------------------------------------------------------------------------
864 @ LDRH(literal)
865 @------------------------------------------------------------------------------
866         ldrh r5, _bar
867
868 @ CHECK: ldrh.w r5, _bar                @ encoding: [0x3f'A',0xf8'A',A,0x50'A']
869 @ CHECK:     @   fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12
870
871
872 @------------------------------------------------------------------------------
873 @ LDRHT
874 @------------------------------------------------------------------------------
875         ldrht r1, [r2]
876         ldrht r1, [r8, #0]
877         ldrht r1, [r8, #3]
878         ldrht r1, [r8, #255]
879
880 @ CHECK: ldrht  r1, [r2]                @ encoding: [0x32,0xf8,0x00,0x1e]
881 @ CHECK: ldrht  r1, [r8]                @ encoding: [0x38,0xf8,0x00,0x1e]
882 @ CHECK: ldrht  r1, [r8, #3]            @ encoding: [0x38,0xf8,0x03,0x1e]
883 @ CHECK: ldrht  r1, [r8, #255]          @ encoding: [0x38,0xf8,0xff,0x1e]
884
885
886 @------------------------------------------------------------------------------
887 @ LDRSB(immediate)
888 @------------------------------------------------------------------------------
889         ldrsb r5, [r5, #-4]
890         ldrsb r5, [r6, #32]
891         ldrsb r5, [r6, #33]
892         ldrsb r5, [r6, #257]
893         ldrsb.w lr, [r7, #257]
894
895 @ CHECK: ldrsb  r5, [r5, #-4]            @ encoding: [0x15,0xf9,0x04,0x5c]
896 @ CHECK: ldrsb.w r5, [r6, #32]           @ encoding: [0x96,0xf9,0x20,0x50]
897 @ CHECK: ldrsb.w r5, [r6, #33]           @ encoding: [0x96,0xf9,0x21,0x50]
898 @ CHECK: ldrsb.w r5, [r6, #257]          @ encoding: [0x96,0xf9,0x01,0x51]
899 @ CHECK: ldrsb.w lr, [r7, #257]          @ encoding: [0x97,0xf9,0x01,0xe1]
900
901
902 @------------------------------------------------------------------------------
903 @ LDRSB(register)
904 @------------------------------------------------------------------------------
905         ldrsb r1, [r8, r1]
906         ldrsb.w r4, [r5, r2]
907         ldrsb r6, [r0, r2, lsl #3]
908         ldrsb r8, [r8, r2, lsl #2]
909         ldrsb r7, [sp, r2, lsl #1]
910         ldrsb r7, [sp, r2, lsl #0]
911         ldrsb r5, [r8, #255]!
912         ldrsb r2, [r5, #4]!
913         ldrsb r1, [r4, #-4]!
914         ldrsb lr, [r3], #255
915         ldrsb r9, [r2], #4
916         ldrsb r3, [sp], #-4
917
918 @ CHECK: ldrsb.w r1, [r8, r1]           @ encoding: [0x18,0xf9,0x01,0x10]
919 @ CHECK: ldrsb.w r4, [r5, r2]           @ encoding: [0x15,0xf9,0x02,0x40]
920 @ CHECK: ldrsb.w r6, [r0, r2, lsl #3]   @ encoding: [0x10,0xf9,0x32,0x60]
921 @ CHECK: ldrsb.w r8, [r8, r2, lsl #2]   @ encoding: [0x18,0xf9,0x22,0x80]
922 @ CHECK: ldrsb.w r7, [sp, r2, lsl #1]   @ encoding: [0x1d,0xf9,0x12,0x70]
923 @ CHECK: ldrsb.w r7, [sp, r2]           @ encoding: [0x1d,0xf9,0x02,0x70]
924 @ CHECK: ldrsb  r5, [r8, #255]!         @ encoding: [0x18,0xf9,0xff,0x5f]
925 @ CHECK: ldrsb  r2, [r5, #4]!           @ encoding: [0x15,0xf9,0x04,0x2f]
926 @ CHECK: ldrsb  r1, [r4, #-4]!          @ encoding: [0x14,0xf9,0x04,0x1d]
927 @ CHECK: ldrsb  lr, [r3], #255          @ encoding: [0x13,0xf9,0xff,0xeb]
928 @ CHECK: ldrsb  r9, [r2], #4            @ encoding: [0x12,0xf9,0x04,0x9b]
929 @ CHECK: ldrsb  r3, [sp], #-4           @ encoding: [0x1d,0xf9,0x04,0x39]
930
931
932 @------------------------------------------------------------------------------
933 @ LDRSB(literal)
934 @------------------------------------------------------------------------------
935         ldrsb r5, _bar
936
937 @ CHECK: ldrsb.w r5, _bar               @ encoding: [0x1f'A',0xf9'A',A,0x50'A']
938 @ CHECK:      @   fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12
939
940
941 @------------------------------------------------------------------------------
942 @ LDRSBT
943 @------------------------------------------------------------------------------
944         ldrsbt r1, [r2]
945         ldrsbt r1, [r8, #0]
946         ldrsbt r1, [r8, #3]
947         ldrsbt r1, [r8, #255]
948
949 @ CHECK: ldrsbt r1, [r2]                @ encoding: [0x12,0xf9,0x00,0x1e]
950 @ CHECK: ldrsbt r1, [r8]                @ encoding: [0x18,0xf9,0x00,0x1e]
951 @ CHECK: ldrsbt r1, [r8, #3]            @ encoding: [0x18,0xf9,0x03,0x1e]
952 @ CHECK: ldrsbt r1, [r8, #255]          @ encoding: [0x18,0xf9,0xff,0x1e]
953
954
955 @------------------------------------------------------------------------------
956 @ LDRSH(immediate)
957 @------------------------------------------------------------------------------
958         ldrsh r5, [r5, #-4]
959         ldrsh r5, [r6, #32]
960         ldrsh r5, [r6, #33]
961         ldrsh r5, [r6, #257]
962         ldrsh.w lr, [r7, #257]
963
964 @ CHECK: ldrsh  r5, [r5, #-4]           @ encoding: [0x35,0xf9,0x04,0x5c]
965 @ CHECK: ldrsh.w r5, [r6, #32]          @ encoding: [0xb6,0xf9,0x20,0x50]
966 @ CHECK: ldrsh.w r5, [r6, #33]          @ encoding: [0xb6,0xf9,0x21,0x50]
967 @ CHECK: ldrsh.w r5, [r6, #257]         @ encoding: [0xb6,0xf9,0x01,0x51]
968 @ CHECK: ldrsh.w lr, [r7, #257]         @ encoding: [0xb7,0xf9,0x01,0xe1]
969
970
971 @------------------------------------------------------------------------------
972 @ LDRSH(register)
973 @------------------------------------------------------------------------------
974         ldrsh r1, [r8, r1]
975         ldrsh.w r4, [r5, r2]
976         ldrsh r6, [r0, r2, lsl #3]
977         ldrsh r8, [r8, r2, lsl #2]
978         ldrsh r7, [sp, r2, lsl #1]
979         ldrsh r7, [sp, r2, lsl #0]
980         ldrsh r5, [r8, #255]!
981         ldrsh r2, [r5, #4]!
982         ldrsh r1, [r4, #-4]!
983         ldrsh lr, [r3], #255
984         ldrsh r9, [r2], #4
985         ldrsh r3, [sp], #-4
986
987 @ CHECK: ldrsh.w r1, [r8, r1]           @ encoding: [0x38,0xf9,0x01,0x10]
988 @ CHECK: ldrsh.w r4, [r5, r2]           @ encoding: [0x35,0xf9,0x02,0x40]
989 @ CHECK: ldrsh.w r6, [r0, r2, lsl #3]   @ encoding: [0x30,0xf9,0x32,0x60]
990 @ CHECK: ldrsh.w r8, [r8, r2, lsl #2]   @ encoding: [0x38,0xf9,0x22,0x80]
991 @ CHECK: ldrsh.w r7, [sp, r2, lsl #1]   @ encoding: [0x3d,0xf9,0x12,0x70]
992 @ CHECK: ldrsh.w r7, [sp, r2]           @ encoding: [0x3d,0xf9,0x02,0x70]
993 @ CHECK: ldrsh  r5, [r8, #255]!         @ encoding: [0x38,0xf9,0xff,0x5f]
994 @ CHECK: ldrsh  r2, [r5, #4]!           @ encoding: [0x35,0xf9,0x04,0x2f]
995 @ CHECK: ldrsh  r1, [r4, #-4]!          @ encoding: [0x34,0xf9,0x04,0x1d]
996 @ CHECK: ldrsh  lr, [r3], #255          @ encoding: [0x33,0xf9,0xff,0xeb]
997 @ CHECK: ldrsh  r9, [r2], #4            @ encoding: [0x32,0xf9,0x04,0x9b]
998 @ CHECK: ldrsh  r3, [sp], #-4           @ encoding: [0x3d,0xf9,0x04,0x39]
999
1000
1001 @------------------------------------------------------------------------------
1002 @ LDRSH(literal)
1003 @------------------------------------------------------------------------------
1004         ldrsh r5, _bar
1005
1006 @ CHECK: ldrsh.w r5, _bar               @ encoding: [0x3f'A',0xf9'A',A,0x50'A']
1007 @ CHECK:      @   fixup A - offset: 0, value: _bar, kind: fixup_t2_ldst_pcrel_12
1008
1009 @ TEMPORARILY DISABLED:
1010 @        ldrsh.w r4, [pc, #1435]
1011 @      : ldrsh.w r4, [pc, #1435]               @ encoding: [0x3f,0xf9,0x9b,0x45]
1012
1013 @------------------------------------------------------------------------------
1014 @ LDRSHT
1015 @------------------------------------------------------------------------------
1016         ldrsht r1, [r2]
1017         ldrsht r1, [r8, #0]
1018         ldrsht r1, [r8, #3]
1019         ldrsht r1, [r8, #255]
1020
1021 @ CHECK: ldrsht r1, [r2]                @ encoding: [0x32,0xf9,0x00,0x1e]
1022 @ CHECK: ldrsht r1, [r8]                @ encoding: [0x38,0xf9,0x00,0x1e]
1023 @ CHECK: ldrsht r1, [r8, #3]            @ encoding: [0x38,0xf9,0x03,0x1e]
1024 @ CHECK: ldrsht r1, [r8, #255]          @ encoding: [0x38,0xf9,0xff,0x1e]
1025
1026
1027 @------------------------------------------------------------------------------
1028 @ LDRT
1029 @------------------------------------------------------------------------------
1030         ldrt r1, [r2]
1031         ldrt r2, [r6, #0]
1032         ldrt r3, [r7, #3]
1033         ldrt r4, [r9, #255]
1034
1035 @ CHECK: ldrt   r1, [r2]                @ encoding: [0x52,0xf8,0x00,0x1e]
1036 @ CHECK: ldrt   r2, [r6]                @ encoding: [0x56,0xf8,0x00,0x2e]
1037 @ CHECK: ldrt   r3, [r7, #3]            @ encoding: [0x57,0xf8,0x03,0x3e]
1038 @ CHECK: ldrt   r4, [r9, #255]          @ encoding: [0x59,0xf8,0xff,0x4e]
1039
1040
1041 @------------------------------------------------------------------------------
1042 @ LSL (immediate)
1043 @------------------------------------------------------------------------------
1044         lsl r2, r3, #12
1045         lsls r8, r3, #31
1046         lsls.w r2, r3, #1
1047         lsl r2, r3, #4
1048         lsls r2, r12, #15
1049
1050         lsl r3, #19
1051         lsls r8, #2
1052         lsls.w r7, #5
1053         lsl.w r12, #21
1054
1055 @ CHECK: lsl.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x03,0x32]
1056 @ CHECK: lsls.w r8, r3, #31             @ encoding: [0x5f,0xea,0xc3,0x78]
1057 @ CHECK: lsls.w r2, r3, #1              @ encoding: [0x5f,0xea,0x43,0x02]
1058 @ CHECK: lsl.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x03,0x12]
1059 @ CHECK: lsls.w r2, r12, #15            @ encoding: [0x5f,0xea,0xcc,0x32]
1060
1061 @ CHECK: lsl.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xc3,0x43]
1062 @ CHECK: lsls.w r8, r8, #2              @ encoding: [0x5f,0xea,0x88,0x08]
1063 @ CHECK: lsls.w r7, r7, #5              @ encoding: [0x5f,0xea,0x47,0x17]
1064 @ CHECK: lsl.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x4c,0x5c]
1065
1066
1067 @------------------------------------------------------------------------------
1068 @ LSL (register)
1069 @------------------------------------------------------------------------------
1070         lsl r3, r4, r2
1071         lsl.w r1, r2
1072         lsls r3, r4, r8
1073
1074 @ CHECK: lsl.w  r3, r4, r2              @ encoding: [0x04,0xfa,0x02,0xf3]
1075 @ CHECK: lsl.w  r1, r1, r2              @ encoding: [0x01,0xfa,0x02,0xf1]
1076 @ CHECK: lsls.w r3, r4, r8              @ encoding: [0x14,0xfa,0x08,0xf3]
1077
1078
1079 @------------------------------------------------------------------------------
1080 @ LSR (immediate)
1081 @------------------------------------------------------------------------------
1082         lsr r2, r3, #12
1083         lsrs r8, r3, #32
1084         lsrs.w r2, r3, #1
1085         lsr r2, r3, #4
1086         lsrs r2, r12, #15
1087
1088         lsr r3, #19
1089         lsrs r8, #2
1090         lsrs.w r7, #5
1091         lsr.w r12, #21
1092
1093 @ CHECK: lsr.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x13,0x32]
1094 @ CHECK: lsrs.w r8, r3, #32             @ encoding: [0x5f,0xea,0x13,0x08]
1095 @ CHECK: lsrs.w r2, r3, #1              @ encoding: [0x5f,0xea,0x53,0x02]
1096 @ CHECK: lsr.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x13,0x12]
1097 @ CHECK: lsrs.w r2, r12, #15            @ encoding: [0x5f,0xea,0xdc,0x32]
1098
1099 @ CHECK: lsr.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xd3,0x43]
1100 @ CHECK: lsrs.w r8, r8, #2              @ encoding: [0x5f,0xea,0x98,0x08]
1101 @ CHECK: lsrs.w r7, r7, #5              @ encoding: [0x5f,0xea,0x57,0x17]
1102 @ CHECK: lsr.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x5c,0x5c]
1103
1104
1105 @------------------------------------------------------------------------------
1106 @ LSR (register)
1107 @------------------------------------------------------------------------------
1108         lsr r3, r4, r2
1109         lsr.w r1, r2
1110         lsrs r3, r4, r8
1111
1112 @ CHECK: lsr.w  r3, r4, r2              @ encoding: [0x24,0xfa,0x02,0xf3]
1113 @ CHECK: lsr.w  r1, r1, r2              @ encoding: [0x21,0xfa,0x02,0xf1]
1114 @ CHECK: lsrs.w r3, r4, r8              @ encoding: [0x34,0xfa,0x08,0xf3]
1115
1116 @------------------------------------------------------------------------------
1117 @ MCR/MCR2
1118 @------------------------------------------------------------------------------
1119         mcr  p7, #1, r5, c1, c1, #4
1120         mcr2  p7, #1, r5, c1, c1, #4
1121         mcr p14, #0, r4, c0, c5
1122         mcr2 p4, #2, r2, c1, c3
1123
1124 @ CHECK: mcr    p7, #1, r5, c1, c1, #4  @ encoding: [0x21,0xee,0x91,0x57]
1125 @ CHECK: mcr2   p7, #1, r5, c1, c1, #4  @ encoding: [0x21,0xfe,0x91,0x57]
1126 @ CHECK: mcr    p14, #0, r4, c0, c5, #0 @ encoding: [0x00,0xee,0x15,0x4e]
1127 @ CHECK: mcr2   p4, #2, r2, c1, c3, #0  @ encoding: [0x41,0xfe,0x13,0x24]
1128
1129
1130 @------------------------------------------------------------------------------
1131 @ MCRR/MCRR2
1132 @------------------------------------------------------------------------------
1133         mcrr  p7, #15, r5, r4, c1
1134         mcrr2  p7, #15, r5, r4, c1
1135
1136 @ CHECK: mcrr   p7, #15, r5, r4, c1     @ encoding: [0x44,0xec,0xf1,0x57]
1137 @ CHECK: mcrr2  p7, #15, r5, r4, c1     @ encoding: [0x44,0xfc,0xf1,0x57]
1138
1139
1140 @------------------------------------------------------------------------------
1141 @ MLA/MLS
1142 @------------------------------------------------------------------------------
1143         mla  r1,r2,r3,r4
1144         mls  r1,r2,r3,r4
1145
1146 @ CHECK: mla    r1, r2, r3, r4          @ encoding: [0x02,0xfb,0x03,0x41]
1147 @ CHECK: mls    r1, r2, r3, r4          @ encoding: [0x02,0xfb,0x13,0x41]
1148
1149
1150 @------------------------------------------------------------------------------
1151 @ MOV(immediate)
1152 @------------------------------------------------------------------------------
1153         movs r1, #21
1154         movs.w r1, #21
1155         movs r8, #21
1156         movw r0, #65535
1157         movw r1, #43777
1158         movw r1, #43792
1159         mov.w r0, #0x3fc0000
1160         mov r0, #0x3fc0000
1161         movs.w r0, #0x3fc0000
1162         itte eq
1163         movseq r1, #12
1164         moveq r1, #12
1165         movne.w r1, #12
1166         mov.w r6, #450
1167         it lo
1168         movlo r1, #-1
1169
1170         @ alias for mvn
1171         mov r3, #-3
1172
1173
1174 @ CHECK: movs   r1, #21                 @ encoding: [0x15,0x21]
1175 @ CHECK: movs.w r1, #21                 @ encoding: [0x5f,0xf0,0x15,0x01]
1176 @ CHECK: movs.w r8, #21                 @ encoding: [0x5f,0xf0,0x15,0x08]
1177 @ CHECK: movw   r0, #65535              @ encoding: [0x4f,0xf6,0xff,0x70]
1178 @ CHECK: movw   r1, #43777              @ encoding: [0x4a,0xf6,0x01,0x31]
1179 @ CHECK: movw   r1, #43792              @ encoding: [0x4a,0xf6,0x10,0x31]
1180 @ CHECK: mov.w  r0, #66846720           @ encoding: [0x4f,0xf0,0x7f,0x70]
1181 @ CHECK: mov.w  r0, #66846720           @ encoding: [0x4f,0xf0,0x7f,0x70]
1182 @ CHECK: movs.w r0, #66846720           @ encoding: [0x5f,0xf0,0x7f,0x70]
1183 @ CHECK: itte   eq                      @ encoding: [0x06,0xbf]
1184 @ CHECK: movseq.w       r1, #12         @ encoding: [0x5f,0xf0,0x0c,0x01]
1185 @ CHECK: moveq  r1, #12                 @ encoding: [0x0c,0x21]
1186 @ CHECK: movne.w r1, #12                @ encoding: [0x4f,0xf0,0x0c,0x01]
1187 @ CHECK: mov.w  r6, #450                @ encoding: [0x4f,0xf4,0xe1,0x76]
1188 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
1189 @ CHECK: movlo.w        r1, #-1         @ encoding: [0x4f,0xf0,0xff,0x31]
1190 @ CHECK: mvn    r3, #2                  @ encoding: [0x6f,0xf0,0x02,0x03]
1191
1192 @------------------------------------------------------------------------------
1193 @ MOV(shifted register)
1194 @------------------------------------------------------------------------------
1195         mov r6, r2, lsl #16
1196         mov r6, r2, lsr #16
1197         movs r6, r2, asr #32
1198         movs r6, r2, ror #5
1199         movs r4, r4, lsl r5
1200         movs r4, r4, lsr r5
1201         movs r4, r4, asr r5
1202         movs r4, r4, ror r5
1203         mov r4, r4, lsl r5
1204         movs r4, r4, ror r8
1205         movs r4, r5, lsr r6
1206         itttt eq
1207         moveq r4, r4, lsl r5
1208         moveq r4, r4, lsr r5
1209         moveq r4, r4, asr r5
1210         moveq r4, r4, ror r5
1211         mov r4, r4, rrx
1212
1213 @ CHECK: lsl.w  r6, r2, #16             @ encoding: [0x4f,0xea,0x02,0x46]
1214 @ CHECK: lsr.w  r6, r2, #16             @ encoding: [0x4f,0xea,0x12,0x46]
1215 @ CHECK: asrs   r6, r2, #32             @ encoding: [0x16,0x10]
1216 @ CHECK: rors.w r6, r2, #5              @ encoding: [0x5f,0xea,0x72,0x16]
1217 @ CHECK: lsls   r4, r5                  @ encoding: [0xac,0x40]
1218 @ CHECK: lsrs   r4, r5                  @ encoding: [0xec,0x40]
1219 @ CHECK: asrs   r4, r5                  @ encoding: [0x2c,0x41]
1220 @ CHECK: rors   r4, r5                  @ encoding: [0xec,0x41]
1221 @ CHECK: lsl.w  r4, r4, r5              @ encoding: [0x04,0xfa,0x05,0xf4]
1222 @ CHECK: rors.w r4, r4, r8              @ encoding: [0x74,0xfa,0x08,0xf4]
1223 @ CHECK: lsrs.w r4, r5, r6              @ encoding: [0x35,0xfa,0x06,0xf4]
1224 @ CHECK: itttt  eq                      @ encoding: [0x01,0xbf]
1225 @ CHECK: lsleq  r4, r5                  @ encoding: [0xac,0x40]
1226 @ CHECK: lsreq  r4, r5                  @ encoding: [0xec,0x40]
1227 @ CHECK: asreq  r4, r5                  @ encoding: [0x2c,0x41]
1228 @ CHECK: roreq  r4, r5                  @ encoding: [0xec,0x41]
1229 @ CHECK: rrx    r4, r4                  @ encoding: [0x4f,0xea,0x34,0x04]
1230
1231
1232 @------------------------------------------------------------------------------
1233 @ MOVT
1234 @------------------------------------------------------------------------------
1235         movt r3, #7
1236         movt r6, #0xffff
1237         it eq
1238         movteq r4, #0xff0
1239
1240 @ CHECK: movt   r3, #7                  @ encoding: [0xc0,0xf2,0x07,0x03]
1241 @ CHECK: movt   r6, #65535              @ encoding: [0xcf,0xf6,0xff,0x76]
1242 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1243 @ CHECK: movteq r4, #4080               @ encoding: [0xc0,0xf6,0xf0,0x74]
1244
1245 @------------------------------------------------------------------------------
1246 @ MRC/MRC2
1247 @------------------------------------------------------------------------------
1248         mrc  p14, #0, r1, c1, c2, #4
1249         mrc2  p14, #0, r1, c1, c2, #4
1250         mrc p11, #1, r1, c2, c2
1251         mrc2 p12, #3, r3, c3, c4
1252
1253 @ CHECK: mrc    p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xee,0x92,0x1e]
1254 @ CHECK: mrc2   p14, #0, r1, c1, c2, #4 @ encoding: [0x11,0xfe,0x92,0x1e]
1255 @ CHECK: mrc    p11, #1, r1, c2, c2, #0 @ encoding: [0x32,0xee,0x12,0x1b]
1256 @ CHECK: mrc2   p12, #3, r3, c3, c4, #0 @ encoding: [0x73,0xfe,0x14,0x3c]
1257
1258
1259 @------------------------------------------------------------------------------
1260 @ MRRC/MRRC2
1261 @------------------------------------------------------------------------------
1262         mrrc  p7, #1, r5, r4, c1
1263         mrrc2  p7, #1, r5, r4, c1
1264
1265 @ CHECK: mrrc   p7, #1, r5, r4, c1      @ encoding: [0x54,0xec,0x11,0x57]
1266 @ CHECK: mrrc2  p7, #1, r5, r4, c1      @ encoding: [0x54,0xfc,0x11,0x57]
1267
1268
1269 @------------------------------------------------------------------------------
1270 @ MRS
1271 @------------------------------------------------------------------------------
1272         mrs  r8, apsr
1273         mrs  r8, cpsr
1274         mrs  r8, spsr
1275
1276 @ CHECK: mrs    r8, apsr                @ encoding: [0xef,0xf3,0x00,0x88]
1277 @ CHECK: mrs    r8, apsr                @ encoding: [0xef,0xf3,0x00,0x88]
1278 @ CHECK: mrs    r8, spsr                @ encoding: [0xff,0xf3,0x00,0x88]
1279
1280
1281 @------------------------------------------------------------------------------
1282 @ MSR
1283 @------------------------------------------------------------------------------
1284         msr  apsr, r1
1285         msr  apsr_g, r2
1286         msr  apsr_nzcvq, r3
1287         msr  APSR_nzcvq, r4
1288         msr  apsr_nzcvqg, r5
1289         msr  cpsr_fc, r6
1290         msr  cpsr_c, r7
1291         msr  cpsr_x, r8
1292         msr  cpsr_fc, r9
1293         msr  cpsr_all, r11
1294         msr  cpsr_fsx, r12
1295         msr  spsr_fc, r0
1296         msr  SPSR_fsxc, r5
1297         msr  cpsr_fsxc, r8
1298         msr  cpsr, r3
1299
1300 @ CHECK: msr    APSR_nzcvq, r1          @ encoding: [0x81,0xf3,0x00,0x88]
1301 @ CHECK: msr    APSR_g, r2              @ encoding: [0x82,0xf3,0x00,0x84]
1302 @ CHECK: msr    APSR_nzcvq, r3          @ encoding: [0x83,0xf3,0x00,0x88]
1303 @ CHECK: msr    APSR_nzcvq, r4          @ encoding: [0x84,0xf3,0x00,0x88]
1304 @ CHECK: msr    APSR_nzcvqg, r5         @ encoding: [0x85,0xf3,0x00,0x8c]
1305 @ CHECK: msr    CPSR_fc, r6             @ encoding: [0x86,0xf3,0x00,0x89]
1306 @ CHECK: msr    CPSR_c, r7              @ encoding: [0x87,0xf3,0x00,0x81]
1307 @ CHECK: msr    CPSR_x, r8              @ encoding: [0x88,0xf3,0x00,0x82]
1308 @ CHECK: msr    CPSR_fc, r9             @ encoding: [0x89,0xf3,0x00,0x89]
1309 @ CHECK: msr    CPSR_fc, r11            @ encoding: [0x8b,0xf3,0x00,0x89]
1310 @ CHECK: msr    CPSR_fsx, r12           @ encoding: [0x8c,0xf3,0x00,0x8e]
1311 @ CHECK: msr    SPSR_fc, r0             @ encoding: [0x90,0xf3,0x00,0x89]
1312 @ CHECK: msr    SPSR_fsxc, r5           @ encoding: [0x95,0xf3,0x00,0x8f]
1313 @ CHECK: msr    CPSR_fsxc, r8           @ encoding: [0x88,0xf3,0x00,0x8f]
1314 @ CHECK: msr    CPSR_fc, r3             @ encoding: [0x83,0xf3,0x00,0x89]
1315
1316
1317 @------------------------------------------------------------------------------
1318 @ MUL
1319 @------------------------------------------------------------------------------
1320         muls r3, r4, r3
1321         mul r3, r4, r3
1322         mul r3, r4, r6
1323         it eq
1324         muleq r3, r4, r5
1325         it le
1326         mulle r4, r4, r8
1327         mul r5, r6
1328
1329 @ CHECK: muls   r3, r4, r3              @ encoding: [0x63,0x43]
1330 @ CHECK: mul    r3, r4, r3              @ encoding: [0x04,0xfb,0x03,0xf3]
1331 @ CHECK: mul    r3, r4, r6              @ encoding: [0x04,0xfb,0x06,0xf3]
1332 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1333 @ CHECK: muleq  r3, r4, r5              @ encoding: [0x04,0xfb,0x05,0xf3]
1334 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
1335 @ CHECK: mulle  r4, r4, r8              @ encoding: [0x04,0xfb,0x08,0xf4]
1336 @ CHECK: mul    r5, r6, r5              @ encoding: [0x06,0xfb,0x05,0xf5]
1337
1338
1339 @------------------------------------------------------------------------------
1340 @ MVN(immediate)
1341 @------------------------------------------------------------------------------
1342         mvns r8, #21
1343         mvn r0, #0x3fc0000
1344         mvns r0, #0x3fc0000
1345         itte eq
1346         mvnseq r1, #12
1347         mvneq.w r1, #12
1348         mvnne r1, #12
1349
1350 @ CHECK: mvns   r8, #21                 @ encoding: [0x7f,0xf0,0x15,0x08]
1351 @ CHECK: mvn    r0, #66846720           @ encoding: [0x6f,0xf0,0x7f,0x70]
1352 @ CHECK: mvns   r0, #66846720           @ encoding: [0x7f,0xf0,0x7f,0x70]
1353 @ CHECK: itte   eq                      @ encoding: [0x06,0xbf]
1354 @ CHECK: mvnseq r1, #12                 @ encoding: [0x7f,0xf0,0x0c,0x01]
1355 @ CHECK: mvneq  r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
1356 @ CHECK: mvnne  r1, #12                 @ encoding: [0x6f,0xf0,0x0c,0x01]
1357
1358
1359 @------------------------------------------------------------------------------
1360 @ MVN(register)
1361 @------------------------------------------------------------------------------
1362         mvn r2, r3
1363         mvns r2, r3
1364         mvn r5, r6, lsl #19
1365         mvn r5, r6, lsr #9
1366         mvn.w r5, r6, asr #4
1367         mvn r5, r6, ror #6
1368         mvn r5, r6, rrx
1369         it eq
1370         mvneq r2, r3
1371
1372 @ CHECK: mvn.w  r2, r3                  @ encoding: [0x6f,0xea,0x03,0x02]
1373 @ CHECK: mvns   r2, r3                  @ encoding: [0xda,0x43]
1374 @ CHECK: mvn.w  r5, r6, lsl #19         @ encoding: [0x6f,0xea,0xc6,0x45]
1375 @ CHECK: mvn.w  r5, r6, lsr #9          @ encoding: [0x6f,0xea,0x56,0x25]
1376 @ CHECK: mvn.w  r5, r6, asr #4          @ encoding: [0x6f,0xea,0x26,0x15]
1377 @ CHECK: mvn.w  r5, r6, ror #6          @ encoding: [0x6f,0xea,0xb6,0x15]
1378 @ CHECK: mvn.w  r5, r6, rrx             @ encoding: [0x6f,0xea,0x36,0x05]
1379 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1380 @ CHECK: mvneq  r2, r3                  @ encoding: [0xda,0x43]
1381
1382 @------------------------------------------------------------------------------
1383 @ NEG
1384 @------------------------------------------------------------------------------
1385         neg r5, r2
1386         neg r5, r8
1387
1388 @ CHECK: rsb.w  r5, r2, #0              @ encoding: [0xc2,0xf1,0x00,0x05]
1389 @ CHECK: rsb.w  r5, r8, #0              @ encoding: [0xc8,0xf1,0x00,0x05]
1390
1391
1392 @------------------------------------------------------------------------------
1393 @ NOP
1394 @------------------------------------------------------------------------------
1395         nop.w
1396
1397 @ CHECK: nop.w                          @ encoding: [0xaf,0xf3,0x00,0x80]
1398
1399
1400 @------------------------------------------------------------------------------
1401 @ ORN
1402 @------------------------------------------------------------------------------
1403         orn r4, r5, #0xf000
1404         orn r4, r5, r6
1405         orns r4, r5, r6
1406         orn r4, r5, r6, lsl #5
1407         orns r4, r5, r6, lsr #5
1408         orn r4, r5, r6, lsr #5
1409         orns r4, r5, r6, asr #5
1410         orn r4, r5, r6, ror #5
1411
1412 @ CHECK: orn    r4, r5, #61440          @ encoding: [0x65,0xf4,0x70,0x44]
1413 @ CHECK: orn    r4, r5, r6              @ encoding: [0x65,0xea,0x06,0x04]
1414 @ CHECK: orns   r4, r5, r6              @ encoding: [0x75,0xea,0x06,0x04]
1415 @ CHECK: orn    r4, r5, r6, lsl #5      @ encoding: [0x65,0xea,0x46,0x14]
1416 @ CHECK: orns   r4, r5, r6, lsr #5      @ encoding: [0x75,0xea,0x56,0x14]
1417 @ CHECK: orn    r4, r5, r6, lsr #5      @ encoding: [0x65,0xea,0x56,0x14]
1418 @ CHECK: orns   r4, r5, r6, asr #5      @ encoding: [0x75,0xea,0x66,0x14]
1419 @ CHECK: orn    r4, r5, r6, ror #5      @ encoding: [0x65,0xea,0x76,0x14]
1420
1421
1422 @------------------------------------------------------------------------------
1423 @ ORR
1424 @------------------------------------------------------------------------------
1425         orr r4, r5, #0xf000
1426         orr r4, r5, r6
1427         orr r4, r5, r6, lsl #5
1428         orrs r4, r5, r6, lsr #5
1429         orr r4, r5, r6, lsr #5
1430         orrs r4, r5, r6, asr #5
1431         orr r4, r5, r6, ror #5
1432
1433 @ CHECK: orr    r4, r5, #61440          @ encoding: [0x45,0xf4,0x70,0x44]
1434 @ CHECK: orr.w  r4, r5, r6              @ encoding: [0x45,0xea,0x06,0x04]
1435 @ CHECK: orr.w  r4, r5, r6, lsl #5      @ encoding: [0x45,0xea,0x46,0x14]
1436 @ CHECK: orrs.w r4, r5, r6, lsr #5      @ encoding: [0x55,0xea,0x56,0x14]
1437 @ CHECK: orr.w  r4, r5, r6, lsr #5      @ encoding: [0x45,0xea,0x56,0x14]
1438 @ CHECK: orrs.w r4, r5, r6, asr #5      @ encoding: [0x55,0xea,0x66,0x14]
1439 @ CHECK: orr.w  r4, r5, r6, ror #5      @ encoding: [0x45,0xea,0x76,0x14]
1440
1441
1442 @------------------------------------------------------------------------------
1443 @ PKH
1444 @------------------------------------------------------------------------------
1445         pkhbt r2, r2, r3
1446         pkhbt r2, r2, r3, lsl #31
1447         pkhbt r2, r2, r3, lsl #0
1448         pkhbt r2, r2, r3, lsl #15
1449
1450         pkhtb r2, r2, r3
1451         pkhtb r2, r2, r3, asr #31
1452         pkhtb r2, r2, r3, asr #15
1453
1454 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1455 @ CHECK: pkhbt  r2, r2, r3, lsl #31     @ encoding: [0xc2,0xea,0xc3,0x72]
1456 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1457 @ CHECK: pkhbt  r2, r2, r3, lsl #15     @ encoding: [0xc2,0xea,0xc3,0x32]
1458
1459 @ CHECK: pkhbt  r2, r2, r3              @ encoding: [0xc2,0xea,0x03,0x02]
1460 @ CHECK: pkhtb  r2, r2, r3, asr #31     @ encoding: [0xc2,0xea,0xe3,0x72]
1461 @ CHECK: pkhtb  r2, r2, r3, asr #15     @ encoding: [0xc2,0xea,0xe3,0x32]
1462
1463
1464 @------------------------------------------------------------------------------
1465 @ PLD(immediate)
1466 @------------------------------------------------------------------------------
1467         pld [r5, #-4]
1468         pld [r6, #32]
1469         pld [r6, #33]
1470         pld [r6, #257]
1471         pld [r7, #257]
1472         pld [r1, #0]
1473         pld [r1, #-0]
1474
1475 @ CHECK: pld    [r5, #-4]               @ encoding: [0x15,0xf8,0x04,0xfc]
1476 @ CHECK: pld    [r6, #32]               @ encoding: [0x96,0xf8,0x20,0xf0]
1477 @ CHECK: pld    [r6, #33]               @ encoding: [0x96,0xf8,0x21,0xf0]
1478 @ CHECK: pld    [r6, #257]              @ encoding: [0x96,0xf8,0x01,0xf1]
1479 @ CHECK: pld    [r7, #257]              @ encoding: [0x97,0xf8,0x01,0xf1]
1480 @ CHECK: pld    [r1]                    @ encoding: [0x91,0xf8,0x00,0xf0]
1481 @ CHECK: pld    [r1, #-0]               @ encoding: [0x11,0xf8,0x00,0xfc]
1482
1483
1484 @------------------------------------------------------------------------------
1485 @ PLD(literal)
1486 @------------------------------------------------------------------------------
1487 @        pld  _foo
1488
1489 @ FIXME: pld    _foo                    @ encoding: [0x9f'A',0xf8'A',A,0xf0'A']
1490             @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
1491
1492
1493 @------------------------------------------------------------------------------
1494 @ PLD(register)
1495 @------------------------------------------------------------------------------
1496         pld [r8, r1]
1497         pld [r5, r2]
1498         pld [r0, r2, lsl #3]
1499         pld [r8, r2, lsl #2]
1500         pld [sp, r2, lsl #1]
1501         pld [sp, r2, lsl #0]
1502
1503 @ CHECK: pld    [r8, r1]                @ encoding: [0x18,0xf8,0x01,0xf0]
1504 @ CHECK: pld    [r5, r2]                @ encoding: [0x15,0xf8,0x02,0xf0]
1505 @ CHECK: pld    [r0, r2, lsl #3]        @ encoding: [0x10,0xf8,0x32,0xf0]
1506 @ CHECK: pld    [r8, r2, lsl #2]        @ encoding: [0x18,0xf8,0x22,0xf0]
1507 @ CHECK: pld    [sp, r2, lsl #1]        @ encoding: [0x1d,0xf8,0x12,0xf0]
1508 @ CHECK: pld    [sp, r2]                @ encoding: [0x1d,0xf8,0x02,0xf0]
1509
1510 @------------------------------------------------------------------------------
1511 @ PLI(immediate)
1512 @------------------------------------------------------------------------------
1513         pli [r5, #-4]
1514         pli [r6, #32]
1515         pli [r6, #33]
1516         pli [r6, #257]
1517         pli [r7, #257]
1518
1519 @ CHECK: pli    [r5, #-4]               @ encoding: [0x15,0xf9,0x04,0xfc]
1520 @ CHECK: pli    [r6, #32]               @ encoding: [0x96,0xf9,0x20,0xf0]
1521 @ CHECK: pli    [r6, #33]               @ encoding: [0x96,0xf9,0x21,0xf0]
1522 @ CHECK: pli    [r6, #257]              @ encoding: [0x96,0xf9,0x01,0xf1]
1523 @ CHECK: pli    [r7, #257]              @ encoding: [0x97,0xf9,0x01,0xf1]
1524
1525
1526 @------------------------------------------------------------------------------
1527 @ PLI(literal)
1528 @------------------------------------------------------------------------------
1529 @        pli  _foo
1530
1531
1532 @ FIXME: pli    _foo                    @ encoding: [0x9f'A',0xf9'A',A,0xf0'A']
1533            @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
1534
1535
1536 @------------------------------------------------------------------------------
1537 @ PLI(register)
1538 @------------------------------------------------------------------------------
1539         pli [r8, r1]
1540         pli [r5, r2]
1541         pli [r0, r2, lsl #3]
1542         pli [r8, r2, lsl #2]
1543         pli [sp, r2, lsl #1]
1544         pli [sp, r2, lsl #0]
1545
1546 @ CHECK: pli    [r8, r1]                @ encoding: [0x18,0xf9,0x01,0xf0]
1547 @ CHECK: pli    [r5, r2]                @ encoding: [0x15,0xf9,0x02,0xf0]
1548 @ CHECK: pli    [r0, r2, lsl #3]        @ encoding: [0x10,0xf9,0x32,0xf0]
1549 @ CHECK: pli    [r8, r2, lsl #2]        @ encoding: [0x18,0xf9,0x22,0xf0]
1550 @ CHECK: pli    [sp, r2, lsl #1]        @ encoding: [0x1d,0xf9,0x12,0xf0]
1551 @ CHECK: pli    [sp, r2]                @ encoding: [0x1d,0xf9,0x02,0xf0]
1552
1553 @------------------------------------------------------------------------------
1554 @ POP (alias)
1555 @------------------------------------------------------------------------------
1556         pop {r2, r9}
1557
1558 @ CHECK: pop.w  {r2, r9}                @ encoding: [0xbd,0xe8,0x04,0x02]
1559
1560
1561 @------------------------------------------------------------------------------
1562 @ PUSH (alias)
1563 @------------------------------------------------------------------------------
1564         push {r2, r9}
1565
1566 @ CHECK: push.w {r2, r9}                @ encoding: [0x2d,0xe9,0x04,0x02]
1567
1568
1569 @------------------------------------------------------------------------------
1570 @ QADD/QADD16/QADD8
1571 @------------------------------------------------------------------------------
1572         qadd r1, r2, r3
1573         qadd16 r1, r2, r3
1574         qadd8 r1, r2, r3
1575         itte gt
1576         qaddgt r1, r2, r3
1577         qadd16gt r1, r2, r3
1578         qadd8le r1, r2, r3
1579
1580 @ CHECK: qadd   r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1581 @ CHECK: qadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x13,0xf1]
1582 @ CHECK: qadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x13,0xf1]
1583 @ CHECK: itte   gt                      @ encoding: [0xc6,0xbf]
1584 @ CHECK: qaddgt r1, r2, r3              @ encoding: [0x83,0xfa,0x82,0xf1]
1585 @ CHECK: qadd16gt r1, r2, r3            @ encoding: [0x92,0xfa,0x13,0xf1]
1586 @ CHECK: qadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x13,0xf1]
1587
1588
1589 @------------------------------------------------------------------------------
1590 @ QDADD/QDSUB
1591 @------------------------------------------------------------------------------
1592         qdadd r6, r7, r8
1593         qdsub r6, r7, r8
1594         itt hi
1595         qdaddhi r6, r7, r8
1596         qdsubhi r6, r7, r8
1597
1598 @ CHECK: qdadd  r6, r7, r8              @ encoding: [0x88,0xfa,0x97,0xf6]
1599 @ CHECK: qdsub  r6, r7, r8              @ encoding: [0x88,0xfa,0xb7,0xf6]
1600 @ CHECK: itt    hi                      @ encoding: [0x84,0xbf]
1601 @ CHECK: qdaddhi r6, r7, r8             @ encoding: [0x88,0xfa,0x97,0xf6]
1602 @ CHECK: qdsubhi r6, r7, r8             @ encoding: [0x88,0xfa,0xb7,0xf6]
1603
1604
1605 @------------------------------------------------------------------------------
1606 @ QSAX
1607 @------------------------------------------------------------------------------
1608         qsax r9, r12, r0
1609         it eq
1610         qsaxeq r9, r12, r0
1611
1612 @ CHECK: qsax   r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1613 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
1614 @ CHECK: qsaxeq r9, r12, r0             @ encoding: [0xec,0xfa,0x10,0xf9]
1615
1616
1617 @------------------------------------------------------------------------------
1618 @ QSUB/QSUB16/QSUB8
1619 @------------------------------------------------------------------------------
1620         qsub r1, r2, r3
1621         qsub16 r1, r2, r3
1622         qsub8 r1, r2, r3
1623         itet le
1624         qsuble r1, r2, r3
1625         qsub16gt r1, r2, r3
1626         qsub8le r1, r2, r3
1627
1628 @ CHECK: qsub   r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1629 @ CHECK: qsub16 r1, r2, r3              @ encoding: [0xd2,0xfa,0x13,0xf1]
1630 @ CHECK: qsub8  r1, r2, r3              @ encoding: [0xc2,0xfa,0x13,0xf1]
1631 @ CHECK: itet   le                      @ encoding: [0xd6,0xbf]
1632 @ CHECK: qsuble r1, r2, r3              @ encoding: [0x83,0xfa,0xa2,0xf1]
1633 @ CHECK: qsub16gt       r1, r2, r3      @ encoding: [0xd2,0xfa,0x13,0xf1]
1634 @ CHECK: qsub8le r1, r2, r3             @ encoding: [0xc2,0xfa,0x13,0xf1]
1635
1636
1637 @------------------------------------------------------------------------------
1638 @ RBIT
1639 @------------------------------------------------------------------------------
1640         rbit r1, r2
1641         it ne
1642         rbitne r1, r2
1643
1644 @ CHECK: rbit   r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1645 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1646 @ CHECK: rbitne r1, r2                  @ encoding: [0x92,0xfa,0xa2,0xf1]
1647
1648
1649 @------------------------------------------------------------------------------
1650 @ REV
1651 @------------------------------------------------------------------------------
1652         rev.w r1, r2
1653         rev r2, r8
1654         itt ne
1655         revne r1, r2
1656         revne r1, r8
1657
1658 @ CHECK: rev.w  r1, r2                  @ encoding: [0x92,0xfa,0x82,0xf1]
1659 @ CHECK: rev.w  r2, r8                  @ encoding: [0x98,0xfa,0x88,0xf2]
1660 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1661 @ CHECK: revne  r1, r2                  @ encoding: [0x11,0xba]
1662 @ CHECK: revne.w r1, r8                 @ encoding: [0x98,0xfa,0x88,0xf1]
1663
1664
1665 @------------------------------------------------------------------------------
1666 @ REV16
1667 @------------------------------------------------------------------------------
1668         rev16.w r1, r2
1669         rev16 r2, r8
1670         itt ne
1671         rev16ne r1, r2
1672         rev16ne r1, r8
1673
1674 @ CHECK: rev16.w r1, r2                 @ encoding: [0x92,0xfa,0x92,0xf1]
1675 @ CHECK: rev16.w r2, r8                 @ encoding: [0x98,0xfa,0x98,0xf2]
1676 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1677 @ CHECK: rev16ne r1, r2                 @ encoding: [0x51,0xba]
1678 @ CHECK: rev16ne.w      r1, r8          @ encoding: [0x98,0xfa,0x98,0xf1]
1679
1680
1681 @------------------------------------------------------------------------------
1682 @ REVSH
1683 @------------------------------------------------------------------------------
1684         revsh.w r1, r2
1685         revsh r2, r8
1686         itt ne
1687         revshne r1, r2
1688         revshne r1, r8
1689
1690 @ CHECK: revsh.w r1, r2                 @ encoding: [0x92,0xfa,0xb2,0xf1]
1691 @ CHECK: revsh.w r2, r8                 @ encoding: [0x98,0xfa,0xb8,0xf2]
1692 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
1693 @ CHECK: revshne r1, r2                 @ encoding: [0xd1,0xba]
1694 @ CHECK: revshne.w      r1, r8          @ encoding: [0x98,0xfa,0xb8,0xf1]
1695
1696
1697 @------------------------------------------------------------------------------
1698 @ ROR (immediate)
1699 @------------------------------------------------------------------------------
1700         ror r2, r3, #12
1701         rors r8, r3, #31
1702         rors.w r2, r3, #1
1703         ror r2, r3, #4
1704         rors r2, r12, #15
1705
1706         ror r3, #19
1707         rors r8, #2
1708         rors.w r7, #5
1709         ror.w r12, #21
1710
1711 @ CHECK: ror.w  r2, r3, #12             @ encoding: [0x4f,0xea,0x33,0x32]
1712 @ CHECK: rors.w r8, r3, #31             @ encoding: [0x5f,0xea,0xf3,0x78]
1713 @ CHECK: rors.w r2, r3, #1              @ encoding: [0x5f,0xea,0x73,0x02]
1714 @ CHECK: ror.w  r2, r3, #4              @ encoding: [0x4f,0xea,0x33,0x12]
1715 @ CHECK: rors.w r2, r12, #15            @ encoding: [0x5f,0xea,0xfc,0x32]
1716
1717 @ CHECK: ror.w  r3, r3, #19             @ encoding: [0x4f,0xea,0xf3,0x43]
1718 @ CHECK: rors.w r8, r8, #2              @ encoding: [0x5f,0xea,0xb8,0x08]
1719 @ CHECK: rors.w r7, r7, #5              @ encoding: [0x5f,0xea,0x77,0x17]
1720 @ CHECK: ror.w  r12, r12, #21           @ encoding: [0x4f,0xea,0x7c,0x5c]
1721
1722
1723 @------------------------------------------------------------------------------
1724 @ ROR (register)
1725 @------------------------------------------------------------------------------
1726         ror r3, r4, r2
1727         ror.w r1, r2
1728         rors r3, r4, r8
1729
1730 @ CHECK: ror.w  r3, r4, r2              @ encoding: [0x64,0xfa,0x02,0xf3]
1731 @ CHECK: ror.w  r1, r1, r2              @ encoding: [0x61,0xfa,0x02,0xf1]
1732 @ CHECK: rors.w r3, r4, r8              @ encoding: [0x74,0xfa,0x08,0xf3]
1733
1734
1735 @------------------------------------------------------------------------------
1736 @ RRX
1737 @------------------------------------------------------------------------------
1738         rrx r1, r2
1739         rrxs r1, r2
1740         ite lt
1741         rrxlt r9, r12
1742         rrxsge r8, r3
1743
1744 @ CHECK: rrx    r1, r2                  @ encoding: [0x4f,0xea,0x32,0x01]
1745 @ CHECK: rrxs   r1, r2                  @ encoding: [0x5f,0xea,0x32,0x01]
1746 @ CHECK: ite    lt                      @ encoding: [0xb4,0xbf]
1747 @ CHECK: rrxlt  r9, r12                 @ encoding: [0x4f,0xea,0x3c,0x09]
1748 @ CHECK: rrxsge r8, r3                  @ encoding: [0x5f,0xea,0x33,0x08]
1749
1750 @------------------------------------------------------------------------------
1751 @ RSB (immediate)
1752 @------------------------------------------------------------------------------
1753         rsb r2, r5, #0xff000
1754         rsbs r3, r12, #0xf
1755         rsb r1, #0xff
1756         rsb r1, r1, #0xff
1757         rsb r11, r11, #0
1758         rsb r9, #0
1759         rsbs r3, r1, #0
1760         rsb r3, r1, #0
1761
1762 @ CHECK: rsb.w  r2, r5, #1044480        @ encoding: [0xc5,0xf5,0x7f,0x22]
1763 @ CHECK: rsbs.w r3, r12, #15            @ encoding: [0xdc,0xf1,0x0f,0x03]
1764 @ CHECK: rsb.w  r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1765 @ CHECK: rsb.w  r1, r1, #255            @ encoding: [0xc1,0xf1,0xff,0x01]
1766 @ CHECK: rsb.w  r11, r11, #0            @ encoding: [0xcb,0xf1,0x00,0x0b]
1767 @ CHECK: rsb.w  r9, r9, #0              @ encoding: [0xc9,0xf1,0x00,0x09]
1768 @ CHECK: rsbs   r3, r1, #0              @ encoding: [0x4b,0x42]
1769 @ CHECK: rsb.w  r3, r1, #0              @ encoding: [0xc1,0xf1,0x00,0x03]
1770
1771
1772 @------------------------------------------------------------------------------
1773 @ RSB (register)
1774 @------------------------------------------------------------------------------
1775         rsb r4, r8
1776         rsb r4, r9, r8
1777         rsb r1, r4, r8, asr #3
1778         rsbs r2, r1, r7, lsl #1
1779
1780 @ CHECK: rsb    r4, r4, r8              @ encoding: [0xc4,0xeb,0x08,0x04]
1781 @ CHECK: rsb    r4, r9, r8              @ encoding: [0xc9,0xeb,0x08,0x04]
1782 @ CHECK: rsb    r1, r4, r8, asr #3      @ encoding: [0xc4,0xeb,0xe8,0x01]
1783 @ CHECK: rsbs   r2, r1, r7, lsl #1      @ encoding: [0xd1,0xeb,0x47,0x02]
1784
1785
1786 @------------------------------------------------------------------------------
1787 @ SADD16
1788 @------------------------------------------------------------------------------
1789         sadd16 r3, r4, r8
1790         it ne
1791         sadd16ne r3, r4, r8
1792
1793 @ CHECK: sadd16 r3, r4, r8              @ encoding: [0x94,0xfa,0x08,0xf3]
1794 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1795 @ CHECK: sadd16ne       r3, r4, r8      @ encoding: [0x94,0xfa,0x08,0xf3]
1796
1797
1798 @------------------------------------------------------------------------------
1799 @ SADD8
1800 @------------------------------------------------------------------------------
1801         sadd8 r3, r4, r8
1802         it ne
1803         sadd8ne r3, r4, r8
1804
1805 @ CHECK: sadd8  r3, r4, r8              @ encoding: [0x84,0xfa,0x08,0xf3]
1806 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1807 @ CHECK: sadd8ne r3, r4, r8             @ encoding: [0x84,0xfa,0x08,0xf3]
1808
1809
1810 @------------------------------------------------------------------------------
1811 @ SASX
1812 @------------------------------------------------------------------------------
1813         saddsubx r9, r2, r7
1814         it ne
1815         saddsubxne r2, r5, r6
1816         sasx r9, r2, r7
1817         it ne
1818         sasxne r2, r5, r6
1819
1820 @ CHECK: sasx   r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
1821 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1822 @ CHECK: sasxne r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
1823 @ CHECK: sasx   r9, r2, r7              @ encoding: [0xa2,0xfa,0x07,0xf9]
1824 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
1825 @ CHECK: sasxne r2, r5, r6              @ encoding: [0xa5,0xfa,0x06,0xf2]
1826
1827
1828 @------------------------------------------------------------------------------
1829 @ SBC (immediate)
1830 @------------------------------------------------------------------------------
1831         sbc r0, r1, #4
1832         sbcs r0, r1, #0
1833         sbc r1, r2, #255
1834         sbc r3, r7, #0x00550055
1835         sbc r8, r12, #0xaa00aa00
1836         sbc r9, r7, #0xa5a5a5a5
1837         sbc r5, r3, #0x87000000
1838         sbc r4, r2, #0x7f800000
1839         sbc r4, r2, #0x00000680
1840
1841 @ CHECK: sbc    r0, r1, #4              @ encoding: [0x61,0xf1,0x04,0x00]
1842 @ CHECK: sbcs   r0, r1, #0              @ encoding: [0x71,0xf1,0x00,0x00]
1843 @ CHECK: sbc    r1, r2, #255            @ encoding: [0x62,0xf1,0xff,0x01]
1844 @ CHECK: sbc    r3, r7, #5570645        @ encoding: [0x67,0xf1,0x55,0x13]
1845 @ CHECK: sbc    r8, r12, #2852170240    @ encoding: [0x6c,0xf1,0xaa,0x28]
1846 @ CHECK: sbc    r9, r7, #2779096485     @ encoding: [0x67,0xf1,0xa5,0x39]
1847 @ CHECK: sbc    r5, r3, #2264924160     @ encoding: [0x63,0xf1,0x07,0x45]
1848 @ CHECK: sbc    r4, r2, #2139095040     @ encoding: [0x62,0xf1,0xff,0x44]
1849 @ CHECK: sbc    r4, r2, #1664           @ encoding: [0x62,0xf5,0xd0,0x64]
1850
1851
1852 @------------------------------------------------------------------------------
1853 @ SBC (register)
1854 @------------------------------------------------------------------------------
1855         sbc r4, r5, r6
1856         sbcs r4, r5, r6
1857         sbc.w r9, r1, r3
1858         sbcs.w r9, r1, r3
1859         sbc     r0, r1, r3, ror #4
1860         sbcs    r0, r1, r3, lsl #7
1861         sbc.w   r0, r1, r3, lsr #31
1862         sbcs.w  r0, r1, r3, asr #32
1863
1864 @ CHECK: sbc.w  r4, r5, r6              @ encoding: [0x65,0xeb,0x06,0x04]
1865 @ CHECK: sbcs.w r4, r5, r6              @ encoding: [0x75,0xeb,0x06,0x04]
1866 @ CHECK: sbc.w  r9, r1, r3              @ encoding: [0x61,0xeb,0x03,0x09]
1867 @ CHECK: sbcs.w r9, r1, r3              @ encoding: [0x71,0xeb,0x03,0x09]
1868 @ CHECK: sbc.w  r0, r1, r3, ror #4      @ encoding: [0x61,0xeb,0x33,0x10]
1869 @ CHECK: sbcs.w r0, r1, r3, lsl #7      @ encoding: [0x71,0xeb,0xc3,0x10]
1870 @ CHECK: sbc.w  r0, r1, r3, lsr #31     @ encoding: [0x61,0xeb,0xd3,0x70]
1871 @ CHECK: sbcs.w r0, r1, r3, asr #32     @ encoding: [0x71,0xeb,0x23,0x00]
1872
1873
1874 @------------------------------------------------------------------------------
1875 @ SBFX
1876 @------------------------------------------------------------------------------
1877         sbfx r4, r5, #16, #1
1878         it gt
1879         sbfxgt r4, r5, #16, #16
1880
1881 @ CHECK: sbfx   r4, r5, #16, #1         @ encoding: [0x45,0xf3,0x00,0x44]
1882 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1883 @ CHECK: sbfxgt r4, r5, #16, #16        @ encoding: [0x45,0xf3,0x0f,0x44]
1884
1885
1886 @------------------------------------------------------------------------------
1887 @ SEL
1888 @------------------------------------------------------------------------------
1889         sel r5, r9, r2
1890         it le
1891         selle r5, r9, r2
1892
1893 @ CHECK: sel    r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
1894 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
1895 @ CHECK: selle  r5, r9, r2              @ encoding: [0xa9,0xfa,0x82,0xf5]
1896
1897
1898 @------------------------------------------------------------------------------
1899 @ SEV
1900 @------------------------------------------------------------------------------
1901         sev.w
1902         it eq
1903         seveq.w
1904
1905 @ CHECK: sev.w                           @ encoding: [0xaf,0xf3,0x04,0x80]
1906 @ CHECK: it     eq                       @ encoding: [0x08,0xbf]
1907 @ CHECK: seveq.w                         @ encoding: [0xaf,0xf3,0x04,0x80]
1908
1909
1910 @------------------------------------------------------------------------------
1911 @ SADD16/SADD8
1912 @------------------------------------------------------------------------------
1913         sadd16 r1, r2, r3
1914         sadd8 r1, r2, r3
1915         ite gt
1916         sadd16gt r1, r2, r3
1917         sadd8le r1, r2, r3
1918
1919 @ CHECK: sadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x03,0xf1]
1920 @ CHECK: sadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x03,0xf1]
1921 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
1922 @ CHECK: sadd16gt       r1, r2, r3      @ encoding: [0x92,0xfa,0x03,0xf1]
1923 @ CHECK: sadd8le r1, r2, r3             @ encoding: [0x82,0xfa,0x03,0xf1]
1924
1925
1926 @------------------------------------------------------------------------------
1927 @ SHASX
1928 @------------------------------------------------------------------------------
1929         shasx r4, r8, r2
1930         it gt
1931         shasxgt r4, r8, r2
1932         shaddsubx r4, r8, r2
1933         it gt
1934         shaddsubxgt r4, r8, r2
1935
1936 @ CHECK: shasx  r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
1937 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1938 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
1939 @ CHECK: shasx  r4, r8, r2              @ encoding: [0xa8,0xfa,0x22,0xf4]
1940 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1941 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0xa8,0xfa,0x22,0xf4]
1942
1943
1944 @------------------------------------------------------------------------------
1945 @ SHASX
1946 @------------------------------------------------------------------------------
1947         shsax r4, r8, r2
1948         it gt
1949         shsaxgt r4, r8, r2
1950         shsubaddx r4, r8, r2
1951         it gt
1952         shsubaddxgt r4, r8, r2
1953
1954 @ CHECK: shsax  r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
1955 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1956 @ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
1957 @ CHECK: shsax  r4, r8, r2              @ encoding: [0xe8,0xfa,0x22,0xf4]
1958 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
1959 @ CHECK: shsaxgt r4, r8, r2             @ encoding: [0xe8,0xfa,0x22,0xf4]
1960
1961
1962 @------------------------------------------------------------------------------
1963 @ SHSUB16/SHSUB8
1964 @------------------------------------------------------------------------------
1965         shsub16 r4, r8, r2
1966         shsub8 r4, r8, r2
1967         itt gt
1968         shsub16gt r4, r8, r2
1969         shsub8gt r4, r8, r2
1970
1971 @ CHECK: shsub16 r4, r8, r2             @ encoding: [0xd8,0xfa,0x22,0xf4]
1972 @ CHECK: shsub8 r4, r8, r2              @ encoding: [0xc8,0xfa,0x22,0xf4]
1973 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
1974 @ CHECK: shsub16gt      r4, r8, r2      @ encoding: [0xd8,0xfa,0x22,0xf4]
1975 @ CHECK: shsub8gt       r4, r8, r2      @ encoding: [0xc8,0xfa,0x22,0xf4]
1976
1977
1978 @------------------------------------------------------------------------------
1979 @ SMLABB/SMLABT/SMLATB/SMLATT
1980 @------------------------------------------------------------------------------
1981         smlabb r3, r1, r9, r0
1982         smlabt r5, r6, r4, r1
1983         smlatb r4, r2, r3, r2
1984         smlatt r8, r3, r8, r4
1985         itete gt
1986         smlabbgt r3, r1, r9, r0
1987         smlabtle r5, r6, r4, r1
1988         smlatbgt r4, r2, r3, r2
1989         smlattle r8, r3, r8, r4
1990
1991 @ CHECK: smlabb r3, r1, r9, r0          @ encoding: [0x11,0xfb,0x09,0x03]
1992 @ CHECK: smlabt r5, r6, r4, r1          @ encoding: [0x16,0xfb,0x14,0x15]
1993 @ CHECK: smlatb r4, r2, r3, r2          @ encoding: [0x12,0xfb,0x23,0x24]
1994 @ CHECK: smlatt r8, r3, r8, r4          @ encoding: [0x13,0xfb,0x38,0x48]
1995 @ CHECK: itete  gt                      @ encoding: [0xcb,0xbf]
1996 @ CHECK: smlabbgt       r3, r1, r9, r0  @ encoding: [0x11,0xfb,0x09,0x03]
1997 @ CHECK: smlabtle       r5, r6, r4, r1  @ encoding: [0x16,0xfb,0x14,0x15]
1998 @ CHECK: smlatbgt       r4, r2, r3, r2  @ encoding: [0x12,0xfb,0x23,0x24]
1999 @ CHECK: smlattle       r8, r3, r8, r4  @ encoding: [0x13,0xfb,0x38,0x48]
2000
2001
2002 @------------------------------------------------------------------------------
2003 @ SMLAD/SMLADX
2004 @------------------------------------------------------------------------------
2005         smlad r2, r3, r5, r8
2006         smladx r2, r3, r5, r8
2007         itt hi
2008         smladhi r2, r3, r5, r8
2009         smladxhi r2, r3, r5, r8
2010
2011 @ CHECK: smlad  r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x05,0x82]
2012 @ CHECK: smladx r2, r3, r5, r8          @ encoding: [0x23,0xfb,0x15,0x82]
2013 @ CHECK: itt    hi                      @ encoding: [0x84,0xbf]
2014 @ CHECK: smladhi r2, r3, r5, r8         @ encoding: [0x23,0xfb,0x05,0x82]
2015 @ CHECK: smladxhi       r2, r3, r5, r8  @ encoding: [0x23,0xfb,0x15,0x82]
2016
2017
2018 @------------------------------------------------------------------------------
2019 @ SMLAL
2020 @------------------------------------------------------------------------------
2021         smlal r2, r3, r5, r8
2022         it eq
2023         smlaleq r2, r3, r5, r8
2024
2025 @ CHECK: smlal  r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0x08,0x23]
2026 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2027 @ CHECK: smlaleq r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0x08,0x23]
2028
2029
2030 @------------------------------------------------------------------------------
2031 @ SMLALBB/SMLALBT/SMLALTB/SMLALTT
2032 @------------------------------------------------------------------------------
2033         smlalbb r3, r1, r9, r0
2034         smlalbt r5, r6, r4, r1
2035         smlaltb r4, r2, r3, r2
2036         smlaltt r8, r3, r8, r4
2037         iteet ge
2038         smlalbbge r3, r1, r9, r0
2039         smlalbtlt r5, r6, r4, r1
2040         smlaltblt r4, r2, r3, r2
2041         smlalttge r8, r3, r8, r4
2042
2043 @ CHECK: smlalbb r3, r1, r9, r0         @ encoding: [0xc9,0xfb,0x80,0x31]
2044 @ CHECK: smlalbt r5, r6, r4, r1         @ encoding: [0xc4,0xfb,0x91,0x56]
2045 @ CHECK: smlaltb r4, r2, r3, r2         @ encoding: [0xc3,0xfb,0xa2,0x42]
2046 @ CHECK: smlaltt r8, r3, r8, r4         @ encoding: [0xc8,0xfb,0xb4,0x83]
2047 @ CHECK: iteet  ge                      @ encoding: [0xad,0xbf]
2048 @ CHECK: smlalbbge      r3, r1, r9, r0  @ encoding: [0xc9,0xfb,0x80,0x31]
2049 @ CHECK: smlalbtlt      r5, r6, r4, r1  @ encoding: [0xc4,0xfb,0x91,0x56]
2050 @ CHECK: smlaltblt      r4, r2, r3, r2  @ encoding: [0xc3,0xfb,0xa2,0x42]
2051 @ CHECK: smlalttge      r8, r3, r8, r4  @ encoding: [0xc8,0xfb,0xb4,0x83]
2052
2053
2054 @------------------------------------------------------------------------------
2055 @ SMLALD/SMLALDX
2056 @------------------------------------------------------------------------------
2057         smlald r2, r3, r5, r8
2058         smlaldx r2, r3, r5, r8
2059         ite eq
2060         smlaldeq r2, r3, r5, r8
2061         smlaldxne r2, r3, r5, r8
2062
2063 @ CHECK: smlald r2, r3, r5, r8          @ encoding: [0xc5,0xfb,0xc8,0x23]
2064 @ CHECK: smlaldx r2, r3, r5, r8         @ encoding: [0xc5,0xfb,0xd8,0x23]
2065 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2066 @ CHECK: smlaldeq       r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xc8,0x23]
2067 @ CHECK: smlaldxne      r2, r3, r5, r8  @ encoding: [0xc5,0xfb,0xd8,0x23]
2068
2069
2070 @------------------------------------------------------------------------------
2071 @ SMLAWB/SMLAWT
2072 @------------------------------------------------------------------------------
2073         smlawb r2, r3, r10, r8
2074         smlawt r8, r3, r5, r9
2075         ite eq
2076         smlawbeq r2, r7, r5, r8
2077         smlawtne r1, r3, r0, r8
2078
2079 @ CHECK: smlawb r2, r3, r10, r8         @ encoding: [0x33,0xfb,0x0a,0x82]
2080 @ CHECK: smlawt r8, r3, r5, r9          @ encoding: [0x33,0xfb,0x15,0x98]
2081 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2082 @ CHECK: smlawbeq       r2, r7, r5, r8  @ encoding: [0x37,0xfb,0x05,0x82]
2083 @ CHECK: smlawtne       r1, r3, r0, r8  @ encoding: [0x33,0xfb,0x10,0x81]
2084
2085
2086 @------------------------------------------------------------------------------
2087 @ SMLSD/SMLSDX
2088 @------------------------------------------------------------------------------
2089         smlsd r2, r3, r5, r8
2090         smlsdx r2, r3, r5, r8
2091         ite le
2092         smlsdle r2, r3, r5, r8
2093         smlsdxgt r2, r3, r5, r8
2094
2095 @ CHECK: smlsd  r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x05,0x82]
2096 @ CHECK: smlsdx r2, r3, r5, r8          @ encoding: [0x43,0xfb,0x15,0x82]
2097 @ CHECK: ite    le                      @ encoding: [0xd4,0xbf]
2098 @ CHECK: smlsdle        r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x05,0x82]
2099 @ CHECK: smlsdxgt       r2, r3, r5, r8  @ encoding: [0x43,0xfb,0x15,0x82]
2100
2101
2102 @------------------------------------------------------------------------------
2103 @ SMLSLD/SMLSLDX
2104 @------------------------------------------------------------------------------
2105         smlsld r2, r9, r5, r1
2106         smlsldx r4, r11, r2, r8
2107         ite ge
2108         smlsldge r8, r2, r5, r6
2109         smlsldxlt r1, r0, r3, r8
2110
2111 @ CHECK: smlsld r2, r9, r5, r1          @ encoding: [0xd5,0xfb,0xc1,0x29]
2112 @ CHECK: smlsldx        r4, r11, r2, r8 @ encoding: [0xd2,0xfb,0xd8,0x4b]
2113 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2114 @ CHECK: smlsldge       r8, r2, r5, r6  @ encoding: [0xd5,0xfb,0xc6,0x82]
2115 @ CHECK: smlsldxlt      r1, r0, r3, r8  @ encoding: [0xd3,0xfb,0xd8,0x10]
2116
2117
2118 @------------------------------------------------------------------------------
2119 @ SMMLA/SMMLAR
2120 @------------------------------------------------------------------------------
2121         smmla r1, r2, r3, r4
2122         smmlar r4, r3, r2, r1
2123         ite lo
2124         smmlalo r1, r2, r3, r4
2125         smmlarcs r4, r3, r2, r1
2126
2127 @ CHECK: smmla  r1, r2, r3, r4          @ encoding: [0x52,0xfb,0x03,0x41]
2128 @ CHECK: smmlar r4, r3, r2, r1          @ encoding: [0x53,0xfb,0x12,0x14]
2129 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2130 @ CHECK: smmlalo        r1, r2, r3, r4  @ encoding: [0x52,0xfb,0x03,0x41]
2131 @ CHECK: smmlarhs       r4, r3, r2, r1  @ encoding: [0x53,0xfb,0x12,0x14]
2132
2133
2134 @------------------------------------------------------------------------------
2135 @ SMMLS/SMMLSR
2136 @------------------------------------------------------------------------------
2137         smmls r1, r2, r3, r4
2138         smmlsr r4, r3, r2, r1
2139         ite lo
2140         smmlslo r1, r2, r3, r4
2141         smmlsrcs r4, r3, r2, r1
2142
2143 @ CHECK: smmls  r1, r2, r3, r4          @ encoding: [0x62,0xfb,0x03,0x41]
2144 @ CHECK: smmlsr r4, r3, r2, r1          @ encoding: [0x63,0xfb,0x12,0x14]
2145 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2146 @ CHECK: smmlslo        r1, r2, r3, r4  @ encoding: [0x62,0xfb,0x03,0x41]
2147 @ CHECK: smmlsrhs       r4, r3, r2, r1  @ encoding: [0x63,0xfb,0x12,0x14]
2148
2149
2150 @------------------------------------------------------------------------------
2151 @ SMMUL/SMMULR
2152 @------------------------------------------------------------------------------
2153         smmul r2, r3, r4
2154         smmulr r3, r2, r1
2155         ite cc
2156         smmulcc r2, r3, r4
2157         smmulrhs r3, r2, r1
2158
2159 @ CHECK: smmul  r2, r3, r4              @ encoding: [0x53,0xfb,0x04,0xf2]
2160 @ CHECK: smmulr r3, r2, r1              @ encoding: [0x52,0xfb,0x11,0xf3]
2161 @ CHECK: ite    lo                      @ encoding: [0x34,0xbf]
2162 @ CHECK: smmullo        r2, r3, r4      @ encoding: [0x53,0xfb,0x04,0xf2]
2163 @ CHECK: smmulrhs       r3, r2, r1      @ encoding: [0x52,0xfb,0x11,0xf3]
2164
2165
2166 @------------------------------------------------------------------------------
2167 @ SMUAD/SMUADX
2168 @------------------------------------------------------------------------------
2169         smuad r2, r3, r4
2170         smuadx r3, r2, r1
2171         ite lt
2172         smuadlt r2, r3, r4
2173         smuadxge r3, r2, r1
2174
2175 @ CHECK: smuad  r2, r3, r4              @ encoding: [0x23,0xfb,0x04,0xf2]
2176 @ CHECK: smuadx r3, r2, r1              @ encoding: [0x22,0xfb,0x11,0xf3]
2177 @ CHECK: ite    lt                      @ encoding: [0xb4,0xbf]
2178 @ CHECK: smuadlt        r2, r3, r4      @ encoding: [0x23,0xfb,0x04,0xf2]
2179 @ CHECK: smuadxge       r3, r2, r1      @ encoding: [0x22,0xfb,0x11,0xf3]
2180
2181
2182 @------------------------------------------------------------------------------
2183 @ SMULBB/SMULBT/SMULTB/SMULTT
2184 @------------------------------------------------------------------------------
2185         smulbb r3, r9, r0
2186         smulbt r5, r4, r1
2187         smultb r4, r2, r2
2188         smultt r8, r3, r4
2189         itete ge
2190         smulbbge r1, r9, r0
2191         smulbtlt r5, r6, r4
2192         smultbge r2, r3, r2
2193         smulttlt r8, r3, r4
2194
2195 @ CHECK: smulbb r3, r9, r0              @ encoding: [0x19,0xfb,0x00,0xf3]
2196 @ CHECK: smulbt r5, r4, r1              @ encoding: [0x14,0xfb,0x11,0xf5]
2197 @ CHECK: smultb r4, r2, r2              @ encoding: [0x12,0xfb,0x22,0xf4]
2198 @ CHECK: smultt r8, r3, r4              @ encoding: [0x13,0xfb,0x34,0xf8]
2199 @ CHECK: itete  ge                      @ encoding: [0xab,0xbf]
2200 @ CHECK: smulbbge       r1, r9, r0      @ encoding: [0x19,0xfb,0x00,0xf1]
2201 @ CHECK: smulbtlt       r5, r6, r4      @ encoding: [0x16,0xfb,0x14,0xf5]
2202 @ CHECK: smultbge       r2, r3, r2      @ encoding: [0x13,0xfb,0x22,0xf2]
2203 @ CHECK: smulttlt       r8, r3, r4      @ encoding: [0x13,0xfb,0x34,0xf8]
2204
2205
2206 @------------------------------------------------------------------------------
2207 @ SMULL
2208 @------------------------------------------------------------------------------
2209         smull r3, r9, r0, r1
2210         it eq
2211         smulleq r8, r3, r4, r5
2212
2213 @ CHECK: smull  r3, r9, r0, r1          @ encoding: [0x80,0xfb,0x01,0x39]
2214 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2215 @ CHECK: smulleq r8, r3, r4, r5         @ encoding: [0x84,0xfb,0x05,0x83]
2216
2217
2218 @------------------------------------------------------------------------------
2219 @ SMULWB/SMULWT
2220 @------------------------------------------------------------------------------
2221         smulwb r3, r9, r0
2222         smulwt r3, r9, r2
2223         ite gt
2224         smulwbgt r3, r9, r0
2225         smulwtle r3, r9, r2
2226
2227 @ CHECK: smulwb r3, r9, r0              @ encoding: [0x39,0xfb,0x00,0xf3]
2228 @ CHECK: smulwt r3, r9, r2              @ encoding: [0x39,0xfb,0x12,0xf3]
2229 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
2230 @ CHECK: smulwbgt       r3, r9, r0      @ encoding: [0x39,0xfb,0x00,0xf3]
2231 @ CHECK: smulwtle       r3, r9, r2      @ encoding: [0x39,0xfb,0x12,0xf3]
2232
2233
2234 @------------------------------------------------------------------------------
2235 @ SMUSD/SMUSDX
2236 @------------------------------------------------------------------------------
2237         smusd r3, r0, r1
2238         smusdx r3, r9, r2
2239         ite eq
2240         smusdeq r8, r3, r2
2241         smusdxne r7, r4, r3
2242
2243 @ CHECK: smusd  r3, r0, r1              @ encoding: [0x40,0xfb,0x01,0xf3]
2244 @ CHECK: smusdx r3, r9, r2              @ encoding: [0x49,0xfb,0x12,0xf3]
2245 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2246 @ CHECK: smusdeq        r8, r3, r2      @ encoding: [0x43,0xfb,0x02,0xf8]
2247 @ CHECK: smusdxne       r7, r4, r3      @ encoding: [0x44,0xfb,0x13,0xf7]
2248
2249
2250 @------------------------------------------------------------------------------
2251 @ SRS
2252 @------------------------------------------------------------------------------
2253         srsdb sp, #1
2254         srsia sp, #0
2255
2256         srsdb sp!, #19
2257         srsia sp!, #2
2258
2259         srsea sp, #10
2260         srsfd sp, #9
2261
2262         srsea sp!, #5
2263         srsfd sp!, #5
2264
2265         srs sp, #5
2266         srs sp!, #5
2267
2268 @ CHECK: srsdb  sp, #1                  @ encoding: [0x0d,0xe8,0x01,0xc0]
2269 @ CHECK: srsia  sp, #0                  @ encoding: [0x8d,0xe9,0x00,0xc0]
2270 @ CHECK: srsdb  sp!, #19                @ encoding: [0x2d,0xe8,0x13,0xc0]
2271 @ CHECK: srsia  sp!, #2                 @ encoding: [0xad,0xe9,0x02,0xc0]
2272 @ CHECK: srsdb  sp, #10                 @ encoding: [0x0d,0xe8,0x0a,0xc0]
2273 @ CHECK: srsia  sp, #9                  @ encoding: [0x8d,0xe9,0x09,0xc0]
2274 @ CHECK: srsdb  sp!, #5                 @ encoding: [0x2d,0xe8,0x05,0xc0]
2275 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2276 @ CHECK: srsia  sp, #5                  @ encoding: [0x8d,0xe9,0x05,0xc0]
2277 @ CHECK: srsia  sp!, #5                 @ encoding: [0xad,0xe9,0x05,0xc0]
2278
2279
2280 @------------------------------------------------------------------------------
2281 @ SSAT
2282 @------------------------------------------------------------------------------
2283         ssat    r8, #1, r10
2284         ssat    r8, #1, r10, lsl #0
2285         ssat    r8, #1, r10, lsl #31
2286         ssat    r8, #1, r10, asr #1
2287
2288 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2289 @ CHECK: ssat   r8, #1, r10             @ encoding: [0x0a,0xf3,0x00,0x08]
2290 @ CHECK: ssat   r8, #1, r10, lsl #31    @ encoding: [0x0a,0xf3,0xc0,0x78]
2291 @ CHECK: ssat   r8, #1, r10, asr #1     @ encoding: [0x2a,0xf3,0x40,0x08]
2292
2293
2294 @------------------------------------------------------------------------------
2295 @ SSAT16
2296 @------------------------------------------------------------------------------
2297         ssat16  r2, #1, r7
2298         ssat16  r3, #16, r5
2299
2300 @ CHECK: ssat16 r2, #1, r7              @ encoding: [0x27,0xf3,0x00,0x02]
2301 @ CHECK: ssat16 r3, #16, r5             @ encoding: [0x25,0xf3,0x0f,0x03]
2302
2303
2304 @------------------------------------------------------------------------------
2305 @ SSAX
2306 @------------------------------------------------------------------------------
2307         ssubaddx r2, r3, r4
2308         it lt
2309         ssubaddxlt r2, r3, r4
2310         ssax r2, r3, r4
2311         it lt
2312         ssaxlt r2, r3, r4
2313
2314 @ CHECK: ssax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2315 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2316 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2317 @ CHECK: ssax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2318 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2319 @ CHECK: ssaxlt r2, r3, r4              @ encoding: [0xe3,0xfa,0x04,0xf2]
2320
2321
2322 @------------------------------------------------------------------------------
2323 @ SSUB16/SSUB8
2324 @------------------------------------------------------------------------------
2325         ssub16 r1, r0, r6
2326         ssub8 r9, r2, r4
2327         ite ne
2328         ssub16ne r5, r3, r2
2329         ssub8eq r5, r1, r2
2330
2331 @ CHECK: ssub16 r1, r0, r6              @ encoding: [0xd0,0xfa,0x06,0xf1]
2332 @ CHECK: ssub8  r9, r2, r4              @ encoding: [0xc2,0xfa,0x04,0xf9]
2333 @ CHECK: ite    ne                      @ encoding: [0x14,0xbf]
2334 @ CHECK: ssub16ne       r5, r3, r2      @ encoding: [0xd3,0xfa,0x02,0xf5]
2335 @ CHECK: ssub8eq        r5, r1, r2      @ encoding: [0xc1,0xfa,0x02,0xf5]
2336
2337
2338 @------------------------------------------------------------------------------
2339 @ STC{L}/STC2{L}
2340 @------------------------------------------------------------------------------
2341         stc2 p0, c8, [r1, #4]
2342         stc2 p1, c7, [r2]
2343         stc2 p2, c6, [r3, #-224]
2344         stc2 p3, c5, [r4, #-120]!
2345         stc2 p4, c4, [r5], #16
2346         stc2 p5, c3, [r6], #-72
2347         stc2l p6, c2, [r7, #4]
2348         stc2l p7, c1, [r8]
2349         stc2l p8, c0, [r9, #-224]
2350         stc2l p9, c1, [r10, #-120]!
2351         stc2l p10, c2, [r11], #16
2352         stc2l p11, c3, [r12], #-72
2353
2354         stc p12, c4, [r0, #4]
2355         stc p13, c5, [r1]
2356         stc p14, c6, [r2, #-224]
2357         stc p15, c7, [r3, #-120]!
2358         stc p5, c8, [r4], #16
2359         stc p4, c9, [r5], #-72
2360         stcl p3, c10, [r6, #4]
2361         stcl p2, c11, [r7]
2362         stcl p1, c12, [r8, #-224]
2363         stcl p0, c13, [r9, #-120]!
2364         stcl p6, c14, [r10], #16
2365         stcl p7, c15, [r11], #-72
2366
2367         stc2 p2, c8, [r1], { 25 }
2368
2369 @ CHECK: stc2   p0, c8, [r1, #4]        @ encoding: [0x81,0xfd,0x01,0x80]
2370 @ CHECK: stc2   p1, c7, [r2]            @ encoding: [0x82,0xfd,0x00,0x71]
2371 @ CHECK: stc2   p2, c6, [r3, #-224]     @ encoding: [0x03,0xfd,0x38,0x62]
2372 @ CHECK: stc2   p3, c5, [r4, #-120]!    @ encoding: [0x24,0xfd,0x1e,0x53]
2373 @ CHECK: stc2   p4, c4, [r5], #16       @ encoding: [0xa5,0xfc,0x04,0x44]
2374 @ CHECK: stc2   p5, c3, [r6], #-72      @ encoding: [0x26,0xfc,0x12,0x35]
2375 @ CHECK: stc2l  p6, c2, [r7, #4]        @ encoding: [0xc7,0xfd,0x01,0x26]
2376 @ CHECK: stc2l  p7, c1, [r8]            @ encoding: [0xc8,0xfd,0x00,0x17]
2377 @ CHECK: stc2l  p8, c0, [r9, #-224]     @ encoding: [0x49,0xfd,0x38,0x08]
2378 @ CHECK: stc2l  p9, c1, [r10, #-120]!   @ encoding: [0x6a,0xfd,0x1e,0x19]
2379 @ CHECK: stc2l  p10, c2, [r11], #16     @ encoding: [0xeb,0xfc,0x04,0x2a]
2380 @ CHECK: stc2l  p11, c3, [r12], #-72    @ encoding: [0x6c,0xfc,0x12,0x3b]
2381
2382 @ CHECK: stc    p12, c4, [r0, #4]       @ encoding: [0x80,0xed,0x01,0x4c]
2383 @ CHECK: stc    p13, c5, [r1]           @ encoding: [0x81,0xed,0x00,0x5d]
2384 @ CHECK: stc    p14, c6, [r2, #-224]    @ encoding: [0x02,0xed,0x38,0x6e]
2385 @ CHECK: stc    p15, c7, [r3, #-120]!   @ encoding: [0x23,0xed,0x1e,0x7f]
2386 @ CHECK: stc    p5, c8, [r4], #16       @ encoding: [0xa4,0xec,0x04,0x85]
2387 @ CHECK: stc    p4, c9, [r5], #-72      @ encoding: [0x25,0xec,0x12,0x94]
2388 @ CHECK: stcl   p3, c10, [r6, #4]       @ encoding: [0xc6,0xed,0x01,0xa3]
2389 @ CHECK: stcl   p2, c11, [r7]           @ encoding: [0xc7,0xed,0x00,0xb2]
2390 @ CHECK: stcl   p1, c12, [r8, #-224]    @ encoding: [0x48,0xed,0x38,0xc1]
2391 @ CHECK: stcl   p0, c13, [r9, #-120]!   @ encoding: [0x69,0xed,0x1e,0xd0]
2392 @ CHECK: stcl   p6, c14, [r10], #16     @ encoding: [0xea,0xec,0x04,0xe6]
2393 @ CHECK: stcl   p7, c15, [r11], #-72    @ encoding: [0x6b,0xec,0x12,0xf7]
2394
2395 @ CHECK: stc2   p2, c8, [r1], {25}      @ encoding: [0x81,0xfc,0x19,0x82]
2396
2397
2398 @------------------------------------------------------------------------------
2399 @ STMIA
2400 @------------------------------------------------------------------------------
2401         stmia.w r4, {r4, r5, r8, r9}
2402         stmia.w r4, {r5, r6}
2403         stmia.w r5!, {r3, r8}
2404         stm.w r4, {r4, r5, r8, r9}
2405         stm.w r4, {r5, r6}
2406         stm.w r5!, {r3, r8}
2407         stm.w r5!, {r1, r2}
2408         stm.w r2, {r1, r2}
2409
2410         stmia r4, {r4, r5, r8, r9}
2411         stmia r4, {r5, r6}
2412         stmia r5!, {r3, r8}
2413         stm r4, {r4, r5, r8, r9}
2414         stm r4, {r5, r6}
2415         stm r5!, {r3, r8}
2416         stmea r5!, {r3, r8}
2417
2418 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2419 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2420 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2421 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2422 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2423 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2424 @ CHECK: stm.w  r5!, {r1, r2}           @ encoding: [0xa5,0xe8,0x06,0x00]
2425 @ CHECK: stm.w  r2, {r1, r2}            @ encoding: [0x82,0xe8,0x06,0x00]
2426
2427 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2428 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2429 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2430 @ CHECK: stm.w  r4, {r4, r5, r8, r9}    @ encoding: [0x84,0xe8,0x30,0x03]
2431 @ CHECK: stm.w  r4, {r5, r6}            @ encoding: [0x84,0xe8,0x60,0x00]
2432 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2433 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2434
2435
2436 @------------------------------------------------------------------------------
2437 @ STMDB
2438 @------------------------------------------------------------------------------
2439         stmdb r4, {r4, r5, r8, r9}
2440         stmdb r4, {r5, r6}
2441         stmdb r5!, {r3, r8}
2442         stmea r5!, {r3, r8}
2443         stmdb.w r5, {r0, r1}
2444
2445 @ CHECK: stmdb  r4, {r4, r5, r8, r9}    @ encoding: [0x04,0xe9,0x30,0x03]
2446 @ CHECK: stmdb  r4, {r5, r6}            @ encoding: [0x04,0xe9,0x60,0x00]
2447 @ CHECK: stmdb  r5!, {r3, r8}           @ encoding: [0x25,0xe9,0x08,0x01]
2448 @ CHECK: stm.w  r5!, {r3, r8}           @ encoding: [0xa5,0xe8,0x08,0x01]
2449 @ CHECK: stmdb  r5, {r0, r1}            @ encoding: [0x05,0xe9,0x03,0x00]
2450
2451
2452 @------------------------------------------------------------------------------
2453 @ STR(immediate)
2454 @------------------------------------------------------------------------------
2455         str r5, [r5, #-4]
2456         str r5, [r6, #32]
2457         str r5, [r6, #33]
2458         str r5, [r6, #257]
2459         str.w pc, [r7, #257]
2460         str r2, [r4, #255]!
2461         str r8, [sp, #4]!
2462         str lr, [sp, #-4]!
2463         str r2, [r4], #255
2464         str r8, [sp], #4
2465         str lr, [sp], #-4
2466
2467 @ CHECK: str    r5, [r5, #-4]           @ encoding: [0x45,0xf8,0x04,0x5c]
2468 @ CHECK: str    r5, [r6, #32]           @ encoding: [0x35,0x62]
2469 @ CHECK: str.w  r5, [r6, #33]           @ encoding: [0xc6,0xf8,0x21,0x50]
2470 @ CHECK: str.w  r5, [r6, #257]          @ encoding: [0xc6,0xf8,0x01,0x51]
2471 @ CHECK: str.w  pc, [r7, #257]          @ encoding: [0xc7,0xf8,0x01,0xf1]
2472 @ CHECK: str    r2, [r4, #255]!         @ encoding: [0x44,0xf8,0xff,0x2f]
2473 @ CHECK: str    r8, [sp, #4]!           @ encoding: [0x4d,0xf8,0x04,0x8f]
2474 @ CHECK: str    lr, [sp, #-4]!          @ encoding: [0x4d,0xf8,0x04,0xed]
2475 @ CHECK: str    r2, [r4], #255          @ encoding: [0x44,0xf8,0xff,0x2b]
2476 @ CHECK: str    r8, [sp], #4            @ encoding: [0x4d,0xf8,0x04,0x8b]
2477 @ CHECK: str    lr, [sp], #-4           @ encoding: [0x4d,0xf8,0x04,0xe9]
2478
2479
2480 @------------------------------------------------------------------------------
2481 @ STR(register)
2482 @------------------------------------------------------------------------------
2483         str r1, [r8, r1]
2484         str.w r4, [r5, r2]
2485         str r6, [r0, r2, lsl #3]
2486         str r8, [r8, r2, lsl #2]
2487         str r7, [sp, r2, lsl #1]
2488         str r7, [sp, r2, lsl #0]
2489
2490 @ CHECK: str.w  r1, [r8, r1]            @ encoding: [0x48,0xf8,0x01,0x10]
2491 @ CHECK: str.w  r4, [r5, r2]            @ encoding: [0x45,0xf8,0x02,0x40]
2492 @ CHECK: str.w  r6, [r0, r2, lsl #3]    @ encoding: [0x40,0xf8,0x32,0x60]
2493 @ CHECK: str.w  r8, [r8, r2, lsl #2]    @ encoding: [0x48,0xf8,0x22,0x80]
2494 @ CHECK: str.w  r7, [sp, r2, lsl #1]    @ encoding: [0x4d,0xf8,0x12,0x70]
2495 @ CHECK: str.w  r7, [sp, r2]            @ encoding: [0x4d,0xf8,0x02,0x70]
2496
2497
2498 @------------------------------------------------------------------------------
2499 @ STRB(immediate)
2500 @------------------------------------------------------------------------------
2501         strb r5, [r5, #-4]
2502         strb r5, [r6, #32]
2503         strb r5, [r6, #33]
2504         strb r5, [r6, #257]
2505         strb.w lr, [r7, #257]
2506         strb r5, [r8, #255]!
2507         strb r2, [r5, #4]!
2508         strb r1, [r4, #-4]!
2509         strb lr, [r3], #255
2510         strb r9, [r2], #4
2511         strb r3, [sp], #-4
2512         strb r4, [r8, #-0]!
2513
2514 @ CHECK: strb   r5, [r5, #-4]           @ encoding: [0x05,0xf8,0x04,0x5c]
2515 @ CHECK: strb.w r5, [r6, #32]           @ encoding: [0x86,0xf8,0x20,0x50]
2516 @ CHECK: strb.w r5, [r6, #33]           @ encoding: [0x86,0xf8,0x21,0x50]
2517 @ CHECK: strb.w r5, [r6, #257]          @ encoding: [0x86,0xf8,0x01,0x51]
2518 @ CHECK: strb.w lr, [r7, #257]          @ encoding: [0x87,0xf8,0x01,0xe1]
2519 @ CHECK: strb   r5, [r8, #255]!         @ encoding: [0x08,0xf8,0xff,0x5f]
2520 @ CHECK: strb   r2, [r5, #4]!           @ encoding: [0x05,0xf8,0x04,0x2f]
2521 @ CHECK: strb   r1, [r4, #-4]!          @ encoding: [0x04,0xf8,0x04,0x1d]
2522 @ CHECK: strb   lr, [r3], #255          @ encoding: [0x03,0xf8,0xff,0xeb]
2523 @ CHECK: strb   r9, [r2], #4            @ encoding: [0x02,0xf8,0x04,0x9b]
2524 @ CHECK: strb   r3, [sp], #-4           @ encoding: [0x0d,0xf8,0x04,0x39]
2525 @ CHECK: strb   r4, [r8, #-0]!          @ encoding: [0x08,0xf8,0x00,0x4d]
2526
2527
2528 @------------------------------------------------------------------------------
2529 @ STRB(register)
2530 @------------------------------------------------------------------------------
2531         strb r1, [r8, r1]
2532         strb.w r4, [r5, r2]
2533         strb r6, [r0, r2, lsl #3]
2534         strb r8, [r8, r2, lsl #2]
2535         strb r7, [sp, r2, lsl #1]
2536         strb r7, [sp, r2, lsl #0]
2537
2538 @ CHECK: strb.w r1, [r8, r1]            @ encoding: [0x08,0xf8,0x01,0x10]
2539 @ CHECK: strb.w r4, [r5, r2]            @ encoding: [0x05,0xf8,0x02,0x40]
2540 @ CHECK: strb.w r6, [r0, r2, lsl #3]    @ encoding: [0x00,0xf8,0x32,0x60]
2541 @ CHECK: strb.w r8, [r8, r2, lsl #2]    @ encoding: [0x08,0xf8,0x22,0x80]
2542 @ CHECK: strb.w r7, [sp, r2, lsl #1]    @ encoding: [0x0d,0xf8,0x12,0x70]
2543 @ CHECK: strb.w r7, [sp, r2]            @ encoding: [0x0d,0xf8,0x02,0x70]
2544
2545
2546 @------------------------------------------------------------------------------
2547 @ STRBT
2548 @------------------------------------------------------------------------------
2549         strbt r1, [r2]
2550         strbt r1, [r8, #0]
2551         strbt r1, [r8, #3]
2552         strbt r1, [r8, #255]
2553
2554 @ CHECK: strbt  r1, [r2]                @ encoding: [0x02,0xf8,0x00,0x1e]
2555 @ CHECK: strbt  r1, [r8]                @ encoding: [0x08,0xf8,0x00,0x1e]
2556 @ CHECK: strbt  r1, [r8, #3]            @ encoding: [0x08,0xf8,0x03,0x1e]
2557 @ CHECK: strbt  r1, [r8, #255]          @ encoding: [0x08,0xf8,0xff,0x1e]
2558
2559
2560 @------------------------------------------------------------------------------
2561 @ STRD
2562 @------------------------------------------------------------------------------
2563         strd r3, r5, [r6, #24]
2564         strd r3, r5, [r6, #24]!
2565         strd r3, r5, [r6], #4
2566         strd r3, r5, [r6], #-8
2567         strd r3, r5, [r6]
2568         strd r8, r1, [r3, #0]
2569
2570 @ CHECK: strd   r3, r5, [r6, #24]       @ encoding: [0xc6,0xe9,0x06,0x35]
2571 @ CHECK: strd   r3, r5, [r6, #24]!      @ encoding: [0xe6,0xe9,0x06,0x35]
2572 @ CHECK: strd   r3, r5, [r6], #4        @ encoding: [0xe6,0xe8,0x01,0x35]
2573 @ CHECK: strd   r3, r5, [r6], #-8       @ encoding: [0x66,0xe8,0x02,0x35]
2574 @ CHECK: strd   r3, r5, [r6]            @ encoding: [0xc6,0xe9,0x00,0x35]
2575 @ CHECK: strd   r8, r1, [r3]            @ encoding: [0xc3,0xe9,0x00,0x81]
2576
2577
2578 @------------------------------------------------------------------------------
2579 @ STREX/STREXB/STREXH/STREXD
2580 @------------------------------------------------------------------------------
2581         strex r1, r8, [r4]
2582         strex r8, r2, [r4, #0]
2583         strex r2, r12, [sp, #128]
2584         strexb r5, r1, [r7]
2585         strexh r9, r7, [r12]
2586         strexd r9, r3, r6, [r4]
2587
2588 @ CHECK: strex  r1, r8, [r4]            @ encoding: [0x44,0xe8,0x00,0x81]
2589 @ CHECK: strex  r8, r2, [r4]            @ encoding: [0x44,0xe8,0x00,0x28]
2590 @ CHECK: strex  r2, r12, [sp, #128]     @ encoding: [0x4d,0xe8,0x20,0xc2]
2591 @ CHECK: strexb r5, r1, [r7]            @ encoding: [0xc7,0xe8,0x45,0x1f]
2592 @ CHECK: strexh r9, r7, [r12]           @ encoding: [0xcc,0xe8,0x59,0x7f]
2593 @ CHECK: strexd r9, r3, r6, [r4]        @ encoding: [0xc4,0xe8,0x79,0x36]
2594
2595
2596 @------------------------------------------------------------------------------
2597 @ STRH(immediate)
2598 @------------------------------------------------------------------------------
2599         strh r5, [r5, #-4]
2600         strh r5, [r6, #32]
2601         strh r5, [r6, #33]
2602         strh r5, [r6, #257]
2603         strh.w lr, [r7, #257]
2604         strh r5, [r8, #255]!
2605         strh r2, [r5, #4]!
2606         strh r1, [r4, #-4]!
2607         strh lr, [r3], #255
2608         strh r9, [r2], #4
2609         strh r3, [sp], #-4
2610
2611 @ CHECK: strh   r5, [r5, #-4]           @ encoding: [0x25,0xf8,0x04,0x5c]
2612 @ CHECK: strh   r5, [r6, #32]           @ encoding: [0x35,0x84]
2613 @ CHECK: strh.w r5, [r6, #33]           @ encoding: [0xa6,0xf8,0x21,0x50]
2614 @ CHECK: strh.w r5, [r6, #257]          @ encoding: [0xa6,0xf8,0x01,0x51]
2615 @ CHECK: strh.w lr, [r7, #257]          @ encoding: [0xa7,0xf8,0x01,0xe1]
2616 @ CHECK: strh   r5, [r8, #255]!         @ encoding: [0x28,0xf8,0xff,0x5f]
2617 @ CHECK: strh   r2, [r5, #4]!           @ encoding: [0x25,0xf8,0x04,0x2f]
2618 @ CHECK: strh   r1, [r4, #-4]!          @ encoding: [0x24,0xf8,0x04,0x1d]
2619 @ CHECK: strh   lr, [r3], #255          @ encoding: [0x23,0xf8,0xff,0xeb]
2620 @ CHECK: strh   r9, [r2], #4            @ encoding: [0x22,0xf8,0x04,0x9b]
2621 @ CHECK: strh   r3, [sp], #-4           @ encoding: [0x2d,0xf8,0x04,0x39]
2622
2623
2624 @------------------------------------------------------------------------------
2625 @ STRH(register)
2626 @------------------------------------------------------------------------------
2627         strh r1, [r8, r1]
2628         strh.w r4, [r5, r2]
2629         strh r6, [r0, r2, lsl #3]
2630         strh r8, [r8, r2, lsl #2]
2631         strh r7, [sp, r2, lsl #1]
2632         strh r7, [sp, r2, lsl #0]
2633
2634 @ CHECK: strh.w r1, [r8, r1]            @ encoding: [0x28,0xf8,0x01,0x10]
2635 @ CHECK: strh.w r4, [r5, r2]            @ encoding: [0x25,0xf8,0x02,0x40]
2636 @ CHECK: strh.w r6, [r0, r2, lsl #3]    @ encoding: [0x20,0xf8,0x32,0x60]
2637 @ CHECK: strh.w r8, [r8, r2, lsl #2]    @ encoding: [0x28,0xf8,0x22,0x80]
2638 @ CHECK: strh.w r7, [sp, r2, lsl #1]    @ encoding: [0x2d,0xf8,0x12,0x70]
2639 @ CHECK: strh.w r7, [sp, r2]            @ encoding: [0x2d,0xf8,0x02,0x70]
2640
2641
2642 @------------------------------------------------------------------------------
2643 @ STRHT
2644 @------------------------------------------------------------------------------
2645         strht r1, [r2]
2646         strht r1, [r8, #0]
2647         strht r1, [r8, #3]
2648         strht r1, [r8, #255]
2649
2650 @ CHECK: strht  r1, [r2]                @ encoding: [0x22,0xf8,0x00,0x1e]
2651 @ CHECK: strht  r1, [r8]                @ encoding: [0x28,0xf8,0x00,0x1e]
2652 @ CHECK: strht  r1, [r8, #3]            @ encoding: [0x28,0xf8,0x03,0x1e]
2653 @ CHECK: strht  r1, [r8, #255]          @ encoding: [0x28,0xf8,0xff,0x1e]
2654
2655
2656 @------------------------------------------------------------------------------
2657 @ STRT
2658 @------------------------------------------------------------------------------
2659         strt r1, [r2]
2660         strt r1, [r8, #0]
2661         strt r1, [r8, #3]
2662         strt r1, [r8, #255]
2663
2664 @ CHECK: strt   r1, [r2]                @ encoding: [0x42,0xf8,0x00,0x1e]
2665 @ CHECK: strt   r1, [r8]                @ encoding: [0x48,0xf8,0x00,0x1e]
2666 @ CHECK: strt   r1, [r8, #3]            @ encoding: [0x48,0xf8,0x03,0x1e]
2667 @ CHECK: strt   r1, [r8, #255]          @ encoding: [0x48,0xf8,0xff,0x1e]
2668
2669
2670 @------------------------------------------------------------------------------
2671 @ SUB (immediate)
2672 @------------------------------------------------------------------------------
2673         itet eq
2674         subeq r1, r2, #4
2675         subwne r5, r3, #1023
2676         subeq r4, r5, #293
2677         sub r2, sp, #1024
2678         sub r2, r8, #0xff00
2679         sub r2, r3, #257
2680         subw r2, r3, #257
2681         sub r12, r6, #0x100
2682         subw r12, r6, #0x100
2683         subs r1, r2, #0x1f0
2684         sub r2, #1
2685         sub r0, r0, #32
2686         subs r2, r2, #56
2687         subs r2, #56
2688
2689 @ CHECK: itet   eq                      @ encoding: [0x0a,0xbf]
2690 @ CHECK: subeq  r1, r2, #4              @ encoding: [0x11,0x1f]
2691 @ CHECK: subwne r5, r3, #1023           @ encoding: [0xa3,0xf2,0xff,0x35]
2692 @ CHECK: subweq r4, r5, #293            @ encoding: [0xa5,0xf2,0x25,0x14]
2693 @ CHECK: sub.w  r2, sp, #1024           @ encoding: [0xad,0xf5,0x80,0x62]
2694 @ CHECK: sub.w  r2, r8, #65280          @ encoding: [0xa8,0xf5,0x7f,0x42]
2695 @ CHECK: subw   r2, r3, #257            @ encoding: [0xa3,0xf2,0x01,0x12]
2696 @ CHECK: subw   r2, r3, #257            @ encoding: [0xa3,0xf2,0x01,0x12]
2697 @ CHECK: sub.w  r12, r6, #256           @ encoding: [0xa6,0xf5,0x80,0x7c]
2698 @ CHECK: subw   r12, r6, #256           @ encoding: [0xa6,0xf2,0x00,0x1c]
2699 @ CHECK: subs.w r1, r2, #496            @ encoding: [0xb2,0xf5,0xf8,0x71]
2700 @ CHECK: sub.w  r2, r2, #1              @ encoding: [0xa2,0xf1,0x01,0x02]
2701 @ CHECK: sub.w  r0, r0, #32             @ encoding: [0xa0,0xf1,0x20,0x00]
2702 @ CHECK: subs   r2, #56                 @ encoding: [0x38,0x3a]
2703 @ CHECK: subs   r2, #56                 @ encoding: [0x38,0x3a]
2704
2705
2706 @------------------------------------------------------------------------------
2707 @ SUB (register)
2708 @------------------------------------------------------------------------------
2709         sub r4, r5, r6
2710         sub r4, r5, r6, lsl #5
2711         sub r4, r5, r6, lsr #5
2712         sub.w r4, r5, r6, lsr #5
2713         sub r4, r5, r6, asr #5
2714         sub r4, r5, r6, ror #5
2715         sub.w r5, r2, r12, rrx
2716         sub r2, sp, ip
2717         sub sp, sp, ip
2718         sub sp, ip
2719         sub.w r2, sp, ip
2720         sub.w sp, sp, ip
2721         sub.w sp, ip
2722
2723 @ CHECK: sub.w  r4, r5, r6              @ encoding: [0xa5,0xeb,0x06,0x04]
2724 @ CHECK: sub.w  r4, r5, r6, lsl #5      @ encoding: [0xa5,0xeb,0x46,0x14]
2725 @ CHECK: sub.w  r4, r5, r6, lsr #5      @ encoding: [0xa5,0xeb,0x56,0x14]
2726 @ CHECK: sub.w  r4, r5, r6, lsr #5      @ encoding: [0xa5,0xeb,0x56,0x14]
2727 @ CHECK: sub.w  r4, r5, r6, asr #5      @ encoding: [0xa5,0xeb,0x66,0x14]
2728 @ CHECK: sub.w  r4, r5, r6, ror #5      @ encoding: [0xa5,0xeb,0x76,0x14]
2729 @ CHECK: sub.w r5, r2, r12, rrx         @ encoding: [0xa2,0xeb,0x3c,0x05]
2730 @ CHECK: sub.w  r2, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x02]
2731 @ CHECK: sub.w  sp, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x0d]
2732 @ CHECK: sub.w  sp, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x0d]
2733 @ CHECK: sub.w  r2, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x02]
2734 @ CHECK: sub.w  sp, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x0d]
2735 @ CHECK: sub.w  sp, sp, r12             @ encoding: [0xad,0xeb,0x0c,0x0d]
2736
2737
2738 @------------------------------------------------------------------------------
2739 @ SVC
2740 @------------------------------------------------------------------------------
2741         svc #0
2742         ite eq
2743         svceq #255
2744         swine #33
2745
2746 @ CHECK: svc    #0                      @ encoding: [0x00,0xdf]
2747 @ CHECK: ite    eq                      @ encoding: [0x0c,0xbf]
2748 @ CHECK: svceq  #255                    @ encoding: [0xff,0xdf]
2749 @ CHECK: svcne  #33                     @ encoding: [0x21,0xdf]
2750
2751
2752 @------------------------------------------------------------------------------
2753 @ SXTAB
2754 @------------------------------------------------------------------------------
2755         sxtab r2, r3, r4
2756         sxtab r4, r5, r6, ror #0
2757         it lt
2758         sxtablt r6, r2, r9, ror #8
2759         sxtab r5, r1, r4, ror #16
2760         sxtab r7, r8, r3, ror #24
2761
2762 @ CHECK: sxtab  r2, r3, r4              @ encoding: [0x43,0xfa,0x84,0xf2]
2763 @ CHECK: sxtab  r4, r5, r6              @ encoding: [0x45,0xfa,0x86,0xf4]
2764 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
2765 @ CHECK: sxtablt r6, r2, r9, ror #8     @ encoding: [0x42,0xfa,0x99,0xf6]
2766 @ CHECK: sxtab  r5, r1, r4, ror #16     @ encoding: [0x41,0xfa,0xa4,0xf5]
2767 @ CHECK: sxtab  r7, r8, r3, ror #24     @ encoding: [0x48,0xfa,0xb3,0xf7]
2768
2769
2770 @------------------------------------------------------------------------------
2771 @ SXTAB16
2772 @------------------------------------------------------------------------------
2773         sxtab16 r6, r2, r7, ror #0
2774         sxtab16 r3, r5, r8, ror #8
2775         sxtab16 r3, r2, r1, ror #16
2776         ite ne
2777         sxtab16ne r0, r1, r4
2778         sxtab16eq r1, r2, r3, ror #24
2779
2780 @ CHECK: sxtab16 r6, r2, r7             @ encoding: [0x22,0xfa,0x87,0xf6]
2781 @ CHECK: sxtab16 r3, r5, r8, ror #8     @ encoding: [0x25,0xfa,0x98,0xf3]
2782 @ CHECK: sxtab16 r3, r2, r1, ror #16    @ encoding: [0x22,0xfa,0xa1,0xf3]
2783 @ CHECK: ite    ne                      @ encoding: [0x14,0xbf]
2784 @ CHECK: sxtab16ne r0, r1, r4           @ encoding: [0x21,0xfa,0x84,0xf0]
2785 @ CHECK: sxtab16eq r1, r2, r3, ror #24  @ encoding: [0x22,0xfa,0xb3,0xf1]
2786
2787
2788 @------------------------------------------------------------------------------
2789 @ SXTAH
2790 @------------------------------------------------------------------------------
2791         sxtah r1, r3, r9
2792         sxtah r3, r8, r3, ror #8
2793         sxtah r9, r3, r3, ror #24
2794         ite hi
2795         sxtahhi r6, r1, r6, ror #0
2796         sxtahls r2, r2, r4, ror #16
2797
2798 @ CHECK: sxtah  r1, r3, r9              @ encoding: [0x03,0xfa,0x89,0xf1]
2799 @ CHECK: sxtah  r3, r8, r3, ror #8      @ encoding: [0x08,0xfa,0x93,0xf3]
2800 @ CHECK: sxtah  r9, r3, r3, ror #24     @ encoding: [0x03,0xfa,0xb3,0xf9]
2801 @ CHECK: ite    hi                      @ encoding: [0x8c,0xbf]
2802 @ CHECK: sxtahhi r6, r1, r6             @ encoding: [0x01,0xfa,0x86,0xf6]
2803 @ CHECK: sxtahls r2, r2, r4, ror #16    @ encoding: [0x02,0xfa,0xa4,0xf2]
2804
2805
2806 @------------------------------------------------------------------------------
2807 @ SXTB
2808 @------------------------------------------------------------------------------
2809         sxtb r5, r6, ror #0
2810         sxtb r6, r9, ror #8
2811         sxtb r8, r3, ror #24
2812         ite ge
2813         sxtbge r2, r4
2814         sxtblt r5, r1, ror #16
2815         sxtb.w  r7, r8
2816
2817 @ CHECK: sxtb   r5, r6                  @ encoding: [0x75,0xb2]
2818 @ CHECK: sxtb.w r6, r9, ror #8          @ encoding: [0x4f,0xfa,0x99,0xf6]
2819 @ CHECK: sxtb.w r8, r3, ror #24         @ encoding: [0x4f,0xfa,0xb3,0xf8]
2820 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2821 @ CHECK: sxtbge r2, r4                  @ encoding: [0x62,0xb2]
2822 @ CHECK: sxtblt.w       r5, r1, ror #16 @ encoding: [0x4f,0xfa,0xa1,0xf5]
2823 @ CHECK: sxtb.w r7, r8                  @ encoding: [0x4f,0xfa,0x88,0xf7]
2824
2825
2826 @------------------------------------------------------------------------------
2827 @ SXTB16
2828 @------------------------------------------------------------------------------
2829         sxtb16 r1, r4
2830         sxtb16 r6, r7, ror #0
2831         sxtb16 r3, r1, ror #16
2832         ite cs
2833         sxtb16cs r3, r5, ror #8
2834         sxtb16lo r2, r3, ror #24
2835
2836 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x2f,0xfa,0x84,0xf1]
2837 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x2f,0xfa,0x87,0xf6]
2838 @ CHECK: sxtb16 r3, r1, ror #16         @ encoding: [0x2f,0xfa,0xa1,0xf3]
2839 @ CHECK: ite    hs                      @ encoding: [0x2c,0xbf]
2840 @ CHECK: sxtb16hs       r3, r5, ror #8  @ encoding: [0x2f,0xfa,0x95,0xf3]
2841 @ CHECK: sxtb16lo       r2, r3, ror #24 @ encoding: [0x2f,0xfa,0xb3,0xf2]
2842
2843
2844 @------------------------------------------------------------------------------
2845 @ SXTH
2846 @------------------------------------------------------------------------------
2847         sxth r1, r6, ror #0
2848         sxth r3, r8, ror #8
2849         sxth r9, r3, ror #24
2850         itt ne
2851         sxthne r3, r9
2852         sxthne r2, r2, ror #16
2853         sxth.w  r7, r8
2854
2855 @ CHECK: sxth   r1, r6                  @ encoding: [0x31,0xb2]
2856 @ CHECK: sxth.w r3, r8, ror #8          @ encoding: [0x0f,0xfa,0x98,0xf3]
2857 @ CHECK: sxth.w r9, r3, ror #24         @ encoding: [0x0f,0xfa,0xb3,0xf9]
2858 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
2859 @ CHECK: sxthne.w       r3, r9          @ encoding: [0x0f,0xfa,0x89,0xf3]
2860 @ CHECK: sxthne.w       r2, r2, ror #16 @ encoding: [0x0f,0xfa,0xa2,0xf2]
2861 @ CHECK: sxth.w r7, r8                  @ encoding: [0x0f,0xfa,0x88,0xf7]
2862
2863
2864 @------------------------------------------------------------------------------
2865 @ SXTB
2866 @------------------------------------------------------------------------------
2867         sxtb r5, r6, ror #0
2868         sxtb.w r6, r9, ror #8
2869         sxtb r8, r3, ror #24
2870         ite ge
2871         sxtbge r2, r4
2872         sxtblt r5, r1, ror #16
2873
2874 @ CHECK: sxtb   r5, r6                  @ encoding: [0x75,0xb2]
2875 @ CHECK: sxtb.w r6, r9, ror #8          @ encoding: [0x4f,0xfa,0x99,0xf6]
2876 @ CHECK: sxtb.w r8, r3, ror #24         @ encoding: [0x4f,0xfa,0xb3,0xf8]
2877 @ CHECK: ite    ge                      @ encoding: [0xac,0xbf]
2878 @ CHECK: sxtbge r2, r4                  @ encoding: [0x62,0xb2]
2879 @ CHECK: sxtblt.w       r5, r1, ror #16 @ encoding: [0x4f,0xfa,0xa1,0xf5]
2880
2881
2882 @------------------------------------------------------------------------------
2883 @ SXTB16
2884 @------------------------------------------------------------------------------
2885         sxtb16 r1, r4
2886         sxtb16 r6, r7, ror #0
2887         sxtb16 r3, r1, ror #16
2888         ite cs
2889         sxtb16cs r3, r5, ror #8
2890         sxtb16lo r2, r3, ror #24
2891
2892 @ CHECK: sxtb16 r1, r4                  @ encoding: [0x2f,0xfa,0x84,0xf1]
2893 @ CHECK: sxtb16 r6, r7                  @ encoding: [0x2f,0xfa,0x87,0xf6]
2894 @ CHECK: sxtb16 r3, r1, ror #16         @ encoding: [0x2f,0xfa,0xa1,0xf3]
2895 @ CHECK: ite    hs                      @ encoding: [0x2c,0xbf]
2896 @ CHECK: sxtb16hs       r3, r5, ror #8  @ encoding: [0x2f,0xfa,0x95,0xf3]
2897 @ CHECK: sxtb16lo       r2, r3, ror #24 @ encoding: [0x2f,0xfa,0xb3,0xf2]
2898
2899
2900 @------------------------------------------------------------------------------
2901 @ SXTH
2902 @------------------------------------------------------------------------------
2903         sxth r1, r6, ror #0
2904         sxth.w r3, r8, ror #8
2905         sxth r9, r3, ror #24
2906         itt ne
2907         sxthne r3, r9
2908         sxthne r2, r2, ror #16
2909
2910 @ CHECK: sxth   r1, r6                  @ encoding: [0x31,0xb2]
2911 @ CHECK: sxth.w r3, r8, ror #8          @ encoding: [0x0f,0xfa,0x98,0xf3]
2912 @ CHECK: sxth.w r9, r3, ror #24         @ encoding: [0x0f,0xfa,0xb3,0xf9]
2913 @ CHECK: itt    ne                      @ encoding: [0x1c,0xbf]
2914 @ CHECK: sxthne.w       r3, r9          @ encoding: [0x0f,0xfa,0x89,0xf3]
2915 @ CHECK: sxthne.w       r2, r2, ror #16 @ encoding: [0x0f,0xfa,0xa2,0xf2]
2916
2917
2918 @------------------------------------------------------------------------------
2919 @ TBB/TBH
2920 @------------------------------------------------------------------------------
2921         tbb [r3, r8]
2922         tbh [r3, r8, lsl #1]
2923         it eq
2924         tbbeq [r3, r8]
2925         it cs
2926         tbhcs [r3, r8, lsl #1]
2927
2928 @ CHECK: tbb    [r3, r8]                @ encoding: [0xd3,0xe8,0x08,0xf0]
2929 @ CHECK: tbh    [r3, r8, lsl #1]        @ encoding: [0xd3,0xe8,0x18,0xf0]
2930 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
2931 @ CHECK: tbbeq  [r3, r8]                @ encoding: [0xd3,0xe8,0x08,0xf0]
2932 @ CHECK: it     hs                      @ encoding: [0x28,0xbf]
2933 @ CHECK: tbhhs  [r3, r8, lsl #1]        @ encoding: [0xd3,0xe8,0x18,0xf0]
2934
2935
2936 @------------------------------------------------------------------------------
2937 @ TEQ
2938 @------------------------------------------------------------------------------
2939         teq r5, #0xf000
2940         teq r4, r5
2941         teq r4, r5, lsl #5
2942         teq r4, r5, lsr #5
2943         teq r4, r5, lsr #5
2944         teq r4, r5, asr #5
2945         teq r4, r5, ror #5
2946
2947 @ CHECK: teq.w  r5, #61440              @ encoding: [0x95,0xf4,0x70,0x4f]
2948 @ CHECK: teq.w  r4, r5                  @ encoding: [0x94,0xea,0x05,0x0f]
2949 @ CHECK: teq.w  r4, r5, lsl #5          @ encoding: [0x94,0xea,0x45,0x1f]
2950 @ CHECK: teq.w  r4, r5, lsr #5          @ encoding: [0x94,0xea,0x55,0x1f]
2951 @ CHECK: teq.w  r4, r5, lsr #5          @ encoding: [0x94,0xea,0x55,0x1f]
2952 @ CHECK: teq.w  r4, r5, asr #5          @ encoding: [0x94,0xea,0x65,0x1f]
2953 @ CHECK: teq.w  r4, r5, ror #5          @ encoding: [0x94,0xea,0x75,0x1f]
2954
2955
2956 @------------------------------------------------------------------------------
2957 @ TST
2958 @------------------------------------------------------------------------------
2959         tst r5, #0xf000
2960         tst r2, r5
2961         tst r3, r12, lsl #5
2962         tst r4, r11, lsr #4
2963         tst r5, r10, lsr #12
2964         tst r6, r9, asr #30
2965         tst r7, r8, ror #2
2966
2967 @ CHECK: tst.w  r5, #61440              @ encoding: [0x15,0xf4,0x70,0x4f]
2968 @ CHECK: tst    r2, r5                  @ encoding: [0x2a,0x42]
2969 @ CHECK: tst.w  r3, r12, lsl #5         @ encoding: [0x13,0xea,0x4c,0x1f]
2970 @ CHECK: tst.w  r4, r11, lsr #4         @ encoding: [0x14,0xea,0x1b,0x1f]
2971 @ CHECK: tst.w  r5, r10, lsr #12        @ encoding: [0x15,0xea,0x1a,0x3f]
2972 @ CHECK: tst.w  r6, r9, asr #30         @ encoding: [0x16,0xea,0xa9,0x7f]
2973 @ CHECK: tst.w  r7, r8, ror #2          @ encoding: [0x17,0xea,0xb8,0x0f]
2974
2975
2976 @------------------------------------------------------------------------------
2977 @ UADD16/UADD8
2978 @------------------------------------------------------------------------------
2979         uadd16 r1, r2, r3
2980         uadd8 r1, r2, r3
2981         ite gt
2982         uadd16gt r1, r2, r3
2983         uadd8le r1, r2, r3
2984
2985 @ CHECK: uadd16 r1, r2, r3              @ encoding: [0x92,0xfa,0x43,0xf1]
2986 @ CHECK: uadd8  r1, r2, r3              @ encoding: [0x82,0xfa,0x43,0xf1]
2987 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
2988 @ CHECK: uadd16gt       r1, r2, r3      @ encoding: [0x92,0xfa,0x43,0xf1]
2989 @ CHECK: uadd8le        r1, r2, r3      @ encoding: [0x82,0xfa,0x43,0xf1]
2990
2991
2992 @------------------------------------------------------------------------------
2993 @ UASX
2994 @------------------------------------------------------------------------------
2995         uasx r9, r12, r0
2996         it eq
2997         uasxeq r9, r12, r0
2998         uaddsubx r9, r12, r0
2999         it eq
3000         uaddsubxeq r9, r12, r0
3001
3002 @ CHECK: uasx   r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
3003 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
3004 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
3005 @ CHECK: uasx   r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
3006 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
3007 @ CHECK: uasxeq r9, r12, r0             @ encoding: [0xac,0xfa,0x40,0xf9]
3008
3009
3010 @------------------------------------------------------------------------------
3011 @ UBFX
3012 @------------------------------------------------------------------------------
3013         ubfx r4, r5, #16, #1
3014         it gt
3015         ubfxgt r4, r5, #16, #16
3016
3017 @ CHECK: ubfx   r4, r5, #16, #1         @ encoding: [0xc5,0xf3,0x00,0x44]
3018 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
3019 @ CHECK: ubfxgt r4, r5, #16, #16        @ encoding: [0xc5,0xf3,0x0f,0x44]
3020
3021
3022 @------------------------------------------------------------------------------
3023 @ UHADD16/UHADD8
3024 @------------------------------------------------------------------------------
3025         uhadd16 r4, r8, r2
3026         uhadd8 r4, r8, r2
3027         itt gt
3028         uhadd16gt r4, r8, r2
3029         uhadd8gt r4, r8, r2
3030
3031 @ CHECK: uhadd16        r4, r8, r2      @ encoding: [0x98,0xfa,0x62,0xf4]
3032 @ CHECK: uhadd8 r4, r8, r2              @ encoding: [0x88,0xfa,0x62,0xf4]
3033 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
3034 @ CHECK: uhadd16gt      r4, r8, r2      @ encoding: [0x98,0xfa,0x62,0xf4]
3035 @ CHECK: uhadd8gt       r4, r8, r2      @ encoding: [0x88,0xfa,0x62,0xf4]
3036
3037
3038 @------------------------------------------------------------------------------
3039 @ UHASX/UHSAX
3040 @------------------------------------------------------------------------------
3041         uhasx r4, r1, r5
3042         uhsax r5, r6, r6
3043         itt gt
3044         uhasxgt r6, r9, r8
3045         uhsaxgt r7, r8, r12
3046         uhaddsubx r4, r1, r5
3047         uhsubaddx r5, r6, r6
3048         itt gt
3049         uhaddsubxgt r6, r9, r8
3050         uhsubaddxgt r7, r8, r12
3051
3052 @ CHECK: uhasx  r4, r1, r5              @ encoding: [0xa1,0xfa,0x65,0xf4]
3053 @ CHECK: uhsax  r5, r6, r6              @ encoding: [0xe6,0xfa,0x66,0xf5]
3054 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
3055 @ CHECK: uhasxgt r6, r9, r8             @ encoding: [0xa9,0xfa,0x68,0xf6]
3056 @ CHECK: uhsaxgt r7, r8, r12            @ encoding: [0xe8,0xfa,0x6c,0xf7]
3057 @ CHECK: uhasx  r4, r1, r5              @ encoding: [0xa1,0xfa,0x65,0xf4]
3058 @ CHECK: uhsax  r5, r6, r6              @ encoding: [0xe6,0xfa,0x66,0xf5]
3059 @ CHECK: itt    gt                      @ encoding: [0xc4,0xbf]
3060 @ CHECK: uhasxgt r6, r9, r8             @ encoding: [0xa9,0xfa,0x68,0xf6]
3061 @ CHECK: uhsaxgt r7, r8, r12            @ encoding: [0xe8,0xfa,0x6c,0xf7]
3062
3063
3064 @------------------------------------------------------------------------------
3065 @ UHSUB16/UHSUB8
3066 @------------------------------------------------------------------------------
3067         uhsub16 r5, r8, r3
3068         uhsub8 r1, r7, r6
3069         itt lt
3070         uhsub16lt r4, r9, r12
3071         uhsub8lt r3, r1, r5
3072
3073 @ CHECK: uhsub16        r5, r8, r3      @ encoding: [0xd8,0xfa,0x63,0xf5]
3074 @ CHECK: uhsub8 r1, r7, r6              @ encoding: [0xc7,0xfa,0x66,0xf1]
3075 @ CHECK: itt    lt                      @ encoding: [0xbc,0xbf]
3076 @ CHECK: uhsub16lt      r4, r9, r12     @ encoding: [0xd9,0xfa,0x6c,0xf4]
3077 @ CHECK: uhsub8lt       r3, r1, r5      @ encoding: [0xc1,0xfa,0x65,0xf3]
3078
3079
3080 @------------------------------------------------------------------------------
3081 @ UMAAL
3082 @------------------------------------------------------------------------------
3083         umaal r3, r4, r5, r6
3084         it lt
3085         umaallt r3, r4, r5, r6
3086
3087 @ CHECK: umaal  r3, r4, r5, r6          @ encoding: [0xe5,0xfb,0x66,0x34]
3088 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
3089 @ CHECK: umaallt        r3, r4, r5, r6  @ encoding: [0xe5,0xfb,0x66,0x34]
3090
3091
3092 @------------------------------------------------------------------------------
3093 @ UMLAL
3094 @------------------------------------------------------------------------------
3095         umlal r2, r4, r6, r8
3096         it gt
3097         umlalgt r6, r1, r2, r6
3098
3099 @ CHECK: umlal  r2, r4, r6, r8          @ encoding: [0xe6,0xfb,0x08,0x24]
3100 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
3101 @ CHECK: umlalgt        r6, r1, r2, r6  @ encoding: [0xe2,0xfb,0x06,0x61]
3102
3103
3104 @------------------------------------------------------------------------------
3105 @ UMULL
3106 @------------------------------------------------------------------------------
3107         umull r2, r4, r6, r8
3108         it gt
3109         umullgt r6, r1, r2, r6
3110
3111 @ CHECK: umull  r2, r4, r6, r8          @ encoding: [0xa6,0xfb,0x08,0x24]
3112 @ CHECK: it     gt                      @ encoding: [0xc8,0xbf]
3113 @ CHECK: umullgt        r6, r1, r2, r6  @ encoding: [0xa2,0xfb,0x06,0x61]
3114
3115
3116 @------------------------------------------------------------------------------
3117 @ UQADD16/UQADD8
3118 @------------------------------------------------------------------------------
3119         uqadd16 r1, r2, r3
3120         uqadd8 r3, r4, r8
3121         ite gt
3122         uqadd16gt r4, r7, r9
3123         uqadd8le r8, r1, r2
3124
3125 @ CHECK: uqadd16        r1, r2, r3      @ encoding: [0x92,0xfa,0x53,0xf1]
3126 @ CHECK: uqadd8 r3, r4, r8              @ encoding: [0x84,0xfa,0x58,0xf3]
3127 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3128 @ CHECK: uqadd16gt      r4, r7, r9      @ encoding: [0x97,0xfa,0x59,0xf4]
3129 @ CHECK: uqadd8le       r8, r1, r2      @ encoding: [0x81,0xfa,0x52,0xf8]
3130
3131
3132 @------------------------------------------------------------------------------
3133 @ UQASX/UQSAX
3134 @------------------------------------------------------------------------------
3135         uqasx r1, r2, r3
3136         uqsax r3, r4, r8
3137         ite gt
3138         uqasxgt r4, r7, r9
3139         uqsaxle r8, r1, r2
3140
3141         uqaddsubx r1, r2, r3
3142         uqsubaddx r3, r4, r8
3143         ite gt
3144         uqaddsubxgt r4, r7, r9
3145         uqsubaddxle r8, r1, r2
3146
3147 @ CHECK: uqasx  r1, r2, r3              @ encoding: [0xa2,0xfa,0x53,0xf1]
3148 @ CHECK: uqsax  r3, r4, r8              @ encoding: [0xe4,0xfa,0x58,0xf3]
3149 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3150 @ CHECK: uqasxgt r4, r7, r9             @ encoding: [0xa7,0xfa,0x59,0xf4]
3151 @ CHECK: uqsaxle r8, r1, r2             @ encoding: [0xe1,0xfa,0x52,0xf8]
3152
3153 @ CHECK: uqasx  r1, r2, r3              @ encoding: [0xa2,0xfa,0x53,0xf1]
3154 @ CHECK: uqsax  r3, r4, r8              @ encoding: [0xe4,0xfa,0x58,0xf3]
3155 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3156 @ CHECK: uqasxgt r4, r7, r9             @ encoding: [0xa7,0xfa,0x59,0xf4]
3157 @ CHECK: uqsaxle r8, r1, r2             @ encoding: [0xe1,0xfa,0x52,0xf8]
3158
3159
3160 @------------------------------------------------------------------------------
3161 @ UQSUB16/UQSUB8
3162 @------------------------------------------------------------------------------
3163         uqsub8 r8, r2, r9
3164         uqsub16 r1, r9, r7
3165         ite gt
3166         uqsub8gt r3, r1, r6
3167         uqsub16le r4, r6, r4
3168
3169 @ CHECK: uqsub8 r8, r2, r9              @ encoding: [0xc2,0xfa,0x59,0xf8]
3170 @ CHECK: uqsub16 r1, r9, r7             @ encoding: [0xd9,0xfa,0x57,0xf1]
3171 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3172 @ CHECK: uqsub8gt       r3, r1, r6      @ encoding: [0xc1,0xfa,0x56,0xf3]
3173 @ CHECK: uqsub16le      r4, r6, r4      @ encoding: [0xd6,0xfa,0x54,0xf4]
3174
3175
3176 @------------------------------------------------------------------------------
3177 @ UQSUB16/UQSUB8
3178 @------------------------------------------------------------------------------
3179         usad8 r1, r9, r7
3180         usada8 r8, r2, r9, r12
3181         ite gt
3182         usada8gt r3, r1, r6, r9
3183         usad8le r4, r6, r4
3184
3185 @ CHECK: usad8  r1, r9, r7              @ encoding: [0x79,0xfb,0x07,0xf1]
3186 @ CHECK: usada8 r8, r2, r9, r12         @ encoding: [0x72,0xfb,0x09,0xc8]
3187 @ CHECK: ite    gt                      @ encoding: [0xcc,0xbf]
3188 @ CHECK: usada8gt       r3, r1, r6, r9  @ encoding: [0x71,0xfb,0x06,0x93]
3189 @ CHECK: usad8le        r4, r6, r4      @ encoding: [0x76,0xfb,0x04,0xf4]
3190
3191
3192 @------------------------------------------------------------------------------
3193 @ USAT
3194 @------------------------------------------------------------------------------
3195         usat    r8, #1, r10
3196         usat    r8, #4, r10, lsl #0
3197         usat    r8, #5, r10, lsl #31
3198         usat    r8, #16, r10, asr #1
3199
3200 @ CHECK: usat   r8, #1, r10             @ encoding: [0x8a,0xf3,0x01,0x08]
3201 @ CHECK: usat   r8, #4, r10             @ encoding: [0x8a,0xf3,0x04,0x08]
3202 @ CHECK: usat   r8, #5, r10, lsl #31    @ encoding: [0x8a,0xf3,0xc5,0x78]
3203 @ CHECK: usat   r8, #16, r10, asr #1    @ encoding: [0xaa,0xf3,0x50,0x08]
3204
3205
3206 @------------------------------------------------------------------------------
3207 @ USAT16
3208 @------------------------------------------------------------------------------
3209         usat16  r2, #2, r7
3210         usat16  r3, #15, r5
3211
3212 @ CHECK: usat16 r2, #2, r7              @ encoding: [0xa7,0xf3,0x02,0x02]
3213 @ CHECK: usat16 r3, #15, r5             @ encoding: [0xa5,0xf3,0x0f,0x03]
3214
3215
3216 @------------------------------------------------------------------------------
3217 @ USAX
3218 @------------------------------------------------------------------------------
3219         usax r2, r3, r4
3220         it ne
3221         usaxne r6, r1, r9
3222         usubaddx r2, r3, r4
3223         it ne
3224         usubaddxne r6, r1, r9
3225
3226 @ CHECK: usax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x44,0xf2]
3227 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3228 @ CHECK: usaxne r6, r1, r9              @ encoding: [0xe1,0xfa,0x49,0xf6]
3229 @ CHECK: usax   r2, r3, r4              @ encoding: [0xe3,0xfa,0x44,0xf2]
3230 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3231 @ CHECK: usaxne r6, r1, r9              @ encoding: [0xe1,0xfa,0x49,0xf6]
3232
3233
3234 @------------------------------------------------------------------------------
3235 @ USUB16/USUB8
3236 @------------------------------------------------------------------------------
3237         usub16 r4, r2, r7
3238         usub8 r1, r8, r5
3239         ite hi
3240         usub16hi r1, r1, r3
3241         usub8ls r9, r2, r3
3242
3243 @ CHECK: usub16 r4, r2, r7              @ encoding: [0xd2,0xfa,0x47,0xf4]
3244 @ CHECK: usub8  r1, r8, r5              @ encoding: [0xc8,0xfa,0x45,0xf1]
3245 @ CHECK: ite    hi                      @ encoding: [0x8c,0xbf]
3246 @ CHECK: usub16hi       r1, r1, r3      @ encoding: [0xd1,0xfa,0x43,0xf1]
3247 @ CHECK: usub8ls        r9, r2, r3      @ encoding: [0xc2,0xfa,0x43,0xf9]
3248
3249
3250 @------------------------------------------------------------------------------
3251 @ UXTAB
3252 @------------------------------------------------------------------------------
3253         uxtab r2, r3, r4
3254         uxtab r4, r5, r6, ror #0
3255         it lt
3256         uxtablt r6, r2, r9, ror #8
3257         uxtab r5, r1, r4, ror #16
3258         uxtab r7, r8, r3, ror #24
3259
3260 @ CHECK: uxtab  r2, r3, r4              @ encoding: [0x53,0xfa,0x84,0xf2]
3261 @ CHECK: uxtab  r4, r5, r6              @ encoding: [0x55,0xfa,0x86,0xf4]
3262 @ CHECK: it     lt                      @ encoding: [0xb8,0xbf]
3263 @ CHECK: uxtablt r6, r2, r9, ror #8     @ encoding: [0x52,0xfa,0x99,0xf6]
3264 @ CHECK: uxtab  r5, r1, r4, ror #16     @ encoding: [0x51,0xfa,0xa4,0xf5]
3265 @ CHECK: uxtab  r7, r8, r3, ror #24     @ encoding: [0x58,0xfa,0xb3,0xf7]
3266
3267
3268 @------------------------------------------------------------------------------
3269 @ UXTAB16
3270 @------------------------------------------------------------------------------
3271         it ge
3272         uxtab16ge r0, r1, r4
3273         uxtab16 r6, r2, r7, ror #0
3274         uxtab16 r3, r5, r8, ror #8
3275         uxtab16 r3, r2, r1, ror #16
3276         it eq
3277         uxtab16eq r1, r2, r3, ror #24
3278
3279 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3280 @ CHECK: uxtab16ge      r0, r1, r4      @ encoding: [0x31,0xfa,0x84,0xf0]
3281 @ CHECK: uxtab16 r6, r2, r7             @ encoding: [0x32,0xfa,0x87,0xf6]
3282 @ CHECK: uxtab16 r3, r5, r8, ror #8     @ encoding: [0x35,0xfa,0x98,0xf3]
3283 @ CHECK: uxtab16 r3, r2, r1, ror #16    @ encoding: [0x32,0xfa,0xa1,0xf3]
3284 @ CHECK: it     eq                      @ encoding: [0x08,0xbf]
3285 @ CHECK: uxtab16eq r1, r2, r3, ror #24  @ encoding: [0x32,0xfa,0xb3,0xf1]
3286
3287
3288 @------------------------------------------------------------------------------
3289 @ UXTAH
3290 @------------------------------------------------------------------------------
3291         uxtah r1, r3, r9
3292         it hi
3293         uxtahhi r6, r1, r6, ror #0
3294         uxtah r3, r8, r3, ror #8
3295         it lo
3296         uxtahlo r2, r2, r4, ror #16
3297         uxtah r9, r3, r3, ror #24
3298
3299 @ CHECK: uxtah  r1, r3, r9              @ encoding: [0x13,0xfa,0x89,0xf1]
3300 @ CHECK: it     hi                      @ encoding: [0x88,0xbf]
3301 @ CHECK: uxtahhi r6, r1, r6             @ encoding: [0x11,0xfa,0x86,0xf6]
3302 @ CHECK: uxtah  r3, r8, r3, ror #8      @ encoding: [0x18,0xfa,0x93,0xf3]
3303 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
3304 @ CHECK: uxtahlo r2, r2, r4, ror #16    @ encoding: [0x12,0xfa,0xa4,0xf2]
3305 @ CHECK: uxtah  r9, r3, r3, ror #24     @ encoding: [0x13,0xfa,0xb3,0xf9]
3306
3307
3308 @------------------------------------------------------------------------------
3309 @ UXTB
3310 @------------------------------------------------------------------------------
3311         it ge
3312         uxtbge r2, r4
3313         uxtb r5, r6, ror #0
3314         uxtb r6, r9, ror #8
3315         it cc
3316         uxtbcc r5, r1, ror #16
3317         uxtb r8, r3, ror #24
3318         uxtb.w  r7, r8
3319
3320 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3321 @ CHECK: uxtbge r2, r4                  @ encoding: [0xe2,0xb2]
3322 @ CHECK: uxtb   r5, r6                  @ encoding: [0xf5,0xb2]
3323 @ CHECK: uxtb.w r6, r9, ror #8          @ encoding: [0x5f,0xfa,0x99,0xf6]
3324 @ CHECK: it     lo                      @ encoding: [0x38,0xbf]
3325 @ CHECK: uxtblo.w       r5, r1, ror #16 @ encoding: [0x5f,0xfa,0xa1,0xf5]
3326 @ CHECK: uxtb.w r8, r3, ror #24         @ encoding: [0x5f,0xfa,0xb3,0xf8]
3327 @ CHECK: uxtb.w r7, r8                  @ encoding: [0x5f,0xfa,0x88,0xf7]
3328
3329
3330 @------------------------------------------------------------------------------
3331 @ UXTB16
3332 @------------------------------------------------------------------------------
3333         uxtb16 r1, r4
3334         uxtb16 r6, r7, ror #0
3335         it cs
3336         uxtb16cs r3, r5, ror #8
3337         uxtb16 r3, r1, ror #16
3338         it ge
3339         uxtb16ge r2, r3, ror #24
3340
3341 @ CHECK: uxtb16 r1, r4                  @ encoding: [0x3f,0xfa,0x84,0xf1]
3342 @ CHECK: uxtb16 r6, r7                  @ encoding: [0x3f,0xfa,0x87,0xf6]
3343 @ CHECK: it     hs                      @ encoding: [0x28,0xbf]
3344 @ CHECK: uxtb16hs       r3, r5, ror #8  @ encoding: [0x3f,0xfa,0x95,0xf3]
3345 @ CHECK: uxtb16 r3, r1, ror #16         @ encoding: [0x3f,0xfa,0xa1,0xf3]
3346 @ CHECK: it     ge                      @ encoding: [0xa8,0xbf]
3347 @ CHECK: uxtb16ge       r2, r3, ror #24 @ encoding: [0x3f,0xfa,0xb3,0xf2]
3348
3349
3350 @------------------------------------------------------------------------------
3351 @ UXTH
3352 @------------------------------------------------------------------------------
3353         it ne
3354         uxthne r3, r9
3355         uxth r1, r6, ror #0
3356         uxth r3, r8, ror #8
3357         it le
3358         uxthle r2, r2, ror #16
3359         uxth r9, r3, ror #24
3360         uxth.w  r7, r8
3361
3362 @ CHECK: it     ne                      @ encoding: [0x18,0xbf]
3363 @ CHECK: uxthne.w       r3, r9          @ encoding: [0x1f,0xfa,0x89,0xf3]
3364 @ CHECK: uxth   r1, r6                  @ encoding: [0xb1,0xb2]
3365 @ CHECK: uxth.w r3, r8, ror #8          @ encoding: [0x1f,0xfa,0x98,0xf3]
3366 @ CHECK: it     le                      @ encoding: [0xd8,0xbf]
3367 @ CHECK: uxthle.w       r2, r2, ror #16 @ encoding: [0x1f,0xfa,0xa2,0xf2]
3368 @ CHECK: uxth.w r9, r3, ror #24         @ encoding: [0x1f,0xfa,0xb3,0xf9]
3369 @ CHECK: uxth.w r7, r8                  @ encoding: [0x1f,0xfa,0x88,0xf7]
3370
3371 @------------------------------------------------------------------------------
3372 @ WFE/WFI/YIELD/HINT
3373 @------------------------------------------------------------------------------
3374         wfe
3375         wfi
3376         yield
3377         itet lt
3378         wfelt
3379         wfige
3380         yieldlt
3381         hint #5
3382         hint.w #5
3383         hint.w #4
3384         hint #3
3385         hint #2
3386         hint #1
3387         hint #0
3388
3389 @ CHECK: wfe                            @ encoding: [0x20,0xbf]
3390 @ CHECK: wfi                            @ encoding: [0x30,0xbf]
3391 @ CHECK: yield                          @ encoding: [0x10,0xbf]
3392 @ CHECK: itet   lt                      @ encoding: [0xb6,0xbf]
3393 @ CHECK: wfelt                          @ encoding: [0x20,0xbf]
3394 @ CHECK: wfige                          @ encoding: [0x30,0xbf]
3395 @ CHECK: yieldlt                        @ encoding: [0x10,0xbf]
3396 @ CHECK: hint   #5                      @ encoding: [0xaf,0xf3,0x05,0x80]
3397 @ CHECK: hint   #5                      @ encoding: [0xaf,0xf3,0x05,0x80]
3398 @ CHECK: sev.w                          @ encoding: [0xaf,0xf3,0x04,0x80]
3399 @ CHECK: wfi.w                          @ encoding: [0xaf,0xf3,0x03,0x80]
3400 @ CHECK: wfe.w                          @ encoding: [0xaf,0xf3,0x02,0x80]
3401 @ CHECK: yield.w                        @ encoding: [0xaf,0xf3,0x01,0x80]
3402 @ CHECK: nop.w                          @ encoding: [0xaf,0xf3,0x00,0x80]
3403
3404
3405 @------------------------------------------------------------------------------
3406 @ Alternate syntax for LDR*(literal) encodings
3407 @------------------------------------------------------------------------------
3408         ldr r11, [pc, #-22]
3409         ldrb r11, [pc, #-22]
3410         ldrh r11, [pc, #-22]
3411         ldrsb r11, [pc, #-22]
3412         ldrsh r11, [pc, #-22]
3413
3414         ldr.w r11, [pc, #-22]
3415         ldrb.w r11, [pc, #-22]
3416         ldrh.w r11, [pc, #-22]
3417         ldrsb.w r11, [pc, #-22]
3418         ldrsh.w r11, [pc, #-22]
3419
3420 @ CHECK: ldr.w  r11, [pc, #-22]         @ encoding: [0x5f,0xf8,0x16,0xb0]
3421 @ CHECK: ldrb.w r11, [pc, #-22]         @ encoding: [0x1f,0xf8,0x16,0xb0]
3422 @ CHECK: ldrh.w r11, [pc, #-22]         @ encoding: [0x3f,0xf8,0x16,0xb0]
3423 @ CHECK: ldrsb.w r11, [pc, #-22]        @ encoding: [0x1f,0xf9,0x16,0xb0]
3424 @ CHECK: ldrsh.w r11, [pc, #-22]        @ encoding: [0x3f,0xf9,0x16,0xb0]
3425 @ CHECK: ldr.w  r11, [pc, #-22]         @ encoding: [0x5f,0xf8,0x16,0xb0]
3426 @ CHECK: ldrb.w r11, [pc, #-22]         @ encoding: [0x1f,0xf8,0x16,0xb0]
3427 @ CHECK: ldrh.w r11, [pc, #-22]         @ encoding: [0x3f,0xf8,0x16,0xb0]
3428 @ CHECK: ldrsb.w r11, [pc, #-22]        @ encoding: [0x1f,0xf9,0x16,0xb0]
3429 @ CHECK: ldrsh.w r11, [pc, #-22]        @ encoding: [0x3f,0xf9,0x16,0xb0]