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