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