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