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