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