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