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